{"product_id":"thrusting-dildo-vibrator-realistic-tongue","title":"Thrusting Dildo Vibrator Realistic Tongue – 3 Thrusting \u0026 5 Licking Modes for Women G-Spot, Soft Silicone","description":"\u003cdiv class=\"a-section a-spacing-large bucket\"\u003e\u003chr noshade size=\"1\" class=\"bucketDivider\"\u003e\u003c\/div\u003e\n\u003cstyle\u003e\n    .aplus-v2 .aplus-content-wrapper {\n        position: relative;\n        overflow: hidden;\n    }\n\n    .aplus-v2 .container-with-background-image {\n        width: 100%;\n        height: 100%;\n        background-repeat: no-repeat;\n        background-size: cover;\n    }\n\u003c\/style\u003e\n\u003cdiv id=\"aplus\" class=\"a-section a-spacing-large bucket\"\u003e\n\u003cscript type=\"application\/javascript\"\u003e\n    function logShoppableMetrics(moduleName, showsAddToCart) {\n        if (window.ue \u0026amp;\u0026amp; window.ue.count) {\n            window.ue.count(\"aplus:shoppable:\" + moduleName + \":addToCart\", showsAddToCart ? 1 : 0);\n        }\n    }\n\u003c\/script\u003e\n\u003ch2\u003e\u003cbr\u003e\u003c\/h2\u003e\n\u003cp\u003e3D Thrusting \u0026amp; Licking Simulation for Deep Pleasure\u003cbr\u003eFeel the motion of a real partner with this advanced thrusting dildo. The combination of thrusting and tongue-licking modes creates a dual stimulation that targets the G-spot and anal area with precision.\u003c\/p\u003e\n\u003cp\u003e8 Motion Modes to Explore\u003cbr\u003e- 3 thrusting speeds: slow, medium, fast\u003cbr\u003e- 5 tongue-licking patterns: gentle to intense\u003cbr\u003e- All modes work together or separately\u003cbr\u003e- One-button control for easy use during play\u003c\/p\u003e\n\u003cp\u003eRealistic Design\u003cbr\u003e- Soft-touch liquid silicone body with realistic texture\u003cbr\u003e- Flexible shaft for natural movement\u003cbr\u003e- Curved tip targets internal erogenous zones\u003cbr\u003e- Waterproof design for shower or bath use\u003c\/p\u003e\n\u003cp\u003eEasy Care \u0026amp; Storage\u003cbr\u003eRinse with warm water and mild cleanser. Pat dry and store in the included pouch. Battery operated for wireless freedom.\u003c\/p\u003e\n\u003cp\u003ePerfect For\u003cbr\u003e- Solo exploration or partner play\u003cbr\u003e- G-spot and anal stimulation\u003cbr\u003e- Couples trying new sensations\u003cbr\u003e- Travel-friendly (compact and discreet)\u003c\/p\u003e\n\u003cp\u003eShipping Across Thailand\u003cbr\u003eFast delivery with plain packaging. No one can guess what's inside from the outside.\u003c\/p\u003e\n\u003cp\u003eFAQ\u003cbr\u003e- How many modes? 3 thrusting + 5 licking patterns.\u003cbr\u003e- Is it waterproof? Yes, safe for shower use.\u003cbr\u003e- Battery life? Up to 2 hours of continuous use per charge.\u003cbr\u003e- What material? Premium soft silicone, body-safe.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv lang=\"en_US\"\u003e\n\u003cdiv class=\"aplus-v2 desktop celwidget\"\u003e\n\u003cdiv class=\"aplus-content-wrapper\"\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003cimg alt=\"thrusting vibrator\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/d47ae54d-1697-4370-b086-70054a5fdd35.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003cimg alt=\"adult toys\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/4fd2382a-9615-495e-a260-2f8e0d3682b4.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003cimg alt=\"vibrators\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/a21af81d-47e7-4d28-9757-e8be4862d6cf.__CR0,0,1464,600_PT0_SX1464_V1___.png\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003cimg alt=\"realistic\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/483d0da1-bd0b-4588-be00-4d1089127585.__CR0,0,1464,600_PT0_SX1464_V1___.png\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e\n\u003ch1 class=\"aplus-container-3 aplus-h1 a-text-bold\"\u003eIt is a satisfying toy\u003c\/h1\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-4-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-4\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n\u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n\u003col class=\"a-carousel\" role=\"list\"\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-4-slide-0\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"realistic\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/1c985930-61dc-49a7-a652-24e40c3e7b78.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-4-slide-1\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"consoladores\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e9ef8c53-640d-4e74-b326-31dd90f7d73d.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e\n\u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-4\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-4\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"4\";\n                var carouselName = \"premium-aplus-13-carousel-4\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026amp;\u0026amp; parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u0026lt; children.length; i++) {\n                            if (i \u0026gt;= numPages) {\n                                \/\/ If number of dots \u0026gt; num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u0026gt; 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u0026lt; dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n\u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n\u003cdiv class=\"aplus-carousel-nav\"\u003e\n\u003cul id=\"aplus-pagination-group-4-premium-aplus-13-carousel-4\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n\u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-4-premium-aplus-13-carousel-4\" data-aplus-pagination-dot-action-4-premium-aplus-13-carousel-4='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-4-slide-0\" role=\"tab\" tabindex=\"0\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block\" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-4-premium-aplus-13-carousel-4\" data-aplus-pagination-dot-action-4-premium-aplus-13-carousel-4='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-4-slide-1\" role=\"tab\" tabindex=\"-1\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-5-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-5\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n\u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n\u003col class=\"a-carousel\" role=\"list\"\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-5-slide-0\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"silicone\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/ffb774f3-05b4-41ab-83c0-be5c4e78cc70.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-5-slide-1\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"remote control\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/6f3af4dc-4b7c-49d7-845e-2662c0414123.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-5-slide-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"fantasy\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/44f586e0-8ab4-4027-a90a-9aa524d1262e.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"4\"\u003e\n\u003cdiv id=\"premium-aplus-13-carousel-5-slide-3\"\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\u003cimg alt=\"couple toys\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/239b72d1-7d41-465e-98dc-f767c73582c9.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e\n\u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-5\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-5\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"5\";\n                var carouselName = \"premium-aplus-13-carousel-5\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026amp;\u0026amp; parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u0026lt; children.length; i++) {\n                            if (i \u0026gt;= numPages) {\n                                \/\/ If number of dots \u0026gt; num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u0026gt; 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u0026lt; dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n\u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n\u003cdiv class=\"aplus-carousel-nav\"\u003e\n\u003cul id=\"aplus-pagination-group-5-premium-aplus-13-carousel-5\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n\u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-5-premium-aplus-13-carousel-5\" data-aplus-pagination-dot-action-5-premium-aplus-13-carousel-5='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-5-slide-0\" role=\"tab\" tabindex=\"0\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block\" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-5-premium-aplus-13-carousel-5\" data-aplus-pagination-dot-action-5-premium-aplus-13-carousel-5='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-5-slide-1\" role=\"tab\" tabindex=\"-1\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block\" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-5-premium-aplus-13-carousel-5\" data-aplus-pagination-dot-action-5-premium-aplus-13-carousel-5='{\"page\": 3}' aria-label=\"slide-3\" aria-controls=\"premium-aplus-13-carousel-5-slide-2\" role=\"tab\" tabindex=\"-1\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003cli class=\"aplus-pagination-dot\"\u003e\u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block\" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-5-premium-aplus-13-carousel-5\" data-aplus-pagination-dot-action-5-premium-aplus-13-carousel-5='{\"page\": 4}' aria-label=\"slide-4\" aria-controls=\"premium-aplus-13-carousel-5-slide-3\" role=\"tab\" tabindex=\"-1\"\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cbr\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e\n\u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e\n\u003cdiv class=\"a-section a-spacing-none background-image\"\u003e\u003cimg alt=\"didlo\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/25a3fbdd-f625-4751-9a10-28509b020c54.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-text-center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-section a-spacing-large bucket\"\u003e\u003chr noshade size=\"1\" class=\"bucketDivider\"\u003e\u003c\/div\u003e\n\u003cstyle\u003e\n    .aplus-v2 .aplus-content-wrapper {\n        position: relative;\n        overflow: hidden;\n    }\n\n    .aplus-v2 .container-with-background-image {\n        width: 100%;\n        height: 100%;\n        background-repeat: no-repeat;\n        background-size: cover;\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"a-section a-spacing-large bucket\"\u003e\n\u003cscript type=\"application\/javascript\"\u003e\n    function logShoppableMetrics(moduleName, showsAddToCart) {\n        if (window.ue \u0026amp;\u0026amp; window.ue.count) {\n            window.ue.count(\"aplus:shoppable:\" + moduleName + \":addToCart\", showsAddToCart ? 1 : 0);\n        }\n    }\n\u003c\/script\u003e\n\u003ch2\u003e\u003cbr\u003e\u003c\/h2\u003e\n\u003cdiv lang=\"en_US\"\u003e\n\u003cdiv class=\"aplus-v2 desktop celwidget\"\u003e\n\u003cdiv class=\"aplus-content-wrapper\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    .aplus-v2 .apm-brand-story-carousel-container {\n        position: relative;\n    }\n\n    .aplus-v2 .apm-brand-story-carousel-hero-container,\n    .aplus-v2 .apm-brand-story-carousel-hero-container \u0026gt; div {\n        position: absolute;\n        width: 100%;\n    }\n\u003c\/style\u003e\n\u003cstyle\u003e\n        \/*\n          Ensuring the carousel takes only the space it needs.\n          The sizes need to be set again on the absolutely positioned elements so they can take up space.\n        *\/\n        .aplus-v2 .apm-brand-story-carousel-container,\n        .aplus-v2 .apm-brand-story-carousel-hero-container {\n            height: 625px;\n            width: 100%;\n            max-width: 1464px;\n            margin-left: auto;\n            margin-right: auto;\n            overflow: hidden;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel-hero-container,\n        .aplus-v2 .apm-brand-story-carousel-hero-container \u0026gt; div {\n            height: 625px;\n        }\n    \u003c\/style\u003e\n\u003cstyle\u003e\n        .aplus-v2 .apm-brand-story-carousel.a-carousel-container {\n            padding: 0px;\n        }\n\n        \/*\n          This centers the carousel vertically on top of the hero image container and after the logo area (125px).\n          Margin-top = (heroHeight - cardHeight - logoAreaHeight) \/ 2 + logoAreaHeight\n        *\/\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-row-inner {\n            margin-top: 149px;\n        }\n\n        \/*\n          Cards need to have a width set, otherwise they default to 50px or so.\n          All cards must have the same width. The carousel will resize itself so all cards take the width of the largest card.\n          The left margin is for leaving a space between each card.\n        *\/\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-card {\n            width: 362px;\n            margin-left: 30px !important;\n        }\n\n        \/* styling the navigation buttons so they are taller, flush with the sides, and have a clean white background *\/\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left,\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right {\n            padding: 0px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image,\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image {\n            border: none;\n            margin: 0px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image .a-button-inner,\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image .a-button-inner {\n            background: #fff;\n            padding: 20px 6px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image .a-button-inner {\n            border-radius: 0px 4px 4px 0px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image .a-button-inner {\n            border-radius: 4px 0px 0px 4px;\n        }\n    \u003c\/style\u003e\n\u003cdiv id=\"aplus\" class=\"a-section a-spacing-large bucket\"\u003e\n\u003cdiv lang=\"en_US\"\u003e\n\u003cdiv class=\"aplus-v2 desktop celwidget\"\u003e\n\u003cdiv class=\"aplus-content-wrapper\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"apm-brand-story-carousel-container\"\u003e\n\u003cdiv class=\"apm-brand-story-carousel-hero-container\"\u003e\n\u003cdiv class=\"celwidget aplus-module brand-story-hero-1-image-logo aplus-brand-story-hero\"\u003e\n\u003cdiv class=\"apm-brand-story-hero\"\u003e\n\u003cdiv class=\"apm-brand-story-background-image\"\u003e\u003cimg alt=\"\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/401f040f-7c10-4495-a361-76fe51281db8.__CR0,0,1464,625_PT0_SX1464_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"apm-brand-story-text-bottom\"\u003e\n\u003ch3\u003eNewly launched in 2026\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"clear: both;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"apm-brand-story-carousel\" data-a-carousel-options='{\"minimum_gutter_width\":10,\"show_partial_next\":true,\"name\":\"brand-story-carousel\",\"single_page_align\":\"left\",\"circular\":false}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-stretchyGoodness a-carousel-transition-slide apm-brand-story-carousel size-cards a-carousel-container\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n\u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons\"\u003e\n\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n\u003col class=\"a-carousel\" role=\"list\"\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-0\"\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-1\"\u003e\n\u003cdiv class=\"celwidget aplus-module brand-story-card-2-media-asset aplus-brand-story-card\"\u003e\n\u003cdiv class=\"apm-brand-story-card\"\u003e\n\u003cdiv class=\"apm-brand-story-background-image\"\u003e\u003cimg alt=\"vibrator\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/fb49d156-e190-4c3b-bf75-94b9da2606cf.__CR0,0,362,453_PT0_SX362_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"clear: both;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-2\"\u003e\n\u003cdiv class=\"celwidget aplus-module brand-story-card-2-media-asset aplus-brand-story-card\"\u003e\n\u003cdiv class=\"apm-brand-story-card\"\u003e\n\u003cdiv class=\"apm-brand-story-background-image\"\u003e\u003cimg alt=\"adult toys\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/883c131e-945e-486d-a087-dbbbe7d286be.__CR0,0,362,453_PT0_SX362_V1___.jpg\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"clear: both;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"aplus-brandstory-pagination\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":" thai-adult","offers":[{"title":"Default Title","offer_id":54049716830481,"sku":null,"price":1260.0,"currency_code":"THB","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0609\/7728\/3229\/files\/thrusting-tongue-dildo-remote-control-vibrator.jpg?v=1785234496","url":"https:\/\/www.sextoythailand.com\/products\/thrusting-dildo-vibrator-realistic-tongue","provider":" thai-adult","version":"1.0","type":"link"}