{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/mobile-menu.js","webpack:///./app/javascript/packs/selector.js","webpack:///./app/javascript/packs/signupreset.js","webpack:///./app/javascript/packs/maps.js","webpack:///./node_modules/@glidejs/glide/dist/glide.esm.js","webpack:///./app/javascript/packs/slider.js","webpack:///(webpack)/buildin/module.js","webpack:///./app/javascript/images/about/blue-wood-1280.jpg","webpack:///./app/javascript/images/about/gallery-341x341_hy01.jpg","webpack:///./app/javascript/images/about/gallery-341x341_hy02.jpg","webpack:///./app/javascript/images/about/gallery-341x341_hy03.jpg","webpack:///./app/javascript/images/about/gallery-341x341_hy04.jpg","webpack:///./app/javascript/images/about/gallery-341x341_hy05.jpg","webpack:///./app/javascript/images/about/gallery-341x341_hy06.jpg","webpack:///./app/javascript/images/about/gallery-346x346-01.jpg","webpack:///./app/javascript/images/about/gallery-346x346-02.jpg","webpack:///./app/javascript/images/about/gallery-346x346-03.jpg","webpack:///./app/javascript/images/about/gallery-346x346-04.jpg","webpack:///./app/javascript/images/about/gallery-346x346-05.jpg","webpack:///./app/javascript/images/about/gallery-346x346-06.jpg","webpack:///./app/javascript/images/about/gallery-682x682-01-x2.jpg","webpack:///./app/javascript/images/about/gallery-682x682-02-x2.jpg","webpack:///./app/javascript/images/about/gallery-682x682-03-x2.jpg","webpack:///./app/javascript/images/about/gallery-682x682-04-x2.jpg","webpack:///./app/javascript/images/about/gallery-682x682-05-x2.jpg","webpack:///./app/javascript/images/about/gallery-682x682-06-x2.jpg","webpack:///./app/javascript/images/about/gallery-682x682_hy01.jpg","webpack:///./app/javascript/images/about/gallery-682x682_hy02.jpg","webpack:///./app/javascript/images/about/gallery-682x682_hy03.jpg","webpack:///./app/javascript/images/about/gallery-682x682_hy04.jpg","webpack:///./app/javascript/images/about/gallery-682x682_hy05.jpg","webpack:///./app/javascript/images/about/gallery-682x682_hy06.jpg","webpack:///./app/javascript/images/about/gallery_hy07_2x.jpg","webpack:///./app/javascript/images/about/header_1280.jpg","webpack:///./app/javascript/images/about/header_1280_2x.jpg","webpack:///./app/javascript/images/about/header_1280x261_about.jpg","webpack:///./app/javascript/images/about/header_2560x522_about.jpg","webpack:///./app/javascript/images/about/header_375.jpg","webpack:///./app/javascript/images/about/header_375_2x.jpg","webpack:///./app/javascript/images/about/header_750x546_about.jpg","webpack:///./app/javascript/images/about/neon-noodle-1280.jpg","webpack:///./app/javascript/images/about/neon-noodle-1280-x2.jpg","webpack:///./app/javascript/images/about/neon-noodle-375.jpg","webpack:///./app/javascript/images/about/neon-noodle-375-x2.jpg","webpack:///./app/javascript/images/about/noodle_bowl_1280.jpg","webpack:///./app/javascript/images/about/noodle_bowl_1280_2x.jpg","webpack:///./app/javascript/images/about/noodle_bowl_375.jpg","webpack:///./app/javascript/images/about/noodle_bowl_375_2x.jpg","webpack:///./app/javascript/images/about/shuchu-booth-1280.jpg","webpack:///./app/javascript/images/about/shuchu-booth-1280-x2.jpg","webpack:///./app/javascript/images/about/shuchu-booth-375.jpg","webpack:///./app/javascript/images/about/shuchu-booth-375-x2.jpg","webpack:///./app/javascript/images/booking/header_1280x261_book.jpg","webpack:///./app/javascript/images/booking/header_2560x522_book.jpg","webpack:///./app/javascript/images/booking/header_750x546_book.jpg","webpack:///./app/javascript/images/call_to_action/bg--desktop.jpg","webpack:///./app/javascript/images/call_to_action/bg--mobile.jpg","webpack:///./app/javascript/images/call_to_action/newbie_montage_new_1280x1187.jpg","webpack:///./app/javascript/images/call_to_action/newbie_montage_new_2560x2374.jpg","webpack:///./app/javascript/images/call_to_action/shuchu_home_375x517.jpg","webpack:///./app/javascript/images/call_to_action/shuchu_home_750x1034.jpg","webpack:///./app/javascript/images/content/Full res/all_ramen.jpg","webpack:///./app/javascript/images/content/Full res/one_cup_sake.jpg","webpack:///./app/javascript/images/content/Full res/sake_flight.jpg","webpack:///./app/javascript/images/content/Full res/set_menu.jpg","webpack:///./app/javascript/images/content/Full res/the_yokocho.jpg","webpack:///./app/javascript/images/content/Full res/vegan_napoli.jpg","webpack:///./app/javascript/images/content/Sapporo_miso_ramen@1x.jpg","webpack:///./app/javascript/images/content/Sapporo_miso_ramen@2x.jpg","webpack:///./app/javascript/images/content/all_ramen.jpg","webpack:///./app/javascript/images/content/cats.jpg","webpack:///./app/javascript/images/content/cats-small.jpg","webpack:///./app/javascript/images/content/cocktail@1x.jpg","webpack:///./app/javascript/images/content/cocktail@2x.jpg","webpack:///./app/javascript/images/content/counter.jpg","webpack:///./app/javascript/images/content/counter-small.jpg","webpack:///./app/javascript/images/content/food_drink_shuchu_1x.jpg","webpack:///./app/javascript/images/content/friedchicken-large.jpg","webpack:///./app/javascript/images/content/friedchicken-small.jpg","webpack:///./app/javascript/images/content/hakata_tonkotsu_ramen@1x.jpg","webpack:///./app/javascript/images/content/hakata_tonkotsu_ramen@2x.jpg","webpack:///./app/javascript/images/content/hakodate_shio_ramen@1x.jpg","webpack:///./app/javascript/images/content/hakodate_shio_ramen@2x.jpg","webpack:///./app/javascript/images/content/lanterns.jpg","webpack:///./app/javascript/images/content/lanterns-small.jpg","webpack:///./app/javascript/images/content/one_cup_sake.jpg","webpack:///./app/javascript/images/content/sake_flight.jpg","webpack:///./app/javascript/images/content/set_menu.jpg","webpack:///./app/javascript/images/content/side@1x.jpg","webpack:///./app/javascript/images/content/side@2x.jpg","webpack:///./app/javascript/images/content/summer_menu@1x.jpg","webpack:///./app/javascript/images/content/summer_menu@2x.jpg","webpack:///./app/javascript/images/content/the_yokocho.jpg","webpack:///./app/javascript/images/content/vegan_miso_ramen@1x.jpg","webpack:///./app/javascript/images/content/vegan_miso_ramen@2x.jpg","webpack:///./app/javascript/images/content/vegan_napoli.jpg","webpack:///./app/javascript/images/food/header_1280x261_food.jpg","webpack:///./app/javascript/images/food/header_2560x522_food.jpg","webpack:///./app/javascript/images/food/header_750x546_food.jpg","webpack:///./app/javascript/images/food/hy_food_drink_main_1080x1173.jpg","webpack:///./app/javascript/images/food/hy_food_drink_main_750x815.jpg","webpack:///./app/javascript/images/footer/bg--desktop.jpg","webpack:///./app/javascript/images/footer/bg--mobile.jpg","webpack:///./app/javascript/images/galleries/panton/01.jpg","webpack:///./app/javascript/images/galleries/panton/02.jpg","webpack:///./app/javascript/images/galleries/panton/03.jpg","webpack:///./app/javascript/images/galleries/panton/04.jpg","webpack:///./app/javascript/images/galleries/panton/05.jpg","webpack:///./app/javascript/images/galleries/panton/06.jpg","webpack:///./app/javascript/images/hero_home/Yokocho_Cut-7_PT_no_logo_HB.jpg","webpack:///./app/javascript/images/hero_home/Yokocho_Sega_16x9_still.jpg","webpack:///./app/javascript/images/hero_home/Yokocho_Sega_9x16_still.jpg","webpack:///./app/javascript/images/hero_home/Yokocho_v3_no_logo_HB.jpg","webpack:///./app/javascript/images/hero_home/bg--desktop.jpg","webpack:///./app/javascript/images/hero_home/web_main_1080_1080.jpg","webpack:///./app/javascript/images/hero_home/web_main_1920_1080.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@1x_ichiba.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@1x_japan-centre.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@1x_shoryu.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@1x_yokocho.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@2x_ichiba.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@2x_japan-centre.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@2x_shoryu.jpg","webpack:///./app/javascript/images/jcgroup/Brand_desktop_@2x_yokocho.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@1x_ichiba.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@1x_japan-centre.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@1x_shoryu.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@1x_yokocho.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@2x_ichiba.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@2x_japan-centre.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@2x_shoryu.jpg","webpack:///./app/javascript/images/jcgroup/Brand_mobile_@2x_yokocho.jpg","webpack:///./app/javascript/images/jcgroup/HY_header_desktop@1x_jc-group.jpg","webpack:///./app/javascript/images/jcgroup/HY_header_desktop@2x_jc-group.jpg","webpack:///./app/javascript/images/jcgroup/HY_header_mobile@1x_jc-group.jpg","webpack:///./app/javascript/images/jcgroup/HY_header_mobile@2x_jc-group.jpg","webpack:///./app/javascript/images/locations/Steven-Joyce-JOS2021078D00051.jpg","webpack:///./app/javascript/images/locations/bar_kushi.jpg","webpack:///./app/javascript/images/locations/bar_kushi_thumb.jpg","webpack:///./app/javascript/images/locations/heddon-location-1280.jpg","webpack:///./app/javascript/images/locations/heddon-location-1280-x2.jpg","webpack:///./app/javascript/images/locations/ichiba2_672_288.jpg","webpack:///./app/javascript/images/locations/location-heddon-bg-1280.jpg","webpack:///./app/javascript/images/locations/location-heddon-bg-1280-2x.jpg","webpack:///./app/javascript/images/locations/location-heddon-bottom-strip-1280.jpg","webpack:///./app/javascript/images/locations/location-heddon-bottom-strip-1280-2x.jpg","webpack:///./app/javascript/images/locations/location-ichiba-bg-1280.jpg","webpack:///./app/javascript/images/locations/location-ichiba-bg-1280-2x.jpg","webpack:///./app/javascript/images/locations/location-ichiba-bottom-strip-1280.jpg","webpack:///./app/javascript/images/locations/location-ichiba-bottom-strip-1280-2x.jpg","webpack:///./app/javascript/images/locations/location-ramen-bowl-1280.jpg","webpack:///./app/javascript/images/locations/location-ramen-bowl-1280-2x.jpg","webpack:///./app/javascript/images/locations/locations-blue-bg-1280.jpg","webpack:///./app/javascript/images/locations/locations-blue-bg-1280-2x.jpg","webpack:///./app/javascript/images/locations/locations-divider-375.jpg","webpack:///./app/javascript/images/locations/locations-divider-375-2x.jpg","webpack:///./app/javascript/images/locations/locations-header-1280.jpg","webpack:///./app/javascript/images/locations/locations-header-1280-x2.jpg","webpack:///./app/javascript/images/locations/locations-header-375-x1.jpg","webpack:///./app/javascript/images/locations/locations-header-375-x2.jpg","webpack:///./app/javascript/images/locations/locations-neon-ramen-375.jpg","webpack:///./app/javascript/images/locations/locations-neon-ramen-375-2x.jpg","webpack:///./app/javascript/images/locations/locations-ramen-bowl-375.jpg","webpack:///./app/javascript/images/locations/locations-ramen-bowl-375-2x.jpg","webpack:///./app/javascript/images/locations/map-before-ichiba-1100x460.jpg","webpack:///./app/javascript/images/locations/map-before-ichiba-550x230.jpg","webpack:///./app/javascript/images/locations/texture-01-375.jpg","webpack:///./app/javascript/images/locations/texture-01-375-2x.jpg","webpack:///./app/javascript/images/locations/texture-02-375.jpg","webpack:///./app/javascript/images/locations/texture-02-375-2x.jpg","webpack:///./app/javascript/images/locations/yokocho_map_heddon_1280x766.jpg","webpack:///./app/javascript/images/locations/yokocho_map_heddon_640x383.jpg","webpack:///./app/javascript/images/locations/yokocho_map_ichiba_1280x766.jpg","webpack:///./app/javascript/images/locations/yokocho_map_ichiba_640x383.jpg","webpack:///./app/javascript/images/loyalty/HY_header_desktop@1x_loyalty.jpg","webpack:///./app/javascript/images/loyalty/HY_header_desktop@2x_loyalty.jpg","webpack:///./app/javascript/images/loyalty/HY_header_mobile@1x_loyalty.jpg","webpack:///./app/javascript/images/loyalty/HY_header_mobile@2x_loyalty.jpg","webpack:///./app/javascript/images/loyalty/divider_strip_desktop_@1x.jpg","webpack:///./app/javascript/images/loyalty/divider_strip_desktop_@2x.jpg","webpack:///./app/javascript/images/loyalty/divider_strip_mobile_@1x.jpg","webpack:///./app/javascript/images/loyalty/divider_strip_mobile_@2x.jpg","webpack:///./app/javascript/images/loyalty/loyalty_card_editorial@1x.jpg","webpack:///./app/javascript/images/loyalty/loyalty_card_editorial@2x.jpg","webpack:///./app/javascript/images/loyalty/loyalty_card_editorial_mobile_@1x.jpg","webpack:///./app/javascript/images/loyalty/loyalty_card_editorial_mobile_@2x.jpg","webpack:///./app/javascript/images/naruto/web_main_background.jpg","webpack:///./app/javascript/images/offers/HY_header_desktop@1x_offers.jpg","webpack:///./app/javascript/images/offers/HY_header_desktop@2x_offers.jpg","webpack:///./app/javascript/images/offers/HY_header_mobile@1x_offers.jpg","webpack:///./app/javascript/images/offers/HY_header_mobile@2x_offers.jpg","webpack:///./app/javascript/images/offers/happyhour/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/happyhour/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/happyhour/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/happyhour/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/happyhour/promo-detail_mobile@1x.jpg","webpack:///./app/javascript/images/offers/happyhour/promo-detail_mobile@2x.jpg","webpack:///./app/javascript/images/offers/happyhour/promo-slide_desktop@1x.jpg","webpack:///./app/javascript/images/offers/happyhour/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/promo-detail_mobile@1x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/promo-detail_mobile@2x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/promo-slide_desktop@1x.jpg","webpack:///./app/javascript/images/offers/kidsmenu/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/king_charles/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/king_charles/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/king_charles/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/king_charles/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/light_texture_mob_offer_detail_@1x.jpg","webpack:///./app/javascript/images/offers/light_texture_mob_offer_detail_@2x.jpg","webpack:///./app/javascript/images/offers/light_texture_offer_detail_@1x.jpg","webpack:///./app/javascript/images/offers/light_texture_offer_detail_@2x.jpg","webpack:///./app/javascript/images/offers/lunch_deal/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/lunch_deal/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/lunch_deal/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/lunch_deal/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/melo/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/melo/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/melo/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/melo/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/miku/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/miku/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/miku/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/miku/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/naruto/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/naruto/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/naruto/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/naruto/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/nhs/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/nhs/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/nhs/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/nhs/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/nhs/promo-detail_mobile@1x.jpg","webpack:///./app/javascript/images/offers/nhs/promo-detail_mobile@2x.jpg","webpack:///./app/javascript/images/offers/nhs/promo-slide_desktop@1x.jpg","webpack:///./app/javascript/images/offers/nhs/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/panton/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/panton/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/panton/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/pre_theater/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/pre_theater/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/pre_theater/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/pre_theater/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/ramen_8/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/ramen_8/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/ramen_8/promo-slide_desktop@1x.jpg","webpack:///./app/javascript/images/offers/ramen_8/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/ramen_9/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/ramen_9/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/ramen_9/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/ramen_9/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/sega/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/sega/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/sega/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/sega/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/shuchu/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/shuchu/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/shuchu/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/shuchu/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/shuchu/promo-detail_mobile@1x.jpg","webpack:///./app/javascript/images/offers/shuchu/promo-detail_mobile@2x.jpg","webpack:///./app/javascript/images/offers/shuchu/promo-slide_desktop@1x.jpg","webpack:///./app/javascript/images/offers/shuchu/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/student/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/student/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/student/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/student/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/student/promo-detail_mobile@1x.jpg","webpack:///./app/javascript/images/offers/student/promo-detail_mobile@2x.jpg","webpack:///./app/javascript/images/offers/student/promo-slide_desktop@1x.jpg","webpack:///./app/javascript/images/offers/student/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/winter_deal/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/winter_deal/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/winter_deal/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/winter_deal/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/xmas/offer-card_desktop@1x.jpg","webpack:///./app/javascript/images/offers/xmas/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/xmas/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/xmas/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/xmas/promo-detail_mobile@1x.jpg","webpack:///./app/javascript/images/offers/xmas/promo-detail_mobile@2x.jpg","webpack:///./app/javascript/images/offers/xmas/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/offers/yakiniku/offer-card_desktop@2x.jpg","webpack:///./app/javascript/images/offers/yakiniku/promo-detail_desktop@1x.jpg","webpack:///./app/javascript/images/offers/yakiniku/promo-detail_desktop@2x.jpg","webpack:///./app/javascript/images/offers/yakiniku/promo-slide_desktop@2x.jpg","webpack:///./app/javascript/images/ramen-history/Ramen_dishes_desktop@1x.jpg","webpack:///./app/javascript/images/ramen-history/Ramen_dishes_desktop@2x.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_no-border.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_no-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_no-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_no-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_with-border.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_with-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_with-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/adding_noodles_with-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/blue_bg1.jpg","webpack:///./app/javascript/images/ramen-history/blue_bg1@2x.jpg","webpack:///./app/javascript/images/ramen-history/blue_bg_375x670.jpg","webpack:///./app/javascript/images/ramen-history/blue_bg_375x670@2x.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_no-border.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_no-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_no-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_no-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_with-border.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_with-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_with-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/dish_1_with-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_1280x392.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_1280x392@2x.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_1280x475.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_1280x475@2x.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_1280x508.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_1280x508@2x.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_375x522.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_375x522@2x.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_375x606.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_375x606@2x.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_375x668.jpg","webpack:///./app/javascript/images/ramen-history/light_texture_375x668@2x.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_no-border.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_no-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_no-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_no-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_with-border.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_with-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_with-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/menu_board_with-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg1.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg1@2x.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg1_375x128.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg1_375x128@2x.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg2.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg2@2x.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg2_375x244.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg2_375x244@2x.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg3.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg3@2x.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg3_375x240.jpg","webpack:///./app/javascript/images/ramen-history/noodle_bg3_375x240@2x.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_no-border.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_no-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_no-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_no-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_with-border.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_with-border@2x.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_with-border_325x212.jpg","webpack:///./app/javascript/images/ramen-history/pouring_broth_with-border_325x212@2x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_dishes_mobile@1x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_dishes_mobile@2x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_history_header.jpg","webpack:///./app/javascript/images/ramen-history/ramen_history_header@2x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_history_header_mobile.jpg","webpack:///./app/javascript/images/ramen-history/ramen_history_header_mobile@2x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_map.jpg","webpack:///./app/javascript/images/ramen-history/ramen_map@2x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_map_375x320.jpg","webpack:///./app/javascript/images/ramen-history/ramen_map_375x320@2x.jpg","webpack:///./app/javascript/images/ramen-history/ramen_ramen_1900_900.jpg","webpack:///./app/javascript/images/ramen-history/ramen_ramen_750_528.jpg","webpack:///./app/javascript/images/ramen-history/yellow_bg1.jpg","webpack:///./app/javascript/images/ramen-history/yellow_bg1@2x.jpg","webpack:///./app/javascript/images/ramen-history/yellow_bg_375x643.jpg","webpack:///./app/javascript/images/ramen-history/yellow_bg_375x643@2x.jpg","webpack:///./app/javascript/images/shared/bg-blue--desktop.jpg","webpack:///./app/javascript/images/shared/bg-light--desktop.jpg","webpack:///./app/javascript/images/slider/slide1.jpg","webpack:///./app/javascript/images/slider/slide2.jpg","webpack:///./app/javascript/images/slider/slide3.jpg","webpack:///./app/javascript/images/social/bg--desktop.jpg","webpack:///./app/javascript/images/social/bg--mobile.jpg","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./app/javascript/images sync ^\\.\\/.*$","webpack:///./app/javascript/images/about/loyalty_cards_1280.png","webpack:///./app/javascript/images/about/loyalty_cards_1280_x2.png","webpack:///./app/javascript/images/about/loyalty_cards_375.png","webpack:///./app/javascript/images/about/loyalty_cards_375_x2.png","webpack:///./app/javascript/images/competition/tokyo_postcard_desktop_1x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_desktop_2x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_desktop_3x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_desktop_4x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_mobile_1x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_mobile_2x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_mobile_3x(1).webp","webpack:///./app/javascript/images/competition/tokyo_postcard_mobile_4x(1).webp","webpack:///./app/javascript/images/content/Sapporo_miso_ramen@1x.webp","webpack:///./app/javascript/images/content/Sapporo_miso_ramen@2x.webp","webpack:///./app/javascript/images/content/cocktail@1x.webp","webpack:///./app/javascript/images/content/cocktail@2x.webp","webpack:///./app/javascript/images/content/hakata_tonkotsu_ramen@1x.webp","webpack:///./app/javascript/images/content/hakata_tonkotsu_ramen@2x.webp","webpack:///./app/javascript/images/content/hakodate_shio_ramen@1x.webp","webpack:///./app/javascript/images/content/hakodate_shio_ramen@2x.webp","webpack:///./app/javascript/images/content/side@1x.webp","webpack:///./app/javascript/images/content/side@2x.webp","webpack:///./app/javascript/images/content/summer_menu@1x.webp","webpack:///./app/javascript/images/content/summer_menu@2x.webp","webpack:///./app/javascript/images/content/vegan_miso_ramen@1x.webp","webpack:///./app/javascript/images/content/vegan_miso_ramen@2x.webp","webpack:///./app/javascript/images/footer/logotype.svg","webpack:///./app/javascript/images/footer/yokocho_phase3_logo_wo.svg","webpack:///./app/javascript/images/full_width_btns_list/deliveroo--desktop.png","webpack:///./app/javascript/images/full_width_btns_list/deliveroo--mobile.svg","webpack:///./app/javascript/images/full_width_btns_list/uber-eats--desktop.png","webpack:///./app/javascript/images/full_width_btns_list/uber-eats--mobile.png","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_01_@1x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_01_@1x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_01_@2x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_01_@2x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_02_@1x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_02_@1x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_02_@2x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_02_@2x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_03_@1x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_03_@1x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_03_@2x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_03_@2x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_04_@1x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_04_@1x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_04_@2x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_04_@2x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_05_@1x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_05_@1x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_05_@2x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_05_@2x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_06_@1x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_06_@1x.webp","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_06_@2x.jpeg","webpack:///./app/javascript/images/galleries/heddon/gallery_HY_06_@2x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa00@1x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa00@1x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa00@2x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa00@2x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa01@1x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa01@1x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa01@2x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa01@2x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa02@1x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa02@1x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa02@2x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa02@2x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa03@1x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa03@1x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa03@2x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa03@2x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa04@1x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa04@1x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa04@2x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa04@2x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa05@1x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa05@1x.webp","webpack:///./app/javascript/images/galleries/panton/gallery_pa05@2x.jpeg","webpack:///./app/javascript/images/galleries/panton/gallery_pa05@2x.webp","webpack:///./app/javascript/images/header/close-btn.svg","webpack:///./app/javascript/images/header/logotype--black.svg","webpack:///./app/javascript/images/header/logotype.svg","webpack:///./app/javascript/images/header/sidebar__bg.png","webpack:///./app/javascript/images/header/yokocho_mark_shad_@1x.png","webpack:///./app/javascript/images/header/yokocho_mark_shad_@1x.webp","webpack:///./app/javascript/images/header/yokocho_mark_shad_@2x.png","webpack:///./app/javascript/images/header/yokocho_mark_shad_@2x.webp","webpack:///./app/javascript/images/header/yokocho_mark_shad_@3x.png","webpack:///./app/javascript/images/header/yokocho_mark_shad_@3x.webp","webpack:///./app/javascript/images/header/yokocho_shad@0.5x.png","webpack:///./app/javascript/images/header/yokocho_shad@1x.png","webpack:///./app/javascript/images/header/yokocho_shad@2x.png","webpack:///./app/javascript/images/hero_home/logotype.svg","webpack:///./app/javascript/images/jcgroup/ichiba_logo_rgb.svg","webpack:///./app/javascript/images/jcgroup/jc_logo_01_rgb.svg","webpack:///./app/javascript/images/jcgroup/shoryu_logo_01_rgb.svg","webpack:///./app/javascript/images/kushi_landscape.png","webpack:///./app/javascript/images/locations/heddon_2560_522.jpeg","webpack:///./app/javascript/images/locations/heddon_2560_522.webp","webpack:///./app/javascript/images/locations/heddon_672_288.jpeg","webpack:///./app/javascript/images/locations/heddon_672_288.webp","webpack:///./app/javascript/images/locations/heddon_750_546.jpeg","webpack:///./app/javascript/images/locations/heddon_750_546.webp","webpack:///./app/javascript/images/locations/ichiba_2560_522.jpeg","webpack:///./app/javascript/images/locations/ichiba_2560_522.webp","webpack:///./app/javascript/images/locations/ichiba_672_288.jpeg","webpack:///./app/javascript/images/locations/ichiba_672_288.webp","webpack:///./app/javascript/images/locations/ichiba_750_546.jpeg","webpack:///./app/javascript/images/locations/ichiba_750_546.webp","webpack:///./app/javascript/images/locations/kushi_map_pin.svg","webpack:///./app/javascript/images/locations/map-marker.png","webpack:///./app/javascript/images/locations/panton_2560_522.jpeg","webpack:///./app/javascript/images/locations/panton_2560_522.webp","webpack:///./app/javascript/images/locations/panton_672_288.jpeg","webpack:///./app/javascript/images/locations/panton_672_288.webp","webpack:///./app/javascript/images/locations/panton_750_546.jpeg","webpack:///./app/javascript/images/locations/panton_750_546.webp","webpack:///./app/javascript/images/locations/yokocho_map_pin.svg","webpack:///./app/javascript/images/naruto/naruto.png","webpack:///./app/javascript/images/offers/ramen_8/promo-detail_desktop@1x.webp","webpack:///./app/javascript/images/offers/ramen_8/promo-detail_desktop@2x.webp","webpack:///./app/javascript/images/offers/ramen_8/promo-detail_mobile@1x.webp","webpack:///./app/javascript/images/offers/ramen_8/promo-detail_mobile@2x.webp","webpack:///./app/javascript/images/offers/sega/YC_P3R_2024_website_banner_463_478_background.png","webpack:///./app/javascript/images/offers/shuchu/offer-card_desktop@1x.webp","webpack:///./app/javascript/images/offers/shuchu/offer-card_desktop@2x.webp","webpack:///./app/javascript/images/offers/shuchu/promo-detail_desktop@1x.webp","webpack:///./app/javascript/images/offers/shuchu/promo-detail_desktop@2x.webp","webpack:///./app/javascript/images/offers/shuchu/promo-detail_mobile@1x.webp","webpack:///./app/javascript/images/offers/shuchu/promo-detail_mobile@2x.webp","webpack:///./app/javascript/images/offers/wings/offer-card_desktop@1x.webp","webpack:///./app/javascript/images/offers/wings/offer-card_desktop@2x.webp","webpack:///./app/javascript/images/offers/wings/promo-detail_desktop@1x.webp","webpack:///./app/javascript/images/offers/wings/promo-slide_desktop@1x.webp","webpack:///./app/javascript/images/offers/wings/promo-slide_desktop@2x.webp","webpack:///./app/javascript/images/ramen-history/Ramen_dishes_desktop@1x.webp","webpack:///./app/javascript/images/ramen-history/Ramen_dishes_desktop@2x.webp","webpack:///./app/javascript/images/ramen-history/ramen_dishes_mobile@1x.webp","webpack:///./app/javascript/images/ramen-history/ramen_dishes_mobile@2x.webp","webpack:///./app/javascript/images/ramen-history/ramen_ramen_mobile_new__1x.webp","webpack:///./app/javascript/images/ramen-history/ramen_ramen_mobile_new__2x.webp","webpack:///./app/javascript/images/ramen-history/ramen_ramen_new__1x.webp","webpack:///./app/javascript/images/ramen-history/ramen_ramen_new__2x.webp","webpack:///./app/javascript/images/ramen_girl/ramen-girl.png","webpack:///./app/javascript/images/sega_boy/sega-boy.png","webpack:///./app/javascript/images/selector/arrow--down.svg","webpack:///./app/javascript/images/shared/bg-light-blue--desktop.png","webpack:///./app/javascript/images/shared/booknow_yellow.png","webpack:///./app/javascript/images/shared/find_out_more.png","webpack:///./app/javascript/images/shared/view_offer.png","webpack:///./app/javascript/images/slider/arrow--left.png","webpack:///./app/javascript/images/slider/arrow--right.png","webpack:///./app/javascript/images/social/facebook.svg","webpack:///./app/javascript/images/social/instagram.svg","webpack:///./app/javascript/images/social/instagram_icon.svg","webpack:///./app/javascript/images/social/tiktok.svg","webpack:///./app/javascript/images/yokocho_landscape_500x91.png","webpack:///./app/javascript/images/yokocho_landscape_500x91.webp","webpack:///./app/javascript/images/yokocho_landscape_rev_500x91.png","webpack:///./app/javascript/images/yokocho_landscape_rev_500x91.webp","webpack:///./app/javascript/images/yokocho_mark.png","webpack:///./app/javascript/images/yokocho_mark.webp"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","document","addEventListener","toggleMenu","window","matchMedia","matches","documentElement","classList","toggle","querySelectorAll","forEach","a","menubutton","querySelector","e","formData","fromEntries","FormData","getElementById","entries","url","open","resetbutton","ev","stopPropagation","preventDefault","form","remove","reset","style","display","scrollIntoView","behavior","block","inline","focus","initMap","branches","yokocho_icon","kushi_icon","showAll","length","map","google","maps","Map","zoom","center","lat","lng","zoomControl","mapTypeControl","scaleControl","streetViewControl","rotateControl","fullscreenControl","branch","icon","anchor","Point","setCenter","coords","marker","Marker","position","title","contentString","address","showLink","infowindow","InfoWindow","content","addListener","shouldFocus","_typeof2","obj","iterator","constructor","defaults","type","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","throttle","direction","peek","breakpoints","classes","ltr","rtl","slider","carousel","swipeable","dragging","cloneSlide","activeNav","activeSlide","disabledArrow","warn","msg","console","error","_typeof","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","configurable","writable","protoProps","staticProps","_extends","assign","arguments","source","receiver","Function","desc","getOwnPropertyDescriptor","undefined","parent","getPrototypeOf","possibleConstructorReturn","self","ReferenceError","toInt","parseInt","isString","isObject","isFunction","isUndefined","isArray","Array","mount","glide","extensions","events","components","_name","define","prop","definition","mergeOptions","settings","options","EventsBus","this","hop","event","handler","on","index","push","context","emit","item","Glide","selector","_c","_t","_e","disabled","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_i","_d","status","now","Date","getTime","func","wait","timeout","args","result","previous","later","leading","apply","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","siblings","node","parentNode","firstChild","matched","nextSibling","nodeType","exist","HTMLElement","TRACK_SELECTOR","EventsBinder","listeners","el","closure","capture","removeEventListener","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","is","Gap","Gaps","Grow","Clones","grow","Peeking","Peek","before","Focusing","width","Sizes","slideWidth","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","sortBreakpoints","points","keys","sort","reduce","k","COMPONENTS","Html","root","track","slides","slice","wrapper","children","filter","slide","contains","_r","Translate","Events","transform","TRANSFORMERS","concat","mutate","transformer","mutator","isType","isOffset","after","movement","compose","duration","transition","callback","enable","offset","resolve","token","split","join","addClass","add","removeClass","_v","indexOf","setupSlides","setupWrapper","dimention","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","peekIncrementer","part","start","end","Math","max","floor","clone","cloneNode","_clone","unshift","append","_Components$Html","half","prepend","reverse","appendChild","_i2","insertBefore","_i3","removeChild","Resize","Binder","unbind","off","destroy","Build","typeClass","activeClass","sibling","removeClasses","move","calculate","isStart","isEnd","steps","countableSteps","min","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","parseFloat","threshold","swipeDistance","swipeDeg","round","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","Anchors","detached","prevented","_a","click","detach","draggable","setAttribute","getAttribute","removeAttribute","attach","Controls","_n","addBindings","setActive","removeActive","controls","removeBindings","elements","currentTarget","Keyboard","press","keyCode","Autoplay","setInterval","stop","time","clearInterval","Breakpoints","match","point","_Core","Glide$$1","__proto__","subClass","superClass","setPrototypeOf","inherits","sliders","conf","webpackPolyfill","deprecate","paths","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","Element","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","setData","$","csrfParam","csrfToken","meta","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","input","CustomEvent","fire","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","defaultPrevented","data","dispatchEvent","stopEverything","stopImmediatePropagation","delegate","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","response","responseText","getResponseHeader","success","statusText","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","location","href","toUpperCase","dataType","accept","done","crossDomain","withCredentials","onreadystatechange","DONE","parser","JSON","parse","createElement","head","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","option","selected","checked","encodeURIComponent","formElements","allowAction","handleConfirm","confirm","message","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","method","action","body","isRemote","handleRemote","button","enctype","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","factory","sparkMd5","fn","createCommonjsModule","hex_chr","md5cycle","x","b","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","state","substring","toString","md51_array","subarray","Uint8Array","rhex","j","hex","toUtf8","str","test","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","concatenateArrayBuffers","first","second","byteLength","buffer","hexToBinaryString","bytes","SparkMD5","clamp","val","from","to","num","targetArray","sourceArray","begin","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","hashBinary","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","eventInit","initEvent","toArray$1","BlobRecord","checksum","attributes","filename","content_type","byte_size","responseType","getMetaValue","requestDidLoad","requestDidError","stringify","blob","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","notify","upload","methodName","_len","messages","_key","DirectUploadController","directUpload","dispatch","hiddenInput","insertAdjacentElement","dispatchError","signed_id","progress","loaded","total","alert","uploadRequestDidProgress","DirectUploadsController","files","controllers","createDirectUploadControllers","startNextController","controller","shift","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","delete","submitForm","ActiveStorage","require","global","w","noGlobal","getProto","_slice","flat","array","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","src","noModule","DOMEval","code","doc","toType","version","init","isArrayLike","jquery","pushStack","elems","merge","prevObject","each","elem","eq","last","even","grep","_elem","odd","splice","extend","copy","copyIsArray","deep","isPlainObject","expando","random","isReady","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","invert","callbackExpect","arg","guid","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pop","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","nodeName","dir","next","childNodes","els","seed","nid","groups","newSelector","newContext","ownerDocument","exec","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","qsaError","cache","cacheLength","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","top","attachEvent","className","createComment","getById","getElementsByName","attrId","find","getAttributeNode","tag","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","_context","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matcher","unmatched","lang","elemLang","activeElement","hasFocus","tabIndex","selectedIndex","_matchIndexes","radio","checkbox","password","image","submit","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","defaultValue","unique","isXMLDoc","escapeSelector","_dir","until","truncate","_siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","prev","has","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","reject","noValue","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","once","stopOnFalse","empty","lock","locked","fireWith","fired","Deferred","tuples","_state","_promise","always","deferred","pipe","fns","newDefer","tuple","returned","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","readyException","readyList","completed","catch","readyWait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","_data","removeData","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","values","hide","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","_on","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","trigger","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","load","noBubble","beforeunload","returnValue","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","eventPhase","shiftKey","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","pos","fx","scrollTop","scrollLeft","linear","swing","cos","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","processData","async","contentType","accepts","responseFields","converters","ajaxSetup","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","abort","finalText","hasContent","ifModified","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhrSuccessStatus","xhrSupported","cors","_callback","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","binary","_callback2","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","_jQuery","_$","noConflict","webpackContext","req","webpackContextResolve"],"mappings":"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AA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,uE,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,6E,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,uE,gBCA3CC,EAAOD,QAAU,IAA0B,kE,gBCA3CC,EAAOD,QAAU,IAA0B,wE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,oF,gBCA3CC,EAAOD,QAAU,IAA0B,oF,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,wE,gBCA3CC,EAAOD,QAAU,IAA0B,uE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,oF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,oG,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,oG,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,oG,gBCA3CC,EAAOD,QAAU,IAA0B,uG,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,sG,gBCA3CC,EAAOD,QAAU,IAA0B,yG,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,oF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,iG,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,mG,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,kG,gBCA3CC,EAAOD,QAAU,IAA0B,qG,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QAAU,IAA0B,sF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,8F,gBCA3CC,EAAOD,QAAU,IAA0B,mG,gBCA3CC,EAAOD,QAAU,IAA0B,sG,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,gG,gBCA3CC,EAAOD,QAAU,IAA0B,qG,gBCA3CC,EAAOD,QAAU,IAA0B,wG,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,kG,gBCA3CC,EAAOD,QAAU,IAA0B,6E,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,iF,gBCA3CC,EAAOD,QA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,QAAU,IAA0B,oF,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,qF,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,6E,gBCA3CC,EAAOD,QAAU,IAA0B,6E,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,uF,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,wE,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,wE,gBCA3CC,EAAOD,QAAU,IAA0B,6E,gBCA3CC,EAAOD,QAAU,IAA0B,4E,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,6E,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,gF,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,mE,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,6F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,+G,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,yF,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,0F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,4F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,2F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,+F,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,wF,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,uE,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,0E,gBCA3CC,EAAOD,QAAU,IAA0B,uE,gBCA3CC,EAAOD,QAAU,IAA0B,wE,gBCA3CC,EAAOD,QAAU,IAA0B,yE,gBCA3CC,EAAOD,QAAU,IAA0B,qE,gBCA3CC,EAAOD,QAAU,IAA0B,sE,gBCA3CC,EAAOD,QAAU,IAA0B,2E,gBCA3CC,EAAOD,QAAU,IAA0B,mE,gBCA3CC,EAAOD,QAAU,IAA0B,8E,gBCA3CC,EAAOD,QAAU,IAA0B,+E,gBCA3CC,EAAOD,QAAU,IAA0B,kF,gBCA3CC,EAAOD,QAAU,IAA0B,mF,gBCA3CC,EAAOD,QAAU,IAA0B,kE,gBCA3CC,EAAOD,QAAU,IAA0B","file":"js/application-3d6755dc7db19a2ea563.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 376);\n","\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n function toggleMenu() {\n if (!window.matchMedia('(min-width: 768px)').matches) {\n document.documentElement.classList.toggle('mobile-menu-visible')\n }\n }\n\n document.querySelectorAll('#open-btn, #close-btn, nav a').forEach(function(a) {\n a.addEventListener(\"click\", toggleMenu);\n });\n});\n","document.addEventListener(\"DOMContentLoaded\", function () {\n const menubutton = document.querySelector('#menuselector button');\n if (menubutton) menubutton.addEventListener('click', (e) => {\n const formData = Object.fromEntries(new FormData(document.getElementById('menuselector')).entries());\n if(formData.url) {\n window.open(formData.url);\n }\n }, false);\n});","document.addEventListener(\"DOMContentLoaded\", function () {\n //signup_form\n const resetbutton = document.getElementById('resetform');\n if (resetbutton) resetbutton.addEventListener('click', (ev) => {\n ev.stopPropagation();\n ev.preventDefault();\n const form = document.getElementById('signup_form');\n if (form) {\n form.classList.remove('thanks');\n form.reset();\n document.getElementById('signup_thanks').style.display = 'none';\n document.getElementById('signup_error').style.display = 'none';\n form.scrollIntoView({behavior: \"smooth\", block: \"start\", inline: \"nearest\"})\n document.getElementById('signup_name').focus();\n }\n }, false);\n});\n","window.initMap = function(branches, yokocho_icon, kushi_icon) {\n const centerPosition = { lat: 51.509406, lng: -0.1782765 };\n const showAll = branches.length > 1;\n\n const map = new google.maps.Map(document.getElementById(\"map\"), {\n zoom: showAll ? 13 : 16,\n center: centerPosition,\n zoomControl: true,\n mapTypeControl: false,\n scaleControl: false,\n streetViewControl: false,\n rotateControl: false,\n fullscreenControl: true,\n });\n\n for (const [key, branch] of Object.entries(branches)) {\n let icon;\n let anchor;\n\n if (branch.key === 'barkushi') {\n icon = kushi_icon;\n anchor = new google.maps.Point(27.5, 0);\n } else if (branch.key === 'heddon') {\n icon = yokocho_icon;\n anchor = new google.maps.Point(27.5, 65);\n } else {\n icon = yokocho_icon;\n anchor = new google.maps.Point(27.5, 32.5);\n }\n\n if (!showAll) map.setCenter(branch.coords);\n \n const marker = new google.maps.Marker({\n position: branch.coords,\n title: branch.name,\n map: map,\n icon: {\n url: icon,\n anchor: anchor,\n },\n });\n\n let contentString = '

' + branch.name + '

' + branch.address + '

';\n if (branch.showLink) {\n contentString += '

View';\n } else {\n contentString += '

Opening autumn

';\n }\n\n const infowindow = new google.maps.InfoWindow({\n content: contentString,\n });\n marker.addListener(\"click\", () => {\n infowindow.open({\n anchor: marker,\n map,\n shouldFocus: false,\n });\n });\n }\n}\n","function _typeof2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled'\n }\n};\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\n\nfunction warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\n}\n\nvar _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + _typeof2(superClass));\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (_typeof2(call) === \"object\" || typeof call === \"function\") ? call : self;\n};\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\n\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n\nfunction isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\n\n\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\n\nfunction mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBus);\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n createClass(EventsBus, [{\n key: 'on',\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: 'emit',\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\n\nvar Glide = function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n createClass(Glide, [{\n key: 'mount',\n value: function mount$$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: 'mutate',\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'play',\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\n\nfunction Run(Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset('<') || _this.isOffset('>')) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction;\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.min(length - Glide.index, -toInt(steps));\n } else {\n Glide.index++;\n }\n\n break;\n\n case '<':\n if (steps === '<') {\n Glide.index = 0;\n } else if (this.isStart()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.min(Glide.index, toInt(steps));\n } else {\n Glide.index--;\n }\n\n break;\n\n case '=':\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index === 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index === this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n }\n };\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is acitve, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\n\n\nfunction now() {\n return new Date().getTime();\n}\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n\nfunction throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\n\nfunction Gaps(Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * (Components.Sizes.length - 1);\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n\n\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\nfunction Html(Glide, Components) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n return Html;\n}\n\nfunction Peek(Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move(Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes(Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = this.slideWidth + 'px';\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build(Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.activeSlide);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones(Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {Void}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes;\n var peekIncrementer = +!!Glide.settings.peek;\n var part = perView + peekIncrementer;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n clone.classList.add(classes.cloneSlide);\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = Components.Sizes.slideWidth + 'px';\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n createClass(EventsBinder, [{\n key: 'on',\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: 'off',\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\n\nfunction Resize(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\n\nfunction Direction(Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Rtl(Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Gap(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Gaps.value * Glide.index;\n }\n };\n}\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Grow(Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Peeking(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Focusing(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction mutator(Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate(Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(width * (length - 1));\n });\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(0);\n });\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition(Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\n\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\nfunction Swipe(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var settings = Glide.settings;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\nfunction Controls(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.add(settings.classes.activeNav);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\n }\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n event.preventDefault();\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n _this2.stop();\n });\n Binder.on('mouseout', Components.Html.root, function () {\n _this2.start();\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn('Breakpoints option must be an object');\n }\n\n return {};\n}\n\nfunction Breakpoints(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = _extends({}, settings);\n\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n _extends(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = _extends({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n}(Glide);\n\nexport default Glide$1;","import Glide from \"@glidejs/glide\"\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const sliders = document.querySelectorAll('.slider__inner');\n const conf = {\n type: 'carousel',\n startAt: 1,\n perView: 3,\n focusAt: 'center',\n animationDuration: 400,\n rewind: true,\n rewindDuration: 400,\n peek: 0,\n gap: 20,\n breakpoints: {\n 575: {\n gap: 0,\n peek: -100,\n },\n 980: {\n gap: 20,\n peek: 0,\n }\n },\n classes:{\n direction: {\n ltr: 'ltr',\n rtl: 'rtl'\n },\n slider: 'slider',\n carousel: 'carousel',\n swipeable: 'swipeable',\n dragging: 'dragging',\n cloneSlide: 'slide--clone',\n activeNav: 'bullet--active',\n activeSlide: 'slide--active',\n disabledArrow: 'arrow--disabled'\n }\n };\n sliders.forEach((slider, index) => {\n new Glide(slider, conf).mount();\n })\n});\n\n","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","module.exports = __webpack_public_path__ + \"media/images/about/blue-wood-1280-1d042e9c9604daadebc5cc3237f19daa.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-341x341_hy01-025af84c72de4092625adfa1e568a927.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-341x341_hy02-3c2fe79fec9251bd065a8f769388a6a0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-341x341_hy03-a482bf0aa3eb9b194c9c562205765acd.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-341x341_hy04-13991962099273e9afc03f884d62a385.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-341x341_hy05-8fbcd6d4a4f34efcd935b27e69c2a0dd.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-341x341_hy06-8032bc0117d73315a0171034715b3939.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-346x346-01-8ce4da27be56300823311fcd2cc5079a.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-346x346-02-1eeaa92c09e49afba5b500298f86e969.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-346x346-03-138a22c978594242deeec7d94bd91b12.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-346x346-04-c1c368cabf039286300a24bb1b515b0d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-346x346-05-2a913de732ff6e02e8df08a4da862f00.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-346x346-06-b8c634d58af7f81642b92d7f17bdf7f9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682-01-x2-d9f20373b9b7a8cb066fd589f04de755.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682-02-x2-792753e0b8b55f8fb5d7f14361d953ad.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682-03-x2-8ae27a6b222b3d212e0e064698a54248.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682-04-x2-43159936e11a1dd56bb7d5ecb36cb083.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682-05-x2-fb50e7c485d46fb759ca1e333b481986.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682-06-x2-87bb9190c071b5a4530ea0ad68484ca1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682_hy01-afd133b67ac14488ae041268aafb21c2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682_hy02-3cd2e78bccd901098852ca5f23ea0e13.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682_hy03-53bdfdf5a9928b1ca4cef8fb3076c9ed.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682_hy04-f617861cb3baad6e27850cc0b6e2ba5f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682_hy05-2f2fb56ed53cbdcc459816fc7d26f67e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery-682x682_hy06-e3edba7d5ac816f2301f878d1c1ae6f6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/gallery_hy07_2x-73936f9056cff70334c6bf86b14364da.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_1280-736669fca7de1bf65fcfc90509cb880e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_1280_2x-07955f63288d1c6edf8d87d5484e1969.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_1280x261_about-c7b9004f357a2cc578524b8e0115c828.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_2560x522_about-4c3402f3ca2a5588c860170fd9fb5de7.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_375-ddd284eba18dd432e4733329f65ba97e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_375_2x-0f6c12ba81a2eddd065eb6813a328109.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/header_750x546_about-7d3ec14769ee98d0bf1161c282b2fcd8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/neon-noodle-1280-2a54704799dae05796bc6c5b736bfca5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/neon-noodle-1280-x2-34d5ae7c7c0f2a0a5f5b093d7ae85e8f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/neon-noodle-375-c9aeaede3ade8f7773ee7606d6657397.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/neon-noodle-375-x2-af00b5965d879632c3457a2479f733d8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/noodle_bowl_1280-8eccb9910c2830581d5eab0d2a7ed6d1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/noodle_bowl_1280_2x-14862c7b973b6b3c95d131259273e2d5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/noodle_bowl_375-f40654f52abaa468d3a00c4b7dfc9339.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/noodle_bowl_375_2x-7beb6c1972ebdaa7f6910e6f46614be8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/shuchu-booth-1280-3d77888571698bbc2f1bbd90cf80ac39.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/shuchu-booth-1280-x2-dff7f98ed8894e5266b5aed5829985a1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/shuchu-booth-375-8f00d67b4c45d71566dc78955d339d77.jpg\";","module.exports = __webpack_public_path__ + \"media/images/about/shuchu-booth-375-x2-cc6afd5d008279ce7babaefb943354d3.jpg\";","module.exports = __webpack_public_path__ + \"media/images/booking/header_1280x261_book-4e09d0532b325afb66ec7e3ca823eadf.jpg\";","module.exports = __webpack_public_path__ + \"media/images/booking/header_2560x522_book-89399ea2321b1f90cd8742e6187bb53c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/booking/header_750x546_book-5868a2cee844bee1fbb39007bbf4a09f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/call_to_action/bg--desktop-b294e7c608f2279113f85440ab272849.jpg\";","module.exports = __webpack_public_path__ + \"media/images/call_to_action/bg--mobile-f3b7a57f709c2ad481d2c40d3ded6b31.jpg\";","module.exports = __webpack_public_path__ + \"media/images/call_to_action/newbie_montage_new_1280x1187-417eee821442c05b2e9a740f276878a6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/call_to_action/newbie_montage_new_2560x2374-0aadfa7fc30c80b91149684836dbee27.jpg\";","module.exports = __webpack_public_path__ + \"media/images/call_to_action/shuchu_home_375x517-64f53a243439fdea8598a26c5f45aa4d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/call_to_action/shuchu_home_750x1034-dff0b0071f8fa0ac929a349522580a2f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Full res/all_ramen-f34ab87d13cb97db72d63a2398299095.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Full res/one_cup_sake-a92c32eb1bf61cf48d18294db63f5214.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Full res/sake_flight-52bc85b25efe8422fff8cb901ce0a251.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Full res/set_menu-ac8dfe94270b5c0f4822fa110603f15d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Full res/the_yokocho-64683fb66888a96d3bf842ac4ebc65ad.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Full res/vegan_napoli-0fbf0067b4258425e89d7f67f8c4be02.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Sapporo_miso_ramen@1x-3e28df16be3b937dfa7044650e063296.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/Sapporo_miso_ramen@2x-0f3b49436af952d058a29c6d32190118.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/all_ramen-f65e11548557e0d55e06b6b400ee14f8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/cats-069f20ffa1e152d0d05e5593267831df.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/cats-small-91cbfc7f3ed2eb03b90bcb375b0dc032.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/cocktail@1x-15ae178596c8d8c6e19d8adb3d157668.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/cocktail@2x-996e7a8c2605bece9e6edfb833815e40.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/counter-732960cab076610e77ad7eb959cc38d4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/counter-small-c8ddb955bd35800efea013ef5e7127a5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/food_drink_shuchu_1x-f4daf0581f5f9304c7d67474bdb36f82.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/friedchicken-large-05802bb1561e13028a31da230ee7bfed.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/friedchicken-small-4e9a08922cec85ccc0c566c008c5cfa9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/hakata_tonkotsu_ramen@1x-250253801f4446b1fd6480006fc3429d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/hakata_tonkotsu_ramen@2x-5c6068ecdcb9659c35c78c697bec5078.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/hakodate_shio_ramen@1x-2dc9a2ff8ffcac9e8b6f6324d0a71dee.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/hakodate_shio_ramen@2x-12f3a53a667f9e1e256f2dab81b323b8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/lanterns-e75db3a41e746bce76daf2097933f3e0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/lanterns-small-b2ffe88a22eb4984766027080372cb86.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/one_cup_sake-4b34a1b87d376d251afa3162b943c99b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/sake_flight-278473b80e295dd3e244e28c7fb3e89e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/set_menu-53635cf9549c46b6f3d3c064d2588fa5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/side@1x-1d009ca7d665bfd0963753983e91d9ac.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/side@2x-06af1d25844ea887e207775874d2cc2f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/summer_menu@1x-bbb89b88f97130879611abf48b2c57ea.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/summer_menu@2x-5d04808150426272b419536bd8c860c2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/the_yokocho-555f0dc6ba25a4a5c850f5d22fd6c26e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/vegan_miso_ramen@1x-ac3dafb4b307fa380d9725bfe2578910.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/vegan_miso_ramen@2x-cb72ba673344e20ef4d98bd2ad6dad6b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/content/vegan_napoli-09b3916442e18bcb82385135a8ae89ae.jpg\";","module.exports = __webpack_public_path__ + \"media/images/food/header_1280x261_food-c8febf858db7a7ccf5cb9340aed0fb5d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/food/header_2560x522_food-35e1a37ad0d7903d38f04cd92d514e31.jpg\";","module.exports = __webpack_public_path__ + \"media/images/food/header_750x546_food-ef5e9eab9c99a3744562cf8438a721e9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/food/hy_food_drink_main_1080x1173-e5e5f04281a4bf0bfef31674f5ff0311.jpg\";","module.exports = __webpack_public_path__ + \"media/images/food/hy_food_drink_main_750x815-b056aeeed4ccb190c117d6a80bba161f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/footer/bg--desktop-b72d8bcd1fa9cb7b9c3de9297140ae51.jpg\";","module.exports = __webpack_public_path__ + \"media/images/footer/bg--mobile-900b12d977259777a0f7efe1f5a40a32.jpg\";","module.exports = __webpack_public_path__ + \"media/images/galleries/panton/01-879bbdea1f5787748cbf3058599f05e5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/galleries/panton/02-d1cdbb9ae89e56907a78cce1a715c529.jpg\";","module.exports = __webpack_public_path__ + \"media/images/galleries/panton/03-7284c1cc520ffa89b90ba5e1fdce9b1b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/galleries/panton/04-0c08bb1308807fc76140443d4fcb9f43.jpg\";","module.exports = __webpack_public_path__ + \"media/images/galleries/panton/05-c5b56752ef18c0538ea60ff36d08f3af.jpg\";","module.exports = __webpack_public_path__ + \"media/images/galleries/panton/06-c6904c7c1c8e64242fe08083f348e95c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/Yokocho_Cut-7_PT_no_logo_HB-2c6ea12ff958b1d3801ac32077da3bc2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/Yokocho_Sega_16x9_still-99925e3902e2ac02368cc2d4694ce9a7.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/Yokocho_Sega_9x16_still-d34113cf97396a315e1579184bc37bff.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/Yokocho_v3_no_logo_HB-884531186c41b00f1230158c4e263df2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/bg--desktop-d4d5b7ff61ac71b15d966871e3d14305.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/web_main_1080_1080-438c3d8d84f8a47d7b6bf1fd1fab2a02.jpg\";","module.exports = __webpack_public_path__ + \"media/images/hero_home/web_main_1920_1080-477a63315329d7376c9a64dc273dda35.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@1x_ichiba-5871977683a976de00f23dac9113092e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@1x_japan-centre-b94baa4ea08a348dfe99fdfd29ab001b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@1x_shoryu-43124c9ae740d90d404d69b73ef5741e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@1x_yokocho-b4a952307c2ba32c0edbab4d4ad1b4d9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@2x_ichiba-447c9cebae80958eb6b93f0cb4e3c61d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@2x_japan-centre-8c044a62e45f485caed1d2e74558fb40.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@2x_shoryu-07eff8fc00f40760b15284e86e81b790.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_desktop_@2x_yokocho-55fe0189fca1b2fcfa97f9762985d65c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@1x_ichiba-6ca0e8c3c5b72d397a3d99ca57ef698b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@1x_japan-centre-302125d9ef6fbe18067c7e00415280e0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@1x_shoryu-bd7e357e4db10874caf0027c9f6217da.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@1x_yokocho-25a927585daf5bd226bd9ba268a8568c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@2x_ichiba-7640969a792216d6c23ddab4a5fdb7f1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@2x_japan-centre-5cd0183905cfdea646cef279576e63ea.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@2x_shoryu-4de211e37efad9bb9f0bd81e18ac6724.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/Brand_mobile_@2x_yokocho-f940d4a63f99d4c68d21498b6f695417.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/HY_header_desktop@1x_jc-group-5c8c49e5b62c2bae9110baec54c952de.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/HY_header_desktop@2x_jc-group-e9cc1917d98925a341503fe07af298a9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/HY_header_mobile@1x_jc-group-8fce02e138025d8db046644ddeae3f10.jpg\";","module.exports = __webpack_public_path__ + \"media/images/jcgroup/HY_header_mobile@2x_jc-group-ecc654eeca20fae79782be4200e20ded.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/Steven-Joyce-JOS2021078D00051-650c982a75a5bcc5792bdfac4bbe491d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/bar_kushi-b903d2c4a1433e56f68bf57af4186823.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/bar_kushi_thumb-5736996de1411afffab9ef38ac47a39e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/heddon-location-1280-64b50315a6043ba5d4f81cf054e27deb.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/heddon-location-1280-x2-b21eae44a16796965fd24f70dab4e914.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/ichiba2_672_288-53e4fbab6c54cdd4b4ce135732050e65.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-heddon-bg-1280-5c2fbd4024888a14382690f3ed100165.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-heddon-bg-1280-2x-d95916901e0c63ac7e3ef8a09b63a34c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-heddon-bottom-strip-1280-6039b04adaba376e6c7abed5ceb8055c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-heddon-bottom-strip-1280-2x-b55fca3d1086042b504b914cea5405e1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-ichiba-bg-1280-7184e8bfe02de1c6d780044e63e5c53f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-ichiba-bg-1280-2x-ff198cd47ed434a24da393d371303f48.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-ichiba-bottom-strip-1280-2a35e0bb20f1f91b2076c0ddfc59133f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-ichiba-bottom-strip-1280-2x-f2ebcb45c99d5fefaac8a6dacee23cfc.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-ramen-bowl-1280-1ad920c10909a5cfc931a8b67b00f9c1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/location-ramen-bowl-1280-2x-b6421523836468608f76e11c7ee7c6a7.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-blue-bg-1280-e64bd0f86d937f7ab9f16f4eeb089615.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-blue-bg-1280-2x-7fe596b429ecbe5bca16df16786ae042.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-divider-375-d8f2b4655dd511da4b6102ea1380e009.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-divider-375-2x-5b01c2763959431c6d56efbf3b722345.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-header-1280-f0e2f73fa635febf6f99e949d3028122.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-header-1280-x2-3eb7a9f7c15adb43384040d8d2431a97.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-header-375-x1-3e0cfda78cb692df9bcfde73247b1fe5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-header-375-x2-6c1cacd605799137bbf2b8ae42ae0446.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-neon-ramen-375-af6afb5250564067eab402ddfcf8d9b1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-neon-ramen-375-2x-106ec979748353d96953059fd2052f0b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-ramen-bowl-375-4d47b85ba18b156ead0ec954c5aabef1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/locations-ramen-bowl-375-2x-c5ae878e631c1efd11b8948fcc0f43b9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/map-before-ichiba-1100x460-39324fa1ea2174aedf7124682d0ddf29.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/map-before-ichiba-550x230-1441253de8cf1281d136280abe24bd37.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/texture-01-375-45adcd88a6e4205ac4ec59cea9233780.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/texture-01-375-2x-a9ae7ef669a4542666936840ac754350.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/texture-02-375-c6e036cc33d78d71e5af383e07525c74.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/texture-02-375-2x-29dc1bca2c0bc941dcf0ba13ba047196.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/yokocho_map_heddon_1280x766-fc9c9143e5df9b5f4b58ebe9a835e296.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/yokocho_map_heddon_640x383-6d1c3d274a0ba6c453ab6fe708bb4e2e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/yokocho_map_ichiba_1280x766-4b36cc6d0f01dd2f6c00c34aa8af55e7.jpg\";","module.exports = __webpack_public_path__ + \"media/images/locations/yokocho_map_ichiba_640x383-88ede9a9d94853bfafaa8ca41c3aec47.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/HY_header_desktop@1x_loyalty-0ed3ff1dc9e5b1ee57cf39a71d594e45.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/HY_header_desktop@2x_loyalty-948a644c0d1ad601725313f06dcea899.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/HY_header_mobile@1x_loyalty-caa8040aa3c7e22b04e0701602e65552.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/HY_header_mobile@2x_loyalty-8f48a6df24962141e1eed0d04bf5211f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/divider_strip_desktop_@1x-ebacda65f0e7647cf4ac1749c6f77435.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/divider_strip_desktop_@2x-416574c32de8cc69364b4a34d3f525cb.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/divider_strip_mobile_@1x-e9a93c3af2e5ef53a0a91d888a305d34.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/divider_strip_mobile_@2x-eaab5acde3340fb72ef409da4be2316c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/loyalty_card_editorial@1x-4add97bc71459188555630dcbeb7ff9e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/loyalty_card_editorial@2x-86d8cf5e37f5b62d5996db8081a2efcd.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/loyalty_card_editorial_mobile_@1x-602ab5dc80738ea0b337ff15df76c617.jpg\";","module.exports = __webpack_public_path__ + \"media/images/loyalty/loyalty_card_editorial_mobile_@2x-3c61ffa4775f1aad9e22e9519b06b385.jpg\";","module.exports = __webpack_public_path__ + \"media/images/naruto/web_main_background-4b99866fdd033b57ff1a93bae16dbe27.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/HY_header_desktop@1x_offers-5c7de804f204174240b5abee13b17810.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/HY_header_desktop@2x_offers-92f3ca8f5778a94516fbe04246a09288.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/HY_header_mobile@1x_offers-cdd53ae8028a4c0eea43d5a0c6218571.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/HY_header_mobile@2x_offers-f45dd3f2a496f3238e2c7f79d49e6dbf.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/offer-card_desktop@1x-96fdd0cb28808bdef8bbe84f079a4f29.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/offer-card_desktop@2x-32d0fc63e9fad03dd14283e82cefa4ab.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/promo-detail_desktop@1x-8557e53fc67237b5fa5f5190d3779f3c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/promo-detail_desktop@2x-b4b4fcdbbee38fbf1798af2bbf8b09c6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/promo-detail_mobile@1x-db9248ab2d3cd3359e8bdce1d2b4a1c1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/promo-detail_mobile@2x-a518cb2adaa9f327746bc225cefb72e0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/promo-slide_desktop@1x-fe3db5b017b925fabd33ec0da52d378a.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/happyhour/promo-slide_desktop@2x-169f3571d0e0860b241f16d50641dfe6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/offer-card_desktop@1x-f00e34f8c8a31007c3864c78cd76669c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/offer-card_desktop@2x-22fa8eed69738ed7b5c27e3ead77c196.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/promo-detail_desktop@1x-7f62d4c62a620abba3b726d2d3494aa0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/promo-detail_desktop@2x-1b3128d4a74fa63be021a0958baa66c6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/promo-detail_mobile@1x-2dd6d330159a41795262c77be9b37566.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/promo-detail_mobile@2x-1f975046f1657bc1fad5754708c3b364.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/promo-slide_desktop@1x-2e07aa2bd7ecbd001e056c3fb8b3f290.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/kidsmenu/promo-slide_desktop@2x-ee1b24cd3bd83eb4eaa135d561f6f57f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/king_charles/offer-card_desktop@2x-25c5c9d5aed38ccd34b05552b0e2cc5a.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/king_charles/promo-detail_desktop@1x-d3edbc6dd752840133e8f1b887beb63b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/king_charles/promo-detail_desktop@2x-d3edbc6dd752840133e8f1b887beb63b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/king_charles/promo-slide_desktop@2x-c9fe21e64b55e04c89440712dcd6d051.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/light_texture_mob_offer_detail_@1x-c8e81875a1801238deb67af1d61ed6e4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/light_texture_mob_offer_detail_@2x-9735ff02f06463b163fe34dbab0b31ef.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/light_texture_offer_detail_@1x-6d43f505d7720b86d3acafa3f85c2cf2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/light_texture_offer_detail_@2x-73d6b8b6d917847e5c42bfbe9684788c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/lunch_deal/offer-card_desktop@2x-59a57a4d1a11dbd53f4d910863b550b4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/lunch_deal/promo-detail_desktop@1x-d5d7bfd1fe612c6d5affc454b38896c1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/lunch_deal/promo-detail_desktop@2x-d5d7bfd1fe612c6d5affc454b38896c1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/lunch_deal/promo-slide_desktop@2x-f04d9032aa562031222d55abbd71c4db.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/melo/offer-card_desktop@2x-591e6c1313cdf84c5ce17cea960d9b6e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/melo/promo-detail_desktop@1x-a0d2ca8a8dc89636020191ea5bd1fd4c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/melo/promo-detail_desktop@2x-a0d2ca8a8dc89636020191ea5bd1fd4c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/melo/promo-slide_desktop@2x-1c2954ce4561cdcfa6dfa26a341dc758.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/miku/offer-card_desktop@2x-8ce6c2cb010d86894057d36acbce26e5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/miku/promo-detail_desktop@1x-6bb678b65ad59cb50a2ff9b3912a079c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/miku/promo-detail_desktop@2x-6bb678b65ad59cb50a2ff9b3912a079c.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/miku/promo-slide_desktop@2x-66b30ae01b0330d103adc4f1a3653243.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/naruto/offer-card_desktop@2x-8431726e9910f2b065f7f5622c5e50a0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/naruto/promo-detail_desktop@1x-e4eb6cf6e07eed40b7da08c563a4a92f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/naruto/promo-detail_desktop@2x-e4eb6cf6e07eed40b7da08c563a4a92f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/naruto/promo-slide_desktop@2x-59ab1e08538c380f9be9ae7522198b66.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/offer-card_desktop@1x-83ee1e6d3255d924db850996c37328b0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/offer-card_desktop@2x-f91c2b4ae85f7f8ebaa891812190e389.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/promo-detail_desktop@1x-6e9f1129e7a498a0b249127ede13758e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/promo-detail_desktop@2x-1a378d996d1337e8b9da9c8493bbcb20.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/promo-detail_mobile@1x-077d12102724ad1391ae28495aed7c87.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/promo-detail_mobile@2x-721a05d6182ebf021f09467d953658ca.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/promo-slide_desktop@1x-d1cd6e24ee68af548d4dc424bd241b7e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/nhs/promo-slide_desktop@2x-729e92e12c915f4a983d777c7fba2ba0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/panton/offer-card_desktop@2x-1b1e1ed59e4291a8f758ce87e7546091.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/panton/promo-detail_desktop@2x-1a9edab88030170f6a59ef69f1e14000.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/panton/promo-slide_desktop@2x-fa600f452df864f3808be096f8b0357b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/pre_theater/offer-card_desktop@2x-231a98e42fa0f07e7eef35ab4ceaeff5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/pre_theater/promo-detail_desktop@1x-68aa4dd42f3159539641ab370b867d6d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/pre_theater/promo-detail_desktop@2x-68aa4dd42f3159539641ab370b867d6d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/pre_theater/promo-slide_desktop@2x-e046647cc6a87cf2c6941bdf3aeaefd2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_8/offer-card_desktop@1x-4051bdf6fb9e99e6ff94213869d3ff97.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_8/offer-card_desktop@2x-0e75d9c1f8d61d3eeb6b322864980ab8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_8/promo-slide_desktop@1x-fdc9c0db3ebd63d453eefa160a71a05d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_8/promo-slide_desktop@2x-84818cb694c16a32bec3d20dac1470d9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_9/offer-card_desktop@2x-899cc6cf520e8c995f84964d96e2e8b8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_9/promo-detail_desktop@1x-811fb305c12019d4c80ceac867bf4cf4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_9/promo-detail_desktop@2x-811fb305c12019d4c80ceac867bf4cf4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/ramen_9/promo-slide_desktop@2x-5ddd39ce5463704c924f97806ab12769.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/sega/offer-card_desktop@2x-95acf40380b1c639e447c0a9d60e2558.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/sega/promo-detail_desktop@1x-7675874528242752dc756a360fb12a06.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/sega/promo-detail_desktop@2x-7675874528242752dc756a360fb12a06.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/sega/promo-slide_desktop@2x-fa33ce29eb814291d44b7a8e28c4fce7.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/offer-card_desktop@1x-947b3228a741313dbd5f3faef4c65f0a.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/offer-card_desktop@2x-ec492e658f35550446d6b066a1deb2a2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/promo-detail_desktop@1x-f88c302c27671569d9a6adad7c024026.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/promo-detail_desktop@2x-7feca8b1d8ac80af53d6e7cb24270660.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/promo-detail_mobile@1x-4d50bd392fad4c41f7dc9ddb5f9711a5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/promo-detail_mobile@2x-ebbbd6a3124d7eb02ad07fa956abb8ad.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/promo-slide_desktop@1x-9df087808ee9116360da406813d68c71.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/shuchu/promo-slide_desktop@2x-c16b891004fafea1a583b9016d6503fc.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/offer-card_desktop@1x-4175da955e2bbae51e176813a42f4ffc.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/offer-card_desktop@2x-76dbe81aff2a1703b48d88cd3e55477b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/promo-detail_desktop@1x-1d06e13d5870ec81c1db1e32b8005183.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/promo-detail_desktop@2x-b7c861843b877f8839b87c0ad666aa19.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/promo-detail_mobile@1x-441629e76057753e6c2d021b04b9b496.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/promo-detail_mobile@2x-1db52c86af34858fab10ee2a14424b90.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/promo-slide_desktop@1x-9badece71b57dea9f2cc6dc3a09d75e4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/student/promo-slide_desktop@2x-ce1c2100dd8f90a7d7a746fcf7445c59.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/winter_deal/offer-card_desktop@2x-684f968a7e115385ed45d915fd73a07b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/winter_deal/promo-detail_desktop@1x-37bde68fcac3ef316586a92f775a64d9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/winter_deal/promo-detail_desktop@2x-37bde68fcac3ef316586a92f775a64d9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/winter_deal/promo-slide_desktop@2x-fb95df27538fabd3924a8648be218dba.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/offer-card_desktop@1x-31a5d1f432f40c86d56d534b9fc52f1e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/offer-card_desktop@2x-9cbc13e2892eafb79fa07c8cf68d0312.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/promo-detail_desktop@1x-31a5d1f432f40c86d56d534b9fc52f1e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/promo-detail_desktop@2x-31a5d1f432f40c86d56d534b9fc52f1e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/promo-detail_mobile@1x-31a5d1f432f40c86d56d534b9fc52f1e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/promo-detail_mobile@2x-31a5d1f432f40c86d56d534b9fc52f1e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/xmas/promo-slide_desktop@2x-e501cbb4199ed3cad50ed1bb4d21b33e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/yakiniku/offer-card_desktop@2x-990d6dc55d809dc936fa458ffb844ea0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/yakiniku/promo-detail_desktop@1x-bbdd70930f2b6d37e9c8c3def6ae8a78.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/yakiniku/promo-detail_desktop@2x-bbdd70930f2b6d37e9c8c3def6ae8a78.jpg\";","module.exports = __webpack_public_path__ + \"media/images/offers/yakiniku/promo-slide_desktop@2x-cf1c707da45d6fd3d787a687422a62c0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/Ramen_dishes_desktop@1x-6a4fa723277d131124bb964ae196d8a9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/Ramen_dishes_desktop@2x-b504f4c517fd36eb2de151646972f169.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_no-border-b37c8d9888bf1315c55685657621b911.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_no-border@2x-eb9b170cc2df754c1dcd174b647f6e62.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_no-border_325x212-094817e1c66fd49c2ab8b1c92e7d23e4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_no-border_325x212@2x-bec47282f4aeb5041bd930254a6ad693.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_with-border-c2a2a05e4d940661526a07862b0b2717.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_with-border@2x-a790a2415a7c242d60528e9f006f878b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_with-border_325x212-03daff4b4b79954cad34302c8c3479e8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/adding_noodles_with-border_325x212@2x-4c17c702cf3eea9190b6a7fb844f0623.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/blue_bg1-3ffa9b5784f021c3259f27c6e9e83b39.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/blue_bg1@2x-1216897a66d618554937c560b2b22b0e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/blue_bg_375x670-e0e57a4855bb7fc9476cc462f724b537.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/blue_bg_375x670@2x-58f6f381fca10bc9ccfe30d8f7bd2e7d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_no-border-c093403fdc279261e6fdff46da4a8d11.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_no-border@2x-758a1ba76273eba1abd5ed2e3f81a3ba.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_no-border_325x212-81e10abfab48b0342a7f1d84444b2584.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_no-border_325x212@2x-4c3bb971d0708fd2b9f390bebc071687.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_with-border-0d0b17521cebd4e8f52037e2b16b9ca4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_with-border@2x-bd1fa6690ea76358ce37503a390afbd2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_with-border_325x212-2b9216afc0858d7c50f6ece807bde11f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/dish_1_with-border_325x212@2x-d712332bb285fe89f268315b1b519e4a.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_1280x392-6bf859e27fa72bde2cabf7966f4ebaa5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_1280x392@2x-179202e748531eae53e3792c4c5386ad.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_1280x475-49341929da1e8dbaeba02f41079a74b0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_1280x475@2x-138fe5c1085d5026c919594bb52dcec8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_1280x508-2467f807ddab379bdaac9de8a94837e8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_1280x508@2x-8c27924be71394946a452cd492c715dc.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_375x522-a9b769767423fa4ac302c880e7a6d68d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_375x522@2x-2fdb00845d4fc2a414f964d9f3912dcd.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_375x606-acc542dc9749cec08fc125c9f7d22ad6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_375x606@2x-eb95334f7821ff3da591aa88ad694d62.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_375x668-553441d6550946fb6b7d8a280427d7df.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/light_texture_375x668@2x-5b36666bfc4bcc94780933c592977436.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_no-border-c2e515ae269d9ad428f4b8a460b36cd9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_no-border@2x-e7c0b31deb17847454a240fa718127dc.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_no-border_325x212-ddd584a21d1c759c0d171748bad5f229.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_no-border_325x212@2x-a883a6f80b1a6859edb3e7098b0a3724.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_with-border-f485daaf974085f506b4920debe75208.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_with-border@2x-edfe2b3b847a3460ab4c9fa29e802d15.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_with-border_325x212-094f841e5facade199a91632eff9ce1d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/menu_board_with-border_325x212@2x-4431dd7f58edf83db9bad04cd556edbf.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg1-7795a28815ef69328c35e4312d413df6.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg1@2x-b085e8e93a90f0461348a1a67a5b6469.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg1_375x128-4966b1592a27e16b9150d602c35367df.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg1_375x128@2x-eb80127af43c9b1d00941f4b9c4a22e0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg2-1ac3ff2d04e7ffe57d20b69f8e705016.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg2@2x-eac0ee374f56c052305fcd892a4ddec9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg2_375x244-06d9b021aaed839d9b516a3cb0991995.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg2_375x244@2x-525884e68a49cb18178f626a70af0e91.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg3-65bb4d09e9a47408ab886a8d68d3871f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg3@2x-b407de42e893c5c0c775ac6753b53428.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg3_375x240-399610c8bb78031cf4d345e6b696d31f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/noodle_bg3_375x240@2x-5198c22cc7ec7c2863170af0aced2d8b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_no-border-937e03192691d4a5924d99f656d6e65f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_no-border@2x-f07613d6b6140de3091c9c48d9edbb72.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_no-border_325x212-a5b27d7e44a7face777987c521b3942e.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_no-border_325x212@2x-b9b3c10d21c8407cec8e3c6d1c9576ef.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_with-border-4bc5f18f653984be6dc19ca9f1352ecc.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_with-border@2x-3bfb08d1565383d77a8bd97918a8fcdb.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_with-border_325x212-a007f9827bf52505ca7777ed7cb422fd.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/pouring_broth_with-border_325x212@2x-84ad98010b40976df0e54ae14ec22164.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_dishes_mobile@1x-2edda1f5d3cdc7c375bd8e40bbfdac04.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_dishes_mobile@2x-ee6deb5afa5832ef890db8f5c40f98b4.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_history_header-63219f43e22b2b885ee9a8d9c450dffa.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_history_header@2x-02838ddd2a9121f1e5e2206425bb5195.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_history_header_mobile-debf9e238b602c3f0e134a951576fae2.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_history_header_mobile@2x-f0fbd6fd68175657d5d483931261df25.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_map-f3eedb00c7073d443ad16bf2985d8fb7.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_map@2x-96bfd07b11aaa2c43e1c1b226c8d6928.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_map_375x320-9acdbd25126f32ede9f553c3e7b66d00.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_map_375x320@2x-f2fdcb3f1067c76337e3611bb2e8e04f.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_ramen_1900_900-a84f7fe0a638f181e709a1929a3cca95.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/ramen_ramen_750_528-5f87e5732fef03d295cf49b07969c7b0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/yellow_bg1-3e14b06ace6a09daaaf6b28104435ba8.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/yellow_bg1@2x-15b5c1cb2b97f859ca3fbc6e575f18c9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/yellow_bg_375x643-3c6ac8fdde8d4174412b1392d269bc24.jpg\";","module.exports = __webpack_public_path__ + \"media/images/ramen-history/yellow_bg_375x643@2x-d37c2c06998f5a60696225fb63c4836d.jpg\";","module.exports = __webpack_public_path__ + \"media/images/shared/bg-blue--desktop-6d167a3b4b67e28810fcb41b89d5e6b3.jpg\";","module.exports = __webpack_public_path__ + \"media/images/shared/bg-light--desktop-41000add6221a348f0da5f7662f652a5.jpg\";","module.exports = __webpack_public_path__ + \"media/images/slider/slide1-10b4dce73a762254c534287f9bd768d9.jpg\";","module.exports = __webpack_public_path__ + \"media/images/slider/slide2-099860c6947260e916a149d3eacae37b.jpg\";","module.exports = __webpack_public_path__ + \"media/images/slider/slide3-929be6030e7f6703d01e8ee90b61e6a0.jpg\";","module.exports = __webpack_public_path__ + \"media/images/social/bg--desktop-ad2fa113aa2bb77871bbc3df07efc2d1.jpg\";","module.exports = __webpack_public_path__ + \"media/images/social/bg--mobile-67518677879acb13fd2064f80d52c31a.jpg\";","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n\n element = e.target;\n } else {\n element = e;\n }\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function isXhrRedirect(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function rhex(n) {\n var s = \"\",\n j;\n\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n\n return s;\n }\n\n function hex(x) {\n var i;\n\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n\n return x.join(\"\");\n }\n\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n function SparkMD5() {\n this.reset();\n }\n\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(this._hash, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n });\n });\n\n var classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n return root.querySelector(selector);\n }\n\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n\n return event;\n }\n\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n\n var id = 0;\n\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n\n return object[methodName].apply(object, messages);\n }\n }\n\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n\n _this.dispatch(\"end\");\n\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var controllers = this.createDirectUploadControllers();\n\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n\n _this.dispatch(\"end\");\n }\n };\n\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n\n function didClick(event) {\n var target = event.target;\n\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n\n submitButtonsByForm.delete(form);\n }\n\n function disable(input) {\n input.disabled = true;\n }\n\n function enable(input) {\n input.disabled = false;\n }\n\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from \"@rails/ujs\"\n\nimport * as ActiveStorage from \"@rails/activestorage\"\n\n// import 'bootstrap/dist/js/bootstrap.bundle'\nimport \"../styles/myapp.scss\"\nimport \"./mobile-menu\"\nimport \"./slider\"\nimport \"./selector\"\nimport \"./signupreset\"\nimport \"./maps\"\n\n// Copy all static images under ../images to the output folder\n// and reference them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\nconst images = require.context('../images', true)\nconst imagePath = (name) => images(name, true)\n\nRails.start()\nActiveStorage.start()\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && _typeof(module.exports) === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var _slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return _typeof(obj) === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : _typeof(obj);\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n\n var version = \"3.6.0\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n even: function even() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function odd() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function globalEval(code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function sortOrder(a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function indexOf(list, elem) {\n var i = 0,\n len = list.length;\n\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function funescape(escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ? // Strip the backslash prefix from a non-hex escape sequence\n nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function unloadHandler() {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ? // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } : // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0; // Can't trust NodeList.length\n\n while (target[j++] = els[i++]) {}\n\n target.length = j - 1;\n }\n };\n }\n\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n setDocument(context);\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && (nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\");\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\n }\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\n }\n }\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n\n\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n\n\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes\n\n if (diff) {\n return diff;\n } // Check if b follows a\n\n\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n\n return a ? 1 : -1;\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n } // Expose support vars for convenience\n\n\n support = Sizzle.support = {};\n /**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\n\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement; // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\n };\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n\n\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false); // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n\n\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n /* Attributes\n ---------------------------------------------------------------------- */\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n // Check if getElementsByTagName(\"*\") returns only elements\n\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n }); // Support: IE<9\n\n support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag); // Filter out possible comments\n\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n\n return tmp;\n }\n\n return results;\n }; // Class\n\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\n\n rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n\n rbuggyQSA = [];\n\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input; // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n\n docElem.appendChild(el).innerHTML = \"\" + \"\"; // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n } // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n\n\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \"\" + \"\"; // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE8\n // Enforce case-sensitivity of name attribute\n\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n\n\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n\n\n docElem.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n\n\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\"); // This should fail with an exception\n // Gecko does not error, returns false instead\n\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n /* Contains\n ---------------------------------------------------------------------- */\n\n hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n\n return false;\n };\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {\n return -1;\n } // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b]; // Parentless nodes are either documents or disconnected\n\n if (!aup || !bup) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n return a == document ? -1 : b == document ? 1 :\n /* eslint-enable eqeqeq */\n aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n } // Otherwise we need full lists of their ancestors for comparison\n\n\n cur = a;\n\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n\n cur = b;\n\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n } // Walk down the tree looking for a discrepancy\n\n\n while (ap[i] === bp[i]) {\n i++;\n }\n\n return i ? // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :\n /* eslint-enable eqeqeq */\n 0;\n };\n return document;\n };\n\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n\n Sizzle.matchesSelector = function (elem, expr) {\n setDocument(elem);\n\n if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n\n return contains(context, elem);\n };\n\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n\n\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n };\n\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function ATTR(match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n \"CHILD\": function CHILD(match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n\n return match;\n },\n \"PSEUDO\": function PSEUDO(match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function TAG(nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function CLASS(className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function ATTR(name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n /* eslint-disable max-len */\n\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n /* eslint-enable max-len */\n };\n },\n \"CHILD\": function CHILD(type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function PSEUDO(pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element (issue #299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function target(elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function root(elem) {\n return elem === docElem;\n },\n \"focus\": function focus(elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function checked(elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function selected(elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n \"empty\": function empty(elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n \"parent\": function parent(elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function header(elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function input(elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function button(elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function text(elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && ((attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument > length ? length : argument;\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"]; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results : matcherIn; // Find primary matches\n\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function superMatcher(seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0; // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n compile = Sizzle.compile = function (selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\n };\n /**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n\n\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }; // One-time assignments\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n\n support.detectDuplicates = !!hasDuplicate; // Initialize against the default document\n\n setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n }); // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\n if (!assert(function (el) {\n el.innerHTML = \"\";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n } // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n\n\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \"\";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, _name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n } // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n\n\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n\n return Sizzle;\n }(window);\n\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n\n var dir = function dir(elem, _dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[_dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var _siblings = function siblings(n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function find(selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function filter(selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function not(selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function is(selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function has(target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function closest(selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function index(elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function add(selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function addBack(selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function parent(elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function parents(elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function parentsUntil(elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function next(elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function prev(elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function nextAll(elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function prevAll(elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function nextUntil(elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function prevUntil(elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function siblings(elem) {\n return _siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function children(elem) {\n return _siblings(elem.firstChild);\n },\n contents: function contents(elem) {\n if (elem.contentDocument != null && // Support: IE 11+\n // elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n _fired,\n // Flag to prevent firing\n _locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function fire() {\n // Enforce single-firing\n _locked = _locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n _fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (_locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function add() {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function remove() {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function has(fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function empty() {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function disable() {\n _locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function disabled() {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function lock() {\n _locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function locked() {\n return !!_locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function fireWith(context, args) {\n if (!_locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function fire() {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function fired() {\n return !!_fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function Deferred(func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n _state = \"pending\",\n _promise = {\n state: function state() {\n return _state;\n },\n always: function always() {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function _catch(fn) {\n return _promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function pipe() {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function then(onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function mightThrow() {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && (_typeof(returned) === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function promise(obj) {\n return obj != null ? jQuery.extend(obj, _promise) : _promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n _promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n _state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n _promise.promise(deferred); // Call given func if any\n\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function when(singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = _slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function updateFunc(i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;\n\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n\n return primary.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function ready(wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n } // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function fn(elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n } // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (#9572)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function acceptData(owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function cache(owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function set(owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function get(owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function access(owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function remove(owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function hasData(owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function hasData(elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function data(elem, name, _data) {\n return dataUser.access(elem, name, _data);\n },\n removeData: function removeData(elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function _data(elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function _removeData(elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function data(key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (_typeof(key) === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function removeData(key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function queue(elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function dequeue(elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function next() {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function _queueHooks(elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function queue(type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function dequeue(type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function clearQueue(type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function promise(type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function resolve() {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function show() {\n return showHide(this, true);\n },\n hide: function hide() {\n return showHide(this);\n },\n toggle: function toggle(state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only\n // IE <=9 replaces \";\n support.option = !!div.lastChild;\n })(); // We have to close these tags to support XHTML (#13200)\n\n\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting or other required elements.\n thead: [1, \"\", \"
\"],\n col: [2, \"\", \"
\"],\n tr: [2, \"\", \"
\"],\n td: [3, \"\", \"
\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td; // Support: IE <=9 only\n\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"\"];\n }\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|&#?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous, except when they are no-op.\n // So expect focus to be synchronous when the element is already active,\n // and blur to be synchronous when the element is not already active.\n // (focus and blur are always synchronous in other supported browsers,\n // this just defines when we can count on it).\n\n\n function expectSync(elem, type) {\n return elem === safeActiveElement() === (type === \"focus\");\n } // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n function _on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (_typeof(types) === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n _on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function fn(event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n\n\n jQuery.event = {\n global: {},\n add: function add(elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Only attach events to objects that accept data\n\n if (!acceptData(elem)) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function remove(elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function dispatch(nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function handlers(event, _handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = _handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < _handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: _handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function addProp(name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function set(value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function fix(originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function setup(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", returnTrue);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function trigger(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function _default(event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function postDispatch(event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n }; // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n\n function leverageNative(el, type, expectSync) {\n // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n if (!expectSync) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function handler(event) {\n var notAsync,\n result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n // Saved data should be false in such cases, but might be a leftover capture object\n // from an async native handler (gh-4350)\n if (!saved.length) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = _slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous\n\n notAsync = expectSync(this, type);\n this[type]();\n result = dataPriv.get(this, type);\n\n if (saved !== result || notAsync) {\n dataPriv.set(this, type, false);\n } else {\n result = {};\n }\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault(); // Support: Chrome 86+\n // In Chrome, if an element having a focusout handler is blurred by\n // clicking outside of it, it invokes the handler synchronously. If\n // that handler calls `.remove()` on the element, the data is cleared,\n // leaving `result` undefined. We need to guard against this.\n\n return result && result.value;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering the\n // native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved.length) {\n // ...and capture the result\n dataPriv.set(this, type, {\n value: jQuery.event.trigger( // Support: IE <=9 - 11+\n // Extend with the prototype to reset the above stopImmediatePropagation()\n jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)\n }); // Abort handling of the native event\n\n event.stopImmediatePropagation();\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (#504, #13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\n }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function preventDefault() {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function setup() {\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller\n\n return false;\n },\n trigger: function trigger() {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n // Suppress native focus or blur as it's already being fired\n // in leverageNative.\n _default: function _default() {\n return true;\n },\n delegateType: delegateType\n };\n }); // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function handle(event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function on(types, selector, data, fn) {\n return _on(this, types, selector, data, fn);\n },\n one: function one(types, selector, data, fn) {\n return _on(this, types, selector, data, fn, 1);\n },\n off: function off(types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (_typeof(types) === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /\\s*$/g; // Prefer a tbody over its parent table for containing new rows\n\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n\n return elem;\n } // Replace/restore the type attribute of script elements for safe DOM manipulation\n\n\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n\n return elem;\n }\n\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n\n if (dest.nodeType !== 1) {\n return;\n } // 1. Copy private data: events, handlers, etc.\n\n\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n } // 2. Copy user data\n\n\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n } // Fix IE bugs, see support tests\n\n\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.\n\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit\n\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n\n domManip(self, args, callback, ignored);\n });\n }\n\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n\n if (fragment.childNodes.length === 1) {\n fragment = first;\n } // Require either new content or an interest in ignored elements to invoke the callback\n\n\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length; // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (#8070).\n\n for (; i < l; i++) {\n node = fragment;\n\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration\n\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n\n callback.call(collection[i], node, i);\n }\n\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts\n\n jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion\n\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n\n return collection;\n }\n\n function _remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n\n node.parentNode.removeChild(node);\n }\n }\n\n return elem;\n }\n\n jQuery.extend({\n htmlPrefilter: function htmlPrefilter(html) {\n return html;\n },\n clone: function clone(elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem); // Fix IE cloning issues\n\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n } // Copy the events from the original to the clone\n\n\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n } // Preserve script evaluation history\n\n\n destElements = getAll(clone, \"script\");\n\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n } // Return the cloned set\n\n\n return clone;\n },\n cleanData: function cleanData(elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n } // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n\n\n elem[dataPriv.expando] = undefined;\n }\n\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function detach(selector) {\n return _remove(this, selector, true);\n },\n remove: function remove(selector) {\n return _remove(this, selector);\n },\n text: function text(value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function append() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function prepend() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function before() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function after() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function empty() {\n var elem,\n i = 0;\n\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes\n\n elem.textContent = \"\";\n }\n }\n\n return this;\n },\n clone: function clone(dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function html(value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n } // See if we can take a shortcut and just use innerHTML\n\n\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n\n try {\n for (; i < l; i++) {\n elem = this[i] || {}; // Remove element nodes and prevent memory leaks\n\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n\n elem = 0; // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function replaceWith() {\n var ignored = []; // Make the changes, replacing each non-ignored context element with the new content\n\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n\n if (parent) {\n parent.replaceChild(elem, this);\n }\n } // Force callback invocation\n\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n\n push.apply(ret, elems.get());\n }\n\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n\n var getStyles = function getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n };\n\n var swap = function swap(elem, options, callback) {\n var ret,\n name,\n old = {}; // Remember the old values, and insert the new ones\n\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n\n ret = callback.call(elem); // Revert the old values\n\n for (name in options) {\n elem.style[name] = old[name];\n }\n\n return ret;\n };\n\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n\n div = null;\n }\n\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\"); // Finish early in limited (non-browser) environments\n\n if (!div.style) {\n return;\n } // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (#8908)\n\n\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function boxSizingReliable() {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function pixelBoxStyles() {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function pixelPosition() {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function reliableMarginLeft() {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function scrollboxSize() {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function reliableTrDimensions() {\n var table, tr, trChild, trStyle;\n\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"border:1px solid\"; // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\"; // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is display: block\n // gets around this issue.\n\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n\n return reliableTrDimensionsVal;\n }\n });\n })();\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem); // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, #12537)\n // .css('--customProperty) (#3144)\n\n if (computed) {\n ret = computed.getPropertyValue(name) || computed[name];\n\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n } // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n\n\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth; // Put in the new values to get a computed value out\n\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width; // Revert the changed values\n\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n\n return ret !== undefined ? // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function get() {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n } // Hook needed; redefine it so that the support test is not executed again.\n\n\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {}; // Return a vendor-prefixed property or undefined\n\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n\n while (i--) {\n name = cssPrefixes[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n\n\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n\n if (final) {\n return final;\n }\n\n if (name in emptyStyle) {\n return name;\n }\n\n return vendorProps[name] = vendorPropName(name) || name;\n }\n\n var // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n rcustomProp = /^--/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ? // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0; // Adjustment may not be necessary\n\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n if (box === \"margin\") {\n delta += jQuery.css(elem, box + cssExpand[i], true, styles);\n } // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\n\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles); // For \"border\" or \"margin\", add border\n\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles); // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n } // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n } // For \"content\" or \"padding\", subtract border\n\n\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n } // Account for positive content-box scroll gutter when requested by providing computedVal\n\n\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n\n return delta;\n }\n\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n\n val = \"auto\";\n } // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n\n\n if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") || // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" || // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") && // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n\n valueIsBorderBox = offsetProp in elem;\n\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n } // Normalize \"\" and auto\n\n\n val = parseFloat(val) || 0; // Adjust for the element's box model\n\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function get(elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"gridArea\": true,\n \"gridColumn\": true,\n \"gridColumnEnd\": true,\n \"gridColumnStart\": true,\n \"gridRow\": true,\n \"gridRowEnd\": true,\n \"gridRowStart\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function style(elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n } // Make sure that we're working with the right name\n\n\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style; // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Gets hook for the prefixed version, then unprefixed version\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value\n\n if (value !== undefined) {\n type = _typeof(value); // Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret); // Fixes bug #9237\n\n type = \"number\";\n } // Make sure that null and NaN values aren't set (#7116)\n\n\n if (value == null || value !== value) {\n return;\n } // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n\n\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n } // background-* props affect original clone's values\n\n\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n } // If a hook was provided, use that value, otherwise just set the specified value\n\n\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n } // Otherwise just get the value from the style object\n\n\n return style[name];\n }\n },\n css: function css(elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Try prefixed name followed by the unprefixed name\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there\n\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n } // Otherwise, if a way to get the computed value exists, use that\n\n\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n } // Convert \"normal\" to computed value\n\n\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n } // Make numeric if forced or a qualifier was provided and val looks numeric\n\n\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function get(elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function set(elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n } // Convert to pixels if value adjustment is needed\n\n\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n }); // These hooks are used by animate to expand properties\n\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function expand(value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n\n return expanded;\n }\n };\n\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function css(name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n\n return map;\n }\n\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function init(elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function cur() {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function run(percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n\n this.now = (this.end - this.start) * eased + this.start;\n\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function get(tween) {\n var result; // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n } // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n\n\n result = jQuery.css(tween.elem, tween.prop, \"\"); // Empty strings, null, undefined and \"auto\" are converted to 0.\n\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function set(tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n }; // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function set(tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function linear(p) {\n return p;\n },\n swing: function swing(p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point\n\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n\n jQuery.fx.tick();\n }\n } // Animations created synchronously will run synchronously\n\n\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n } // Generate parameters to create a standard animation\n\n\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n }; // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n\n includeWidth = includeWidth ? 1 : 0;\n\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n\n return attrs;\n }\n\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\"); // Queue-skipping animations hijack the fx hooks\n\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n } // Detect show/hide animations\n\n\n for (prop in props) {\n value = props[prop];\n\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true; // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n } // Bail out if this is a no-op like .hide().hide()\n\n\n propTween = !jQuery.isEmptyObject(props);\n\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n } // Restrict \"overflow\" and \"display\" styles during box animations\n\n\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade\n\n restoreDisplay = dataShow && dataShow.display;\n\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n\n display = jQuery.css(elem, \"display\");\n\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n } // Animate inline elements as inline-block\n\n\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n\n style.display = \"inline-block\";\n }\n }\n }\n\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n } // Implement show/hide animations\n\n\n propTween = false;\n\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n } // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\n\n if (toggle) {\n dataShow.hidden = !hidden;\n } // Show elements before animating them\n\n\n if (hidden) {\n showHide([elem], true);\n }\n /* eslint-disable no-loop-func */\n\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n\n dataPriv.remove(elem, \"fxshow\");\n\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n } // Per-property setup\n\n\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass\n\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n\n hooks = jQuery.cssHooks[name];\n\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name]; // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function tick() {\n if (stopped) {\n return false;\n }\n\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n\n deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield\n\n if (percent < 1 && length) {\n return remaining;\n } // If this was an empty animation, synthesize a final progress notification\n\n\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n } // Resolve the animation and report its conclusion\n\n\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function createTween(prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function stop(gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n\n if (stopped) {\n return this;\n }\n\n stopped = true;\n\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n } // Resolve when we played the last frame; otherwise, reject\n\n\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n\n return this;\n }\n }),\n props = animation.props;\n\n propFilter(props, animation.opts.specialEasing);\n\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n\n return result;\n }\n }\n\n jQuery.map(props, createTween, animation);\n\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n } // Attach callbacks from options\n\n\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function tweener(props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n\n var prop,\n index = 0,\n length = props.length;\n\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function prefilter(callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && _typeof(speed) === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n }; // Go to the end state if fx are off\n\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n } // Normalize opt.queue - true/undefined/null -> \"fx\"\n\n\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n } // Queueing\n\n\n opt.old = opt.complete;\n\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n\n return opt;\n };\n\n jQuery.fn.extend({\n fadeTo: function fadeTo(speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show() // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function animate(prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function doAnimation() {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately\n\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function stop(type, clearQueue, gotoEnd) {\n var stopQueue = function stopQueue(hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n } // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n\n\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function finish(type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0; // Enable finishing flag on private data\n\n data.finish = true; // Empty the queue first\n\n jQuery.queue(this, type, []);\n\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n } // Look for any active animations, and finish them\n\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n } // Look for any animations in the old queue and finish them\n\n\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n } // Turn off finishing flag\n\n\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n }); // Generate shortcuts for custom animations\n\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n\n for (; i < timers.length; i++) {\n timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)\n\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n jQuery.fx.stop();\n }\n\n fxNow = undefined;\n };\n\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n\n jQuery.fx.interval = 13;\n\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n\n inProgress = true;\n schedule();\n };\n\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n }; // Based off of the plugin by Clint Helfers, with permission.\n // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\n\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\"; // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n\n support.checkOn = input.value !== \"\"; // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n\n support.optSelected = opt.selected; // Support: IE <=11 only\n // An input loses its value after becoming a radio\n\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function attr(name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function attr(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n } // Fallback to prop when attributes are not supported\n\n\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n } // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n elem.setAttribute(name, value + \"\");\n return value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined\n\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function set(elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n\n if (val) {\n elem.value = val;\n }\n\n return value;\n }\n }\n }\n },\n removeAttr: function removeAttr(elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n }); // Hooks for boolean attributes\n\n boolHook = {\n set: function set(elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function prop(name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function removeProp(name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function prop(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n return elem[name] = value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function get(elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n // Use proper attribute retrieval(#12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n }); // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function get(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n\n return null;\n },\n set: function set(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent) {\n parent.selectedIndex;\n\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n }); // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n\n return [];\n }\n\n jQuery.fn.extend({\n addClass: function addClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem);\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n if (cur.indexOf(\" \" + clazz + \" \") < 0) {\n cur += clazz + \" \";\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n removeClass: function removeClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem); // This expression is here for better compressibility (see addClass)\n\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n // Remove *all* instances\n while (cur.indexOf(\" \" + clazz + \" \") > -1) {\n cur = cur.replace(\" \" + clazz + \" \", \" \");\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n toggleClass: function toggleClass(value, stateVal) {\n var type = _typeof(value),\n isValidValue = type === \"string\" || Array.isArray(value);\n\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n\n return this.each(function () {\n var className, i, self, classNames;\n\n if (isValidValue) {\n // Toggle individual class names\n i = 0;\n self = jQuery(this);\n classNames = classesToArray(value);\n\n while (className = classNames[i++]) {\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n } // Toggle whole class name\n\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n } // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n\n\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function hasClass(selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function val(value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n\n ret = elem.value; // Handle most common string cases\n\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n } // Handle cases where value is null/undef or number\n\n\n return ret == null ? \"\" : ret;\n }\n\n return;\n }\n\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n\n if (this.nodeType !== 1) {\n return;\n }\n\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n } // Treat null/undefined as \"\"; convert numbers to string\n\n\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting\n\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function get(elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val : // Support: IE <=10 - 11 only\n // option.text throws exceptions (#14686, #14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function get(elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n } // Loop through all the selected options\n\n\n for (; i < max; i++) {\n option = options[i]; // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (#2551)\n\n if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val(); // We don't need an array for one selects\n\n if (one) {\n return value;\n } // Multi-Selects return an array\n\n\n values.push(value);\n }\n }\n\n return values;\n },\n set: function set(elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n\n while (i--) {\n option = options[i];\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n /* eslint-enable no-cond-assign */\n\n } // Force browsers to behave consistently when non-matching value is set\n\n\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n\n return values;\n }\n }\n }\n }); // Radios and checkboxes getter/setter\n\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function set(elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n }); // Return jQuery for attributes-only inclusion\n\n support.focusin = \"onfocusin\" in window;\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function stopPropagationCallback(e) {\n e.stopPropagation();\n };\n\n jQuery.extend(jQuery.event, {\n trigger: function trigger(event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes\n\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n } // focus/blur morphs to focusin/out; ensure we're not firing them right now\n\n\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n\n ontype = type.indexOf(\":\") < 0 && \"on\" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string\n\n event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === \"object\" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null; // Clean up the event in case it is being reused\n\n event.result = undefined;\n\n if (!event.target) {\n event.target = elem;\n } // Clone any incoming data and prepend the event, creating the handler arg list\n\n\n data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines\n\n special = jQuery.event.special[type] || {};\n\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n } // Determine event propagation path in advance, per W3C events spec (#9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\n\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n } // Only add window if we got to document (e.g., not plain obj or detached DOM)\n\n\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n } // Fire handlers on the event path\n\n\n i = 0;\n\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler\n\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n\n if (handle) {\n handle.apply(cur, data);\n } // Native handler\n\n\n handle = ontype && cur[ontype];\n\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n\n event.type = type; // If nobody prevented the default action, do it now\n\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (#6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n\n if (tmp) {\n elem[ontype] = null;\n } // Prevent re-triggering of the same event, since we already bubbled it above\n\n\n jQuery.event.triggered = type;\n\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n\n elem[type]();\n\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n\n jQuery.event.triggered = undefined;\n\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function simulate(type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function trigger(type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function triggerHandler(type, data) {\n var elem = this[0];\n\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n }); // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function handler(event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n\n jQuery.event.special[fix] = {\n setup: function setup() {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix);\n\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function teardown() {\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix) - 1;\n\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/; // Cross-browser xml parsing\n\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n\n if (!data || typeof data !== \"string\") {\n return null;\n } // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n\n\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n\n return xml;\n };\n\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n function buildParams(prefix, obj, traditional, add) {\n var name;\n\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (_typeof(v) === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n } // Serialize an array of form elements or a set of\n // key/values into a query string\n\n\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function add(key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n if (a == null) {\n return \"\";\n } // If an array was passed in, assume that it is an array of form elements.\n\n\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n } // Return the resulting serialization\n\n\n return s.join(\"&\");\n };\n\n jQuery.fn.extend({\n serialize: function serialize() {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function serializeArray() {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type; // Use .is( \":disabled\" ) so that fieldset[disabled] works\n\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n\n if (val == null) {\n return null;\n }\n\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // #7653, #8125, #8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href; // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n } // Base inspection function for prefilters and transports\n\n\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n } // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes #9887\n\n\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n\n return target;\n }\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n\n\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process\n\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n } // Check if we're dealing with a known content-type\n\n\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n } // Check to see if we have a response for the expected dataType\n\n\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n\n if (!firstDataType) {\n firstDataType = type;\n }\n } // Or just use first one\n\n\n finalDataType = finalDataType || firstDataType;\n } // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n\n\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n\n return responses[finalDataType];\n }\n }\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n\n\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys\n\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n\n current = dataTypes.shift(); // Convert to each sequential dataType\n\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n } // Apply the dataFilter if provided\n\n\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n\n prev = current;\n current = dataTypes.shift();\n\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev; // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current]; // If none found, seek a pair\n\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2]; // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n\n break;\n }\n }\n }\n } // Apply converter (if not an equivalence)\n\n\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n\n return {\n state: \"success\",\n data: response\n };\n }\n\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function ajaxSetup(target, settings) {\n return settings ? // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function ajax(url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (_typeof(url) === \"object\") {\n options = url;\n url = undefined;\n } // Force options to be an object\n\n\n options = options || {};\n\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n _statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function getResponseHeader(key) {\n var match;\n\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function getAllResponseHeaders() {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function setRequestHeader(name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function overrideMimeType(type) {\n if (completed == null) {\n s.mimeType = type;\n }\n\n return this;\n },\n // Status-dependent callbacks\n statusCode: function statusCode(map) {\n var code;\n\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n _statusCode[code] = [_statusCode[code], map[code]];\n }\n }\n }\n\n return this;\n },\n // Cancel the request\n abort: function abort(statusText) {\n var finalText = statusText || strAbort;\n\n if (transport) {\n transport.abort(finalText);\n }\n\n done(0, finalText);\n return this;\n }\n }; // Attach deferreds\n\n\n deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (#10093: consistency with old signature)\n // We also use the url parameter if available\n\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\"); // Alias method option to type as per ticket #12004\n\n s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list\n\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"]; // A cross-domain request is in order when the origin doesn't match the current origin.\n\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\"); // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n\n try {\n urlAnchor.href = s.url; // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n } // Convert data if not already a string\n\n\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n } // Apply prefilters\n\n\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there\n\n if (completed) {\n return jqXHR;\n } // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\n\n fireGlobals = jQuery.event && s.global; // Watch for a new set of requests\n\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n } // Uppercase the type\n\n\n s.type = s.type.toUpperCase(); // Determine if request has content\n\n s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n\n cacheURL = s.url.replace(rhash, \"\"); // More options handling for requests with no content\n\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url\n\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data; // #9682: remove data so that it's not used in an eventual retry\n\n delete s.data;\n } // Add or update anti-cache param if needed\n\n\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n } // Put hash and anti-cache on the URL that will be requested (gh-1732)\n\n\n s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\n\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n } // Set the correct header, if data is being sent\n\n\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n } // Set the Accepts header for the server, depending on the dataType\n\n\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]); // Check for headers option\n\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n } // Allow custom headers/mimetypes and early abort\n\n\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n } // Aborting is no longer a cancellation\n\n\n strAbort = \"abort\"; // Install callbacks on deferreds\n\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error); // Get transport\n\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort\n\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1; // Send global event\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n } // If request was aborted inside ajaxSend, stop there\n\n\n if (completed) {\n return jqXHR;\n } // Timeout\n\n\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n } // Propagate others as results\n\n\n done(-1, e);\n }\n } // Callback for when everything is done\n\n\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText; // Ignore repeat invocations\n\n if (completed) {\n return;\n }\n\n completed = true; // Clear timeout if it exists\n\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n } // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n\n\n transport = undefined; // Cache response headers\n\n responseHeadersString = headers || \"\"; // Set readyState\n\n jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful\n\n isSuccess = status >= 200 && status < 300 || status === 304; // Get response data\n\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n } // Use a noop converter for missing script but not if jsonp\n\n\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n } // Convert no matter what (that way responseXXX fields are always set)\n\n\n response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining\n\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n\n modified = jqXHR.getResponseHeader(\"etag\");\n\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n } // if no content\n\n\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\"; // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\"; // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n\n if (status || !statusText) {\n statusText = \"error\";\n\n if (status < 0) {\n status = 0;\n }\n }\n } // Set data for the fake xhr object\n\n\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\"; // Success/Error\n\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n } // Status-dependent callbacks\n\n\n jqXHR.statusCode(_statusCode);\n _statusCode = undefined;\n\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n } // Complete\n\n\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]); // Handle the global AJAX counter\n\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n\n return jqXHR;\n },\n getJSON: function getJSON(url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function getScript(url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n } // The url can be an options object (which then must have .url)\n\n\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (#11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function textScript() {}\n },\n dataFilter: function dataFilter(response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n\n jQuery.fn.extend({\n wrapAll: function wrapAll(html) {\n var wrap;\n\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n } // The elements to wrap the target around\n\n\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n\n wrap.map(function () {\n var elem = this;\n\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n\n return elem;\n }).append(this);\n }\n\n return this;\n },\n wrapInner: function wrapInner(html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function wrap(html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function unwrap(selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // #1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest\n\n\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function send(headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided\n\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n } // Override mime type if needed\n\n\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n } // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n\n\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n } // Set headers\n\n\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n } // Callback\n\n\n _callback = function callback(type) {\n return function () {\n if (_callback) {\n _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete( // File: protocol always yields status 0; see #8605, #14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n }; // Listen to events\n\n\n xhr.onload = _callback();\n errorCallback = xhr.onerror = xhr.ontimeout = _callback(\"error\"); // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (_callback) {\n errorCallback();\n }\n });\n }\n };\n } // Create the abort callback\n\n\n _callback = _callback(\"abort\");\n\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // #14683: Only rethrow if this hasn't been notified as an error yet\n if (_callback) {\n throw e;\n }\n }\n },\n abort: function abort() {\n if (_callback) {\n _callback();\n }\n }\n };\n }\n }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n }); // Install script dataType\n\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function textScript(text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n }); // Handle cache's special case and crossDomain\n\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n }); // Bind script tag hack transport\n\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, _callback2;\n\n return {\n send: function send(_, complete) {\n script = jQuery(\"