@Override
	public void run() {
		final Component shop = ctx.widgets.component(WIDGET_SHOP, WIDGET_SHOP_WATER_TALISMAN);
		if (shop.valid()) {
			if (shop.interact("Buy X", "Water talisman")) {
				if (Condition.wait(new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return ctx.chat.isInputWidgetOpen();
					}
				}, Random.nextInt(333, 888), 6)) {
					int space = 28 - ctx.backpack.select().count();
					if (ctx.chat.sendInput(Integer.toString(space))) {
						if (Condition.wait(new Callable<Boolean>() {
							@Override
							public Boolean call() throws Exception {
								return ctx.widgets.component(WIDGET_SHOP, 141).text().contains("Water talisman");
							}
						}, Random.nextInt(333, 888), 6)) {
							if (ctx.widgets.component(WIDGET_SHOP, 130).interact("Confirm")) {
								Condition.wait(new Callable<Boolean>() {
									@Override
									public Boolean call() throws Exception {
										return !ctx.backpack.select().id(GOPWaterTalisman.WATER_TALISMAN).isEmpty();
									}
								}, Random.nextInt(333, 888), 6);
							}
						}
					}
				}
			}
		} else {
			if (ctx.depositBox.opened()) {
				ctx.depositBox.close();
				Condition.sleep(333);
				return;
			}

			final Npc elriss = ctx.npcs.poll();
			if (ctx.camera.prepare(elriss) && elriss.interact("Exchange")) {
				Condition.wait(new Callable<Boolean>() {
					@Override
					public Boolean call() throws Exception {
						return shop.valid();
					}
				}, Random.nextInt(333, 888), 8);
			}
		}
	}