You are given a permutation $$$p$$$ of length $$$n$$$.

Please count the number of permutations $$$q$$$ of length $$$n$$$ which satisfy the following:

- for each $$$1 \le i < n$$$, $$$\max(q_1,\ldots,q_i) \neq \max(p_1,\ldots,p_i)$$$.

Since the answer may be large, output the answer modulo $$$998\,244\,353$$$.


Can be seen in use at: Top Categories
- put the top_categories.php file in your plugins directory
activate the plugin
modify your template to include the following PHP:
You can pass in an optional numeric value like:
to change the number of categories displayed. By default it shows the top 10 categories (by number of posts).


A guide on how to install and configure WooCommerce
At this point, you should already have a Reepay test or live account. If you do not have an account, please sign up.
You can sign up for a free account here. You can afterward convert it to a live Reepay account.
Installation and Configuration
See this video and follow the steps below:
- Install the plugin to your Wordpress admin.
- Click Activate Plugin.
- Go to WooCommerce → Settings → Payments → Reepay Checkout.
- Choose a title and description to be shown on the checkout page. For example:
Title: Online Payment
Description: Secure payment with Reepay.
- Insert your API keys. Live API key is used for real payments, and test API key is only used for test payments. Insert your Private API key from your live Reepay account into the Live API key field. Insert your Private API key from your test Reepay account into the Test API key field.
You can find your private API keys in your Reepay Dashboard. Open a new tab and sign in here:
Go to your live account and click Developers → API credentials → Click Generate New under Private API Keys → Copy the key and paste it in WooCommerce under Private key.
- Choose between modal and window display.
- Choose the payment methods you also have activated in Reepay. Hold ctrl/cmd while clicking on the different payment methods. This will list all the activated payment methods together in the Reepay payment window. You also have the option to create individual payment options in the WooCommerce checkout, by going to WooCommerce → Settings → Payments → and activating the different payment methods. E.g. Reepay - MobilePay. In this case, you can have individual rows directly in the WooCommerce checkout. For example:
- Reepay Checkout. Title: Payment Cards
- Reepay - MobilePay. Title: MobilePay Online
- Reepay - ApplePay. Title: Apple Pay
- Chose which settle option you would like to utilize. For further information please read: How to configure automatic settle in Wordpress/WooCommerce
- Enable debug, for faster solutions if anything goes wrong.
- Enable Save CC, to save credit cards to customers for their later use. If you are not approved by your acquirer to save cards, do not activate this option.
- Enable Payment method icons for the same payment methods you enable in step 7.
- Choose order status mapping between WooCommerce and Reepay. Recommended configuration:
- Reepay Created = Pending payment
- Reepay Authorized = Processing
- Reepay Settled = Completed.
- Click Save changes.
Show your logo in the payment window
Optional: Go into your Reepay Administration. Click Configuration → Checkout → Default Configuration → Edit → Scroll down and Upload a logo from your computer → Update Configuration.
If you have a security plugin installed make sure not to block Ireland as a country or just whitelist our webhook IP address: 22.214.171.124. This is very important since the plugin relies on webhooks.


Qwerty the Ranger took up a government job and arrived on planet Mars. He should stay in the secret lab and conduct some experiments on bacteria that have funny and abnormal properties. The job isn't difficult, but the salary is high.

At the beginning of the first experiment there is a single bacterium in the test tube. Every second each bacterium in the test tube divides itself into k bacteria. After that some abnormal effects create b more bacteria in the test tube. Thus, if at the beginning of some second the test tube had x bacteria, then at the end of the second it will have kx + b bacteria.

The experiment showed that after n seconds there were exactly z bacteria and the experiment ended at this point.

For the second experiment Qwerty is going to sterilize the test tube and put there t bacteria. He hasn't started the experiment yet but he already wonders, how many seconds he will need to grow at least z bacteria. The ranger thinks that the bacteria will divide by the same rule as in the first experiment.

Help Qwerty and find the minimum number of seconds needed to get a tube with at least z bacteria in the second experiment.


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "soundpipe.h"

typedef struct {
    sp_fosc *osc;
    sp_ftbl *ft;
    sp_jitter *jit;
} UserData;

void process(sp_data *sp, void *udata) {
    UserData *ud = udata;
    SPFLOAT jit = 0;
    sp_jitter_compute(sp, ud->jit, NULL, &jit);
    ud->osc->freq = sp_midi2cps(60 + jit);
    sp_fosc_compute(sp, ud->osc, NULL, &sp->out[0]);
}

int main() {
    srand(time(NULL));
    UserData ud;
    sp_data *sp;
    sp_create(&sp);
    sp_ftbl_create(sp, &ud.ft, 2048);
    sp_fosc_create(&ud.osc);
    sp_jitter_create(&ud.jit);

    sp_gen_sine(sp, ud.ft);
    sp_fosc_init(sp, ud.osc, ud.ft);
    sp_jitter_init(sp, ud.jit);
    ud.jit->cpsMin = 0.5;
    ud.jit->cpsMax = 4;
    ud.jit->amp = 3;
    sp->len = 44100 * 5;
    sp_process(sp, &ud, process);

    sp_ftbl_destroy(&ud.ft);
    sp_fosc_destroy(&ud.osc);
    sp_jitter_destroy(&ud.jit);

    sp_destroy(&sp);
    return 0;
}


/* IDirectMusicBand Implementation
 *
 * Copyright (C) 2003-2004 Rok Mandeljc
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Library General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#include "dmband_private.h"

WINE_DEFAULT_DEBUG_CHANNEL(dmband);
WINE_DECLARE_DEBUG_CHANNEL(dmfile);

const GUID IID_IDirectMusicBandPRIVATE = {0xda54db81,0x837d,0x11d1,{0x86,0xbc,0x00,0xc0,0x4f,0xbf,0x8f,0xef}};

/*****************************************************************************
 * IDirectMusicBandImpl implementation
 */
/* IDirectMusicBandImpl IUnknown part: */
HRESULT WINAPI IDirectMusicBandImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);

	TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
	if (IsEqualIID (riid, &IID_IUnknown)) {
		*ppobj = (LPVOID)&This->UnknownVtbl;
		IDirectMusicBandImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
		return S_OK;
	} else if (IsEqualIID (riid, &IID_IDirectMusicBand)) {
		*ppobj = (LPVOID)&This->BandVtbl;
		IDirectMusicBandImpl_IDirectMusicBand_AddRef ((LPDIRECTMUSICBAND)&This->BandVtbl);
		return S_OK;
	} else if (IsEqualIID (riid, &IID_IDirectMusicObject)) {
		*ppobj = (LPVOID)&This->ObjectVtbl;
		IDirectMusicBandImpl_IDirectMusicObject_AddRef ((LPDIRECTMUSICOBJECT)&This->ObjectVtbl);
		return S_OK;
	} else if (IsEqualIID (riid, &IID_IPersistStream)) {
		*ppobj = (LPVOID)&This->PersistStreamVtbl;
		IDirectMusicBandImpl_IPersistStream_AddRef ((LPPERSISTSTREAM)&This->PersistStreamVtbl);
		return S_OK;
	}

	WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj);
	return E_NOINTERFACE;
}

ULONG WINAPI IDirectMusicBandImpl_IUnknown_AddRef (LPUNKNOWN iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);
	TRACE("(%p) : AddRef from %ld\n", This, This->ref);
	return ++(This->ref);
}

ULONG WINAPI IDirectMusicBandImpl_IUnknown_Release (LPUNKNOWN iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, UnknownVtbl, iface);
	ULONG ref = --This->ref;
	TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
	if (ref == 0) {
		HeapFree(GetProcessHeap(), 0, This);
	}
	return ref;
}

ICOM_VTABLE(IUnknown) DirectMusicBand_Unknown_Vtbl = {
    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
	IDirectMusicBandImpl_IUnknown_QueryInterface,
	IDirectMusicBandImpl_IUnknown_AddRef,
	IDirectMusicBandImpl_IUnknown_Release
};

/* IDirectMusicBandImpl IDirectMusicBand part: */
HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicBand_QueryInterface (LPDIRECTMUSICBAND iface, REFIID riid, LPVOID *ppobj) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, BandVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
}

ULONG WINAPI IDirectMusicBandImpl_IDirectMusicBand_AddRef (LPDIRECTMUSICBAND iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, BandVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
}

ULONG WINAPI IDirectMusicBandImpl_IDirectMusicBand_Release (LPDIRECTMUSICBAND iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, BandVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
}

HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicBand_CreateSegment (LPDIRECTMUSICBAND iface, IDirectMusicSegment** ppSegment) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, BandVtbl, iface);
	FIXME("(%p, %p): stub\n", This, ppSegment);
	return S_OK;
}

HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicBand_Download (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, BandVtbl, iface);
	FIXME("(%p, %p): stub\n", This, pPerformance);
	return S_OK;
}

HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicBand_Unload (LPDIRECTMUSICBAND iface, IDirectMusicPerformance* pPerformance) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, BandVtbl, iface);
	FIXME("(%p, %p): stub\n", This, pPerformance);
	return S_OK;
}

ICOM_VTABLE(IDirectMusicBand) DirectMusicBand_Band_Vtbl = {
    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
	IDirectMusicBandImpl_IDirectMusicBand_QueryInterface,
	IDirectMusicBandImpl_IDirectMusicBand_AddRef,
	IDirectMusicBandImpl_IDirectMusicBand_Release,
	IDirectMusicBandImpl_IDirectMusicBand_CreateSegment,
	IDirectMusicBandImpl_IDirectMusicBand_Download,
	IDirectMusicBandImpl_IDirectMusicBand_Unload
};

/* IDirectMusicBandImpl IDirectMusicObject part: */
HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, ObjectVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
}

ULONG WINAPI IDirectMusicBandImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, ObjectVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
}

ULONG WINAPI IDirectMusicBandImpl_IDirectMusicObject_Release (LPDIRECTMUSICOBJECT iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, ObjectVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
}

HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicObject_GetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, ObjectVtbl, iface);
	TRACE("(%p, %p)\n", This, pDesc);
	/* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */
	memcpy (pDesc, This->pDesc, This->pDesc->dwSize);
	return S_OK;
}

HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicObject_SetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, ObjectVtbl, iface);
	TRACE("(%p, %p): setting descriptor:\n%s\n", This, pDesc, debugstr_DMUS_OBJECTDESC (pDesc));

	/* According to MSDN, we should copy only given values, not whole struct */
	if (pDesc->dwValidData & DMUS_OBJ_OBJECT)
		memcpy (&This->pDesc->guidObject, &pDesc->guidObject, sizeof (pDesc->guidObject));
	if (pDesc->dwValidData & DMUS_OBJ_CLASS)
		memcpy (&This->pDesc->guidClass, &pDesc->guidClass, sizeof (pDesc->guidClass));
	if (pDesc->dwValidData & DMUS_OBJ_NAME)
		strncpyW (This->pDesc->wszName, pDesc->wszName, DMUS_MAX_NAME);
	if (pDesc->dwValidData & DMUS_OBJ_CATEGORY)
		strncpyW (This->pDesc->wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
	if (pDesc->dwValidData & DMUS_OBJ_FILENAME)
		strncpyW (This->pDesc->wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
	if (pDesc->dwValidData & DMUS_OBJ_VERSION)
		memcpy (&This->pDesc->vVersion, &pDesc->vVersion, sizeof (pDesc->vVersion));
	if (pDesc->dwValidData & DMUS_OBJ_DATE)
		memcpy (&This->pDesc->ftDate, &pDesc->ftDate, sizeof (pDesc->ftDate));
	if (pDesc->dwValidData & DMUS_OBJ_MEMORY) {
		memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength));
		memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData));
	}
	if (pDesc->dwValidData & DMUS_OBJ_STREAM) {
		/* according to MSDN, we copy the stream */
		IStream_Clone (pDesc->pStream, &This->pDesc->pStream);
	}

	/* add new flags */
	This->pDesc->dwValidData |= pDesc->dwValidData;

	return S_OK;
}

HRESULT WINAPI IDirectMusicBandImpl_IDirectMusicObject_ParseDescriptor (LPDIRECTMUSICOBJECT iface, LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc) {
	DMUS_PRIVATE_CHUNK Chunk;
	DWORD StreamSize, StreamCount, ListSize[1], ListCount[1];
	LARGE_INTEGER liMove; /* used when skipping chunks */

	TRACE("(%p, %p)\n", pStream, pDesc);

	/* FIXME: should this be determined from stream? */
	pDesc->dwValidData |= DMUS_OBJ_CLASS;
	memcpy (&pDesc->guidClass, &CLSID_DirectMusicBand, sizeof(CLSID));

	IStream_Read (pStream, &Chunk, sizeof(FOURCC)+sizeof(DWORD), NULL);
	TRACE_(dmfile)(": %s chunk (size = 0x%04lx)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
	switch (Chunk.fccID) {
		case FOURCC_RIFF: {
			IStream_Read (pStream, &Chunk.fccID, sizeof(FOURCC), NULL);
			TRACE_(dmfile)(": RIFF chunk of type %s", debugstr_fourcc(Chunk.fccID));
			StreamSize = Chunk.dwSize - sizeof(FOURCC);
			StreamCount = 0;
			if (Chunk.fccID == DMUS_FOURCC_BAND_FORM) {
				TRACE_(dmfile)(": band form\n");
				do {
					IStream_Read (pStream, &Chunk, sizeof(FOURCC)+sizeof(DWORD), NULL);
					StreamCount += sizeof(FOURCC) + sizeof(DWORD) + Chunk.dwSize;
					TRACE_(dmfile)(": %s chunk (size = 0x%04lx)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
					switch (Chunk.fccID) {
						case DMUS_FOURCC_GUID_CHUNK: {
							TRACE_(dmfile)(": GUID chunk\n");
							pDesc->dwValidData |= DMUS_OBJ_OBJECT;
							IStream_Read (pStream, &pDesc->guidObject, Chunk.dwSize, NULL);
							break;
						}
						case DMUS_FOURCC_VERSION_CHUNK: {
							TRACE_(dmfile)(": version chunk\n");
							pDesc->dwValidData |= DMUS_OBJ_VERSION;
							IStream_Read (pStream, &pDesc->vVersion, Chunk.dwSize, NULL);
							break;
						}
						case DMUS_FOURCC_CATEGORY_CHUNK: {
							TRACE_(dmfile)(": category chunk\n");
							pDesc->dwValidData |= DMUS_OBJ_CATEGORY;
							IStream_Read (pStream, pDesc->wszCategory, Chunk.dwSize, NULL);
							break;
						}
						case FOURCC_LIST: {
							IStream_Read (pStream, &Chunk.fccID, sizeof(FOURCC), NULL);
							TRACE_(dmfile)(": LIST chunk of type %s", debugstr_fourcc(Chunk.fccID));
							ListSize[0] = Chunk.dwSize - sizeof(FOURCC);
							ListCount[0] = 0;
							switch (Chunk.fccID) {
								/* evil M$ UNFO list, which can (!?) contain INFO elements */
								case DMUS_FOURCC_UNFO_LIST: {
									TRACE_(dmfile)(": UNFO list\n");
									do {
										IStream_Read (pStream, &Chunk, sizeof(FOURCC)+sizeof(DWORD), NULL);
										ListCount[0] += sizeof(FOURCC) + sizeof(DWORD) + Chunk.dwSize;
										TRACE_(dmfile)(": %s chunk (size = 0x%04lx)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
										switch (Chunk.fccID) {
											/* don't ask me why, but M$ puts INFO elements in UNFO list sometimes
                                             (though strings seem to be valid unicode) */
											case mmioFOURCC('I','N','A','M'):
											case DMUS_FOURCC_UNAM_CHUNK: {
												TRACE_(dmfile)(": name chunk\n");
												pDesc->dwValidData |= DMUS_OBJ_NAME;
												IStream_Read (pStream, pDesc->wszName, Chunk.dwSize, NULL);
												break;
											}
											case mmioFOURCC('I','A','R','T'):
											case DMUS_FOURCC_UART_CHUNK: {
												TRACE_(dmfile)(": artist chunk (ignored)\n");
												liMove.QuadPart = Chunk.dwSize;
												IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
												break;
											}
											case mmioFOURCC('I','C','O','P'):
											case DMUS_FOURCC_UCOP_CHUNK: {
												TRACE_(dmfile)(": copyright chunk (ignored)\n");
												liMove.QuadPart = Chunk.dwSize;
												IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
												break;
											}
											case mmioFOURCC('I','S','B','J'):
											case DMUS_FOURCC_USBJ_CHUNK: {
												TRACE_(dmfile)(": subject chunk (ignored)\n");
												liMove.QuadPart = Chunk.dwSize;
												IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
												break;
											}
											case mmioFOURCC('I','C','M','T'):
											case DMUS_FOURCC_UCMT_CHUNK: {
												TRACE_(dmfile)(": comment chunk (ignored)\n");
												liMove.QuadPart = Chunk.dwSize;
												IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
												break;
											}
											default: {
												TRACE_(dmfile)(": unknown chunk (irrevelant & skipping)\n");
												liMove.QuadPart = Chunk.dwSize;
												IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
												break;
											}
										}
										TRACE_(dmfile)(": ListCount[0] = %ld < ListSize[0] = %ld\n", ListCount[0], ListSize[0]);
									} while (ListCount[0] < ListSize[0]);
									break;
								}
								default: {
									TRACE_(dmfile)(": unknown (skipping)\n");
									liMove.QuadPart = Chunk.dwSize - sizeof(FOURCC);
									IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
									break;
								}
							}
							break;
						}
						default: {
							TRACE_(dmfile)(": unknown chunk (irrevelant & skipping)\n");
							liMove.QuadPart = Chunk.dwSize;
							IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL);
							break;
						}
					}
					TRACE_(dmfile)(": StreamCount[0] = %ld < StreamSize[0] = %ld\n", StreamCount, StreamSize);
				} while (StreamCount < StreamSize);
				break;
			} else {
				TRACE_(dmfile)(": unexpected chunk; loading failed)\n");
				liMove.QuadPart = StreamSize;
				IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL); /* skip the rest of the chunk */
				return E_FAIL;
			}

			TRACE_(dmfile)(": reading finished\n");
			break;
		}
		default: {
			TRACE_(dmfile)(": unexpected chunk; loading failed)\n");
			liMove.QuadPart = Chunk.dwSize;
			IStream_Seek (pStream, liMove, STREAM_SEEK_CUR, NULL); /* skip the rest of the chunk */
			return DMUS_E_INVALIDFILE;
		}
	}

	TRACE(": returning descriptor:\n%s\n", debugstr_DMUS_OBJECTDESC (pDesc));

	return S_OK;
}

ICOM_VTABLE(IDirectMusicObject) DirectMusicBand_Object_Vtbl = {
    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
	IDirectMusicBandImpl_IDirectMusicObject_QueryInterface,
	IDirectMusicBandImpl_IDirectMusicObject_AddRef,
	IDirectMusicBandImpl_IDirectMusicObject_Release,
	IDirectMusicBandImpl_IDirectMusicObject_GetDescriptor,
	IDirectMusicBandImpl_IDirectMusicObject_SetDescriptor,
	IDirectMusicBandImpl_IDirectMusicObject_ParseDescriptor
};

/* IDirectMusicBandImpl IPersistStream part: */
HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_QueryInterface (LPPERSISTSTREAM iface, REFIID riid, LPVOID *ppobj) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, PersistStreamVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
}

ULONG WINAPI IDirectMusicBandImpl_IPersistStream_AddRef (LPPERSISTSTREAM iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, PersistStreamVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
}

ULONG WINAPI IDirectMusicBandImpl_IPersistStream_Release (LPPERSISTSTREAM iface) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, PersistStreamVtbl, iface);
	return IDirectMusicBandImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
}

HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_GetClassID (LPPERSISTSTREAM iface, CLSID* pClassID) {
	return E_NOTIMPL;
}

HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_IsDirty (LPPERSISTSTREAM iface) {
	return E_NOTIMPL;
}

HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_Load (LPPERSISTSTREAM iface, IStream* pStm) {
	ICOM_THIS_MULTI(IDirectMusicBandImpl, PersistStreamVtbl, iface);
	FIXME("(%p,%p): loading not implemented yet\n", This, pStm);
	return S_OK;
}

HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_Save (LPPERSISTSTREAM iface, IStream* pStm, BOOL fClearDirty) {
	return E_NOTIMPL;
}

HRESULT WINAPI IDirectMusicBandImpl_IPersistStream_GetSizeMax (LPPERSISTSTREAM iface, ULARGE_INTEGER* pcbSize) {
	return E_NOTIMPL;
}

ICOM_VTABLE(IPersistStream) DirectMusicBand_PersistStream_Vtbl = {
    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
	IDirectMusicBandImpl_IPersistStream_QueryInterface,
	IDirectMusicBandImpl_IPersistStream_AddRef,
	IDirectMusicBandImpl_IPersistStream_Release,
	IDirectMusicBandImpl_IPersistStream_GetClassID,
	IDirectMusicBandImpl_IPersistStream_IsDirty,
	IDirectMusicBandImpl_IPersistStream_Load,
	IDirectMusicBandImpl_IPersistStream_Save,
	IDirectMusicBandImpl_IPersistStream_GetSizeMax
};

/* for ClassFactory */
HRESULT WINAPI DMUSIC_CreateDirectMusicBandImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
	IDirectMusicBandImpl* obj;

	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicBandImpl));
	if (NULL == obj) {
		*ppobj = (LPVOID) NULL;
		return E_OUTOFMEMORY;
	}
	obj->UnknownVtbl = &DirectMusicBand_Unknown_Vtbl;
	obj->BandVtbl = &DirectMusicBand_Band_Vtbl;
	obj->ObjectVtbl = &DirectMusicBand_Object_Vtbl;
	obj->PersistStreamVtbl = &DirectMusicBand_PersistStream_Vtbl;
	obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC));
	DM_STRUCT_INIT(obj->pDesc);
	obj->pDesc->dwValidData |= DMUS_OBJ_CLASS;
	memcpy (&obj->pDesc->guidClass, &CLSID_DirectMusicBand, sizeof (CLSID));
	obj->ref = 0; /* will be inited by QueryInterface */
	list_init (&obj->Instruments);

	return IDirectMusicBandImpl_IUnknown_QueryInterface ((LPUNKNOWN)&obj->UnknownVtbl, lpcGUID, ppobj);
}


It seems like you could access Indonesian 21 Feb 2017 Netflix is pleased to announce the open source release of Stethoscope, our first project following a User Focused Security approach. 6 Sep 2020 This tutorial shows you how to set up Shadowsocks on Ubuntu. Shadowsocks is a fast Socks5 proxy to bypass Internet censorship. SOCKS5 Proxies. How to bypass restrictions, Configure Torrent via SOCKS5, Anonymous Proxies, Paid SOCKS5 Proxies, access Netflix via SOCKS5 and more. Shadowsocks, como proyecto proxy de código abierto y basado en trate de acceder a plataformas geográficamente retringidas como Netflix, Muchos confunden Shadowsocks y los servicios de VPN, pero aunque de los gobiernos del mundo, y son ideales para servicios de streaming como Netflix.
if you want to access - Traducción al español - ejemplos .
so you won't experience any buffering issues whilst you're watching your favourite TV show on Netflix.
Error Leer Econnreset Shadowsocks Mac - liuteocepna.gq
Last active Mar 17, 2019. Star 0 Shadowsocks local initiates a TCP connection to Shadowsocks remote by sending an encrypted data stream. The exact encryption scheme depends on the cipher used. Subsequently, the Shadowsocks remote receives, decrypts, and parses the encrypted data stream. 【Siemens Tutorials】本视频介绍如何搭建DNS解锁突破NetFlix播放限制。本期视频项目地址：https://github.com/ab77/netflix-proxy原生IP查询 Shadowsocks: A secure SOCKS5 proxy 2 Stream Cipher 1.2 TCP ss-local initiates a TCP connection to ss-remote by sending an encrypted data stream starting with the target address followed by payload data.
¿Cuál es la mejor VPN para China? 5 que todavía funcionan .
It will help you surf the internet privately and securely. FEATURES 1. Bleeding edge techniques with Unblocking Netflix at school or work is extremely easy, all you need is a cheap online Another option is to try using a Netflix VPN that provides Shadowsocks, as this is known Shadowsocks vs VPN: some functions of VPN services and Shadowsocks are the same, but What to watch on Netflix Of all the premieres that have taken place this week, we Shadowsocks is a free and open-source encryption protocol project, widely used in China to circumvent Internet censorship. It was created in 2012 by a Chinese programmer named "clowwindy", and multiple implementations of the protocol have been made available since. Shadowsocks is not a proxy on its own, but (typically) is the client software to help connect to a third party SOCKS5 proxy, which is similar to a Secure Shell (SSH) tunnel. Once connected, internet traffic can then be directed through the Projects of Shadowsocks are distributed under different licenses, including APL 2.0, GPLv3 and LGPLv3.
Random dice best co op deck - Gaia Lattuada
Post yours and see other's reports and complaints.
bNet Service VPS, Hosting Web, Túnel SSH / DROPBEAR .
hide. report. 100% Upvoted. This thread is archived. New comments cannot be posted and votes cannot be cast.
Icono Shadowsocks, dlls de qt5 Gratis de Papirus Apps
We may add additional Recommendation: Xray, with the new VLESS+XTLS protocol, is the recommended choice for Netflix, web-browsing, and streaming. If you don't have access to the new protocol (mainly on Mac OS), the old V2ray is good for Netflix, Shadowsocks for web-browsing and streaming, Eclipse for security and Video conferencing, and SmartDNS for Netflix unblocking on TVs and consoles. 22/07/2020 使用Shadowsocks打开Netflix的正确姿势 — WannaFlix （附优惠码） 7月 30, 2020 9月 11, 2019 由 Edward.


Little Big Snake io is a game developed by one of the most famous online game makers IO Games. They are famous for their games such as Ghosts.io, Moomoo.io and etc. This time IO games have brought up a new game called “Little big snake”. If you have been playing snake games on your elder’s phone in your childhood, I assure you, you will love this new version of the game.
The game starts off in a brown muddy terrain with a snake. You name your snake whatever you want to. That name will appear to other users as well. The snake is green colored with red tongue initially. It grows by eating shinny circles in the setting. As this is an online game, other people from all parts of the world are also playing it. You have to stay away from big snakes as they will eat you. You also have to save yourself from crashing into mountains.
The snake can accelerate its speed and reach the circles before anyone else gets them. It evolves by experience and food. Special powers can be bought up by using coins in evolution tab. The achievement tab will show you all the things you have achieved in the game. There are quests available by completing them you will unlock new snakes and gain XP to level up. There is also an option to play with friends as a team once you register yourself to the game. The game stop can also be accessed for special offers and abilities after the registration.
The game is simple and easy to play. Use the mouse of your laptop or PC to move the snake. The snake will move in the direction of your mouse. To accelerate the snake click left twice.


In recent weeks, it has become impossible for me to safely remove my external drives. (Mostly, I use Western Digital Passports, Passport Ultras, etc).
I am using Windows 10.
I close all of my programs and folders. I get the "busy" message and to try again later. I run Unlocker on the drives, and Unlocker shows no activity or actions that I can take. I bring up my task manager and nothing is running. I try to safely eject from the WD utility and it doesn't work. I try to eject by going to my computer, right clicking on the drive, and ejecting from there. Sometimes I simply wait for half an hour, read some articles, try again. I get the same "busy" or can't shut down message.
I read online that I could try to Device Manager, click on the drive, and under policies select "Optimize for Performance." However, the computer must restart for changes to take place, and when i've tried, I get stuck on an infinite "Restarting" screen.
I read somewhere that I can try to empty a hidden recycle bin on my external, but I can't seem to reveal it?
I just upgraded to Windows 10 1511 (November Update), and saw the new (modernized) Safely Remove icon in the system tray - and the problem, it's not working properly.(I know, it's a Windows 7 Screenshot, I found it online, it's just for reference).As we can see from the comparison, mine only shows the second row, that being the device description (Name and drive letter), and no longer shows "Eject Storage Device".
So the safely remove icon in the system tray is now practically useless. I search over, and found no one with the same issue, nor did I find any direct fix. I shutdown and reboot a couple of times, tried different USB devices and ports, I also did try a couple of related tweaks, like changing the removal policy, and scan for hardware changes, etc - but still, no luck.Though note, the eject function is still available through file explorer:
In Windows 7 we had the option of selecting which icons were permanently or only displayed when they had a notification in the taskbar. I haven't been able to find where the option is to change the settings in Windows 10, is there one?
I have set my external hard drives to performance mode, and recognize the warning that I won't be able to simply unplug them. Basically, I have to use the little green safely remove hardware icon. Nothing new. In Windows 10 however, when an external drive is attached, and I go to eject it using the safely remove hardware, they are always grayed out and I'm unable to do so. Is there another setting I need to do, or is Windows 10 saying that even with the performance boxes checked, I can still remove drives without "safely removing them."
I have created Eject "N", etc for each drive letter from G-Z and they all work. They will safely remove my external HDDs. I have also created a context menu entry for Safely Remove > and it has a string value for subcommands, none of which will show when hovered upon. I need to move all of my Eject entries under the Safely Remove in order to keep my context menu clutter free.how to do this?
My taskbar shows that I can "Safely Remove Hardware and Eject Media". I don't have anything plugged in. Selecting the message tells me that I can "Eject Nvidia GTX 970". Wouldn't that be odd? It's the friggin' video card! I'm partly ready to select that option, just to see what the computer would do. Oh, that's right: without a video card, I wouldn't be able to see what the computer is doing..Why does Windows 10 think that my PCIe card, the only one that's been in this machine, the one that's been there BEFORE W10 came along, why does W10 want to eject my card?
Any way to hide it for good? Not disabling it, because that could cause some trouble, just that doesn't show in the tray? A .reg file would be awesome.
I want this for 2 reasons: First, I don't use it, I use USB Disk Ejector; and second because it's wasting space. And don't worry, everything in there has a purpose, as myself installed everyone of them.
Windows 10 OS using NVidia graphics and Realtek sound.This morning after a windows update ran , I have no sound. Troubleshooting shows that a solution maybe to reinstall 2 drivers from Realtek and NVidia. I tried the Auto fix solution but problem persists.On the Device Manager it is showing an orange warning triangle on both drivers, saying reinstall. Code 18. As I said the Auto update install does not rectify the problemCan I safely uninstall the drivers ? And then how do I reinstall them ?
I'm having quite a bit of trouble removing the generic bluetooth drivers that Windows installs for you. Those have to be gone if I want to install Toshiba Bluetooth Stacks, which I need in order to use my Wii U Pro Controller in my computer. I've gone through a few methods to try this out and all have failed.
I started out by simply uninstalling the drivers on the device manager (or whatever it is called in English). Didn't work, as the drivers were back when I had to plug in my dongle to complete the installation for TBS. When I tried this in Windows 7, it worked flawlessly, yet in Windows 10 this method did not work.
Afterwards, I tried deactivating the forced driver signature, as well as make it so Windows Update doesn't automatically download any drivers it finds suitable. On top of this, I traveled into the INF folder of my Windows folder to do steps that Microsoft recommended: rename bth.inf to bth.inf.old and bth.pnf to bth.pnf.old. With all this, it should in theory work right? Nope, it didn't. Not even after a reset.
My last attempt involved unplugging my PC from the Internet as a first step, followed by everything else listed above and then a reset. The drivers were still back, bth.inf and bth.pnf somehow magically appearing in my Windows folder when I have no Internet access. I'm at a loss as to what I'm supposed to do.
I have no printer notification when I'm printing. In the control panel -> devices and printer -> printerserver properties these are enabled. I have no hiden icons in the taskbar. I tried in the windows registry the setting from windows 7:
HKEY_CURRENT_USERPrintersSettingsEnableBalloonNotificationsRemote and HKEY_CURRENT_USERPrintersSettingsEnableBalloonNotificationsLocal.
But this also don't work. I'm printing to and HP Deskjet 895 CXI on an WIndows Home Server 2011. On my Windows 7 Pro machine the notification is present.
I plugged in my USB drive and I get notification USB device not recognized. In This PC it shows but it looks like this:When I right click to try and format it, nothing happens. I also tried renaming the drive letter, nothing. I tried many USB fix tools, such as, USB drive defender, Flobo, mUSB Fixer, USB Refresh, USBFix 2016, and most of them didn't even see the device in the list. It's SanDisk Cruzer 16GB.
I just got a notification which said to finish installing device software. How can I find out what device software the notification was referring to? There aren't any yellow flags in Device Manager, and Windows Update and Windows Update MiniTool didn't find any updates.
Recently i upgrade my laptop to windows 10, and also update my graphic drivers, but now the battery icon in notification area is not visible and i can't change the brightness of my screen too. it seems that the graphic driver installed correctly.
I guess I am used to removing a drive when done on USB...and I used to do this with eSATA. However, while I can still do this on USB is there any way to remove my eSATA drive when I am done? Some have said you do not need to in Win 10 and we can just shut it down and others say to use software like Hotswap.
How do I remove the dialog box telling me to update drivers ? I have automated updates from HP so I do not require a new program that wants to install on my computer. I'm confused as to whether it's from MicroSoft or some scam.
There is no icon in the hidden icons area in Windows 10 that allows one to safely eject an SD drive. I have an SD drive inserted in my computer and have uploaded the files I want to upload and now I want to remove the SD card without corrupting or destroying the files on it. How does one do this safely?
I'm using an Intel Compute Stick as a dedicated processor to remote-control some portable audio equipment. To assist portability, the power supplies for all the gear are to a single plug and it's all made to be turned off by simply "pulling the plug" (i.e. no shutdown process). The Compute Stick basically being a fully functional Windows 10 device, it is NOT made to be powered down by simply "pulling the plug."
It's somewhat annoying to have to reach in the rack to power up/down the Stick before I can move it, doubly annoying to have to sit there and wait for it to shutdown, especially if it *decides* it feels like doing some other kind of business before it gets around to my shutdown request. The annoyance factor is increased as there's no attached screen or HIDs to give confirmation that the shutdown request is pending.
So, my question is this: Is there any way to configure the Stick PC in a way that ensures it avoids the adverse effects of being powered down without a shutdown sequence?
I have tried for days to remove a Bluetooth Speaker that did not install proper, I remove it try to re-pair does not pair, then upon reboot it is installed again with error. No matter how many times its removed Windows keeps re installing the device on its own.
How do you completely remove a bluetooth device, all traces so you can start fresh?
I have searched the internet for 2 days and no one has the answer yet. Not even on the MS forums
I have a drive that I want to use as a backup drive for a Windows 10 machine. The problem is the old drive has a boot partition on it that is making Windows 10 go nuts every time I plug it in. If I wait until after the machine boots and then plug it in via USB adapter then I can get to the files but I want to install it inside the machine permanently.A photo of the Disk Manager is below. How do I (or should I) remove that EFI System Partition? The Disk Manager won't let me do it.


Good afternoon fellow readers,
I wrote this because I am just tired to keep explaining the kind of work laptop does to people around.
Why is it that people always think negatively about those using Laptop?
I am a programmer that work remotely from home but whenever people come around the first thing they ask is “Am I also into yahoo?”.
I will have to sit them down to start explaining what the programming job entails.
Honestly, it is really frustrating!
- Please why do people usually have this negative thought to those innocent programmers doing their legit job?


#pragma once
#include "NumberList.h"
class NaturalNumbers :
    public NumberList
{
public :
        unsigned numbers[100], count;

        NaturalNumbers();

        void AddAt(unsigned int  val , unsigned int pos);

        void PushBack(unsigned int val);

        void PushFront(unsigned int val);

        unsigned int PopBack();

        void SortAsc();
        void SortDesc();

        void Print();

};


The Mjølner System: Metaprogramming System
A metaprogram is a program that manipulate other programs.
Yggdrasil is a metaprogramming system, that supports creation of
metaprograms. Yggdrasil is grammar based: a metaprogramming
environment may be generated from the grammar of any language
The metaprograms manipulate programs through a common represen
tation called abstract syntax trees (ASTs)
An AST is modelled as an instance of a pattern. There is a pattern
corresponding to each syntactic category (non-terminal) of the
grammar. The grammar hierarchy is modelled by a corresponding
pattern hierarchy, derived automatically from the grammar.
Grammar Based Interface
The grammar for a specific language result in a grammar based
interface-a metaprogramming environment with a set of patterns for
the language. A metaprogram using the grammar based interface will
thus be language specific. Examples of tools that benefit from
using the grammar based interface are: semantic checkers, program
analyzers, interpreters, browsers, and graphical presentation
Three Levels of Support
The AST may be manipulated at different levels of specialization:
- Tree level: Here the AST is viewed as a tree. Examples of
tools accessing the AST using the tree level are table-driven
parsers and syntax-directed editors
- Context-free level: This is the grammars based interface
generated automatically from the grammar. Graphical
presentation tools and browsers and examples of tools using
the context-free level.
- Semantic level: At this level semantic attributes may be
added to the AST. The compiler is an example of a tool using
the semantic level to access the AST.
Users may develop their own metaprogramming tools.
Yggdrasil supports generation of metaprogramming environments from
a grammar. Users can then use this environment to develop their
own metaprogramming tools-tools that manipulate other programs.
The Fragment System
The fragment system is a part of Yggdrasil, and enables the
management and manipulation of coherent ASTs located in different
files. The functionality of the fragment system allows splitting
of an AST into a number of sub-ASTs (sub-trees) by allowing some
inferior nodes in the original AST to be replaced by special
nodes. The AST, originally positioned at the position of that
node, is called a fragment and may be located in a totally
For further information, see
Mjølner System: Yggdrasil: The Meta Programming System.
Yggdrasil is the tree of the world. The ash tree of which the
crown covers the whole world. The tree gets power from the gods,
from the evil giants and from the kingdom of the death. Everything
in the world happens under the mighty crown of Yggdrasil.


Quality readable content is key here. Google, for example, will recognize that people are leaving your site soon after arriving if they perceive that your site or blog is full of junk content. This is called "bounce rate." If your bounce rate is high, then people are quickly leaving your site. But for the sake of your business, to build your online reputation and brand, you want people to visit your site, stay for a while, and then keep revisiting over the long term.
Using Spinbot you can instantly spin (or rewrite) a chunk of textual content up to 10,000 characters in length (or about 1000 words), which is much longer than an average website or freely-distributed article. With a single click you can turn your old blog post or website article into a completely new one, thereby doubling the payoff you get in return for the time and energy you have already invested into creating quality website content. Spinbot is lightning fast as well as free, so there is potentially no limit to the amount of free web content that you can create using this tool.
If you have not used a spinner before then I would suggest that you first use something that require more human imput like The Best Spinner or Spinner Chief in order to understand the basic principles. However if you must go fully auto then I would suggest you go for Wicked Article Creator. I have it and understand it is similar to wordAI but a one off fee of $47.
The word is out ... there are potentially unlimited opportunities for making money online! But, at the same time, there is a lot of competition for these potentially lucrative opportunities. Not to worry, though. With the help of Article Rewriter Tool, the game has now changed -- in your favor. Before you might have been limited by your time or energy to market your website to major search engines, but now the results of your hard work can be multiplied by this free content rewriting service.
But it is the most important that the spun text, especially with version 2.0 usually passes CS test, and Google cannot even see it as spun content. Such as content can be used for links building as well as on money sites and qualitity is pretty good, as you saw in the example. It is much better than other article spinners with similar pricing as they do not get the right meaning of each and every word, so the rewrites sometimes looks funny/strange. It is of course much better than any free article spinner/rewriter I have tried.
Cross Platform – Being a Mac user I prefer when I can fire up a program locally. WordAi is web based and therefore works on Windows & Macs without issue (Linux as well). SpinnerChief III Ultimate has a Web Api that allows spinning from the web, but we did not have much luck with it, so at this time we consider SpinnerChief a Windows only application and therefore requires me to run it in a virtual Windows Machine using VMWare Fusion. This one is a hard one to call because clearly WordAi wins cross platform, but it doesn’t have all the extras that SpinnerChief offers.
Most people don’t know that spinning content on their website truly optimizes their search among other users. However, it’s important to avoid using duplicate content because search engines will penalize you. This practice is best avoided at all times if you truly want your site to rank in search engines like Google. Spin Rewriter ensures that your spun articles pass Copyscape to give you peace of mind that your content is unique. Spin Rewriter 9.0 allows you to rewrite articles using SEO techniques so that you can rank for certain keywords. When you rank for more keywords you will be attracting more visitors to your site organically. With a steady traffic flow to your blogs, you’ll find making bank easier than ever. Whether you use AdWords, sell Amazon products, or run affiliate offers, a reliable online income is now within your grasp.
There is a completely new feature - Team Version, SpinnerChief 5 is the only article spinner that has a team version now, which is especially designed for team using, create/manage/use team thesaurus with team members together, and multi-users can use the license on different computer with themselves member accounts. Manager can manage team members easily.
I've ranked websites in the past with spun content, and now they are still on #1 position of google. First year (2014) google found me because my spun was really bad, many paragraphs were just copied and my position drop from #2 to around #20 after a panda update. Later I cleaned all my text with better spun (I didn't buy any article!), my ranking went up again, and with more backlinks I reached #1 and it is still there


Jay managed to create a problem of difficulty $$$x$$$ and decided to make it the second problem for Codeforces Round #921.

But Yash fears that this problem will make the contest highly unbalanced, and the coordinator will reject it. So, he decided to break it up into a problemset of $$$n$$$ sub-problems such that the difficulties of all the sub-problems are a positive integer and their sum is equal to $$$x$$$.

The coordinator, Aleksey, defines the balance of a problemset as the GCD of the difficulties of all sub-problems in the problemset.

Find the maximum balance that Yash can achieve if he chooses the difficulties of the sub-problems optimally.


Ok this has been out for a while but I've not had chance to look into it. Earlier in the year I reviewed one of Slitherines' "table top" strategy game releases "Conquest" so when this came through a couple of days ago I checked out this, surprisingly good looking trailer:
According to the youtube comments, if they can be trusted, it far less of an arcade strategy game than titles like Medieval II Total War. I've not played that either(!) so I have no idea if that's a good thing or not! Now I'm not as much as a table-top gamer as I was when I was in my teens but the trailer made me think that perhaps it was worth taking a look!
The screenshots make it look even better, I think I'll need to try the demo at least...
Here's the link if you want to too!


/*
   +----------------------------------------------------------------------+
   | Copyright (c) The PHP Group                                          |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.01 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | https://www.php.net/license/3_01.txt                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | license@php.net so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Authors: Frank Denis <jedisct1@php.net>                              |
   +----------------------------------------------------------------------+
*/

#ifndef PHP_LIBSODIUM_H
#define PHP_LIBSODIUM_H

extern zend_module_entry sodium_module_entry;
#define phpext_sodium_ptr &sodium_module_entry

#define PHP_SODIUM_VERSION PHP_VERSION

#ifdef ZTS
# include "TSRM.h"
#endif

PHP_MINIT_FUNCTION(sodium);
PHP_MINIT_FUNCTION(sodium_password_hash);
PHP_MSHUTDOWN_FUNCTION(sodium);
PHP_RINIT_FUNCTION(sodium);
PHP_RSHUTDOWN_FUNCTION(sodium);
PHP_MINFO_FUNCTION(sodium);

#endif	/* PHP_LIBSODIUM_H */


something changed in this matter since 2009? http://stackoverflow.com/questions/1983106/hacking-attr-accessible-to-support-a-different-set-of-accessible-attributes-for
so how would you limit which attributes may be assigned in update, and which cannot? By removing keys from hash (eg. params[:user])?
dhoelzer: I had a question up there, which is "best practice" for attributes, which should be attr_accessible on create action, but not on update? Removing keys from params[:model] ?
hi, is it possible and fine to set other validation context than :create or :update? I would like to have another validation context for updating by user with admin privileges : )


Polycarpus has a computer with n processors. Also, his computer has n memory cells. We'll consider the processors numbered by integers from 1 to n and that the memory cells are consecutively numbered by integers from 1 to n.

Polycarpus needs to come up with a parallel program model. For each memory cell number i this program must record the value n - i to this cell. In other words, for each cell you've got to find the distance to cell n.

Let's denote the value that is written in the i-th cell as ai. Initially, ai = 1 (1 ≤ i < n) and an = 0. We will consider that only processor i can write values in the memory cell number i. All processors can read an information from some cell (several processors can read an information from some cell simultaneously).

The parallel program is executed in several steps. During each step we execute the parallel version of the increment operation. Executing the parallel version of the increment operation goes as follows:

1. Each processor independently of the other ones chooses some memory cell. Let's say that processor i has chosen a cell with number ci (1 ≤ ci ≤ n).
2. All processors simultaneously execute operation ai = ai + aci.

Help Polycarpus come up with the parallel program model that is executed in exactly k steps. Calculate the operations that need to be executed. Note that after k steps for all i's value ai must be equal n - i.


Caretaker Status: Rogue
Affiliated companion(s): COM-175-729-1
Level 6 - abstract
1940s: from Greek (drakōn) ouroboros ‘(snake) devouring its tail’.
An ancient Egyptian/Greek symbol of a snake or serpent eating its own tail, variously signifying infinity and the cycle of life.
Magic Status: 1 - Neophyte
Tier 1 - Their tail is always long enough to touch the Paralogos' nose.
Wisdom Status: 0 - Unaware


This image is in the public domain because it is a screenshot from NASA’s globe software World Wind using a public domain layer, such as Blue Marble, MODIS, Landsat, SRTM, USGS or GLOBE.
This work was previously under Public Domain, or a Free License. It has been digitally enhanced and/or modified. This derivative work has been (or is hereby) released into the public domain by its author, Sting at the French Wikipedia project. This applies worldwide.
In some countries this is not legally possible; if so:
Sting grants anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law. – Source: https://commons.wikimedia.org/wiki/File:Mediterranean_Sea_political_map-en.svg – File edited and by Helmut Bolesch.


[UbuntuWomen] [Project Harvest]Planning for Development
belkinsa at ubuntu.com
Wed Feb 18 23:13:06 UTC 2015
I e-mailed Daniel Holbach about giving ownership of the harvest-dev team
to the Elected Leaders of Ubuntu Women, but no response yet. I'm doing
this in order to get control over the team so we can get the ones
inserted in helping in and remove the inactive folks.
But in the meanwhile, I would like to talk about planning for
development as a plan is needed for success. The main things that I
would like to talk about are creating roles, assigning the bugs, setting
deadlines for them, and creating an IRC channel.
Since Harvest is a program, there are various items that are needed.
Documentation (user and developer), coding, leadership/management, and
bug management are the four that I can think of. Having that said, I
think we need at least one in each but coding. For coding, I think we
need two or more people- which we have based on the people who reached
me. As for leadership/management, I can take that role because I
already have it. I will also take a shot at documentation. That leaves
bug management, but I think I can take that role in the beginning and
pass it on once we find someone that can do it.
Am I missing other roles?
To make life easier, I suggest that we assign bugs since we already have
a framework of code to work on. Once the ownership is passed to the
Elected Leaders of Ubuntu Women, we can have a meeting where we do bug
assignments. Or we can do it before. It's our choice.
*Setting Deadlines for Bugs*
I'm doing this to get things done as soon as possible. But I have no
idea on how long a deadline should be. Suggestions please.
*Creating an IRC Channel*
Just food for thought. We can do it via #ubuntu-women as it's a quiet
channel or have one for Harvest.
This not set in stone yet and is open for discussion. I'm willing to
have a meeting with the folks that are interested before we start work.
Also, I will create blueprints for what we need.
User Wiki page: https://wiki.ubuntu.com/belkinsa
More information about the Ubuntu-Women


If you need to determine which virtualization platform is a Windows 7 Virtual Machine (VM) is running on, while, you have no access to any other tools such as, the hypervisor or virtualization manager, you can easily find out by issuing a simple command from the Windows command-line interface.
Windows Management Instrumentation (WMI) allows you to write scripts and expose information about a Windows 7 resource or service. As we have seen in the previous post – Windows Management Instrumentation (WMI), WMI allows you to access system management information from the command-line interface! WMI can become handy when you need to retrieve specific information which may be not available from the GUI. Mastering the WMI command line utility may turn you into command line freak never wanting to leave the command line.


Born in Maryland on July 1, 1999. I love to talk sports and write sports, especially NFL and I've always wanted to be a broadcaster. I decided to begin commenting on Bleacher Report articles about three years ago, and heavily this year. I recently went to Sports Broadcasting Camp to learn more about my field, and wound up learning so much m about my field and made some friends in the process. I recently started a blog for Wordpress.com and my site is http://thefactsbehindthenumbers.wordpress.com/. I'm also on twitter, and you can read more about me and my blog there.


To increase transparency, PeerJ operates a system of 'optional signed reviews and history'. This takes two forms: (1) peer reviewers are encouraged, but not required, to provide their names (if they do so, then their profile page records the articles they have reviewed), and (2) authors are given the option of reproducing their entire peer review history alongside their published article (in which case the complete peer review process is provided, including revisions, rebuttal letters and editor decision letters).
Thank you for the valuable time and patience you put into making your manuscript pass the peer review process successfully. I am pleased to inform you that your manuscript is accepted into PeerJ with expectation as noted below.
Please respond to the reviewer's latest round of comments, which are few, prior to a final decision on this manuscript.
The authors have done a good job in addressing most of my previous issues. While I would still prefer a tighter focus, I do not think this is an issue that calls for a rejection. Since the target audience is now more clearly described, readers will be able to decide for themself.
I have two specific remarks on additions to the manuscript that should be addressed in a revision.
# Specific remarks:
First, authors now note that "significant effort" is necessary before one can collect data. In order not to put manypotential user off, it would be important to provide some estimate on how long it takes to learn/teach these techniques. Even if there is no hard data on this some information based on your experiences would be good. For example a friend of mine regularly teaches workshops for online-questionnaire studies that take approx. 4h and include learning lime-survey and specifics of online questionnaire research.
Could you provide a similar estimate for the time it takes to set up an Mturk account and how much time is beeing spend on such a study, e.g. how many percent of the participants try to get in contact?
Second, in table 3 that gives an overview of the software it is claimed that all allow for a measurement of reaction times. I think this is misleading because Limesurvey and Inquisit are clearly not on par on this issue. It may be much better to describe the precision at which reaction times can be measured (for limesurvey seconds; for Inquisit several milliseconds). This will help researchers decide on the adequate tool.
Please carefully consider reviewer comments and use discretion whether applicable to make revisions. I struggle with aspects of focus here which could be due to the number of authors each contributing her/his share with tighter control needed over content synthesis. I have a few observations to add to the reviewers.
It seems to be called a tutorial and then a lit review and then heavy enough emphasis on MTurk to indicate that should be in the title. It doesn't address enough historical aspects leading up to current trends.
I created the first Web-based survey and study of Internet addiction back in 1995 for online participants who perceived themselves as addicted and I published it in 1996. While it is pretty much lost today, for what it is worth, perhaps anecdotally, you can still access it at http://w8r.com/iads/survey.html. Times and methods have certainly changed; the importance of your study is certainly timely and relevant.
In addition to reviewer suggestions, I would like to see either more comparison over time regarding the matter of online surveys for psychology experiments in lab v. online or clearer indication that your study seeks to look at a more definitive timeline, should I have missed it.
While I would posit the overall decision between Minor-Major here, I wish to ensure all relevant reviewer comments are seriously taken into consideration in revision by all authors for the best synthesized paper to be published in PeerJ.
All the best.
Very clearly reported with some exceptions as described in the general comments.
The research question is defined but should be more focused as described in the general comments.
The conclusions are balanced and the authors offer many useful suggestions and tipps for conducting online studies.
In the article “Conducting perception research over the internet: a tutorial review” authors give the authors provide a review of methodological sutides on online testing.
While the question of is important I believe that the authors need to focus more strongly on the topic of perception research. In the current form the review reiterates many discussions without adding new aspects that are irrelevant to perception-studies.
# Major issues
In my view the whole section on "Benefits of conducting research online" mixes very general issues and those specifically relevant to perception-research. I am not convinced that the same aspects are relevant to perception studies compared with questionnaire studies. Rather than repeating these well-known studies on benefits of online testing - particularly mTurk - this should be severely shortened (1 page) or removed altogether.
On the balance the parts that are most relevant for anyone planning a study - sections on timing-issues, hardware and selection on software could be expanded.
# Specific remarks:
# Benefits of conducting research online
## Access to a more representative sample of participants
- The authors make a claim that the online sample fit better, but offer only very vague data about the sample. It would make a much better point if they scrutinized a random selection of papers reporting on lab-based studies. Otherwise authors should remove claims about lab-based research.
- Authors should try ot focus on aspects that are specific to perception studies.
- It is unclear what the sample should be representative for. Only US-citizens?
## Access to large pools of participants
- "highly praised on twitter, " should be removed.
- This paragraph actually describes how internet based recruitment may be more objective than lab-based forms.
## Recruitment platforms
- This section would also be much better if a stringent criteria were used to comapre the different services. Availibility from outside US, diversity of sample, sample-size, princing
## Speed of data collection
- A more balanced view would try to describe the time it takes to set up an account for the first time etc. and start an individual study.
## Cross-cultural research
- "(e.g., Levitan et al., 2014; Wan et al, 2014a, 2014b, 2015)." It is unclear why the authors choose to citate studies that all pertain to modalities that cannot be tested online
- "Eriksson and Simpson": Why was this study chosen? It seems like a questionnaire study.
## Complimenting in-lab research
- please correct "complImenting"
## Comparing online with in-lab
- "indeed, given a disagreement between such studies": This is a very bold statement because problems replicating e.g. backward masking are very likely due to technical problems presenting stimuli online rather than an artifact that is induced by lab-equipment.
- Here, too a more structured summary of the three comparison studies may be beneficial.
# Potential concerns with online research
## 1 Timing
- This section may be divided in presentation and response timing.
## 2 Variability in hardware
- Again this could be divided in presentation and response-timing.
- Also it may be best to use different modalities to structure the paragraph.
- Why cannot the McGurk effect presented as a video?
- It should be noted how relevant such problems are for within-sj designs
## 3 Unique participants?
## 4 Random responding
- "Oppenheimer, Meyvis, and Davidenko": As the authors note these authors study decision making. Is this also a pertinent problem for perception studies?
## 5 Ethics
- Authors should note solutions to the dilemmata described, especcially those raised by larger Societies.
# Conducting research online
- Consider to change the title of the subsection to software.
- The comparison of tools is great and could be much expanded. It would be important to know whether RTs can be collected, or not?
- "Questionnaire vs Research focus": What is meant by this?
The submission is well written and structured.
Not really applicable to this paper, as it is a review of experimental design.
This is a very useful and timely review that will benefit the field.
P. 5: Do smartphones count as "computers"?
P. 7: Where is the lab-based data from? Are the "samples" equivalent for the comparisons shown? Certainly some labs study ageing, such as changes across the lifespan! Also, do the WEIRD aspects of online samples cause more concern than noted here? Certainly there is potential for overcoming WEIRD samples, but it is unclear that is yet the case.
P. 9: On homophily: I understand the example you note, but is there any evidence this is the case for online studie? That seems most relevant.
P. 11: On Recruitment Platforms: I wonder if this section should come far earlier. The sections that precede it discussion Mechanical Turk in a familiar tone, yet only here is it really explained in detail. Explaining it first would be helpful perhaps.
P. 28: Interesting study described here -- but did they also debrief the 46% that missed the extra task to see if they really missed it, or if instead they just ignored it thinking it was a trick to see if they would not focus on the primary task?
P. 30-31: Do the societies (BPS, APA, etc) need to revisit these guidelines (or lack thereof)? One criticism is raised, but it seems there other things missing from those policies as well. The anonymity issue, clashing with the requirement to allow later data deletion, is not just an online problem of course, and a suggestion would be interesting here.
All text and materials provided via this peer-review history page are made available under a Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.


You are developing a rating system for an online game. Every time a player participates in a match, the player's rating changes depending on the results.

Initially, the player's rating is $$$0$$$. There are $$$n$$$ matches; after the $$$i$$$-th match, the rating change is equal to $$$a_i$$$ (the rating increases by $$$a_i$$$ if $$$a_i$$$ is positive, or decreases by $$$|a_i|$$$ if it's negative. There are no zeros in the sequence $$$a$$$).

The system has an additional rule: for a fixed integer $$$k$$$, if a player's rating has reached the value $$$k$$$, it will never fall below it. Formally, if a player's rating at least $$$k$$$, and a rating change would make it less than $$$k$$$, then the rating will decrease to exactly $$$k$$$.

Your task is to determine the value $$$k$$$ in such a way that the player's rating after all $$$n$$$ matches is the maximum possible (among all integer values of $$$k$$$). If there are multiple possible answers, you can print any of them.


You are given an array which is initially empty. You need to perform $$$n$$$ operations of the given format:

- "$$$a$$$ $$$l$$$ $$$r$$$ $$$k$$$": append $$$a$$$ to the end of the array. After that count the number of integer pairs $$$x, y$$$ such that $$$l \leq x \leq y \leq r$$$ and $$$\operatorname{mex}(a_{x}, a_{x+1}, \ldots, a_{y}) = k$$$.

The elements of the array are numerated from $$$1$$$ in the order they are added to the array.

To make this problem more tricky we don't say your real parameters of the queries. Instead your are given $$$a'$$$, $$$l'$$$, $$$r'$$$, $$$k'$$$. To get $$$a$$$, $$$l$$$, $$$r$$$, $$$k$$$ on the $$$i$$$-th operation you need to perform the following:

- $$$a := (a' + lans) \bmod(n + 1)$$$,
- $$$l := (l' + lans) \bmod{i} + 1$$$,
- $$$r := (r' + lans) \bmod{i} + 1$$$,
- if $$$l > r$$$ swap $$$l$$$ and $$$r$$$,
- $$$k := (k' + lans) \bmod(n + 1)$$$,

The $$$\operatorname{mex}(S)$$$, where $$$S$$$ is a multiset of non-negative integers, is the smallest non-negative integer which does not appear in the set. For example, $$$\operatorname{mex}(\{2, 2, 3\}) = 0$$$ and $$$\operatorname{mex} (\{0, 1, 4, 1, 6\}) = 2$$$.


Within the space of 2 weeks i have had 2 drives break in the server. The first time i put a spare drive in and accidentally deleted the whole RAID... I spent a week running recovery software and backing everything up to an 8TB external drive. I finally got everything installed and working after 3 weeks and then another disk broke. I am currently without a server as i dont have any spare drives, so going to be sending the 2 broken disks back to get replacements as they had a 5 year warranty.


#include "vpn-ws.h"

#if defined(__linux__)

#include <sys/epoll.h>

int vpn_ws_event_queue(int n) {
	int ret = epoll_create(n);
	if (ret < 0) {
		vpn_ws_error("vpn_ws_event_queue()/epoll_create()");
		return -1;
	}
	return ret;
}

int vpn_ws_event_read_to_write(int queue, int fd) {
	struct epoll_event ev;
        ev.events = EPOLLOUT;
        ev.data.fd = fd;
        int ret = epoll_ctl(queue, EPOLL_CTL_MOD, fd, &ev);
        if (ret < 0) {
                vpn_ws_error("vpn_ws_event_read_to_write()/epoll_ctl()");
                return -1;
        }
        return ret;
}

int vpn_ws_event_write_to_read(int queue, int fd) {
        struct epoll_event ev;
        ev.events = EPOLLIN;
        ev.data.fd = fd;
        int ret = epoll_ctl(queue, EPOLL_CTL_MOD, fd, &ev);
        if (ret < 0) {
                vpn_ws_error("vpn_ws_event_read_to_write()/epoll_ctl()");
                return -1;
        }
        return ret;
}

int vpn_ws_event_add_read(int queue, int fd) {
	struct epoll_event ev;
	ev.events = EPOLLIN;
	ev.data.fd = fd;
	int ret = epoll_ctl(queue, EPOLL_CTL_ADD, fd, &ev);
	if (ret < 0) {
		vpn_ws_error("vpn_ws_event_add_read()/epoll_ctl()");
		return -1;
	}
	return ret;
}

int vpn_ws_event_wait(int queue, void *events) {
	int ret = epoll_wait(queue, events, 64, -1);
	if (ret < 0) {
		vpn_ws_error("vpn_ws_event_wait()/epoll_wait()");
                return -1;
	}
	return ret;
}

void *vpn_ws_event_events(int n) {
	return vpn_ws_malloc(sizeof(struct epoll_event) * n);
}

int vpn_ws_event_fd(void *events, int i) {
	struct epoll_event *epoll_events = (struct epoll_event *) events;
	return epoll_events[i].data.fd;
}

#elif defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__)

#include <sys/event.h>

int vpn_ws_event_queue(int n) {
        int ret = kqueue();
        if (ret < 0) {
                vpn_ws_error("vpn_ws_event_queue()/kqueue()");
                return -1;
        }
        return ret;
}

int vpn_ws_event_read_to_write(int queue, int fd) {
	struct kevent kev;

	EV_SET(&kev, fd, EVFILT_READ, EV_DELETE, 0, 0, 0);
        if (kevent(queue, &kev, 1, NULL, 0, NULL) < 0) {
		vpn_ws_error("vpn_ws_event_read_to_write()/kevent()");
                return -1;
        }

        EV_SET(&kev, fd, EVFILT_WRITE, EV_ADD, 0, 0, 0);
        if (kevent(queue, &kev, 1, NULL, 0, NULL) < 0) {
		vpn_ws_error("vpn_ws_event_read_to_write()/kevent()");
                return -1;
        }
        return 0;
}

int vpn_ws_event_write_to_read(int queue, int fd) {
	struct kevent kev;

        EV_SET(&kev, fd, EVFILT_WRITE, EV_DELETE, 0, 0, 0);
        if (kevent(queue, &kev, 1, NULL, 0, NULL) < 0) {
                vpn_ws_error("vpn_ws_event_write_to_read()/kevent()");
                return -1;
        }

        EV_SET(&kev, fd, EVFILT_READ, EV_ADD, 0, 0, 0);
        if (kevent(queue, &kev, 1, NULL, 0, NULL) < 0) {
                vpn_ws_error("vpn_ws_event_write_to_read()/kevent()");
                return -1;
        }
        return 0;
}

int vpn_ws_event_add_read(int queue, int fd) {
	struct kevent kev;

	EV_SET(&kev, fd, EVFILT_READ, EV_ADD, 0, 0, 0);
        if (kevent(queue, &kev, 1, NULL, 0, NULL) < 0) {
                vpn_ws_error("vpn_ws_event_add_read()/kevent()");
                return -1;
        }
        return 0;
}

int vpn_ws_event_wait(int queue, void *events) {
        int ret = kevent(queue, NULL, 0, events, 64, NULL);
        if (ret < 0) {
                vpn_ws_error("vpn_ws_event_wait()/kevent()");
        }
        return ret;
}

void *vpn_ws_event_events(int n) {
        return vpn_ws_malloc(sizeof(struct kevent) * n);
}

int vpn_ws_event_fd(void *events, int i) {
        struct kevent *k_events = (struct kevent *) events;
        return k_events[i].ident;
}

#elif defined(__WIN32__)

int vpn_ws_event_queue(int n) {
	return -1;
}

int vpn_ws_event_read_to_write(int queue, vpn_ws_fd fd) {
	return -1;
}

int vpn_ws_event_write_to_read(int queue, vpn_ws_fd fd) {
	return -1;
}

int vpn_ws_event_add_read(int queue, vpn_ws_fd fd) {
	return -1;
}

int vpn_ws_event_wait(int queue, void *events) {
	return -1;
}

void *vpn_ws_event_events(int n) {
	return NULL;
}

int vpn_ws_event_fd(void *events, int i) {
	return -1;
}

#endif


Sereja loves integer sequences very much. He especially likes stairs.

Sequence a1, a2, ..., a|a| (|a| is the length of the sequence) is stairs if there is such index i (1 ≤ i ≤ |a|), that the following condition is met:

a1 < a2 < ... < ai - 1 < ai > ai + 1 > ... > a|a| - 1 > a|a|.

For example, sequences [1, 2, 3, 2] and [4, 2] are stairs and sequence [3, 1, 2] isn't.

Sereja has m cards with numbers. He wants to put some cards on the table in a row to get a stair sequence. What maximum number of cards can he put on the table?


Added ALL discs
Added config to choose songs
Added support for JRE 1.6 (Severely needed) :P
Made disc number 11 disabled by default
The default delay is not 2000
Set delay to 2000 by default
Added support for MC 1.4.4/1.4.5
Added MultiWorld Support
You can set the Jukebox location by looking at the Jukebox
You may now have infinite Jukebox's
The plugin runs by a new ID system
Lots of odd/ends bug fixes & code clean up.
Added /jbr list command.
Added support for multiple arguments on /jbr set- it is now /jbr set <id>
Updated to 1.5
Choosing only one song in the config will crash your server! You must choose at least 2 discs to play- it interferes with the "not playing the last disc" system I have in place.


Slides: Add a Comment on a Shared Slide
The comment feature enables Slides collaborators to provide feedback or ask questions. For items that need immediate action or attention from a specific collaborator, you can assign a comment to a specific person.
Add a comment on a shared Slide, and assign it to a collaborator.
More Slides Activities
Quickly deploy Slides lessons to your entire district.
Top districts trust Alludo to train teachers and staff


In re the term 'honest mistake', would a 'dishonest mistake' be synonymous to something like irresponsibility, negligence or lazy/not doing due diligence?
Part 1. My thoughts
- Thought 1.1: Honest mistake vs dishonest mistake
We apologise for dishonest mistakes. We don't apologise for honest mistakes. We can instead say like 'My bad' or 'My mistake.' Of course in everyday terminology we say 'my apologies' to mean 'my (honest) mistake' instead of course necessarily admitting to any guilt. Just like how we say 'sorry' for your loss (similar to condolences) or 'sorry' to hear that.
Quote from The Phantom Tollbooth:
You must never feel badly about making mistakes ... as long as you take the trouble to learn from them. For you often learn more by being wrong for the right reasons than you do by being right for the wrong reasons.
Presumably the mistakes that are being talked about are honest mistakes. For example for a student: Don't be (unreasonably) afraid of making a mistake on an exam to the point of cheating on the exam. But do be (reasonably) afraid of neglecting your studies by spending more than allotted recreation time.
- Thought 1.1.1: I believe it boils down to whether or not you should have known better. I think it's like the difference between naïveté and ignorance. You're at fault for ignorance but not for naïveté. i think it's like fool vs student in the arabian quote that goes:
“He who knows not, and knows not that he knows not, is a fool; shun him. He who knows not, and knows that he knows not, is a student; Teach him. He who knows, and knows not that he knows, is asleep; Wake him. He who knows, and knows that he knows, is Wise; Follow him.”
- Thought 1.2: Dishonest mistake vs intentional wrongdoing
Going back to the student example earlier, if a student extends allotted recreational time like 'Oh just 5 more minutes' and then ends up spending 1 hour more, then the student has committed a dishonest mistake through negligence of time management. If as a result of this the student decides to cheat, then this is no longer mere negligence but really intending something wrong. The 'Oh just 5 more minutes' did not have any intention of anything wrong, which in this case is losing a significant amount of time for study.
- Thought 1.2.1: I kinda have this analogy in homicide legal terms:
Manslaughter/humanslaughter <--> dishonest mistake
Murder <--> intentional wrongdoing
Not the best analogy, but the point is I believe the idea why we have the concept of humanslaughter in the first place is that there are homicide cases where the perpetrator isn't 'not guilty by reason of insanity' but at the same didn't commit the act with forethought/premeditation/whatever. Like they just lost their temper (voluntary) or didn't do their due diligence (involuntary).
Part 2. What I've found about this on Reddit and even on Stack Exchange (not quite in the way I'm asking though):
2.3. Ignorantly dishonest → I notice here no one says anything like irresponsible, negligent, lazy/not doing due diligence. (So I decided to answer myself.)
Part 3. Some context
3.1. people may consider a dishonest mistake an honest mistake.
- E.g., 3.1.1. parents fail to get the proper mental health treatment for their child who was diagnosed with a mental illness (say autism, ADHD or any mental illnesses diagnosed relative to how the child behaves/how the person behaved as a child) because they do not do their due diligence. Let's say they do their own reading about autism or ADHD and do not proceed with the suggested treatment by the diagnoser (eg psychologist or psychiatrist) without double checking their own readings with the diagnoser.
3.2. people may consider a dishonest mistake an intentional wrongdoing.
- E.g., 3.2.1. Following (3.1.1) still: Here of course it's not exactly 'child abuse' since abuse, as far as I understand, is intentional, not negligent...or not. But I'd call it more like child neglect or child maltreatment to distinguish from those cases where parents who, say, rape their children). It's indeed a mistake in the sense that it's not intentional. But that doesn't mean the mistake was honest.
3.3. people may consider an honest mistake to be a dishonest mistake.
- E.g., 3.3.1. Again, boredpanda or phantom tollbooth as above.
3.4. (Also to clarify the issue of the term 'mistake') people may consider an intentional wrongdoing to be a dishonest mistake (or even an honest mistake!)
- E.g., 3.4.1. As discussed a lot in comments: Adultery. I'd think if it happens once as a spur of the moment or getting drunk thing especially if it's just a kiss and not full blown sex, then I think it can be just a dishonest mistake. So it's still wrong, but let's not give a sentence of life imprisonment for murder instead of just 2 years for humanslaughter. (Well, I don't know. IANAL. Maybe divorce law in some parts of the world might consider a spur of the moment kiss as just as bad as full blown sex.) But if an adulterous act has forethought/premeditation, then this is now intentional and thus no longer a mistake.
A lot of times cheaters will say what they did was a 'mistake'. I think this is similar to the 'apologies' or 'sorry' thing above in that what is meant by 'mistake' is something altogether now.
This kind of 'mistake' they did has intent. So this is not the kind of 'mistake' I mean when I say 'dishonest mistake'. A 'dishonest' mistake has no intent, same as an honest mistake. Was I being unclear? I don't think so. What I mean by 'mistake' in 'dishonest mistake' should, I believe, be clear because it comes from what is meant by 'mistake' in 'honest mistake', where intent is, I believe, understood to not be present here.
Going back to the adultery, the issue here is I think those cheaters subconsciously/unconsciously lie to their spouses/partners or even to themselves in that when they say 'mistake', they mean it like honest/dishonest mistake instead of, well, intentional wrongdoing. Here's an example from a TV series
This wasn't a mistake, Michaela. This was you stabbing me in the heart.
Part 4. Appendix:
An edit proposed for me to ask 'antonym' of 'honest mistake'. I rejected in thinking that it might cause confusion in that like I'm trying to ask here what I might call (antonym-of-honest)-mistake instead of antonym-of-(honest mistake), which might turn out to be different.


If you don't use artifacts upload to read MegaLinter reports, you can access them with an hyperlink to file.io
important: MegaLinter has no affiliation with file.io, but it's supposed to be secured, and only one download is available for a report (snapchat for files, basically)
This reporter is deactivated by default.
Activate the reporter (
FILEIO_REPORTER: true) to see link to reports zip on file.io
- Get the file.io hyperlink at the end of Mega-linter console output
- Download file on file.io: it is immediately deleted on the server so it can be downloaded only once
- Browse reports


#ifndef GRAPHICS_H
#define GRAPHICS_H

#include <glib.h>
#include <gtk/gtk.h>

#include "glk.h"
#include "gi_blorb.h"
#include "resource.h"
#include "window.h"
#include "style.h"
#include "strio.h"

#define IMAGE_CACHE_MAX_NUM 10
#define IMAGE_CACHE_MAX_SIZE 5242880

struct image_info {
	guint32 resource_number;
	gint width, height;
	GdkPixbuf* pixbuf;
	gboolean scaled;
};

gboolean on_graphics_configure(GtkWidget *widget, GdkEventConfigure *event, winid_t win);
gboolean on_graphics_expose(GtkWidget *widget, GdkEventExpose *event, winid_t win);
void clear_image_cache(struct image_info *data, gpointer user_data);

#endif


You are an all-powerful being and you have created a rectangular world. In fact, your world is so bland that it could be represented by a $$$r \times c$$$ grid. Each cell on the grid represents a country. Each country has a dominant religion. There are only two religions in your world. One of the religions is called Beingawesomeism, who do good for the sake of being good. The other religion is called Pushingittoofarism, who do murders for the sake of being bad.

Oh, and you are actually not really all-powerful. You just have one power, which you can use infinitely many times! Your power involves missionary groups. When a missionary group of a certain country, say $$$a$$$, passes by another country $$$b$$$, they change the dominant religion of country $$$b$$$ to the dominant religion of country $$$a$$$.

In particular, a single use of your power is this:

- You choose a horizontal $$$1 \times x$$$ subgrid or a vertical $$$x \times 1$$$ subgrid. That value of $$$x$$$ is up to you;
- You choose a direction $$$d$$$. If you chose a horizontal subgrid, your choices will either be NORTH or SOUTH. If you choose a vertical subgrid, your choices will either be EAST or WEST;
- You choose the number $$$s$$$ of steps;
- You command each country in the subgrid to send a missionary group that will travel $$$s$$$ steps towards direction $$$d$$$. In each step, they will visit (and in effect convert the dominant religion of) all $$$s$$$ countries they pass through, as detailed above.
- The parameters $$$x$$$, $$$d$$$, $$$s$$$ must be chosen in such a way that any of the missionary groups won't leave the grid.

The following image illustrates one possible single usage of your power. Here, A represents a country with dominant religion Beingawesomeism and P represents a country with dominant religion Pushingittoofarism. Here, we've chosen a $$$1 \times 4$$$ subgrid, the direction NORTH, and $$$s = 2$$$ steps.

You are a being which believes in free will, for the most part. However, you just really want to stop receiving murders that are attributed to your name. Hence, you decide to use your powers and try to make Beingawesomeism the dominant religion in every country.

What is the minimum number of usages of your power needed to convert everyone to Beingawesomeism?

With god, nothing is impossible. But maybe you're not god? If it is impossible to make Beingawesomeism the dominant religion in all countries, you must also admit your mortality and say so.


Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Replaced the sort in median and quantileSeq with a partition-based selection function #373
Thanks, nice improvement!
I guess it's not yet loaded there? When


|Getty Ritter 3c47da2fac Commit my current pinboard data and a script to populate a DB with it||2 years ago|
|lc||2 years ago|
|scripts||2 years ago|
|templates||2 years ago|
|tests||2 years ago|
|.gitignore||2 years ago|
|README.md||2 years ago|
|lament-configuration.py||2 years ago|
|poetry.lock||2 years ago|
|pyproject.toml||2 years ago|
|tasks.py||2 years ago|
Bookmark organizing for pinheads.
#food/breadwill also be visible under
poetry installed, and having
invoke installed makes it easier.
# install all the needed dependencies $ inv install # run all the tests $ inv test # run a local test server at port 9999 $ inv run -p 9999
All the code here is auto-formatted by
black, which should be installed by the
inv install. Running
inv fmt on a clean branch will run
black over all Python files and commit those changes automatically; if the repository is dirty then it will run the formatter but won't try to commit anything.


[[BoxJam and Ms. BoxJam are standing outside]]
Ms. BoxJam: Did I tell you the Touchstones are going on vacation by themselves? Can you imagine going on vacation without the kids?
[[A series of thought balloons]]
[[Postcard shows BoxJam and Ms. BoxJam, alone, wading in breakers on a beach]]
Caption: Having a great time... At the Beach!
[[Postcard looks the same, but a fist has punched through it]]
[[Postcard looks the same, but the hole the fist punched through is now being stretched open by Little BoxJam]]
[[Postcard looks the same, but Little BoxJam has dropped through the hole into the water - he's got an inner tube around him. BoxJamina is now climbing through the hole.]]
[[Postcard looks the same, but Little BoxJam is splashing BoxJam, and BoxJamina, who has now dropped into the water, has her arms outstretched to BoxJam]]
BoxJamina: Up! Up!
[[back to scene of BoxJam and Ms. BoxJam standing outside]]


#pragma once

#include <CoreMinimal.h>
#include <Engine/DeveloperSettings.h>
#include <Templates/SubclassOf.h>
#include <Engine/EngineTypes.h>

#include "ActorPoolSettings.generated.h"

class AActor;

USTRUCT()
struct FAPPooledActorAcquireFromPoolSettings
{
    GENERATED_USTRUCT_BODY()

    FAPPooledActorAcquireFromPoolSettings();

    UPROPERTY( EditAnywhere )
    uint8 bShowActor : 1;

    UPROPERTY( EditAnywhere )
    uint8 bEnableCollision : 1;

    UPROPERTY( EditAnywhere )
    uint8 bDisableNetDormancy : 1;

    UPROPERTY( EditAnywhere, meta = ( EditCondition = "bDisableNetDormancy" ) )
    TEnumAsByte< ENetDormancy > NetDormancy;
};

USTRUCT()
struct FActorPoolInfos
{
    GENERATED_USTRUCT_BODY()

    FActorPoolInfos();

    UPROPERTY( EditAnywhere )
    TSoftClassPtr< AActor > ActorClass;

    UPROPERTY( EditAnywhere )
    int Count;

    UPROPERTY( EditAnywhere )
    uint8 bAllowNewInstancesWhenPoolIsEmpty : 1;

    UPROPERTY( EditAnywhere )
    FAPPooledActorAcquireFromPoolSettings AcquireFromPoolSettings;
};

UCLASS( config = Game, defaultconfig, meta = ( DisplayName = "ActorPool" ) )
class ACTORPOOL_API UActorPoolSettings final : public UDeveloperSettings
{
    GENERATED_BODY()

public:
    FName GetCategoryName() const override;

    UPROPERTY( EditAnywhere, config )
    TArray< FActorPoolInfos > PoolInfos;
};


- Dear all,
In relation to my research on behaviour within fishing fleets I would like
to ask a question. I am looking for the spatio-temporal correlation of
fishermen's catch rates. As I understand it now, the predictive power of a
spatial pattern in catch rates in one week on the pattern in the next week
estimated using cross-semivariograms (GSLIBS gamv), with head in timestep t
and tail in timestep t-1. Unfortunately the data I have comes from a fleet,
not a survey design, and the position of the catch rates estimates is not
fixed. Therefor I am left with very few actual positions where I have a
catch rate for both weeks, and a lot where either is missing.
Is there a way to calculate the predictive power of a spatial pattern in one
timestep on the spatial pattern in another? Is trying to calculate the
cross-semivariogram the right way? Am I doing something wrong or overlooking
something? I am very new to geostatistics, so any help is welcome.
With kind regards,
Jan Jaap Poos
University of Groningen, department of animal ecology
Netherlands Institute for Fisheries Research
* To post a message to the list, send it to ai-geostats@...
* As a general service to the users, please remember to post a summary of any useful responses to your questions.
* To unsubscribe, send an email to majordomo@... with no subject and "unsubscribe ai-geostats" followed by "end" on the next line in the message body. DO NOT SEND Subscribe/Unsubscribe requests to the list
* Support to the list is provided at http://www.ai-geostats.org


You are given the current time in 24-hour format hh:mm. Find and print the time after a minutes.

Note that you should find only the time after a minutes, see the examples to clarify the problem statement.

You can read more about 24-hour format here https://en.wikipedia.org/wiki/24-hour_clock.


Web development tools help website developers in various web development process. Whether designing a responsive web design or improving the user experience, these development tools make it a whole lot easier, faster, and smoother.
- Content Management System (CMS)
Not all web developers are created equal. And CMS makes it easier for many web developers to develop websites without much programming knowledge. CMS also makes the website redesigning a whole lot easier and offers easy uploading of images. You can easily update your website’s logo or other common elements even after a website is launched.
Sublime Text is a preferred code editor mostly used for website development for designing. You can download it from Windows, Mac, and Linux. Since it is a code editor, it has a convenient feature called GoTo Anything, which allows you to easily find a piece of code and edit it.
Some of the other useful features include the Multiple Selections command and Split Editing. This tool is free to download, but there is also a paid version. After paying for the license, you can use it on any device you want.
Bootstrap makes it easier with various built-in components along with ready-made elements. If you are a professional web developer, you will have no problem using this tool to create web applications and find it very interesting because it offers various customizations. It also supports multiple website development tools like Sass and JQuery, making it even more preferred by developers.
Sass is a pre-processor scripting language that is incredibly common among website developers because its code is reusable. If you want to handle bigger projects with clean and easy CSS codes as a website developer, choosing Sass is the ideal way to go about it. Since it uses nested syntax, you get better, more maintainable code and better code organization.
CodePen offers four packages and is used by many developers, beginners, and professionals alike. This popularly used frontend developer tool offers various functionalities for design customizations. CodePen can be a versatile tool that offers all the essential features required for a complete web development project.
GitHub can be your go-to software development platform in case you are working on a personal project. One of the best parts of this platform is that you can integrate it with any website development tool you are already using. You can also use this as a part of an experiment with new programming languages.
Some of the best functionalities of GitHub are Integrations, Code Review, Project Management, Code hosting, Documentation, etc.
When choosing a web development tool, the best way to go is to look for what your unique project requirements are. Sometimes, your project can be done with a free, open-source platform, while other times, if your project is complex, you will need to use a paid version of a tool.
Contact us to discuss your website development requirement. Call us today on +917760487777 or 08041127377 or message us on our contact form and we will reply back ASAP. We can discuss how we can strategically website development for your organization.


How to enable 2FA for Slack
The best way to manage all your 2FA accounts is to use the Authy app. It enables you to have a single mobile app for all your 2FA accounts and you can sync them across multiple devices, even accessing them on the desktop. Install Authy on your device by searching for it in your device’s app store.
Important: If any sites prompt you to use Google Authenticator for two-factor authentication, note that you can always substitute the Authy 2FA app instead. Although they work in similar ways, Authy is more feature-rich and allows for multi-device syncing, cloud-backups, and easier account recovery should you change or lose your phone or device. Read more information on the features of Authy here.
Locate 2FA setting
Sign into the appropriate Slack team, and visit your Account page at my.slack.com/account/settings.
Then click “Account & Profile” in the navigation menu to the left.
Under “Settings,” find “Two-Factor Authentication” and click “expand”.
Read about Slack’s two-factor authentication offering, then click “Setup Two-factor Authentication”.
On the next screen, re-enter your password and then click the box that reads “Use an app. Retrieve authentication codes from the authentication app on your device.” This is the easier and more secure route over using SMS.
On the next screen, you’ll be asked to download the authenticator app of your choice – but you already did this in step 1. Then, it asks you to scan a QR Code with your Authy app. Keep this window open as you reach for your phone.
Capture QR Code
Take out your mobile device and open the Authy App. At the bottom of the screen, tap the plus sign to create a new account.
When you are ready click “Scan QR Code” and hold your device up to the computer screen.
The Authy App will automatically choose the Slack logo. Confirm it’s correct by clicking “Done”
Record the numerical token provided for Slack. Note that this token refreshes every 20 seconds.
Returning to the Slack website, enter the numerical token in the appropriate field. When done click “Activate.”
You will now be shown your Slack backup codes. These codes are one-time use each. Select to print them or copy them to keep them safe.
You will now notice that your Slack account has 2FA security enabled.
You’re all set! You’ve enabled 2FA for your Slack account.
To learn more, visit: https://get.slack.help/hc/en-us/articles/204509068-Set-up-two-factor-authentication


Are you aware of the new AllowExecuteCommand switch in SR11?
I believe the default in SR11 is allow, and you didn't say your script was failing, so this is probably not the issue.
Do those bat files refer to drive letters or something that won't work in a service? Do you see any orphaned cmd.exe tasks in Task Manager on the server?
Can you try ECHO a message from the bat file to a file to see if the task is actually executing?
thanks for your suggestions. Apparently due to security settings, I was using network paths and that is not allowed when I launch cmd.exe in my server. It actually was not just that I was using paths to launch the stuff I needed, it is also the path where it starts as we use a network file share machine to store the qvw.
When a cmd is launched from there, It tries to use that folder as it's starting point, but due to security settings, it takes you back to Windows directory.
Then, relative paths from there don't work as it's not your qvw folder so it won't work at all.
In addition to the starting folder for the CMD it's the network paths not being recognized properly when executing enything else, so fixed straight await with this:
I just added an execute command at the beggining of the script to map to a drive the network path I wanted and after that I changed all paths to use that unit instead of network \\whatever paths
execute cmd.exe c/ NET USE Z: "\\path"
Now it works from Publisher without any problem at all.
I've searched for the AllowExecuteCommand in my settings.ini file and it's not there, but as you say in your useful blog post, it is by default set to 1 so I guess either I looked in the wrong place or it doesn't need to be declared in the settings file to be 1 as it's the default.
Anyway. It's working now.
Edit: I'm marking my answer as correct so It appears as solved.
Hi @Diego Perez,
I am facing the same issue.
On my Qlikview server I have R installed, on the E drive I have the R script, which is being Called by a Batch file (ReloadR.bat)
In Qlikview Script I am using following:
EXECUTE cmd /C "E:\Project\R Analytics\ReloadR.bat";
It works fine locally, but when used with Publisher, it completes running without running the batch file.
All execution done on one server machine, nowhere are network paths being used.
Have you checked all permissions are correctly set?
Try opening the doc in Desktop client, go to Settings > User Preferences > Security tab
Then check if it's unchecked the option that says :
"Script (Allow Database Write and Execute Statements)"