晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/stando/public_html/wp-content/plugins/wpmudev-updates/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/stando/public_html/wp-content/plugins/wpmudev-updates/assets/js/dashboard-admin.min.js.map
{"version":3,"file":"dashboard-admin.min.js","mappings":"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,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAQ,KACR,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAQ,KACR,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU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","sources":["webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/dropdowns.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/tabs.js","webpack://wpmudev-updates/./assets/src/js/admin/dashboard.js","webpack://wpmudev-updates/external var \"jQuery\"","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/select2.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/notifications.js","webpack://wpmudev-updates/./assets/src/js/admin/tools.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/modal-dialog.js","webpack://wpmudev-updates/./assets/src/js/admin/common.js","webpack://wpmudev-updates/./assets/src/js/admin/plugins.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/select2.full.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/side-tabs.js","webpack://wpmudev-updates/./assets/src/js/admin/settings/data.js","webpack://wpmudev-updates/./assets/src/js/admin/settings.js","webpack://wpmudev-updates/./assets/src/js/admin/login.js","webpack://wpmudev-updates/./assets/src/js/admin/support.js","webpack://wpmudev-updates/./node_modules/ajaxq/ajaxq.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/password.js","webpack://wpmudev-updates/webpack/bootstrap","webpack://wpmudev-updates/webpack/runtime/compat get default export","webpack://wpmudev-updates/webpack/runtime/define property getters","webpack://wpmudev-updates/webpack/runtime/hasOwnProperty shorthand","webpack://wpmudev-updates/./assets/src/js/dashboard-admin.js"],"sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it doesn't exist.\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.linkDropdown = function () {\n    function closeAllDropdowns($except) {\n      var $dropdowns = $('.sui-2-12-24 .sui-dropdown');\n\n      if ($except) {\n        $dropdowns = $dropdowns.not($except);\n      }\n\n      $dropdowns.removeClass('open');\n    }\n\n    $('body').on('click', '.sui-dropdown-anchor', function (e) {\n      var $button = $(this),\n          $parent = $button.parent();\n      closeAllDropdowns($parent);\n\n      if ($parent.hasClass('sui-dropdown')) {\n        $parent.toggleClass('open');\n      }\n\n      e.preventDefault();\n    });\n    $('body').on('mouseup', function (e) {\n      var $anchor = $('.sui-2-12-24 .sui-dropdown-anchor');\n\n      if (!$anchor.is(e.target) && 0 === $anchor.has(e.target).length) {\n        closeAllDropdowns();\n      }\n    });\n  };\n\n  SUI.linkDropdown();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it doesn't exist.\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.suiTabs = function (config) {\n    var data;\n    var types = ['tab', 'pane'];\n    var type;\n    var groups = [];\n    var activeGroups = [];\n    var activeChildren = [];\n    var activeItems = [];\n    var indexGroup;\n    var indexItem;\n    var memory = [];\n\n    function init(options) {\n      var groupIndex;\n      var tabItems;\n      var itemIndex;\n      var hashId;\n      data = options;\n      setDefaults();\n      groups.tab = document.querySelectorAll(data.tabGroup);\n      groups.pane = document.querySelectorAll(data.paneGroup);\n\n      for (groupIndex = 0; groupIndex < groups.tab.length; groupIndex++) {\n        tabItems = groups.tab[groupIndex].children;\n\n        for (itemIndex = 0; itemIndex < tabItems.length; itemIndex++) {\n          tabItems[itemIndex].addEventListener('click', onClick.bind(this, groupIndex, itemIndex), false);\n          indexGroup = groupIndex;\n          indexItem = itemIndex;\n\n          if (window.location.hash) {\n            hashId = window.location.hash.replace(/[^\\w-_]/g, '');\n\n            if (hashId === tabItems[itemIndex].id) {\n              setNodes(groupIndex, itemIndex);\n            }\n          }\n        }\n      }\n    }\n\n    function onClick(groupIndex, itemIndex) {\n      setNodes(groupIndex, itemIndex);\n      setCallback();\n    }\n\n    function setNodes(groupIndex, itemIndex) {\n      var i;\n      indexGroup = groupIndex;\n      indexItem = itemIndex;\n\n      for (i = 0; i < types.length; i++) {\n        type = types[i];\n        setActiveGroup();\n        setActiveChildren();\n        setActiveItems();\n        putActiveClass();\n      }\n\n      memory[groupIndex] = [];\n      memory[groupIndex][itemIndex] = true;\n    }\n\n    function putActiveClass() {\n      var i;\n\n      for (i = 0; i < activeChildren[type].length; i++) {\n        activeChildren[type][i].classList.remove(data[type + 'Active']);\n      }\n\n      activeItems[type].classList.add(data[type + 'Active']);\n    }\n\n    function setDefaults() {\n      var i;\n\n      for (i = 0; i < types.length; i++) {\n        type = types[i];\n        setOption(type + 'Group', '[data-' + type + 's]');\n        setOption(type + 'Active', 'active');\n      }\n    }\n\n    function setOption(key, value) {\n      data = data || [];\n      data[key] = data[key] || value;\n    }\n\n    function setActiveGroup() {\n      activeGroups[type] = groups[type][indexGroup];\n    }\n\n    function setActiveChildren() {\n      activeChildren[type] = activeGroups[type].children;\n    }\n\n    function setActiveItems() {\n      activeItems[type] = activeChildren[type][indexItem];\n    }\n\n    function setCallback() {\n      if ('function' === typeof data.callback) {\n        data.callback(activeItems.tab, activeItems.pane);\n      }\n    }\n\n    init(config);\n    return;\n  };\n\n  SUI.tabsOverflow = function ($el) {\n    var tabs = $el.closest('.sui-tabs').find('[data-tabs], [role=\"tablist\"]'),\n        leftButton = $el.find('.sui-tabs-navigation--left'),\n        rightButton = $el.find('.sui-tabs-navigation--right');\n\n    function overflowing() {\n      if (tabs[0].scrollWidth > tabs.width()) {\n        if (0 === tabs.scrollLeft()) {\n          leftButton.addClass('sui-tabs-navigation--hidden');\n        } else {\n          leftButton.removeClass('sui-tabs-navigation--hidden');\n        }\n\n        reachedEnd(0);\n        return true;\n      } else {\n        leftButton.addClass('sui-tabs-navigation--hidden');\n        rightButton.addClass('sui-tabs-navigation--hidden');\n        return false;\n      }\n    }\n\n    overflowing();\n\n    function reachedEnd(offset) {\n      var newScrollLeft, width, scrollWidth;\n      newScrollLeft = tabs.scrollLeft() + offset;\n      width = tabs.outerWidth();\n      scrollWidth = tabs.get(0).scrollWidth;\n\n      if (scrollWidth - newScrollLeft <= width) {\n        rightButton.addClass('sui-tabs-navigation--hidden');\n      } else {\n        rightButton.removeClass('sui-tabs-navigation--hidden');\n      }\n    }\n\n    leftButton.on('click', function () {\n      rightButton.removeClass('sui-tabs-navigation--hidden');\n\n      if (0 >= tabs.scrollLeft() - 150) {\n        leftButton.addClass('sui-tabs-navigation--hidden');\n      }\n\n      tabs.animate({\n        scrollLeft: '-=150'\n      }, 400, function () {});\n      return false;\n    });\n    rightButton.on('click', function () {\n      leftButton.removeClass('sui-tabs-navigation--hidden');\n      reachedEnd(150);\n      tabs.animate({\n        scrollLeft: '+=150'\n      }, 400, function () {});\n      return false;\n    });\n    $(window).on('resize', function () {\n      overflowing();\n    });\n    tabs.on('scroll', function () {\n      overflowing();\n    });\n  };\n\n  SUI.tabs = function (config) {\n    var tablist = $('.sui-tabs > div[role=\"tablist\"]');\n    var data = config; // For easy reference.\n\n    var keys = {\n      end: 35,\n      home: 36,\n      left: 37,\n      up: 38,\n      right: 39,\n      down: 40,\n      \"delete\": 46,\n      enter: 13,\n      space: 32\n    }; // Add or substract depending on key pressed.\n\n    var direction = {\n      37: -1,\n      38: -1,\n      39: 1,\n      40: 1\n    }; // Prevent function from running if tablist does not exist.\n\n    if (!tablist.length) {\n      return;\n    } // Deactivate all tabs and tab panels.\n\n\n    function deactivateTabs(tabs, panels, inputs) {\n      tabs.removeClass('active');\n      tabs.attr('tabindex', '-1');\n      tabs.attr('aria-selected', false);\n      inputs.prop('checked', false);\n      panels.removeClass('active');\n      panels.prop('hidden', true);\n    } // Activate current tab panel.\n\n\n    function activateTab(tab) {\n      var tabs = $(tab).closest('[role=\"tablist\"]').find('[role=\"tab\"]'),\n          inputs = $(tab).closest('[role=\"tablist\"]').find('input[type=\"radio\"]'),\n          panels = $(tab).closest('.sui-tabs').find('> .sui-tabs-content > [role=\"tabpanel\"]'),\n          controls = $(tab).attr('aria-controls'),\n          input = $(tab).next('input[type=\"radio\"]'),\n          panel = $('#' + controls);\n      deactivateTabs(tabs, panels, inputs);\n      $(tab).addClass('active');\n      $(tab).removeAttr('tabindex');\n      $(tab).attr('aria-selected', true);\n      input.prop('checked', true);\n      panel.addClass('active');\n      panel.prop('hidden', false);\n    } // When a \"tablist\" aria-orientation is set to vertical,\n    // only up and down arrow should function.\n    // In all other cases only left and right should function.\n\n\n    function determineOrientation(event, index, tablist) {\n      var key = event.keyCode || event.which,\n          vertical = 'vertical' === $(tablist).attr('aria-orientation'),\n          proceed = false; // Check if aria orientation is set to vertical.\n\n      if (vertical) {\n        if (keys.up === key || keys.down === key) {\n          event.preventDefault();\n          proceed = true;\n        }\n      } else {\n        if (keys.left === key || keys.right === key) {\n          proceed = true;\n        }\n      }\n\n      if (true === proceed) {\n        switchTabOnArrowPress(event, index);\n      }\n    } // Either focus the next, previous, first, or last tab\n    // depending on key pressed.\n\n\n    function switchTabOnArrowPress(event, index) {\n      var pressed, target, tabs;\n      pressed = event.keyCode || event.which;\n\n      if (direction[pressed]) {\n        target = event.target;\n        tabs = $(target).closest('[role=\"tablist\"]').find('> [role=\"tab\"]');\n\n        if (undefined !== index) {\n          if (tabs[index + direction[pressed]]) {\n            tabs[index + direction[pressed]].focus();\n          } else if (keys.left === pressed || keys.up === pressed) {\n            tabs[tabs.length - 1].focus();\n          } else if (keys.right === pressed || keys.down === pressed) {\n            tabs[0].focus();\n          }\n        }\n      }\n    } // Callback function.\n\n\n    function setCallback(currentTab) {\n      var tab = $(currentTab),\n          controls = tab.attr('aria-controls'),\n          panel = $('#' + controls);\n\n      if ('function' === typeof data.callback) {\n        data.callback(tab, panel);\n      }\n    } // When a tab is clicked, activateTab is fired to activate it.\n\n\n    function clickEventListener(event) {\n      var tab = event.target;\n      activateTab(tab);\n\n      if (undefined !== data && 'undefined' !== data) {\n        setCallback(tab);\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    function keydownEventListener(event, index, tablist) {\n      var key = event.keyCode || event.which;\n\n      switch (key) {\n        case keys.end:\n        case keys.home:\n          event.preventDefault();\n          break;\n        // Up and down are in keydown\n        // because we need to prevent page scroll.\n\n        case keys.up:\n        case keys.down:\n          determineOrientation(event, index, tablist);\n          break;\n      }\n    }\n\n    function keyupEventListener(event, index, tablist) {\n      var key = event.keyCode || event.which;\n\n      switch (key) {\n        case keys.left:\n        case keys.right:\n          determineOrientation(event, index, tablist);\n          break;\n\n        case keys.enter:\n        case keys.space:\n          activateTab(event);\n          break;\n      }\n    }\n\n    function init() {\n      var tabgroup = tablist.closest('.sui-tabs'); // Run the function for each group of tabs to prevent conflicts\n      // when having child tabs.\n\n      tabgroup.each(function () {\n        var tabs, index;\n        tabgroup = $(this);\n        tablist = tabgroup.find('> [role=\"tablist\"]');\n        tabs = tablist.find('> [role=\"tab\"]'); // Trigger events on click.\n\n        tabs.on('click', function (e) {\n          clickEventListener(e); // Trigger events when pressing key.\n        }).on('keydown', function (e) {\n          index = $(this).index();\n          keydownEventListener(e, index, tablist); // Trigger events when releasing key.\n        }).on('keyup', function (e) {\n          index = $(this).index();\n          keyupEventListener(e, index, tablist);\n        });\n      });\n    }\n\n    init();\n    return this;\n  };\n\n  if (0 !== $('.sui-2-12-24 .sui-tabs').length) {\n    // Support tabs new markup.\n    SUI.tabs(); // Support legacy tabs.\n\n    SUI.suiTabs();\n    $('.sui-2-12-24 .sui-tabs-navigation').each(function () {\n      SUI.tabsOverflow($(this));\n    });\n  }\n})(jQuery);","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminDashboardPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminDashboardPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.pluginList = [];\n\t\tthis.upgradeNonce = false;\n\t\tthis.redirectHash = false;\n\t\tthis.upgradeQueName = 'DashUpgradeQue';\n\t\tthis.isFailed = false;\n\t\tthis.upgradedPlugins = [];\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminDashboardPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.attachEvents();\n\t\t\tthis.initUpgrading();\n\t\t},\n\n\t\tattachEvents: function () {\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('.sui-notice-top').stop().slideUp('slow');\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.dashui-expired-box .dashui-expired-box__refresh', function (e) {\n\t\t\t\t$(this).addClass('sui-button-onload-text');\n\t\t\t});\n\t\t},\n\n\t\tinitUpgrading: function () {\n\t\t\tvar self = this;\n\t\t\t// sync plugins must exist\n\t\t\tif (!this.$el.find('.js-sync-plugins').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar pluginListEl = this.$el.find('ul.js-sync-plugin-list');\n\n\t\t\tpluginListEl.find('li.js-upgrading').each(function () {\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tif (!self.upgradeNonce) {\n\t\t\t\t\tself.upgradeNonce = data.hash;\n\t\t\t\t}\n\t\t\t\tif (!self.redirectHash) {\n\t\t\t\t\tself.redirectHash = data.redirecth;\n\t\t\t\t}\n\t\t\t\tself.pluginList.push(data.project);\n\t\t\t});\n\n\t\t\tthis.upgradePlugins();\n\t\t},\n\n\t\tupgradePlugins: function () {\n\t\t\tvar self = this;\n\t\t\tvar i;\n\t\t\tfor (i = 0; i < this.pluginList.length; i++) {\n\t\t\t\tvar project_id = self.pluginList[i];\n\t\t\t\tthis.addUpgradeAjaxQue(project_id);\n\t\t\t}\n\t\t},\n\n\t\taddUpgradeAjaxQue: function (project_id) {\n\t\t\tvar self = this;\n\t\t\t$.ajaxq(this.upgradeQueName, {\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'wdp-project-upgrade-free',\n\t\t\t\t\thash: self.upgradeNonce,\n\t\t\t\t\tpid: project_id,\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgrading[data-project=' + project_id + ']').addClass('sui-hidden');\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgraded[data-project=' + project_id + ']').removeClass('sui-hidden');\n\t\t\t\t\t\tself.upgradedPlugins.push(project_id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tconsole.log(response.data.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgrading[data-project=' + project_id + ']').addClass('sui-hidden');\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-failed-upgrading[data-project=' + project_id + ']').removeClass('sui-hidden');\n\t\t\t\t\t\tself.isFailed = true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (error) {\n\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgrading[data-project=' + project_id + ']').addClass('sui-hidden');\n\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-failed-upgrading[data-project=' + project_id + ']').removeClass('sui-hidden');\n\t\t\t\t\tself.isFailed = true;\n\t\t\t\t},\n\t\t\t\tcomplete: function () {\n\t\t\t\t\tif (!$.ajaxq.isRunning(self.upgradeQueName)) {\n\t\t\t\t\t\tself.redirectToDash();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tredirectToDash: function () {\n\t\t\tvar self = this;\n\t\t\t$.ajaxq('redirectToDash', {\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'wdp-login-success',\n\t\t\t\t\tpid: self.upgradedPlugins,\n\t\t\t\t\thash: self.redirectHash\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (response.data.redirect) {\n\t\t\t\t\t\twindow.location.href = response.data.redirect;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminDashboardPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","module.exports = jQuery;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n;\n\n(function ($) {\n  // Define global SUI object if it doesn't exist.\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.select = {};\n\n  SUI.select.escapeJS = function (string) {\n    // Create a temporary <div> element using jQuery and set the HTML content.\n    var div = $('<div>').html(string); // Get the text content of the <div> element and remove script tags\n\n    var text = div.text().replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, ''); // Return the escaped text\n\n    return text;\n  };\n\n  SUI.select.formatIcon = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var icon = $(data.element).attr('data-icon');\n\n    if (!data.id) {\n      return label; // optgroup.\n    }\n\n    if ('undefined' !== typeof icon) {\n      markup = '<span class=\"sui-icon-' + icon.toLowerCase() + '\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatIconSelection = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var icon = $(data.element).attr('data-icon');\n\n    if ('undefined' !== typeof icon) {\n      markup = '<span class=\"sui-icon-' + icon.toLowerCase() + '\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatColor = function (data, container) {\n    var markup, border;\n    var label = SUI.select.escapeJS(data.text);\n    var color = $(data.element).attr('data-color');\n\n    if (!data.id) {\n      return label; // optgroup.\n    }\n\n    if ('undefined' !== typeof color) {\n      switch (color) {\n        case '#FFF':\n        case 'white':\n        case '#FFFFFF':\n          border = '#000';\n          break;\n\n        case '#FAFAFA':\n        case '#F8F8F8':\n        case '#F2F2F2':\n          border = '#333';\n          break;\n\n        default:\n          border = color;\n          break;\n      }\n\n      markup = '<span class=\"sui-color\" style=\"border-color: ' + border + '; background-color: ' + color + ';\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatColorSelection = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var color = $(data.element).attr('data-color');\n\n    if ('undefined' !== typeof color) {\n      switch (color) {\n        case '#FFF':\n        case 'white':\n        case '#FFFFFF':\n          border = '#000';\n          break;\n\n        case '#FAFAFA':\n        case '#F8F8F8':\n        case '#F2F2F2':\n          border = '#333';\n          break;\n\n        default:\n          border = color;\n          break;\n      }\n\n      markup = '<span class=\"sui-color\" style=\"border-color: ' + border + '; background-color: ' + color + ';\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatVars = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var content = $(data.element).val();\n\n    if (!data.id) {\n      return label; // optgroup.\n    }\n\n    if ('undefined' !== typeof content) {\n      markup = '<span class=\"sui-variable-name\">' + label + '</span><span class=\"sui-variable-value\">' + content + '</span> ';\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatVarsSelection = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    markup = '<span class=\"sui-icon-plus-circle sui-md\" aria-hidden=\"true\"></span>';\n    markup += '<span class=\"sui-screen-reader-text\">' + label + '</span>';\n    return markup;\n  };\n\n  SUI.select.init = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      minimumResultsForSearch: hasSearch,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initIcon = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      templateResult: SUI.select.formatIcon,\n      templateSelection: SUI.select.formatIconSelection,\n      escapeMarkup: function escapeMarkup(markup) {\n        return markup;\n      },\n      minimumResultsForSearch: hasSearch,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initColor = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      templateResult: SUI.select.formatColor,\n      templateSelection: SUI.select.formatColorSelection,\n      escapeMarkup: function escapeMarkup(markup) {\n        return markup;\n      },\n      minimumResultsForSearch: hasSearch,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initSearch = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      minimumInputLength: 2,\n      maximumSelectionLength: 1,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initVars = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1;\n    select.SUIselect2({\n      theme: 'vars',\n      dropdownParent: selectParent,\n      templateResult: SUI.select.formatVars,\n      templateSelection: SUI.select.formatVarsSelection,\n      escapeMarkup: function escapeMarkup(markup) {\n        return markup;\n      },\n      minimumResultsForSearch: hasSearch\n    }).on('select2:open', function () {\n      $(this).val(null);\n    });\n    select.val(null);\n  };\n\n  $('.sui-select').each(function () {\n    var select = $(this); // return if select2 already initalized for element.\n\n    if (select.hasClass('select2-hidden-accessible') || select.hasClass('select2')) {\n      return;\n    }\n\n    if ('icon' === select.data('theme')) {\n      SUI.select.initIcon(select);\n    } else if ('color' === select.data('theme')) {\n      SUI.select.initColor(select);\n    } else if ('search' === select.data('theme')) {\n      SUI.select.initSearch(select);\n    } else {\n      SUI.select.init(select);\n    }\n  });\n  $('.sui-variables').each(function () {\n    var select = $(this); // return if select2 already initalized for element.\n\n    if (select.hasClass('select2-hidden-accessible') || select.hasClass('select2')) {\n      return;\n    }\n\n    SUI.select.initVars(select);\n  });\n})(jQuery);","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it does not exist.\n\n  var _this = this;\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n  /**\n   * @desc Notifications function to show when alert.\n   *\n   * Assumptions: The element serving as the alert container is present in the\n   * DOM and hidden. The alert container has role='alert'.\n   *\n   * @param noticeId\n   * The ID of the element serving as the alert container.\n   *\n   * @param noticeMessage\n   * The content to be printed when the alert shows up. It accepts HTML.\n   *\n   * @param noticeOptions\n   * An object with different paramethers to modify the alert appearance.\n   */\n\n\n  SUI.openNotice = function (noticeId, noticeMessage, noticeOptions) {\n    // Get notification node by ID.\n    var noticeNode = $('#' + noticeId);\n    var nodeWrapper = noticeNode.parent(); // Check if element ID exists.\n\n    if (null === typeof noticeNode || 'undefined' === typeof noticeNode) {\n      throw new Error('No element found with id=\"' + noticeId + '\".');\n    } // Check if element has correct attribute.\n\n\n    if ('alert' !== noticeNode.attr('role')) {\n      throw new Error('Notice requires a DOM element with ARIA role of alert.');\n    } // Check if notice message is empty.\n\n\n    if (null === typeof noticeMessage || 'undefined' === typeof noticeMessage || '' === noticeMessage) {\n      throw new Error('Notice requires a message to print.');\n    }\n\n    var utils = utils || {};\n    /**\n     * @desc Allowed types for notification.\n     */\n\n    utils.allowedNotices = ['info', 'blue', 'green', 'success', 'yellow', 'warning', 'red', 'error', 'purple', 'upsell'];\n    /**\n     * @desc Verify if property is an array.\n     */\n\n    utils.isObject = function (obj) {\n      if ((null !== obj || 'undefined' !== obj) && $.isPlainObject(obj)) {\n        return true;\n      }\n\n      return false;\n    };\n    /**\n     * @desc Deep merge two objects.\n     * Watch out for infinite recursion on circular references.\n     */\n\n\n    utils.deepMerge = function (target) {\n      for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        sources[_key - 1] = arguments[_key];\n      }\n\n      if (!sources.length) {\n        return target;\n      }\n\n      var source = sources.shift();\n\n      if (utils.isObject(target) && utils.isObject(source)) {\n        for (var key in source) {\n          if (utils.isObject(source[key])) {\n            if (!target[key]) {\n              Object.assign(target, _defineProperty({}, key, {}));\n            }\n\n            utils.deepMerge(target[key], source[key]);\n          } else {\n            Object.assign(target, _defineProperty({}, key, source[key]));\n          }\n        }\n      }\n\n      return utils.deepMerge.apply(utils, [target].concat(sources));\n    };\n    /**\n     * @desc Declare default styling options for notifications.\n     */\n\n\n    utils.setProperties = function () {\n      var incomingOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      utils.options = [];\n      var defaults = {\n        type: 'default',\n        icon: 'info',\n        dismiss: {\n          show: false,\n          label: 'Close this notice',\n          tooltip: ''\n        },\n        autoclose: {\n          show: true,\n          timeout: 3000\n        }\n      };\n      utils.options[0] = utils.deepMerge(defaults, incomingOptions);\n    };\n\n    utils.setProperties(noticeOptions);\n    /**\n     * @desc Build notice dismiss.\n     */\n\n    utils.buildDismiss = function () {\n      var html = '';\n      var dismiss = utils.options[0].dismiss;\n\n      if (true === dismiss.show) {\n        html = document.createElement('div');\n        html.className = 'sui-notice-actions';\n        var innerHTML = '';\n\n        if ('' !== dismiss.tooltip) {\n          if (nodeWrapper.hasClass('sui-floating-notices')) {\n            innerHTML += '<div class=\"sui-tooltip sui-tooltip-bottom\" data-tooltip=\"' + dismiss.tooltip + '\">';\n          } else {\n            innerHTML += '<div class=\"sui-tooltip\" data-tooltip=\"' + dismiss.tooltip + '\">';\n          }\n        }\n\n        innerHTML += '<button class=\"sui-button-icon\">';\n        innerHTML += '<span class=\"sui-icon-check\" aria-hidden=\"true\"></span>';\n\n        if ('' !== dismiss.label) {\n          innerHTML += '<span class=\"sui-screen-reader-text\">' + dismiss.label + '</span>';\n        }\n\n        innerHTML += '</button>';\n\n        if ('' !== dismiss.tooltip) {\n          innerHTML += '</div>';\n        }\n\n        html.innerHTML = innerHTML;\n      }\n\n      return html;\n    };\n    /**\n     * @desc Build notice icon.\n     */\n\n\n    utils.buildIcon = function () {\n      var html = '';\n      var icon = utils.options[0].icon;\n\n      if ('' !== icon || 'undefined' !== typeof icon || null !== typeof icon) {\n        html = document.createElement('span');\n        html.className += 'sui-notice-icon sui-icon-' + icon + ' sui-md';\n        html.setAttribute('aria-hidden', true);\n\n        if ('loader' === icon) {\n          html.classList.add('sui-loading');\n        }\n      }\n\n      return html;\n    };\n    /**\n     * @desc Build notice message.\n     */\n\n\n    utils.buildMessage = function () {\n      var html = document.createElement('div');\n      html.className = 'sui-notice-message';\n      html.innerHTML = noticeMessage;\n      html.prepend(utils.buildIcon());\n      return html;\n    };\n    /**\n     * @desc Build notice markup.\n     */\n\n\n    utils.buildNotice = function () {\n      var html = document.createElement('div');\n      html.className = 'sui-notice-content';\n      html.append(utils.buildMessage(), utils.buildDismiss());\n      return html;\n    };\n    /**\n     * @desc Show notification message.\n     */\n\n\n    utils.showNotice = function (animation) {\n      var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n      var type = utils.options[0].type;\n      var dismiss = utils.options[0].dismiss;\n      var autoclose = utils.options[0].autoclose; // Add active class.\n\n      noticeNode.addClass('sui-active'); // Check for allowed notification types.\n\n      $.each(utils.allowedNotices, function (key, value) {\n        if (value === type) {\n          noticeNode.addClass('sui-notice-' + value);\n        }\n      }); // Remove tabindex.\n\n      noticeNode.removeAttr('tabindex'); // Print notification message.\n\n      noticeNode.html(utils.buildNotice()); // Show animation.\n\n      if ('slide' === animation) {\n        noticeNode.slideDown(timeout, function () {\n          // Check if dismiss button enabled.\n          if (true === dismiss.show) {\n            // Focus dismiss button.\n            noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n            noticeNode.find('.sui-notice-actions button').on('click', function () {\n              SUI.closeNotice(noticeId);\n            });\n          } else {\n            // Check if notice auto-closes.\n            if (true === autoclose.show) {\n              setTimeout(function () {\n                return SUI.closeNotice(noticeId);\n              }, parseInt(autoclose.timeout));\n            }\n          }\n        });\n      } else if ('fade' === animation) {\n        noticeNode.fadeIn(timeout, function () {\n          // Check if dismiss button enabled.\n          if (true === dismiss.show) {\n            // Focus dismiss button.\n            noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n            noticeNode.find('.sui-notice-actions button').on('click', function () {\n              SUI.closeNotice(noticeId);\n            });\n          } else {\n            // Check if notice auto-closes.\n            if (true === autoclose.show) {\n              setTimeout(function () {\n                return SUI.closeNotice(noticeId);\n              }, parseInt(autoclose.timeout));\n            }\n          }\n        });\n      } else {\n        noticeNode.show(timeout, function () {\n          // Check if dismiss button enabled.\n          if (true === dismiss.show) {\n            // Focus dismiss button.\n            noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n            noticeNode.find('.sui-notice-actions button').on('click', function () {\n              SUI.closeNotice(noticeId);\n            });\n          } else {\n            // Check if notice auto-closes.\n            if (true === autoclose.show) {\n              setTimeout(function () {\n                return SUI.closeNotice(noticeId);\n              }, parseInt(autoclose.timeout));\n            }\n          }\n        });\n      }\n    };\n    /**\n     * @desc Open notification message.\n     */\n\n\n    utils.openNotice = function (animation) {\n      var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n      if (noticeNode.hasClass('sui-active')) {\n        if ('slide' === animation) {\n          noticeNode.slideUp(timeout, function () {\n            utils.showNotice('slide', timeout);\n          });\n        } else if ('fade' === animation) {\n          noticeNode.fadeOut(timeout, function () {\n            utils.showNotice('fade', timeout);\n          });\n        } else {\n          noticeNode.hide(timeout, function () {\n            utils.showNotice(null, timeout);\n          });\n        }\n      } else {\n        // Show notice.\n        utils.showNotice(animation, timeout);\n      }\n    };\n    /**\n     * @desc Initialize function.\n     */\n\n\n    var init = function init() {\n      /**\n       * When notice should float, it needs to be wrapped inside:\n       * <div class=\"sui-floating-notices\"></div>\n       *\n       * IMPORTANT: This wrapper goes before \"sui-wrap\" closing tag\n       * and after modals markup.\n       */\n      if (nodeWrapper.hasClass('sui-floating-notices')) {\n        utils.openNotice('slide');\n      } else {\n        utils.openNotice('fade');\n      }\n    };\n\n    init();\n    return _this;\n  };\n  /**\n   * @desc Close and clear the alert.\n   *\n   * Assumptions: The element that will trigger this function is part of alert content.\n   *\n   * @param noticeId\n   * The ID of the element serving as the alert container.\n   *\n   */\n\n\n  SUI.closeNotice = function (noticeId) {\n    // Get notification node by ID.\n    var noticeNode = $('#' + noticeId);\n    var nodeWrapper = noticeNode.parent(); // Check if element ID exists.\n\n    if (null === typeof noticeNode || 'undefined' === typeof noticeNode) {\n      throw new Error('No element found with id=\"' + noticeId + '\".');\n    }\n\n    var utils = utils || {};\n    /**\n     * @desc Allowed types for notification.\n     */\n\n    utils.allowedNotices = ['info', 'blue', 'green', 'success', 'yellow', 'warning', 'red', 'error', 'purple', 'upsell'];\n    /**\n     * @desc Destroy notification.\n     */\n\n    utils.hideNotice = function () {\n      // Remove active class.\n      noticeNode.removeClass('sui-active'); // Remove styling classes.\n\n      $.each(utils.allowedNotices, function (key, value) {\n        noticeNode.removeClass('sui-notice-' + value);\n      }); // Prevent TAB key from accessing the element.\n\n      noticeNode.attr('tabindex', '-1'); // Remove all content from notification.\n\n      noticeNode.empty();\n    };\n    /**\n     * @desc Close notification message.\n     */\n\n\n    utils.closeNotice = function (animation) {\n      var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n      // Close animation.\n      if ('slide' === animation) {\n        noticeNode.slideUp(timeout, function () {\n          return utils.hideNotice();\n        });\n      } else if ('fade' === animation) {\n        noticeNode.fadeOut(timeout, function () {\n          return utils.hideNotice();\n        });\n      } else {\n        noticeNode.hide(timeout, function () {\n          return utils.hideNotice();\n        });\n      }\n    };\n    /**\n     * @desc Initialize function.\n     */\n\n\n    var init = function init() {\n      /**\n       * When notice should float, it needs to be wrapped inside:\n       * <div class=\"sui-floating-notices\"></div>\n       *\n       * IMPORTANT: This wrapper goes before \"sui-wrap\" closing tag\n       * and after modals markup.\n       */\n      if (nodeWrapper.hasClass('sui-floating-notices')) {\n        utils.closeNotice('slide');\n      } else {\n        utils.closeNotice('fade');\n      }\n    };\n\n    init();\n    return _this;\n  };\n  /**\n   * @desc Trigger open and close alert notification functions through element attributes.\n   *\n   * Assumptions: Elements in charge of triggering the actions will be a button or a non-hyperlink element.\n   *\n   */\n\n\n  SUI.notice = function () {\n    var notice = notice || {};\n    notice.Utils = notice.Utils || {};\n    /**\n     * @desc Click an element to open a notification.\n     */\n\n    notice.Utils.Open = function (element) {\n      element.on('click', function () {\n        self = $(this); // Define main variables for open function.\n\n        var noticeId = self.attr('data-notice-open');\n        var noticeMessage = '';\n        var noticeOptions = {}; // Define index to use on for loops.\n\n        var i; // Define maximum number of paragraphs.\n\n        var numbLines = 4; // Check if `data-notice-message` exists.\n\n        if (self.is('[data-notice-message]') && '' !== self.attr('data-notice-message')) {\n          noticeMessage += self.attr('data-notice-message'); // If `data-notice-message` doesn't exists, look for `data-notice-paragraph-[i]` attributes.\n        } else {\n          for (i = 0; i < numbLines; i++) {\n            var index = i + 1;\n            var paragraph = 'data-notice-paragraph-' + index;\n\n            if (self.is('[' + paragraph + ']') && '' !== self.attr(paragraph)) {\n              noticeMessage += '<p>' + self.attr(paragraph) + '</p>';\n            }\n          }\n        } // Check if `data-notice-type` exists.\n\n\n        if (self.is('[data-notice-type]') && '' !== self.attr('data-notice-dismiss-type')) {\n          noticeOptions.type = self.attr('data-notice-type');\n        } // Check if `data-notice-icon` exists.\n\n\n        if (self.is('[data-notice-icon]')) {\n          noticeOptions.icon = self.attr('data-notice-icon');\n        } // Check if `data-notice-dismiss` exists.\n\n\n        if (self.is('[data-notice-dismiss]')) {\n          noticeOptions.dismiss = {};\n\n          if ('true' === self.attr('data-notice-dismiss')) {\n            noticeOptions.dismiss.show = true;\n          } else if ('false' === self.attr('data-notice-dismiss')) {\n            noticeOptions.dismiss.show = false;\n          }\n        } // Check if `data-notice-dismiss-label` exists.\n\n\n        if (self.is('[data-notice-dismiss-label]') && '' !== self.attr('data-notice-dismiss-label')) {\n          noticeOptions.dismiss.label = self.attr('data-notice-dismiss-label');\n        } // Check if `data-notice-dismiss-label` exists.\n\n\n        if (self.is('[data-notice-dismiss-tooltip]') && '' !== self.attr('data-notice-dismiss-tooltip')) {\n          noticeOptions.dismiss.tooltip = self.attr('data-notice-dismiss-tooltip');\n        } // Check if `data-notice-autoclose` exists.\n\n\n        if (self.is('[data-notice-autoclose]')) {\n          noticeOptions.autoclose = {};\n\n          if ('true' === self.attr('data-notice-autoclose')) {\n            noticeOptions.autoclose.show = true;\n          } else if ('false' === self.attr('data-notice-autoclose')) {\n            noticeOptions.autoclose.show = false;\n          }\n        } // Check if `data-notice-autoclose-timeout` exists.\n\n\n        if (self.is('[data-notice-autoclose-timeout]')) {\n          noticeOptions.autoclose = noticeOptions.autoclose || {};\n          noticeOptions.autoclose.timeout = parseInt(self.attr('data-notice-autoclose-timeout'));\n        }\n\n        SUI.openNotice(noticeId, noticeMessage, noticeOptions);\n      });\n    };\n    /**\n     * @desc Close a notification.\n     */\n\n\n    notice.Utils.Close = function (element) {\n      element.on('click', function () {\n        self = $(this);\n        var noticeId;\n\n        if (self.is('[data-notice-close]')) {\n          noticeId = self.closest('.sui-notice').attr('id');\n\n          if ('' !== self.attr('[data-notice-close]')) {\n            noticeId = self.attr('data-notice-close');\n          }\n\n          SUI.closeNotice(noticeId);\n        }\n      });\n    };\n\n    var init = function init() {\n      // Open a notification.\n      var btnOpen = $('[data-notice-open]');\n      notice.Utils.Open(btnOpen); // Close a notification.\n\n      var btnClose = $('[data-notice-close]');\n      notice.Utils.Close(btnClose);\n    };\n\n    init();\n    return _this;\n  };\n\n  SUI.notice();\n})(jQuery);",";// noinspection JSUnusedLocalSymbols\n(function($, window, document, undefined) {\n\n\t'use strict'\n\n\t// Create the defaults once\n\tvar pluginName = 'wpmudevDashboardAdminToolsPage'\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminToolsPage(element, options) {\n\t\tthis.element = element\n\t\tthis.$el = $(this.element)\n\t\tthis.wpMediaFrames = {}\n\t\tthis.initDashIconPicker()\n\t\tthis.init()\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminToolsPage.prototype, {\n\t\tinit: function() {\n\t\t\tthis.attachEvents()\n\t\t\t$(window).trigger('hashchange')\n\t\t\tthis.initBrandingMediaUploader()\n\t\t\tthis.initBrandingLinkLogo()\n\t\t\tthis.showAlertNotice()\n\t\t\tthis.initSitesActions()\n\t\t\tthis.overflowTabsShowArrowRight()\n\t\t},\n\t\tattachEvents: function() {\n\t\t\tvar self = this\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function() {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs')\n\t\t\t\tvar index = $(this).data('index')\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active')\n\t\t\t\t$(this).addClass('active')\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active')\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]').addClass('active')\n\t\t\t})\n\n\t\t\t$(window).on('hashchange', function() {\n\t\t\t\tself.processHash()\n\t\t\t})\n\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function(e) {\n\t\t\t\te.preventDefault()\n\t\t\t\t$(this).closest('.sui-notice-top').stop().slideUp('slow')\n\t\t\t\treturn false\n\t\t\t})\n\n\t\t\tthis.$el.on('submit', 'form', function(e) {\n\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload')\n\n\t\t\t\treturn true\n\t\t\t})\n\n\t\t\t// On plugin tab change.\n\t\t\tthis.$el.find('.tab-content-wpmudev-plugin-item').on('click', function() {\n\t\t\t\t$('#wpmudev-labels-config-selected').val($(this).data('pid'));\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Setup media uploader for custom image.\n\t\t *\n\t\t * @since 4.0\n\t\t */\n\t\tinitBrandingMediaUploader: function() {\n\t\t\tvar self = this\n\n\t\t\tthis.$el.find('.wp-browse-media').each(function() {\n\t\t\t\tvar mediaButton = $(this)\n\t\t\t\tmediaButton.on('click', function(event) {\n\t\t\t\t\tevent.preventDefault()\n\n\t\t\t\t\tvar wrapperId = mediaButton.data('upload-wrapper-id')\n\t\t\t\t\tvar wrapper = self.$el.find('#' + wrapperId)\n\n\t\t\t\t\t// If the media frame already exists, reopen it.\n\t\t\t\t\tif (self.wpMediaFrames.hasOwnProperty(wrapperId)) {\n\t\t\t\t\t\tself.wpMediaFrames[wrapperId].open()\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create a new media frame\n\t\t\t\t\tself.wpMediaFrames[wrapperId] = wp.media({\n\t\t\t\t\t\ttitle: mediaButton.data('frame-title'),\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\ttext: mediaButton.data('button-text')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmultiple: false\n\t\t\t\t\t})\n\n\t\t\t\t\t// When an image is selected in the media frame...\n\t\t\t\t\tself.wpMediaFrames[wrapperId].on('select', function() {\n\n\t\t\t\t\t\t// Get media attachment details from the frame state\n\t\t\t\t\t\tvar attachment = self.wpMediaFrames[wrapperId].state().get('selection').first().toJSON(),\n\t\t\t\t\t\t\tinput = self.$el.find('#' + mediaButton.data('input-id')),\n\t\t\t\t\t\t\tinputId = self.$el.find('#' + mediaButton.data('input-id-container')),\n\t\t\t\t\t\t\tpreview = self.$el.find('#' + mediaButton.data('preview-id')),\n\t\t\t\t\t\t\ttext = self.$el.find('#' + mediaButton.data('text-id'))\n\n\n\t\t\t\t\t\t// Send the attachment URL to our custom image input field.\n\t\t\t\t\t\tpreview.css('background-image', 'url(' + attachment.url + ')')\n\t\t\t\t\t\t// Send the attachment url to our input\n\t\t\t\t\t\tinput.val(attachment.url)\n\t\t\t\t\t\tinputId.val(attachment.id)\n\t\t\t\t\t\twrapper.addClass('sui-has_file')\n\t\t\t\t\t\ttext.html(attachment.url)\n\t\t\t\t\t})\n\n\t\t\t\t\tself.wpMediaFrames[wrapperId].on('open', function() {\n\t\t\t\t\t\tif (self.$el.hasClass('wpmud')) {\n\t\t\t\t\t\t\tself.$el.removeClass('wpmud')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tself.wpMediaFrames[wrapperId].on('close', function() {\n\t\t\t\t\t\tif (!self.$el.hasClass('wpmud')) {\n\t\t\t\t\t\t\tself.$el.addClass('wpmud')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\t// Finally, open the modal on click\n\t\t\t\t\tself.wpMediaFrames[wrapperId].open()\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tthis.$el.find('.js-clear-image').each(function() {\n\t\t\t\tvar mediaButton = self.$el.find('#' + $(this).data('media-button-id'))\n\t\t\t\t$(this).on('click', function(event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tvar input = self.$el.find('#' + mediaButton.data('input-id')),\n\t\t\t\t\t\tinputId = self.$el.find('#' + mediaButton.data('input-id-container')),\n\t\t\t\t\t\tpreview = self.$el.find('#' + mediaButton.data('preview-id')),\n\t\t\t\t\t\twrapper = self.$el.find('#' + mediaButton.data('upload-wrapper-id')),\n\t\t\t\t\t\ttext = self.$el.find('#' + mediaButton.data('text-id'))\n\n\t\t\t\t\t// Send the attachment URL to our custom image input field.\n\t\t\t\t\tpreview.css('background-image', 'url()')\n\t\t\t\t\t// Send the attachment url to our input\n\t\t\t\t\tinput.val('')\n\t\t\t\t\tinputId.val('')\n\t\t\t\t\twrapper.removeClass('sui-has_file')\n\t\t\t\t\ttext.html('')\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Handle custom logo link input.\n\t\t *\n\t\t * Custom link can be anything but in a proper url format.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitBrandingLinkLogo: function() {\n\t\t\tlet self = this,\n\t\t\t\t// Save button.\n\t\t\t\t$submitbtn = $('#save_changes')\n\n\t\t\tthis.$el.find('.wp-link-media').each(function() {\n\t\t\t\tvar $input = $(this),\n\t\t\t\t\t// Clear buttons.\n\t\t\t\t\t$clearbtn = self.$el.find('#' + $input.data('clear-btn-id')),\n\t\t\t\t\t// Preview wrapper.\n\t\t\t\t\t$preview = self.$el.find('#' + $input.data('preview-id')),\n\t\t\t\t\t// Field wrapper.\n\t\t\t\t\t$formfield = self.$el.find('#' + $input.data('form-field-id')),\n\t\t\t\t\t// Field wrapper.\n\t\t\t\t\t$type = self.$el.find('[name=\"' + $input.data('tab-type-name') + '\"]')\n\n\t\t\t\t$input.on('input linkUpdate', function() {\n\t\t\t\t\tlet url = $input.val()\n\n\t\t\t\t\t// Remove form errors.\n\t\t\t\t\t$formfield.removeClass('sui-form-field-error')\n\t\t\t\t\t// Enable submit.\n\t\t\t\t\t$submitbtn.prop('disabled', false)\n\n\t\t\t\t\t// If some value is found, show clear button.\n\t\t\t\t\turl.length > 0 ? $clearbtn.removeClass('hidden-clear-link') : $clearbtn.addClass('hidden-clear-link')\n\n\t\t\t\t\t// Check if it is a valid link.\n\t\t\t\t\tif (self.isValidLink(url)) {\n\t\t\t\t\t\t// Set background image.\n\t\t\t\t\t\t$preview.css('background-image', 'url(' + url + ')').addClass('has-logo-image')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Remove background image.\n\t\t\t\t\t\t$preview.css('background-image', 'url()').removeClass('has-logo-image')\n\t\t\t\t\t\t// Set error.\n\t\t\t\t\t\tif (url.length > 0) {\n\t\t\t\t\t\t\t// Show errors.\n\t\t\t\t\t\t\t$formfield.addClass('sui-form-field-error')\n\t\t\t\t\t\t\t// Disable submit.\n\t\t\t\t\t\t\t$submitbtn.prop('disabled', true)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false\n\t\t\t\t})\n\n\t\t\t\t// On clear button click.\n\t\t\t\t$clearbtn.on('click', function() {\n\t\t\t\t\t// Link input.\n\t\t\t\t\t$input.val('').trigger('linkUpdate')\n\t\t\t\t})\n\n\t\t\t\t// If tab changed.\n\t\t\t\tif ($type.length > 0) {\n\t\t\t\t\t$type.on('change', function() {\n\t\t\t\t\t\t// Link input.\n\t\t\t\t\t\tif ('link' === $(this).val()) {\n\t\t\t\t\t\t\t$input.trigger('linkUpdate')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (!self.isValidLink($input.val())) {\n\t\t\t\t\t\t\t\t// Clear input and error.\n\t\t\t\t\t\t\t\t$input.val('').trigger('linkUpdate')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Initialize dash icons selector.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitDashIconPicker: function() {\n\t\t\tvar self = this,\n\t\t\t\t// Main wrappers.\n\t\t\t\t$wrapper = this.$el.find('.wpmudev-dashicon-picker')\n\n\t\t\t// On each dash icons set.\n\t\t\t$wrapper.each(function() {\n\t\t\t\t// Main wrapper.\n\t\t\t\tvar $iconWrapper = $(this),\n\t\t\t\t\t// Get search input and icon input.\n\t\t\t\t\t$search = $('#' + $(this).data('search-id')),\n\t\t\t\t\t$input = $('#' + $(this).data('input-id'))\n\n\t\t\t\t// On icon click.\n\t\t\t\t$(this).find('.wpmudev-dashicons').on('click', function() {\n\t\t\t\t\t// Make all icons not selected.\n\t\t\t\t\t$iconWrapper.find('.wpmudev-dashicons.active').removeClass('active')\n\t\t\t\t\t// Select current icon.\n\t\t\t\t\t$(this).addClass('active')\n\t\t\t\t\t// Set value to the hidden field.\n\t\t\t\t\t$input.val($(this).data('icon'))\n\t\t\t\t})\n\n\t\t\t\t// On search input change.\n\t\t\t\t$search.on('input', function() {\n\t\t\t\t\tvar keyword = $(this).val(),\n\t\t\t\t\t\t$matches = $('[data-icon*=\"' + keyword + '\"]', $iconWrapper),\n\t\t\t\t\t\t$elements = $('.wpmudev-dashicon-picker-group, .wpmudev-dashicons', $iconWrapper)\n\n\t\t\t\t\t// If no search input, show all.\n\t\t\t\t\tif ('' === keyword) {\n\t\t\t\t\t\t$elements.show()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// Hide all.\n\t\t\t\t\t$elements.hide()\n\t\t\t\t\t// Go through each items.\n\t\t\t\t\t$matches.each(function() {\n\t\t\t\t\t\t// Show icon.\n\t\t\t\t\t\t$(this).show()\n\t\t\t\t\t\t// Show the group.\n\t\t\t\t\t\t$(this).closest('.wpmudev-dashicon-picker-group').show()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Initialize sites add action.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitSitesActions: function() {\n\t\t\tvar self = this\n\t\t\t// Add new sites.\n\t\t\tthis.$el.on('change', '#wpmudev-labels-subsites-select', function(e) {\n\t\t\t\tvar site = $(this).val()\n\t\t\t\t// Add values.\n\t\t\t\t$('<input>', {\n\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\tname: 'labels_subsites[]',\n\t\t\t\t\tvalue: site\n\t\t\t\t}).appendTo('#wpmudev-labels-subsites-content')\n\t\t\t\t// Submit form.\n\t\t\t\t// We need to clock the button to save.\n\t\t\t\tself.$el.find('#save_changes').click()\n\t\t\t})\n\n\t\t\t// Add loading animation.\n\t\t\tthis.$el.on('click', '.js-remove-whitelabel-site', function() {\n\t\t\t\t$(this).addClass('sui-button-onload')\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Check if the link is in url format.\n\t\t *\n\t\t * @param {string} link Link\n\t\t *\n\t\t * @since 4.11\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidLink: function(link) {\n\t\t\treturn /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/.test(link)\n\t\t},\n\t\tprocessHash: function() {\n\t\t\tvar hash = location.hash\n\t\t\thash = hash.replace(/^#/, '')\n\n\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab').removeClass('current')\n\t\t\tthis.$el.find('.js-sidenav-content').hide()\n\n\t\t\tswitch (hash) {\n\t\t\t\tcase 'whitelabel':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#whitelabel\"]').closest('li.sui-vertical-tab').addClass('current')\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#whitelabel').show()\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#whitelabel')\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change')\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#analytics\"]').closest('li.sui-vertical-tab').addClass('current')\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#analytics').show()\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#analytics')\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change')\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\tshowAlertNotice: function() {\n\t\t\tvar container = $('.sui-tools-notice-alert'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tmessage = '',\n\t\t\t\tnoticeOptions = {}\n\n\t\t\tif (!container.length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {}\n\t\t\tnoticeOptions.autoclose = {}\n\t\t\tnoticeOptions.type = container.data('notice-type')\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss')\n\t\t\tnoticeOptions.autoclose.show = false\n\t\t\tmessage = container.data('notice-msg')\n\t\t\tnoticeID = container.attr('id')\n\n\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\tnoticeOptions.icon = 'check-tick'\n\t\t\t}\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions)\n\t\t},\n\n\t\t/**\n\t\t * Shows right arrow to scroll tab panes in the overflown tab menu\n\t\t *\n\t\t * @since 4.11.6\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\toverflowTabsShowArrowRight: function () {\n\t\t\tthis.$el.on('click', '.sui-side-tabs .sui-tab-item', function (e) {\n\t\t\t\tlet $parentTabsElement = $(this).closest('.sui-side-tabs')\n\t\t\t\tlet $tabsElements = $parentTabsElement.find('.sui-tabs-overflow')\n\n\t\t\t\t$tabsElements.each(function (index, element) {\n\t\t\t\t\tSUI.tabsOverflow($(element))\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t})\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function(options) {\n\t\treturn this.each(function() {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminToolsPage(this, options))\n\t\t\t}\n\t\t})\n\t}\n\n})(jQuery, window, document)\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function () {\n  // Enable strict mode.\n  'use strict';\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n  /**\n   * @namespace aria\n   */\n\n\n  var aria = aria || {}; // REF: Key codes.\n\n  aria.KeyCode = {\n    BACKSPACE: 8,\n    TAB: 9,\n    RETURN: 13,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n  aria.Utils = aria.Utils || {}; // UTILS: Remove function.\n\n  aria.Utils.remove = function (item) {\n    if (item.remove && 'function' === typeof item.remove) {\n      return item.remove();\n    }\n\n    if (item.parentNode && item.parentNode.removeChild && 'function' === typeof item.parentNode.removeChild) {\n      return item.parentNode.removeChild(item);\n    }\n\n    return false;\n  }; // UTILS: Verify if element can be focused.\n\n\n  aria.Utils.isFocusable = function (element) {\n    if (0 < element.tabIndex || 0 === element.tabIndex && null !== element.getAttribute('tabIndex')) {\n      return true;\n    }\n\n    if (element.disabled) {\n      return false;\n    }\n\n    switch (element.nodeName) {\n      case 'A':\n        return !!element.href && 'ignore' != element.rel;\n\n      case 'INPUT':\n        return 'hidden' != element.type && 'file' != element.type;\n\n      case 'BUTTON':\n      case 'SELECT':\n      case 'TEXTAREA':\n        return true;\n\n      default:\n        return false;\n    }\n  };\n  /**\n   * Simulate a click event.\n   * @public\n   * @param {Element} element the element to simulate a click on\n   */\n\n\n  aria.Utils.simulateClick = function (element) {\n    // Create our event (with options)\n    var evt = new MouseEvent('click', {\n      bubbles: true,\n      cancelable: true,\n      view: window\n    }); // If cancelled, don't dispatch our event\n\n    var canceled = !element.dispatchEvent(evt);\n  }; // When util functions move focus around, set this true so\n  // the focus listener can ignore the events.\n\n\n  aria.Utils.IgnoreUtilFocusChanges = false;\n  aria.Utils.dialogOpenClass = 'sui-has-modal';\n  /**\n   * @desc Set focus on descendant nodes until the first\n   * focusable element is found.\n   *\n   * @param element\n   * DOM node for which to find the first focusable descendant.\n   *\n   * @returns\n   * true if a focusable element is found and focus is set.\n   */\n\n  aria.Utils.focusFirstDescendant = function (element) {\n    for (var i = 0; i < element.childNodes.length; i++) {\n      var child = element.childNodes[i];\n\n      if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n        return true;\n      }\n    }\n\n    return false;\n  }; // end focusFirstDescendant\n\n  /**\n   * @desc Find the last descendant node that is focusable.\n   *\n   * @param element\n   * DOM node for which to find the last focusable descendant.\n   *\n   * @returns\n   * true if a focusable element is found and focus is set.\n   */\n\n\n  aria.Utils.focusLastDescendant = function (element) {\n    for (var i = element.childNodes.length - 1; 0 <= i; i--) {\n      var child = element.childNodes[i];\n\n      if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n        return true;\n      }\n    }\n\n    return false;\n  }; // end focusLastDescendant\n\n  /**\n   * @desc Set Attempt to set focus on the current node.\n   *\n   * @param element\n   * The node to attempt to focus on.\n   *\n   * @returns\n   * true if element is focused.\n   */\n\n\n  aria.Utils.attemptFocus = function (element) {\n    if (!aria.Utils.isFocusable(element)) {\n      return false;\n    }\n\n    aria.Utils.IgnoreUtilFocusChanges = true;\n\n    try {\n      element.focus();\n    } catch (e) {// Done.\n    }\n\n    aria.Utils.IgnoreUtilFocusChanges = false;\n    return document.activeElement === element;\n  }; // end attemptFocus\n  // Modals can open modals. Keep track of them with this array.\n\n\n  aria.OpenDialogList = aria.OpenDialogList || new Array(0);\n  /**\n   * @returns the last opened dialog (the current dialog)\n   */\n\n  aria.getCurrentDialog = function () {\n    if (aria.OpenDialogList && aria.OpenDialogList.length) {\n      return aria.OpenDialogList[aria.OpenDialogList.length - 1];\n    }\n  };\n\n  aria.closeCurrentDialog = function () {\n    var currentDialog = aria.getCurrentDialog();\n\n    if (currentDialog) {\n      currentDialog.close();\n      return true;\n    }\n\n    return false;\n  };\n\n  aria.handleEscape = function (event) {\n    var key = event.which || event.keyCode;\n\n    if (key === aria.KeyCode.ESC && aria.closeCurrentDialog()) {\n      event.stopPropagation();\n    }\n  };\n  /**\n   * @constructor\n   * @desc Dialog object providing modal focus management.\n   *\n   * Assumptions: The element serving as the dialog container is present in the\n   * DOM and hidden. The dialog container has role='dialog'.\n   *\n   * @param dialogId\n   * The ID of the element serving as the dialog container.\n   *\n   * @param focusAfterClosed\n   * Either the DOM node or the ID of the DOM node to focus when the\n   * dialog closes.\n   *\n   * @param focusFirst\n   * Optional parameter containing either the DOM node or the ID of the\n   * DOM node to focus when the dialog opens. If not specified, the\n   * first focusable element in the dialog will receive focus.\n   *\n   * @param hasOverlayMask\n   * Optional boolean parameter that when is set to \"true\" will enable\n   * a clickable overlay mask. This mask will fire close modal function\n   * when you click on it.\n   *\n   * @param isCloseOnEsc\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable closing the\n   * dialog with the Esc key.\n   *\n   * @param isAnimated\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n   */\n\n\n  aria.Dialog = function (dialogId, focusAfterClosed, focusFirst, hasOverlayMask) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n    this.dialogNode = document.getElementById(dialogId);\n\n    if (null === this.dialogNode) {\n      throw new Error('No element found with id=\"' + dialogId + '\".');\n    }\n\n    var validRoles = ['dialog', 'alertdialog'];\n    var isDialog = (this.dialogNode.getAttribute('role') || '').trim().split(/\\s+/g).some(function (token) {\n      return validRoles.some(function (role) {\n        return token === role;\n      });\n    });\n\n    if (!isDialog) {\n      throw new Error('Dialog() requires a DOM element with ARIA role of dialog or alertdialog.');\n    }\n\n    this.isCloseOnEsc = isCloseOnEsc; // Trigger the 'open' event at the beginning of the opening process.\n    // After validating the modal's attributes.\n\n    var openEvent = new Event('open');\n    this.dialogNode.dispatchEvent(openEvent); // Wrap in an individual backdrop element if one doesn't exist\n    // Native <dialog> elements use the ::backdrop pseudo-element, which\n    // works similarly.\n\n    var backdropClass = 'sui-modal';\n\n    if (this.dialogNode.parentNode.classList.contains(backdropClass)) {\n      this.backdropNode = this.dialogNode.parentNode;\n    } else {\n      this.backdropNode = document.createElement('div');\n      this.backdropNode.className = backdropClass;\n      this.backdropNode.setAttribute('data-markup', 'new');\n      this.dialogNode.parentNode.insertBefore(this.backdropNode, this.dialogNodev);\n      this.backdropNode.appendChild(this.dialogNode);\n    }\n\n    this.backdropNode.classList.add('sui-active'); // Disable scroll on the body element\n\n    document.body.parentNode.classList.add(aria.Utils.dialogOpenClass);\n\n    if ('string' === typeof focusAfterClosed) {\n      this.focusAfterClosed = document.getElementById(focusAfterClosed);\n    } else if ('object' === _typeof(focusAfterClosed)) {\n      this.focusAfterClosed = focusAfterClosed;\n    } else {\n      throw new Error('the focusAfterClosed parameter is required for the aria.Dialog constructor.');\n    }\n\n    if ('string' === typeof focusFirst) {\n      this.focusFirst = document.getElementById(focusFirst);\n    } else if ('object' === _typeof(focusFirst)) {\n      this.focusFirst = focusFirst;\n    } else {\n      this.focusFirst = null;\n    } // Bracket the dialog node with two invisible, focusable nodes.\n    // While this dialog is open, we use these to make sure that focus never\n    // leaves the document even if dialogNode is the first or last node.\n\n\n    var preDiv = document.createElement('div');\n    this.preNode = this.dialogNode.parentNode.insertBefore(preDiv, this.dialogNode);\n    this.preNode.tabIndex = 0;\n\n    if ('boolean' === typeof hasOverlayMask && true === hasOverlayMask) {\n      this.preNode.classList.add('sui-modal-overlay');\n\n      this.preNode.onclick = function () {\n        aria.getCurrentDialog().close();\n      };\n    }\n\n    var postDiv = document.createElement('div');\n    this.postNode = this.dialogNode.parentNode.insertBefore(postDiv, this.dialogNode.nextSibling);\n    this.postNode.tabIndex = 0; // If this modal is opening on top of one that is already open,\n    // get rid of the document focus listener of the open dialog.\n\n    if (0 < aria.OpenDialogList.length) {\n      aria.getCurrentDialog().removeListeners();\n    }\n\n    this.addListeners();\n    aria.OpenDialogList.push(this); // If isAnimated is set true then modal box will animate.\n\n    if (isAnimated) {\n      this.dialogNode.classList.add('sui-content-fade-in'); // make visible\n\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    } else {\n      this.dialogNode.classList.remove('sui-content-fade-in');\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    }\n\n    if (this.focusFirst) {\n      this.focusFirst.focus();\n    } else {\n      aria.Utils.focusFirstDescendant(this.dialogNode);\n    }\n\n    this.lastFocus = document.activeElement; // Trigger the 'afteropen' event at the end of the opening process.\n\n    var afterOpenEvent = new Event('afterOpen');\n    this.dialogNode.dispatchEvent(afterOpenEvent);\n  }; // end Dialog constructor.\n\n  /**\n   * @desc Hides the current top dialog, removes listeners of the top dialog,\n   * restore listeners of a parent dialog if one was open under the one that\n   * just closed, and sets focus on the element specified for focusAfterClosed.\n   *\n   * @param isAnimated\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n   */\n\n\n  aria.Dialog.prototype.close = function () {\n    var isAnimated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n    var self = this; // Trigger the 'close' event at the beginning of the closing process.\n\n    var closeEvent = new Event('close');\n    this.dialogNode.dispatchEvent(closeEvent);\n    aria.OpenDialogList.pop();\n    this.removeListeners();\n    this.preNode.parentNode.removeChild(this.preNode);\n    this.postNode.parentNode.removeChild(this.postNode); // If isAnimated is set true then modal box will animate.\n\n    if (isAnimated) {\n      this.dialogNode.classList.add('sui-content-fade-out');\n      this.dialogNode.classList.remove('sui-content-fade-in');\n    } else {\n      this.dialogNode.classList.remove('sui-content-fade-in');\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    }\n\n    this.focusAfterClosed.focus();\n    setTimeout(function () {\n      self.backdropNode.classList.remove('sui-active');\n    }, 300);\n    setTimeout(function () {\n      var slides = self.dialogNode.querySelectorAll('.sui-modal-slide');\n\n      if (0 < slides.length) {\n        // Hide all slides.\n        for (var i = 0; i < slides.length; i++) {\n          slides[i].setAttribute('disabled', true);\n          slides[i].classList.remove('sui-loaded');\n          slides[i].classList.remove('sui-active');\n          slides[i].setAttribute('tabindex', '-1');\n          slides[i].setAttribute('aria-hidden', true);\n        } // Change modal size.\n\n\n        if (slides[0].hasAttribute('data-modal-size')) {\n          var newDialogSize = slides[0].getAttribute('data-modal-size');\n\n          switch (newDialogSize) {\n            case 'sm':\n            case 'small':\n              newDialogSize = 'sm';\n              break;\n\n            case 'md':\n            case 'med':\n            case 'medium':\n              newDialogSize = 'md';\n              break;\n\n            case 'lg':\n            case 'large':\n              newDialogSize = 'lg';\n              break;\n\n            case 'xl':\n            case 'extralarge':\n            case 'extraLarge':\n            case 'extra-large':\n              newDialogSize = 'xl';\n              break;\n\n            default:\n              newDialogSize = undefined;\n          }\n\n          if (undefined !== newDialogSize) {\n            // Remove others sizes from dialog to prevent any conflicts with styles.\n            self.dialogNode.parentNode.classList.remove('sui-modal-sm');\n            self.dialogNode.parentNode.classList.remove('sui-modal-md');\n            self.dialogNode.parentNode.classList.remove('sui-modal-lg');\n            self.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n            self.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n          }\n        } // Show first slide.\n\n\n        slides[0].classList.add('sui-active');\n        slides[0].classList.add('sui-loaded');\n        slides[0].removeAttribute('disabled');\n        slides[0].removeAttribute('tabindex');\n        slides[0].removeAttribute('aria-hidden'); // Change modal label.\n\n        if (slides[0].hasAttribute('data-modal-labelledby')) {\n          var newDialogLabel, getDialogLabel;\n          newDialogLabel = '';\n          getDialogLabel = slides[0].getAttribute('data-modal-labelledby');\n\n          if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n            newDialogLabel = getDialogLabel;\n          }\n\n          self.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n        } // Change modal description.\n\n\n        if (slides[0].hasAttribute('data-modal-describedby')) {\n          var newDialogDesc, getDialogDesc;\n          newDialogDesc = '';\n          getDialogDesc = slides[0].getAttribute('data-modal-describedby');\n\n          if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n            newDialogDesc = getDialogDesc;\n          }\n\n          self.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n        }\n      }\n    }, 350); // If a dialog was open underneath this one, restore its listeners.\n\n    if (0 < aria.OpenDialogList.length) {\n      aria.getCurrentDialog().addListeners();\n    } else {\n      document.body.parentNode.classList.remove(aria.Utils.dialogOpenClass);\n    } // Trigger the 'afterclose' event at the end of the closing process.\n\n\n    var afterCloseEvent = new Event('afterClose');\n    this.dialogNode.dispatchEvent(afterCloseEvent);\n  }; // end close.\n\n  /**\n   * @desc Hides the current dialog and replaces it with another.\n   *\n   * @param newDialogId\n   * ID of the dialog that will replace the currently open top dialog.\n   *\n   * @param newFocusAfterClosed\n   * Optional ID or DOM node specifying where to place focus when the new dialog closes.\n   * If not specified, focus will be placed on the element specified by the dialog being replaced.\n   *\n   * @param newFocusFirst\n   * Optional ID or DOM node specifying where to place focus in the new dialog when it opens.\n   * If not specified, the first focusable element will receive focus.\n   *\n   * @param hasOverlayMask\n   * Optional boolean parameter that when is set to \"true\" will enable a clickable overlay\n   * mask to the new opened dialog. This mask will fire close dialog function when you click it.\n   *\n   * @param isCloseOnEsc\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable closing the\n   * dialog with the Esc key.\n   *\n   * @param isAnimated\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n   */\n\n\n  aria.Dialog.prototype.replace = function (newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n    var self = this;\n    aria.OpenDialogList.pop();\n    this.removeListeners();\n    aria.Utils.remove(this.preNode);\n    aria.Utils.remove(this.postNode); // If isAnimated is set true then modal box will animate.\n\n    if (isAnimated) {\n      this.dialogNode.classList.add('sui-content-fade-in'); // make visible\n\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    } else {\n      this.dialogNode.classList.remove('sui-content-fade-in');\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    }\n\n    this.backdropNode.classList.remove('sui-active');\n    setTimeout(function () {\n      var slides = self.dialogNode.querySelectorAll('.sui-modal-slide');\n\n      if (0 < slides.length) {\n        // Hide all slides.\n        for (var i = 0; i < slides.length; i++) {\n          slides[i].setAttribute('disabled', true);\n          slides[i].classList.remove('sui-loaded');\n          slides[i].classList.remove('sui-active');\n          slides[i].setAttribute('tabindex', '-1');\n          slides[i].setAttribute('aria-hidden', true);\n        } // Change modal size.\n\n\n        if (slides[0].hasAttribute('data-modal-size')) {\n          var newDialogSize = slides[0].getAttribute('data-modal-size');\n\n          switch (newDialogSize) {\n            case 'sm':\n            case 'small':\n              newDialogSize = 'sm';\n              break;\n\n            case 'md':\n            case 'med':\n            case 'medium':\n              newDialogSize = 'md';\n              break;\n\n            case 'lg':\n            case 'large':\n              newDialogSize = 'lg';\n              break;\n\n            case 'xl':\n            case 'extralarge':\n            case 'extraLarge':\n            case 'extra-large':\n              newDialogSize = 'xl';\n              break;\n\n            default:\n              newDialogSize = undefined;\n          }\n\n          if (undefined !== newDialogSize) {\n            // Remove others sizes from dialog to prevent any conflicts with styles.\n            self.dialogNode.parentNode.classList.remove('sui-modal-sm');\n            self.dialogNode.parentNode.classList.remove('sui-modal-md');\n            self.dialogNode.parentNode.classList.remove('sui-modal-lg');\n            self.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n            self.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n          }\n        } // Show first slide.\n\n\n        slides[0].classList.add('sui-active');\n        slides[0].classList.add('sui-loaded');\n        slides[0].removeAttribute('disabled');\n        slides[0].removeAttribute('tabindex');\n        slides[0].removeAttribute('aria-hidden'); // Change modal label.\n\n        if (slides[0].hasAttribute('data-modal-labelledby')) {\n          var newDialogLabel, getDialogLabel;\n          newDialogLabel = '';\n          getDialogLabel = slides[0].getAttribute('data-modal-labelledby');\n\n          if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n            newDialogLabel = getDialogLabel;\n          }\n\n          self.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n        } // Change modal description.\n\n\n        if (slides[0].hasAttribute('data-modal-describedby')) {\n          var newDialogDesc, getDialogDesc;\n          newDialogDesc = '';\n          getDialogDesc = slides[0].getAttribute('data-modal-describedby');\n\n          if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n            newDialogDesc = getDialogDesc;\n          }\n\n          self.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n        }\n      }\n    }, 350);\n    var focusAfterClosed = newFocusAfterClosed || this.focusAfterClosed;\n    var dialog = new aria.Dialog(newDialogId, focusAfterClosed, newFocusFirst, hasOverlayMask, isCloseOnEsc, isAnimated);\n  }; // end replace\n\n  /**\n   * @desc Uses the same dialog to display different content that will slide to show.\n   *\n   * @param newSlideId\n   * ID of the slide that will replace the currently active slide content.\n   *\n   * @param newSlideFocus\n   * Optional ID or DOM node specifying where to place focus in the new slide when it shows.\n   * If not specified, the first focusable element will receive focus.\n   *\n   * @param newSlideEntrance\n   * Determine if the new slide will show up from \"left\" or \"right\" of the screen.\n   * If not specified, the slide entrance animation will be \"fade in\".\n   */\n\n\n  aria.Dialog.prototype.slide = function (newSlideId, newSlideFocus, newSlideEntrance) {\n    var animation = 'sui-fadein',\n        currentDialog = aria.getCurrentDialog(),\n        getAllSlides = this.dialogNode.querySelectorAll('.sui-modal-slide'),\n        getNewSlide = document.getElementById(newSlideId);\n\n    switch (newSlideEntrance) {\n      case 'back':\n      case 'left':\n        animation = 'sui-fadein-left';\n        break;\n\n      case 'next':\n      case 'right':\n        animation = 'sui-fadein-right';\n        break;\n\n      default:\n        animation = 'sui-fadein';\n        break;\n    } // Hide all slides.\n\n\n    for (var i = 0; i < getAllSlides.length; i++) {\n      getAllSlides[i].setAttribute('disabled', true);\n      getAllSlides[i].classList.remove('sui-loaded');\n      getAllSlides[i].classList.remove('sui-active');\n      getAllSlides[i].setAttribute('tabindex', '-1');\n      getAllSlides[i].setAttribute('aria-hidden', true);\n    } // Change modal size.\n\n\n    if (getNewSlide.hasAttribute('data-modal-size')) {\n      var newDialogSize = getNewSlide.getAttribute('data-modal-size');\n\n      switch (newDialogSize) {\n        case 'sm':\n        case 'small':\n          newDialogSize = 'sm';\n          break;\n\n        case 'md':\n        case 'med':\n        case 'medium':\n          newDialogSize = 'md';\n          break;\n\n        case 'lg':\n        case 'large':\n          newDialogSize = 'lg';\n          break;\n\n        case 'xl':\n        case 'extralarge':\n        case 'extraLarge':\n        case 'extra-large':\n          newDialogSize = 'xl';\n          break;\n\n        default:\n          newDialogSize = undefined;\n      }\n\n      if (undefined !== newDialogSize) {\n        // Remove others sizes from dialog to prevent any conflicts with styles.\n        this.dialogNode.parentNode.classList.remove('sui-modal-sm');\n        this.dialogNode.parentNode.classList.remove('sui-modal-md');\n        this.dialogNode.parentNode.classList.remove('sui-modal-lg');\n        this.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n        this.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n      }\n    } // Change modal label.\n\n\n    if (getNewSlide.hasAttribute('data-modal-labelledby')) {\n      var newDialogLabel, getDialogLabel;\n      newDialogLabel = '';\n      getDialogLabel = getNewSlide.getAttribute('data-modal-labelledby');\n\n      if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n        newDialogLabel = getDialogLabel;\n      }\n\n      this.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n    } // Change modal description.\n\n\n    if (getNewSlide.hasAttribute('data-modal-describedby')) {\n      var newDialogDesc, getDialogDesc;\n      newDialogDesc = '';\n      getDialogDesc = getNewSlide.getAttribute('data-modal-describedby');\n\n      if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n        newDialogDesc = getDialogDesc;\n      }\n\n      this.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n    } // Show new slide.\n\n\n    getNewSlide.classList.add('sui-active');\n    getNewSlide.classList.add(animation);\n    getNewSlide.removeAttribute('tabindex');\n    getNewSlide.removeAttribute('aria-hidden');\n    setTimeout(function () {\n      getNewSlide.classList.add('sui-loaded');\n      getNewSlide.classList.remove(animation);\n      getNewSlide.removeAttribute('disabled');\n    }, 600);\n\n    if ('string' === typeof newSlideFocus) {\n      this.newSlideFocus = document.getElementById(newSlideFocus);\n    } else if ('object' === _typeof(newSlideFocus)) {\n      this.newSlideFocus = newSlideFocus;\n    } else {\n      this.newSlideFocus = null;\n    }\n\n    if (this.newSlideFocus) {\n      this.newSlideFocus.focus();\n    } else {\n      aria.Utils.focusFirstDescendant(this.dialogNode);\n    }\n  }; // end slide.\n\n\n  aria.Dialog.prototype.addListeners = function () {\n    document.addEventListener('focus', this.trapFocus, true);\n\n    if (this.isCloseOnEsc) {\n      this.dialogNode.addEventListener('keyup', aria.handleEscape);\n    }\n  }; // end addListeners.\n\n\n  aria.Dialog.prototype.removeListeners = function () {\n    document.removeEventListener('focus', this.trapFocus, true);\n  }; // end removeListeners.\n\n\n  aria.Dialog.prototype.trapFocus = function (event) {\n    var parentElement = event.target.parentElement;\n\n    if (aria.Utils.IgnoreUtilFocusChanges || parentElement && parentElement.classList.contains('wp-link-input')) {\n      return;\n    }\n\n    var currentDialog = aria.getCurrentDialog();\n\n    if (currentDialog.dialogNode.contains(event.target)) {\n      currentDialog.lastFocus = event.target;\n    } else {\n      aria.Utils.focusFirstDescendant(currentDialog.dialogNode);\n\n      if (currentDialog.lastFocus == document.activeElement) {\n        aria.Utils.focusLastDescendant(currentDialog.dialogNode);\n      }\n\n      currentDialog.lastFocus = document.activeElement;\n    }\n  }; // end trapFocus.\n\n\n  SUI.openModal = function (dialogId, focusAfterClosed, focusFirst, dialogOverlay) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 ? arguments[5] : undefined;\n    var dialog = new aria.Dialog(dialogId, focusAfterClosed, focusFirst, dialogOverlay, isCloseOnEsc, isAnimated);\n  }; // end openModal.\n\n\n  SUI.closeModal = function (isAnimated) {\n    var topDialog = aria.getCurrentDialog();\n    topDialog.close(isAnimated);\n  }; // end closeDialog.\n\n\n  SUI.replaceModal = function (newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 ? arguments[5] : undefined;\n    var topDialog = aria.getCurrentDialog();\n    /**\n     * BUG #1:\n     * When validating document.activeElement it always returns \"false\" but\n     * even when \"false\" on Chrome function is fired correctly while on Firefox\n     * and Safari this validation prevents function to be fired on click.\n     *\n     * if ( topDialog.dialogNode.contains( document.activeElement ) ) { ... }\n     */\n\n    topDialog.replace(newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask, isCloseOnEsc, isAnimated);\n  }; // end replaceModal.\n\n\n  SUI.slideModal = function (newSlideId, newSlideFocus, newSlideEntrance) {\n    var topDialog = aria.getCurrentDialog();\n    topDialog.slide(newSlideId, newSlideFocus, newSlideEntrance);\n  }; // end slideModal.\n\n})();\n\n(function ($) {\n  // Enable strict mode.\n  'use strict';\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.modalDialog = function () {\n    function init() {\n      var button, buttonOpen, buttonClose, buttonReplace, buttonSlide, overlayMask, modalId, slideId, closeFocus, newFocus, animation, isAnimated;\n      buttonOpen = $('[data-modal-open]');\n      buttonClose = $('[data-modal-close]');\n      buttonReplace = $('[data-modal-replace]');\n      buttonSlide = $('[data-modal-slide]');\n      overlayMask = $('.sui-modal-overlay');\n      buttonOpen.on('click', function (e) {\n        button = $(this);\n        modalId = button.attr('data-modal-open');\n        closeFocus = button.attr('data-modal-close-focus');\n        newFocus = button.attr('data-modal-open-focus');\n        overlayMask = button.attr('data-modal-mask');\n        isAnimated = button.attr('data-modal-animated');\n        var isCloseOnEsc = 'false' === button.attr('data-esc-close') ? false : true;\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(closeFocus) || false === closeFocus || '' === closeFocus) {\n          closeFocus = this;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n          newFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(overlayMask) && false !== overlayMask && 'true' === overlayMask) {\n          overlayMask = true;\n        } else {\n          overlayMask = false;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(isAnimated) && false !== isAnimated && 'false' === isAnimated) {\n          isAnimated = false;\n        } else {\n          isAnimated = true;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(modalId) && false !== modalId && '' !== modalId) {\n          SUI.openModal(modalId, closeFocus, newFocus, overlayMask, isCloseOnEsc, isAnimated);\n        }\n\n        e.preventDefault();\n      });\n      buttonReplace.on('click', function (e) {\n        button = $(this);\n        modalId = button.attr('data-modal-replace');\n        closeFocus = button.attr('data-modal-close-focus');\n        newFocus = button.attr('data-modal-open-focus');\n        overlayMask = button.attr('data-modal-replace-mask');\n        var isCloseOnEsc = 'false' === button.attr('data-esc-close') ? false : true;\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(closeFocus) || false === closeFocus || '' === closeFocus) {\n          closeFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n          newFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(overlayMask) && false !== overlayMask && 'true' === overlayMask) {\n          overlayMask = true;\n        } else {\n          overlayMask = false;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(modalId) && false !== modalId && '' !== modalId) {\n          SUI.replaceModal(modalId, closeFocus, newFocus, overlayMask, isCloseOnEsc, isAnimated);\n        }\n\n        e.preventDefault();\n      });\n      buttonSlide.on('click', function (e) {\n        button = $(this);\n        slideId = button.attr('data-modal-slide');\n        newFocus = button.attr('data-modal-slide-focus');\n        animation = button.attr('data-modal-slide-intro');\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n          newFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(animation) || false === animation || '' === animation) {\n          animation = '';\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(slideId) && false !== slideId && '' !== slideId) {\n          SUI.slideModal(slideId, newFocus, animation);\n        }\n\n        e.preventDefault();\n      });\n      buttonClose.on('click', function (e) {\n        SUI.closeModal(isAnimated);\n        e.preventDefault();\n      });\n    }\n\n    init();\n    return this;\n  };\n\n  SUI.modalDialog();\n})(jQuery);",";// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminCommon\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminCommon(element, options) {\n\t\tthis.element      = element;\n\t\tthis.$el          = $(this.element);\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminCommon.prototype, {\n\t\tinit: function () {\n\t\t\tthis.showAlertNotice();\n\t\t\tthis.showUpgradeHighlightsModal();\n\t\t\tthis.initSelectSearch();\n\t\t},\n\t\tshowAlertNotice() {\n\t\t\tvar container = $( '.sui-common-notice-alert' ),\n\t\t\tnoticeID      = '',\n\t\t\tmessage       = '',\n\t\t\tnoticeOptions = {};\n\t\t\tif ( ! container.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss        = {};\n\t\t\tnoticeOptions.autoclose      = {};\n\t\t\tnoticeOptions.type           = container.data( 'notice-type' );\n\t\t\tnoticeOptions.dismiss.show   = container.data( 'show-dismiss' );\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tmessage                      = container.data( 'notice-msg' );\n\t\t\tnoticeID                     = container.attr( 'id' );\n\n\t\t\tif ( 'success' === noticeOptions.type ) {\n\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t}\n\n\t\t\tSUI.openNotice( noticeID, message, noticeOptions );\n\t\t},\n\n\t\t/**\n\t\t * Show upgrade highlights modal.\n\t\t *\n\t\t * If modal is available, open it.\n\t\t *\n\t\t * @since 4.11\n\t\t */\n\t\tshowUpgradeHighlightsModal() {\n\t\t\t// Get the modal element.\n\t\t\tvar modal = $('#upgrade-highlights');\n\t\t\tif (modal.length > 0) {\n\t\t\t\t// Open the modal.\n\t\t\t\tSUI.openModal('upgrade-highlights', 'wpmudev-dashboard-header', null, true, false);\n\n\t\t\t\t// On close button click.\n\t\t\t\tmodal.find('.modal-close-button').on('click', function () {\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\taction: 'wdp-dismiss-highlights',\n\t\t\t\t\t\thash: $('#highlight_modal_hash').val(),\n\t\t\t\t\t};\n\n\t\t\t\t\t// Send request.\n\t\t\t\t\t$.post(window.ajaxurl, data);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Initialize search input.\n\t\t *\n\t\t * @since 4.0\n\t\t * @since 4.11 Enabled for multiple inputs.\n\t\t */\n\t\tinitSelectSearch: function () {\n\t\t\tvar self = this;\n\n\t\t\tthis.$el.find('.wpmudev-search').each(function(){\n\t\t\t\tvar search = $(this);\n\t\t\t\tvar hash = search.data('hash');\n\n\t\t\t\tvar searchAction = search.data('search-action');\n\t\t\t\tvar searchParent = search.data('search-parent');\n\t\t\t\tvar languageSearching = search.data('language-searching');\n\t\t\t\tvar languageNoresults = search.data('language-noresults');\n\t\t\t\tvar languageErrorLoading = search.data('language-error-load');\n\t\t\t\tvar languageInputTooShort = search.data('language-input-tooshort');\n\t\t\t\tvar languageInputTooShort = search.data('language-input-tooshort');\n\n\t\t\t\tsearch.SUIselect2({\n\t\t\t\t\tdropdownCssClass: 'sui-select-dropdown',\n\t\t\t\t\tdropdownParent: searchParent ? self.$el.find('#' + searchParent) : null,\n\t\t\t\t\tajax: {\n\t\t\t\t\t\turl: window.ajaxurl,\n\t\t\t\t\t\ttype: \"POST\",\n\t\t\t\t\t\tdata: function (params) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\taction: searchAction,\n\t\t\t\t\t\t\t\thash: hash,\n\t\t\t\t\t\t\t\tq: params.term,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprocessResults: function (data) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresults: data.data\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\ttemplateResult: function (result) {\n\t\t\t\t\t\tif (typeof result.id !== 'undefined' && typeof result.label !== 'undefined') {\n\t\t\t\t\t\t\treturn $(result.label);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result.text;\n\t\t\t\t\t},\n\t\t\t\t\ttemplateSelection: function (result) {\n\t\t\t\t\t\treturn result.display || result.text;\n\t\t\t\t\t},\n\t\t\t\t\tlanguage: {\n\t\t\t\t\t\tsearching: function () {\n\t\t\t\t\t\t\treturn languageSearching;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnoResults: function () {\n\t\t\t\t\t\t\treturn languageNoresults;\n\t\t\t\t\t\t},\n\t\t\t\t\t\terrorLoading: function () {\n\t\t\t\t\t\t\treturn languageErrorLoading;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinputTooShort: function () {\n\t\t\t\t\t\t\treturn languageInputTooShort;\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminCommon(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\t'use strict';\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = 'wpmudevDashboardAdminPluginsPage';\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminPluginsPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.plugins = [];\n\t\tthis.limitPerPage = 10;\n\t\tthis.skipPluginIds = [];\n\t\tthis.page = 1;\n\t\tthis.currentPluginsList = [];\n\t\tthis.ftpDialog = null;\n\t\tthis.pluginDialogs = {};\n\t\tthis.pluginAfterInstallDialogs = {};\n\t\tthis.actionEnabled = true;\n\t\tthis.currentFilter = 'all';\n\t\tthis.bulkPluginsList = {};\n\t\tthis.bulkDialog = null;\n\t\tthis.bulkActionErrors = [];\n\t\tthis.bulkPluginAction = '';\n\t\tthis.bulkAjaxQueueName = 'bulk-ajax-queue';\n\t\tthis.bulkActionProgress = 0;\n\t\tthis.isSearching = false;\n\t\tthis.topPluginIds = [];\n\t\tthis.newReleasePluginIds = [];\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminPluginsPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.maybeShowFtpDialog();\n\t\t\tvar self = this;\n\t\t\tthis.plugins = [];\n\t\t\tthis.$el.find('.js-plugin-box').each(function () {\n\t\t\t\tvar name = $(this).data('name');\n\t\t\t\tvar info = $(this).data('info');\n\t\t\t\tvar pluginData = $(this).data();\n\t\t\t\tpluginData['searchable'] = name + ' ' + info;\n\t\t\t\tself.plugins.push(pluginData);\n\t\t\t});\n\n\t\t\tthis.displayPlugins(this.plugins, true);\n\t\t\tthis.attachEvents();\n\n\t\t\tif (this.isChangelogHash() && !this.isUpdateHash()) {\n\t\t\t\twindow.location.hash = '';\n\t\t\t}\n\n\t\t\t//check if hash is coming form dashborad\n\t\t\t//and if is an update hash trigger hashchage\n\t\t\tif (this.isUpdateHash()) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$(window).trigger('hashchange');\n\t\t\t\t}, 100);\n\t\t\t} else {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$(window).trigger('hashchange');\n\t\t\t\t}, 3000);\n\t\t\t}\n\n\t\t\t// Show notifications if required.\n\t\t\tthis.showSuccessNotification();\n\t\t},\n\n\t\t/**\n\t\t * Show success notification if required.\n\t\t *\n\t\t * @since 4.11.4\n\t\t */\n\t\tshowSuccessNotification: function () {\n\t\t\t// Current url.\n\t\t\tlet url = window.location.href;\n\n\t\t\t// Remove success action.\n\t\t\tif (url.match(/success-action=[^&]+/)) {\n\t\t\t\t// Remove it.\n\t\t\t\turl = url.replace(/success-action=[^&]+/, '');\n\n\t\t\t\t// Change url.\n\t\t\t\twindow.history.pushState( {}, 'Plugins', url );\n\n\t\t\t\t// Show notifications if required.\n\t\t\t\tthis.showNotification('notice-success-plugins', '', 'success');\n\t\t\t}\n\t\t},\n\n\t\trefreshPluginList: function () {\n\t\t\tthis.plugins = [];\n\t\t\tvar self = this;\n\t\t\tthis.$el.find('.js-plugin-box').each(function () {\n\t\t\t\tvar name = $(this).data('name');\n\t\t\t\tvar info = $(this).data('info');\n\t\t\t\tvar pluginData = $(this).data();\n\t\t\t\tpluginData['searchable'] = name + ' ' + info;\n\t\t\t\tself.plugins.push(pluginData);\n\t\t\t});\n\n\t\t\tthis.filterPlugins(this.currentFilter, false);\n\n\t\t\tthis.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t},\n\n\t\t/**\n\t\t * Plugins list table\n\t\t * @param plugins\n\t\t * @param clearBulk\n\t\t */\n\t\tdisplayPlugins: function (plugins, clearBulk) {\n\t\t\tthis.currentPluginsList = plugins;\n\t\t\tvar self = this;\n\t\t\tvar i;\n\n\t\t\t// sort!\n\t\t\t// a- z\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = a.name;\n\t\t\t\tvar sortB = b.name;\n\t\t\t\tif (sortA < sortB)\n\t\t\t\t\treturn -1;\n\t\t\t\tif (sortA > sortB)\n\t\t\t\t\treturn 1;\n\t\t\t\treturn 0;\n\t\t\t});\n\n\t\t\t// compatible\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.isCompatible;\n\t\t\t\tvar sortB = +b.isCompatible;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\t// installed\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.installed;\n\t\t\t\tvar sortB = +b.installed;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\t// active\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.active;\n\t\t\t\tvar sortB = +b.active;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\t// updates\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.hasUpdate;\n\t\t\t\tvar sortB = +b.hasUpdate;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\tthis.$el\n\t\t\t.find('.dashui-table-plugins tbody tr')\n\t\t\t.not('.bulk-action-row')\n\t\t\t.remove();\n\n\t\t\tvar notInstalledHeader = 0;\n\n\t\t\tfor (i = 0; i < plugins.length; i++) {\n\t\t\t\tvar data = plugins[i];\n\t\t\t\tvar row = this.$el\n\t\t\t\t.find('.js-plugin-box[data-project=' + data.project + '] .js-mode-row tr')\n\t\t\t\t.clone(true, true);\n\t\t\t\trow.hide();\n\n\t\t\t\tif (row.hasClass('dashui-is-notinstalled') && 0 === notInstalledHeader) {\n\n\t\t\t\t\tvar avheader = this.$el\n\t\t\t\t\t.find('.js-available-plugin-header tr')\n\t\t\t\t\t.clone(true, true);\n\n\t\t\t\t\tself.$el.find('.dashui-table-plugins tbody').append(avheader);\n\t\t\t\t\tnotInstalledHeader++;\n\t\t\t\t}\n\n\t\t\t\tself.$el.find('.dashui-table-plugins tbody').append(row);\n\t\t\t}\n\n\t\t\tthis.paginate(plugins, clearBulk);\n\n\t\t\tsetTimeout(function () {\n\n\t\t\t\t// Hide alert.\n\t\t\t\tself.$el\n\t\t\t\t.find('.dashui-plugin-loader')\n\t\t\t\t.fadeOut(1)\n\t\t\t\t.attr('tabindex', '-1')\n\t\t\t\t;\n\n\t\t\t\t// Show table.\n\t\t\t\tself.$el\n\t\t\t\t.find('.dashui-table-plugins')\n\t\t\t\t.fadeIn('slow')\n\t\t\t\t;\n\t\t\t}, 500);\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\n\t\t\tthis.$el.find('.js-header-search').on('click', function (e) {\n\t\t\t\tself.$el.find('input[name=search]').focus();\n\t\t\t\te.preventDefault();\n\t\t\t});\n\n\t\t\tthis.$el.find('input[name=search]').on('keydown', function (e) {\n\t\t\t\tvar searchTerm = $(this).val();\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tself.search(searchTerm);\n\t\t\t\t}, 1500);\n\t\t\t});\n\n\t\t\tthis.$el.find('.sui-tabs-menu .sui-tab-item').on('click', function () {\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t$(this)\n\t\t\t\t.closest('.sui-tabs-menu')\n\t\t\t\t.find('.sui-tab-item')\n\t\t\t\t.removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\t\t\t\tself.filterPlugins($(this).data('filter'), true);\n\t\t\t});\n\n\t\t\tthis.$el.find('#dashui-mobile-filter').on('change', function () {\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tself.filterPlugins($(this).val(), true);\n\t\t\t});\n\n\t\t\tthis.$el.find('.dashui-plugin-box .sui-vertical-tab').on('click', function () {\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t$(this)\n\t\t\t\t.parent()\n\t\t\t\t.find('.sui-vertical-tab')\n\t\t\t\t.removeClass('current');\n\t\t\t\t$(this).addClass('current');\n\t\t\t\tself.filterPlugins($(this).children('a').data('filter'), true);\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-changelog]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.showChangelog(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-update]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.update(data, true);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-activate]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.activate(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-deactivate]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.deactivate(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-install]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.install(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-delete]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.uninstall(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this)\n\t\t\t\t.closest('.sui-notice-top')\n\t\t\t\t.stop()\n\t\t\t\t.slideUp('slow');\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', '.sui-modal #ftp-details form', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.saveFtp();\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-show-plugin-modal', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tvar project_id = $(this).data('project'),\n\t\t\t\t\tdialogType = $(this).data('action');\n\t\t\t\tif (project_id) {\n\t\t\t\t\tif ('changelog' !== dialogType) {\n\t\t\t\t\t\tself.showPluginDialog(project_id, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.showChangelog(project_id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t// modal tabs\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function () {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs');\n\t\t\t\tvar index = $(this).data('index');\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active');\n\t\t\t\ttabWrapper\n\t\t\t\t.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]')\n\t\t\t\t.addClass('active');\n\t\t\t});\n\n\t\t\t// SLIDER: Navigation thumbnails\n\t\t\tthis.$el.on('click', '.dashui-slider .dashui-slider-nav-items li', function () {\n\n\t\t\t\tvar $thumb = $(this),\n\t\t\t\t\t$parent = $thumb.closest('.dashui-slider'),\n\t\t\t\t\t$thumbs = $parent.find('.dashui-slider-nav-items li'),\n\t\t\t\t\t$sliders = $parent.find('.dashui-slider-main'),\n\t\t\t\t\t$slides = $sliders.find('li'),\n\t\t\t\t\t$slide = $sliders.find('li.' + $thumb.data('key'))\n\t\t\t\t;\n\n\t\t\t\t$thumbs.removeClass('current');\n\t\t\t\t$slides.removeClass('current');\n\n\t\t\t\t// Select current thumbnail\n\t\t\t\t$thumb.addClass('current');\n\n\t\t\t\t// Get current slide\n\t\t\t\t$slide.addClass('current');\n\n\t\t\t\tif ($sliders.height() !== ($slide.find('img').height() - 1)) {\n\n\t\t\t\t\t$sliders.css({\n\t\t\t\t\t\t'height': ($slide.find('img').height() - 1) + 'px'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// SLIDER: Navigation right arrow\n\t\t\tthis.$el.on('click', '.dashui-slider .dashui-slider-nav-right', function () {\n\n\t\t\t\tvar $button = $(this),\n\t\t\t\t\t$parent = $button.closest('.dashui-slider'),\n\t\t\t\t\t$slider = $parent.find('.dashui-slider-main'),\n\t\t\t\t\t$thumbs = $parent.find('.slider-nav')\n\t\t\t\t;\n\n\t\t\t\t// Function to animate the images in forward direction\n\t\t\t\tvar forward = function () {\n\n\t\t\t\t\tvar $currThumb = $thumbs.find('li.current'),\n\t\t\t\t\t\t$nextThumb = $currThumb.next()\n\t\t\t\t\t;\n\n\t\t\t\t\tvar $currSlide = $slider.find('li.current'),\n\t\t\t\t\t\t$nextSlide = $currSlide.next()\n\t\t\t\t\t;\n\n\t\t\t\t\tif (!$nextThumb.length) {\n\n\t\t\t\t\t\t$nextThumb = $thumbs.find('li:first');\n\t\t\t\t\t\t$nextSlide = $slider.find('li:first');\n\n\t\t\t\t\t\t$nextThumb.addClass('current');\n\t\t\t\t\t\t$nextSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$nextThumb.addClass('current');\n\t\t\t\t\t\t$nextSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($slider.height() !== ($nextSlide.find('img').height() - 1)) {\n\n\t\t\t\t\t\t$slider.css({\n\t\t\t\t\t\t\t'height': ($nextSlide.find('img').height() - 1) + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tforward();\n\n\t\t\t});\n\n\t\t\t// SLIDER: Navigation left arrow\n\t\t\tthis.$el.on('click', '.dashui-slider .dashui-slider-nav-left', function () {\n\n\t\t\t\tvar $button = $(this),\n\t\t\t\t\t$parent = $button.closest('.dashui-slider'),\n\t\t\t\t\t$slider = $parent.find('.dashui-slider-main'),\n\t\t\t\t\t$thumbs = $parent.find('.slider-nav')\n\t\t\t\t;\n\n\t\t\t\t// Function to animate the images in backward direction\n\t\t\t\tvar backward = function () {\n\n\t\t\t\t\tvar $currThumb = $thumbs.find('li.current'),\n\t\t\t\t\t\t$prevThumb = $currThumb.prev()\n\t\t\t\t\t;\n\n\t\t\t\t\tvar $currSlide = $slider.find('li.current'),\n\t\t\t\t\t\t$prevSlide = $currSlide.prev()\n\n\t\t\t\t\tif (!$prevThumb.length) {\n\n\t\t\t\t\t\t$prevThumb = $thumbs.find('li:last');\n\t\t\t\t\t\t$prevSlide = $slider.find('li:last');\n\n\t\t\t\t\t\t$prevThumb.addClass('current');\n\t\t\t\t\t\t$prevSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$prevThumb.addClass('current');\n\t\t\t\t\t\t$prevSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($slider.height() !== ($prevSlide.find('img').height() - 1)) {\n\n\t\t\t\t\t\t$slider.css({\n\t\t\t\t\t\t\t'height': ($prevSlide.find('img').height() - 1) + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbackward();\n\n\t\t\t});\n\n\t\t\t// Checkboxes\n\t\t\tthis.$el.on('change', 'input.js-plugin-check', function () {\n\t\t\t\tvar project_id = $(this).val();\n\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\tvar plugin = self.searchPluginById(project_id);\n\t\t\t\t\tif (plugin) {\n\t\t\t\t\t\tself.bulkPluginsList[project_id] = plugin;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar bulkPluginsList = self.bulkPluginsList;\n\t\t\t\t\tdelete bulkPluginsList[project_id];\n\t\t\t\t\tself.bulkPluginsList = bulkPluginsList;\n\t\t\t\t}\n\n\t\t\t\tself.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t\t});\n\n\t\t\tthis.$el.on('change', '.js-plugins-bulk-action', function () {\n\t\t\t\tvar ids = Object.keys(self.bulkPluginsList);\n\t\t\t\tvar bulkModal = self.$el.find('.sui-modal #bulk-action-modal');\n\n\t\t\t\tif (!ids.length || self.bulkPluginAction === '') {\n\t\t\t\t\t$(this)\n\t\t\t\t\t.find('.js-plugins-bulk-action-button')\n\t\t\t\t\t.attr('disabled', 'disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$(this)\n\t\t\t\t\t.find('.js-plugins-bulk-action-button')\n\t\t\t\t\t.prop('disabled', false);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$el.on('change', 'input.js-plugin-check-all', function () {\n\t\t\t\tvar checkboxes = self.$el.find('.dashui-table-plugins tbody tr td.dashui-column-title input.js-plugin-check').not(':hidden');\n\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\tcheckboxes.prop('checked', true).trigger('change');\n\t\t\t\t} else {\n\t\t\t\t\tcheckboxes.prop('checked', false).trigger('change');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-plugins-bulk-action-button', function () {\n\t\t\t\tlet ids = Object.keys(self.bulkPluginsList);\n\t\t\t\tlet activePlugins = [];\n\t\t\t\tlet notInstalledPlugins = [];\n\t\t\t\tif (!ids.length) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\t//filter plugin with action\n\t\t\t\t\tvar action = self.bulkPluginAction;\n\t\t\t\t\tfor (var project_id in self.bulkPluginsList) {\n\t\t\t\t\t\tvar isProject = self.bulkPluginsList[project_id];\n\t\t\t\t\t\tswitch (action) {\n\t\t\t\t\t\t\tcase 'activate':\n\t\t\t\t\t\t\t\tif (!isProject.installed || isProject.active) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'deactivate':\n\t\t\t\t\t\t\t\tif (!isProject.active) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\t\tif (!isProject.hasUpdate || !isProject.installed) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\t\tif (isProject.active || !isProject.installed) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t\tif (isProject.active) {\n\t\t\t\t\t\t\t\t\t\tactivePlugins.push(isProject);\n\t\t\t\t\t\t\t\t\t} else if (!isProject.installed) {\n\t\t\t\t\t\t\t\t\t\tnotInstalledPlugins.push(isProject);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'install':\n\t\t\t\t\t\t\t\tif (isProject.installed) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'install-activate':\n\t\t\t\t\t\t\t\tif (isProject.installed && isProject.active) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar bulkPluginsCount = Object.keys(self.bulkPluginsList).length;\n\t\t\t\t\tif (bulkPluginsCount) {\n\t\t\t\t\t\tSUI.openModal(\n\t\t\t\t\t\t\t'bulk-action-modal',\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tself.onBulkDialogShow();\n\n\t\t\t\t\t\tif (activePlugins.length || notInstalledPlugins.length) {\n\t\t\t\t\t\t\tlet message = '<p>' + wdp_locale.plugins_cannot_delete + '</p>';\n\t\t\t\t\t\t\tactivePlugins.forEach((plugin) => {\n\t\t\t\t\t\t\t\tmessage += '<p>' + plugin.name + ': ' + wdp_locale.plugins_active + '</p>';\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\tnotInstalledPlugins.forEach((plugin) => {\n\t\t\t\t\t\t\t\tmessage += '<p>' + plugin.name + ': ' + wdp_locale.plugins_not_installed + '</p>';\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.js-plugins-bulk-action')\n\t\t\t\t\t\t.find('.js-plugins-bulk-action-button')\n\t\t\t\t\t\t.attr('disabled', 'disabled');\n\t\t\t\t\t\t$('#bulk-actions-all').prop(\"checked\", false);\n\n\t\t\t\t\t\tif (activePlugins.length || notInstalledPlugins.length) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-deleted-multiple',\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t'warning'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t// bulk plugin selector\n\t\t\tthis.$el.on('change', 'select[name=\"current-bulk-action\"]', function () {\n\t\t\t\tself.bulkPluginAction = $(this).val();\n\t\t\t\tself.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t\t});\n\n\t\t\t// close bulk plugin\n\t\t\tthis.$el.on('click', '.sui-modal .bulk-modal-close', function () {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tself.onBulkDialogHide();\n\t\t\t\t}, 1000);\n\t\t\t});\n\n\n\t\t\t// close bulk plugin\n\t\t\tthis.$el.on('click', '.sui-modal .plugin-modal-close', function () {\n\t\t\t\tvar self = this;\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif ($(self).closest('.sui-modal').hasClass('sui-active')) {\n\t\t\t\t\t\tSUI.closeModal();\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\n\t\t\t\tif ($(this).closest('.sui-modal-content').hasClass('js-plugin-modal')) {\n\t\t\t\t\twindow.location.hash = '_';\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t$('.sui-modal-content').on('afterClose', function () {\n\t\t\t\twindow.location.hash = '_'\n\t\t\t});\n\n\t\t\t$(window).on('hashchange', function () {\n\t\t\t\tself.processHash();\n\t\t\t});\n\n\t\t},\n\n\t\tsearchPluginById: function (project_id) {\n\t\t\tproject_id = +project_id;\n\t\t\tvar i;\n\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\tvar data = this.plugins[i];\n\t\t\t\tvar pid = +data.project;\n\t\t\t\tif (pid === project_id) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tfilterPlugins: function (filter, resetPage) {\n\t\t\tvar plugins = [];\n\t\t\tvar data, i;\n\t\t\tthis.currentFilter = filter;\n\t\t\tvar no_result_search_lang = 'no_result_search_plugin_all';\n\t\t\tvar no_plugins_lang = '';\n\n\t\t\tthis.$el.find('.js-plugins-showcase').hide();\n\n\t\t\tswitch (filter) {\n\t\t\t\tcase 'all':\n\t\t\t\t\tplugins = this.plugins;\n\t\t\t\t\tif (!this.isSearching) {\n\t\t\t\t\t\tthis.$el.find('.js-plugins-showcase').show();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'activated':\n\t\t\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\t\t\tdata = this.plugins[i];\n\t\t\t\t\t\tif (data.installed && data.active) {\n\t\t\t\t\t\t\tplugins.push(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tno_result_search_lang = 'no_result_search_plugin_activated';\n\t\t\t\t\tno_plugins_lang = 'no_plugin_activated';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'deactivated':\n\t\t\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\t\t\tdata = this.plugins[i];\n\t\t\t\t\t\tif (data.installed && !data.active) {\n\t\t\t\t\t\t\tplugins.push(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tno_result_search_lang = 'no_result_search_plugin_deactivated';\n\t\t\t\t\tno_plugins_lang = 'no_plugin_deactivated';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'hasupdate':\n\t\t\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\t\t\tdata = this.plugins[i];\n\t\t\t\t\t\tif (data.installed && data.hasUpdate) {\n\t\t\t\t\t\t\tplugins.push(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tno_result_search_lang = 'no_result_search_plugin_updates';\n\t\t\t\t\tno_plugins_lang = 'no_plugin_updates';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (resetPage) {\n\t\t\t\t// reset page\n\t\t\t\tthis.page = 1;\n\t\t\t}\n\n\t\t\tthis.$el.find('.js-no-result-search').addClass('sui-hidden');\n\t\t\tthis.$el.find('.dashui-table-plugins').removeClass('sui-hidden');\n\t\t\tif (this.isSearching) {\n\t\t\t\tplugins = this.getSearchResult(plugins, this.$el.find('input[name=search]').val().toLowerCase());\n\n\t\t\t\tif (plugins.length < 1) {\n\t\t\t\t\tvar no_result_search_message = window.wdp_locale[no_result_search_lang];\n\t\t\t\t\tif (no_result_search_message) {\n\t\t\t\t\t\tthis.showSearchNotice(no_result_search_message);\n\t\t\t\t\t\tthis.$el.find('.js-no-result-search').removeClass('sui-hidden');\n\t\t\t\t\t\tthis.$el.find('.dashui-table-plugins').addClass('sui-hidden');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeSearchNotice();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (plugins.length < 1 && no_plugins_lang) {\n\t\t\t\t\tvar no_plugins_message = window.wdp_locale[no_plugins_lang];\n\t\t\t\t\tif (no_plugins_message) {\n\t\t\t\t\t\tthis.showSearchNotice(no_plugins_message);\n\t\t\t\t\t\tthis.$el.find('.js-no-result-search').removeClass('sui-hidden');\n\t\t\t\t\t\tthis.$el.find('.dashui-table-plugins').addClass('sui-hidden');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeSearchNotice();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar clearBulk = true;\n\t\t\tif (this.currentFilter === filter) {\n\t\t\t\tclearBulk = false;\n\t\t\t}\n\t\t\tthis.displayPlugins(plugins, clearBulk);\n\t\t},\n\t\tshowSearchNotice(message) {\n\t\t\tvar container = $('.js-no-result-search-message'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tnoticeOptions = {};\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tnoticeID = container.attr('id');\n\t\t\tmessage = '<p>' + message + '</p>';\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t},\n\n\t\tcloseSearchNotice() {\n\t\t\tvar container = $('.js-no-result-search-message');\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tSUI.closeNotice(container.attr('id'));\n\t\t},\n\n\t\tpaginate: function (plugins, clearBulk) {\n\t\t\tvar project_id = 0;\n\t\t\tif (clearBulk) {\n\t\t\t\t// clean checked before hide\n\t\t\t\tfor (project_id in this.bulkPluginsList) {\n\t\t\t\t\tif (this.bulkPluginsList.hasOwnProperty(project_id)) {\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\t'.dashui-table-plugins tbody tr td.dashui-column-title input.js-plugin-check[value=' +\n\t\t\t\t\t\t\tproject_id +\n\t\t\t\t\t\t\t']'\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.prop('checked', false)\n\t\t\t\t\t\t.trigger('change');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.bulkPluginsList = {};\n\t\t\t\tthis.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t\t}\n\n\t\t\t// hide all\n\t\t\tthis.$el\n\t\t\t.find('.dashui-table-plugins tbody tr')\n\t\t\t.not('.bulk-action-row')\n\t\t\t.show();\n\n\t\t\t// restore checked\n\t\t\tfor (project_id in this.bulkPluginsList) {\n\t\t\t\tthis.$el.find('.dashui-table-plugins tbody tr[data-project=' + project_id + '] .js-plugin-check').attr('checked', 'checked');\n\t\t\t}\n\n\t\t},\n\t\tsearch: function (value) {\n\n\t\t\tvar clearBulk = false;\n\t\t\tif (this.$el.find('.sui-tabs-menu .sui-tab-item.active').data('filter') !== 'all') {\n\t\t\t\tclearBulk = true;\n\t\t\t}\n\n\t\t\tthis.$el.find('.sui-tabs-menu .sui-tab-item').removeClass('active');\n\t\t\tthis.$el.find('.sui-tabs-menu .sui-tab-item[data-filter=all]').addClass('active');\n\t\t\tthis.currentFilter = 'all';\n\n\t\t\tvar toSearch = value.toLowerCase();\n\t\t\tif (toSearch === '') {\n\t\t\t\tthis.isSearching = false;\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.filterPlugins(this.currentFilter, clearBulk);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isSearching = true;\n\t\t\tthis.page = 1;\n\t\t\tthis.filterPlugins(this.currentFilter, clearBulk);\n\t\t},\n\t\tgetSearchResult: function (pluginsList, toSearch) {\n\t\t\tvar plugins = [];\n\t\t\tvar data, i;\n\t\t\tvar searchable = '';\n\t\t\tfor (i = 0; i < pluginsList.length; i++) {\n\t\t\t\tdata = pluginsList[i];\n\t\t\t\tsearchable = data.searchable.toLowerCase();\n\t\t\t\tif (searchable.indexOf(toSearch) !== -1) {\n\t\t\t\t\tplugins.push(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn plugins;\n\t\t},\n\t\tactivate: function (data) {\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-activate][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader-text')\n\t\t\t.addClass('sui-hidden');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t.show();\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader .dashui-loader-delete')\n\t\t\t.hide();\n\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.showNotification('js-activated-single', '', 'success');\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-activated-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-activate][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\n\t\t\t\tself.$el\n\t\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '');\n\t\t\t});\n\t\t},\n\t\tdeactivate: function (data) {\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find(\n\t\t\t\t'a.sui-button[data-action=project-deactivate][data-project=' + project_id + ']'\n\t\t\t)\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader-text')\n\t\t\t.addClass('sui-hidden');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t.show();\n\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.showNotification('js-deactivated-single', '', 'success');\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-deactivated-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-deactivate][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\n\t\t\t\tself.$el\n\t\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t});\n\t\t},\n\t\tshowChangelog: function (project_id) {\n\t\t\tif (this.isChangelogHash()) {\n\t\t\t\t// do update\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\t// append changelog hash\n\t\t\t\twindow.location.hash += 'changelog';\n\t\t\t\tthis.showPluginDialog(project_id);\n\t\t\t\tthis.enableActions(project_id);\n\t\t\t\tthis.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-update][data-project=' + project_id + ']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tupdate: function (data, showChangelog) {\n\t\t\tif (this.maybeShowFtpDialog()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar self = this;\n\t\t\tvar doUpdate = true;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-update][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\t\t\tthis.hideNotifications();\n\n\t\t\tif (showChangelog) {\n\t\t\t\tdoUpdate = this.showChangelog(project_id);\n\t\t\t}\n\n\t\t\tif (doUpdate) {\n\t\t\t\tthis.disableActions(project_id);\n\t\t\t\t// Actual update\n\t\t\t\tvar ajaxData = {\n\t\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\t\thash: data.hash,\n\t\t\t\t\tpid: project_id,\n\t\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t\t};\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tajaxData,\n\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\t\tself.showNotification('js-updated-single', '', 'success');\n\t\t\t\t\t\t\t// update plugin box\n\n\t\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\t\tSUI.closeModal();\n\t\t\t\t\t\t\t\tself.refreshPluginList();\n\t\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\t\t\t\t\t\t\t\tself.refreshUpdateCount(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t\t'js-failed-updated-single',\n\t\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'json'\n\t\t\t\t)\n\t\t\t\t.always(function () {\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find(\n\t\t\t\t\t\t'a.sui-button[data-action=project-update][data-project=' +\n\t\t\t\t\t\tproject_id +\n\t\t\t\t\t\t']'\n\t\t\t\t\t)\n\t\t\t\t\t.removeClass('sui-button-onload');\n\t\t\t\t\tself.enableActions(project_id);\n\t\t\t\t})\n\t\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tinstall: function (data) {\n\t\t\tif (this.maybeShowFtpDialog()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-install][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find(\n\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\tproject_id +\n\t\t\t\t']'\n\t\t\t)\n\t\t\t.removeClass('sui-button-onload');\n\t\t\tthis.$el\n\t\t\t.find(\n\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\tproject_id +\n\t\t\t\t']'\n\t\t\t)\n\t\t\t.addClass('sui-button-onload');\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\t// update plugin box\n\n\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\n\t\t\t\t\t\t\tvar plugin = self.searchPluginById(project_id);\n\t\t\t\t\t\t\tif (plugin && !plugin.active) {\n\t\t\t\t\t\t\t\tself.showPluginDialogAfterInstall(project_id)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\tself.refreshPluginList();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-installed-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-install][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.find('.sui-loading-text')\n\t\t\t\t.show();\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.find('.sui-loading')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t});\n\t\t},\n\t\tuninstall: function (data) {\n\t\t\tif (this.maybeShowFtpDialog()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-delete][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader-text')\n\t\t\t.addClass('sui-hidden');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t.show();\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader .dashui-loader-activate')\n\t\t\t.hide();\n\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.showNotification('js-deleted-single', '', 'success');\n\t\t\t\t\t\t// update plugin box\n\n\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\tself.refreshPluginList();\n\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-deleted-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-delete][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\n\t\t\t\tself.$el\n\t\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t});\n\t\t},\n\t\tapplyBulkAction: function () {\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\n\t\t\tthis.disableActions(null);\n\n\t\t\tvar action = this.bulkPluginAction;\n\n\t\t\tthis.bulkActionProgress = 0;\n\t\t\tdialog.find('.sui-progress-text>span').text('0%');\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '0%');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').show();\n\n\t\t\tthis.bulkActionErrors = [];\n\t\t\tvar i = 1;\n\t\t\tvar isLast = false;\n\t\t\tvar bulkPluginsCount = Object.keys(this.bulkPluginsList).length;\n\n\t\t\tif (bulkPluginsCount > 0) {\n\t\t\t\tfor (var project_id in this.bulkPluginsList) {\n\n\t\t\t\t\tif (i === bulkPluginsCount) {\n\t\t\t\t\t\tisLast = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.bulkPluginsList.hasOwnProperty(project_id)) {\n\t\t\t\t\t\tthis.addBulkQueue(action, project_id, isLast);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\taddBulkQueue: function (action, project_id, isLast) {\n\t\t\tvar self = this;\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\t\t\tvar ajax_action = 'wdp-project-' + action;\n\t\t\tvar hash = dialog.find('.js-bulk-hash').data(action);\n\t\t\tvar plugin = this.searchPluginById(project_id);\n\n\t\t\tvar bulkPluginsCount = Object.keys(this.bulkPluginsList).length;\n\t\t\tvar progressIncreaser = 100 / bulkPluginsCount;\n\t\t\tprogressIncreaser = +progressIncreaser;\n\t\t\tprogressIncreaser = Math.floor(progressIncreaser);\n\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar stateBaseText = '%s';\n\n\t\t\tswitch (action) {\n\t\t\t\tcase 'update':\n\t\t\t\t\tstateBaseText = window.wdp_locale.updating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'activate':\n\t\t\t\t\tstateBaseText = window.wdp_locale.activating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'install':\n\t\t\t\t\tstateBaseText = window.wdp_locale.installing_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'install-activate':\n\t\t\t\t\tstateBaseText = window.wdp_locale.installing_activating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'deactivate':\n\t\t\t\t\tstateBaseText = window.wdp_locale.deactivating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'delete':\n\t\t\t\t\tstateBaseText = window.wdp_locale.deleting_plugin;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// block incompatible plugin action by UI\n\t\t\tif (action === 'update' || action === 'activate' || action === 'install' || action === 'install-activate') {\n\t\t\t\tif (!plugin.isCompatible) {\n\t\t\t\t\tstateBaseText = stateBaseText.replace('%s', plugin.name);\n\t\t\t\t\tstateText.text(stateBaseText);\n\n\t\t\t\t\t// delay 1 sec\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tvar message = '<p>' + plugin.name + ' : ' + plugin.incompatibleReason + '</p>';\n\t\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\t\tself.bulkActionErrors.push(plugin.incompatibleReason);\n\t\t\t\t\t\tself.updateBulkProgressBar(dialog, action, progressIncreaser, (!!isLast));\n\t\t\t\t\t}, 1000);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.ajaxq(this.bulkAjaxQueueName, {\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: ajax_action,\n\t\t\t\t\thash: hash,\n\t\t\t\t\tpid: project_id,\n\t\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t\t},\n\t\t\t\tbeforeSend: function () {\n\t\t\t\t\tstateBaseText = stateBaseText.replace('%s', plugin.name);\n\t\t\t\t\tstateText.text(stateBaseText);\n\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\t\t\t\t\t\t\tif (action === 'update') {\n\t\t\t\t\t\t\t\tself.refreshUpdateCount(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tvar message = '<p>' + plugin.name + ' : ' + response.data.message + '</p>';\n\t\t\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.bulkActionErrors.push(response.data.message);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (error) {\n\t\t\t\t\tvar message = '<p>' + plugin.name + ' : HTTP Request Error</p>';\n\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\tself.bulkActionErrors.push('HTTP Request Error');\n\t\t\t\t},\n\t\t\t\tcomplete: function () {\n\t\t\t\t\tself.updateBulkProgressBar(dialog, action, progressIncreaser, true);\n\t\t\t\t},\n\t\t\t});\n\n\t\t},\n\t\tupdateBulkProgressBar: function (dialog, action, progressIncreaser, checkAjax) {\n\t\t\tvar currentProgress = this.bulkActionProgress;\n\t\t\tcurrentProgress = +currentProgress;\n\t\t\tcurrentProgress = Math.floor(currentProgress);\n\n\t\t\tthis.bulkActionProgress = currentProgress + progressIncreaser;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', (this.bulkActionProgress) + '%');\n\t\t\tdialog.find('.sui-progress-text>span').text((this.bulkActionProgress) + '%');\n\n\t\t\tif (checkAjax && !$.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\tthis.onBulkActionCompleted(action);\n\t\t\t}\n\t\t},\n\t\tonBulkActionCompleted: function (action) {\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar bulkPluginsCount = Object.keys(this.bulkPluginsList).length;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '100%');\n\t\t\tdialog.find('.sui-progress-text>span').text('100%');\n\t\t\tstateText.text('');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').hide();\n\n\t\t\tthis.enableActions(null);\n\n\t\t\tif (action === 'activate' || action === 'deactivate' || action === 'install-activate') {\n\t\t\t\tif (!this.bulkActionErrors.length) {\n\t\t\t\t\t//deactivate and activate need to reloaded to view new menus if avail\n\t\t\t\t\tdialog.find('').show();\n\t\t\t\t\tvar noticeID = 'js-bulk-message-need-reload-' + action,\n\t\t\t\t\t\tnoticeOptions = {},\n\t\t\t\t\t\tnoticeMsg = $('#' + noticeID).data('message');\n\n\t\t\t\t\tnoticeOptions.autoclose = {};\n\t\t\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\t\t\tSUI.openNotice(noticeID, noticeMsg, noticeOptions);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.bulkActionErrors.length) {\n\t\t\t\t\t// dialog.close\n\t\t\t\t\tthis.onBulkDialogHide();\n\n\t\t\t\t\t// notif\n\t\t\t\t\tvar notif = '';\n\n\t\t\t\t\tswitch (action) {\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tnotif = 'js-updated-single';\n\t\t\t\t\t\t\tif (bulkPluginsCount > 1) {\n\t\t\t\t\t\t\t\tnotif = 'js-updated-bulk';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'install':\n\t\t\t\t\t\t\tnotif = 'js-installed-single';\n\t\t\t\t\t\t\tif (bulkPluginsCount > 1) {\n\t\t\t\t\t\t\t\tnotif = 'js-installed-bulk';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tnotif = 'js-deleted-single';\n\t\t\t\t\t\t\tif (bulkPluginsCount > 1) {\n\t\t\t\t\t\t\t\tnotif = 'js-deleted-bulk';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif (notif) {\n\t\t\t\t\t\tthis.showNotification(notif, '', 'success');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tshowNotification: function (noticeID, message, type = 'success') {\n\t\t\tvar container = $('#' + noticeID),\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = type;\n\t\t\tnoticeOptions.autoclose.show = false;\n\n\t\t\tif (container.length !== 0) {\n\t\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\t\tif (!message) {\n\t\t\t\t\tmessage = container.data('notice-msg');\n\t\t\t\t} else {\n\t\t\t\t\tmessage = container.data('notice-msg') + '<p class=\"js-custom-message\">' + message + '</p>';\n\t\t\t\t}\n\t\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t\t}\n\t\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t\t}\n\t\t},\n\t\tshowBulkErrorNotice: function (message) {\n\t\t\tvar noticeID = 'js-bulk-errors',\n\t\t\t\tdialog = this.$el.find('.sui-modal #bulk-action-modal'),\n\t\t\t\tnoticeOptions = {};\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = 'warning';\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tnoticeOptions.dismiss.show = false;\n\n\t\t\tif ($('#' + noticeID).hasClass('sui-active')) {\n\t\t\t\tdialog.find('.js-bulk-errors .sui-notice-content .sui-notice-message ').append(message);\n\t\t\t} else {\n\t\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t\t}\n\t\t},\n\t\thideNotifications: function () {\n\t\t\tthis.$el.find('.sui-notice-top').hide();\n\t\t},\n\t\tmaybeShowFtpDialog: function () {\n\t\t\tif (this.$el.find('#ftp-details').length > 0) {\n\t\t\t\tvar modalID = 'ftp-details',\n\t\t\t\t\tcontainer = 'dashui-all-plugins';\n\t\t\t\tSUI.openModal(\n\t\t\t\t\tmodalID,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tsaveFtp: function () {\n\t\t\tvar form = this.$el.find('#ftp-details form');\n\t\t\tvar dialog = this.$el.find('#ftp-details');\n\t\t\tdialog.find('.ftp-submit').addClass('sui-button-onload');\n\t\t\tdialog.find('.sui-notice').hide();\n\t\t\tform.attr('disabled', 'disabled');\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-credentials',\n\t\t\t\thash: form.find('input[name=hash]').val(),\n\t\t\t\tftp_pass: form.find('input#ftp_pass').val(),\n\t\t\t\tftp_user: form.find('input#ftp_user').val(),\n\t\t\t\tftp_host: form.find('input#ftp_host').val(),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tdialog.find('.sui-notice.sui-notice-success').show();\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdialog.find('.sui-notice.sui-notice-error').show();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tform.find('.ftp-submit').removeClass('sui-button-onload');\n\t\t\t\tform.prop('disabled', false);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tdialog.find('.sui-notice.sui-notice-error').show();\n\t\t\t});\n\t\t},\n\t\tonBulkDialogHide: function () {\n\t\t\tif ($('#bulk-action-modal').parent('.sui-modal').hasClass('sui-active')) {\n\t\t\t\tSUI.closeModal();\n\t\t\t}\n\t\t\tif ($.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\t$.ajaxq.abort(this.bulkAjaxQueueName);\n\t\t\t}\n\t\t\tif (!this.actionEnabled) {\n\t\t\t\tthis.enableActions(null);\n\t\t\t}\n\t\t\tthis.refreshPluginList();\n\t\t},\n\t\tonBulkDialogShow: function () {\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\n\t\t\tthis.bulkActionErrors = [];\n\n\t\t\tSUI.closeNotice('js-bulk-message-need-reload-activate');\n\t\t\tSUI.closeNotice('js-bulk-message-need-reload-deactivate');\n\t\t\tSUI.closeNotice('js-bulk-message-need-reload-install-activate');\n\t\t\tSUI.closeNotice('js-bulk-errors');\n\n\t\t\tthis.applyBulkAction();\n\n\t\t},\n\t\tshowPluginDialog: function (project_id, container = undefined) {\n\t\t\tvar self = this;\n\t\t\t// check if free\n\t\t\tif (this.$el.find('#upgrade-membership').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!container) {\n\t\t\t\tcontainer = 'show-modal-' + project_id;\n\t\t\t}\n\n\t\t\tvar modalID = 'plugin-modal-' + project_id;\n\t\t\tself.loadPluginDialogContent(project_id);\n\n\t\t\tSUI.openModal(\n\t\t\t\tmodalID,\n\t\t\t\tcontainer,\n\t\t\t\tundefined,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t\thidePluginDialog: function (project_id) {\n\t\t\tvar pluginmodal = $('#plugin-modal-' + project_id);\n\t\t\tif (pluginmodal.parent('.sui-modal').hasClass('sui-active')) {\n\t\t\t\tSUI.closeModal();\n\t\t\t}\n\t\t},\n\t\tinitPluginDialog: function (project_id) {\n\t\t\tvar self = this;\n\t\t\tif (typeof this.pluginDialogs[project_id] === 'object') {\n\t\t\t\tthis.pluginDialogs[project_id].destroy();\n\t\t\t}\n\n\t\t\tvar dialog = document.getElementById('plugin-modal-' + project_id);\n\t\t\tif (dialog.length > 0) {\n\t\t\t\tdialog.on('open', function () {\n\t\t\t\t\t// move to sui-wrap\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find('.sui-wrap')\n\t\t\t\t\t.append(\n\t\t\t\t\t\tself.$el.find('.sui-dialog.js-plugin-modal#plugin-modal-' + project_id)\n\t\t\t\t\t);\n\t\t\t\t\tself.loadPluginDialogContent(project_id);\n\t\t\t\t});\n\t\t\t\tdialog.on('close', function () {\n\t\t\t\t\t// move back to hidden place\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find(\n\t\t\t\t\t\t'.sui-hidden .js-plugin-box[data-project=' + project_id + '] .js-mode-modal'\n\t\t\t\t\t)\n\t\t\t\t\t.append(\n\t\t\t\t\t\tself.$el.find('.sui-dialog.js-plugin-modal#plugin-modal-' + project_id)\n\t\t\t\t\t);\n\n\t\t\t\t\twindow.location.hash = '_';\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tloadPluginDialogContent: function (project_id) {\n\t\t\tvar dialog = this.$el.find('#plugin-modal-' + project_id);\n\t\t\tvar hash = dialog.data('hash');\n\t\t\tvar self = this;\n\n\t\t\t// conditional load\n\t\t\tif (dialog.find('.sui-box-body.js-dialog-body').hasClass('js-is-loading')) {\n\t\t\t\tvar ajaxData = {\n\t\t\t\t\taction: 'wdp-show-popup',\n\t\t\t\t\tpid: project_id,\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thash: hash,\n\t\t\t\t};\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tajaxData,\n\t\t\t\t\tfunction (response) {\n\n\t\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\t\tvar content = response.data.html;\n\t\t\t\t\t\t\tself.onPluginDialogContentLoaded(dialog, content);\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'json'\n\t\t\t\t)\n\t\t\t\t.always(function () {\n\t\t\t\t\tdialog\n\t\t\t\t\t.find('.sui-modal-content .js-dialog-body')\n\t\t\t\t\t.removeClass('js-is-loading');\n\t\t\t\t\tdialog\n\t\t\t\t\t.find('.sui-modal-content .js-dialog-body')\n\t\t\t\t\t.find('.js-dialog-loader')\n\t\t\t\t\t.remove();\n\t\t\t\t})\n\t\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\t\t// dialog.find('.sui-notice.sui-notice-error').show();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.onPluginDialogContentLoaded(dialog, null);\n\t\t\t}\n\t\t\treturn false; // do think, probably loaded\n\t\t},\n\t\tonPluginDialogContentLoaded: function (dialog, content) {\n\t\t\tcontent = content || null;\n\n\t\t\t// write the content\n\t\t\tif (content) {\n\t\t\t\tdialog.find('.js-dialog-body').html(content);\n\t\t\t}\n\n\t\t\t// trigger first slider\n\t\t\tvar slider = dialog.find('.dashui-slider'),\n\t\t\t\tnavSlider = slider.find('ul.slider-nav'),\n\t\t\t\tmainSlider = dialog.find('.dashui-slider-main'),\n\t\t\t\tfirstImage = mainSlider.find('li:first-child img')\n\t\t\t;\n\n\t\t\tvar onSliderFirstImageLoaded = function () {\n\t\t\t\tnavSlider.find('li:first-child').trigger('click');\n\t\t\t};\n\n\t\t\tif (firstImage.get(0).complete) {\n\t\t\t\tonSliderFirstImageLoaded();\n\t\t\t} else {\n\t\t\t\tfirstImage.on('load', function () {\n\t\t\t\t\tonSliderFirstImageLoaded();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// go to changelog when needed\n\t\t\tif (this.isChangelogHash()) {\n\t\t\t\tdialog\n\t\t\t\t.find('.js-dialog-body')\n\t\t\t\t.find('.sui-tabs div[data-tabs=\"\"] div[data-index=changelog]')\n\t\t\t\t.trigger('click');\n\t\t\t} else {\n\t\t\t\t// force to overview tab\n\t\t\t\tdialog\n\t\t\t\t.find('.js-dialog-body')\n\t\t\t\t.find('.sui-tabs div[data-tabs=\"\"] div[data-index=overview]')\n\t\t\t\t.trigger('click');\n\t\t\t}\n\t\t},\n\t\tshowPluginDialogAfterInstall: function (project_id) {\n\t\t\tvar modalID = 'plugin-modal-after-install-' + project_id,\n\t\t\t\tcontainer = 'show-modal-' + project_id;\n\t\t\tSUI.openModal(\n\t\t\t\tmodalID,\n\t\t\t\tcontainer,\n\t\t\t\tundefined,\n\t\t\t\tfalse\n\t\t\t);\n\t\t},\n\t\tdisableActions: function (project_id) {\n\t\t\tthis.actionEnabled = false;\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-table-plugins .dashui-plugin-actions button').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').attr('disabled', 'disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.attr('disabled', 'disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.attr('disabled', 'disabled');\n\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').addClass('disabled');\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').addClass('disabled');\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').addClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.addClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.addClass('disabled');\n\n\t\t\tvar dropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions');\n\t\t\tif (null !== project_id) {\n\t\t\t\tdropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions[data-project=' + project_id + ']')\n\t\t\t}\n\n\t\t\tdropdownActions.addClass('sui-button-onload');\n\n\t\t\tthis.$el.find('input[name=search]').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-plugins-filter-tabs .sui-tabs-menu .sui-tab-item').css('cursor', 'not-allowed');\n\n\t\t},\n\t\tenableActions: function (project_id) {\n\t\t\tthis.actionEnabled = true;\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-table-plugins .dashui-plugin-actions button').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').prop(\"disabled\", false);\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.prop(\"disabled\", false);\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.prop(\"disabled\", false);\n\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').removeClass('disabled');\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').removeClass('disabled');\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').removeClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.removeClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.removeClass('disabled');\n\n\t\t\tvar dropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions');\n\t\t\tif (null !== project_id) {\n\t\t\t\tdropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions[data-project=' + project_id + ']')\n\t\t\t}\n\n\t\t\tdropdownActions.removeClass('sui-button-onload');\n\t\t\tthis.$el.find('input[name=search]').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-plugins-filter-tabs .sui-tabs-menu .sui-tab-item').css('cursor', 'pointer');\n\t\t},\n\t\tprocessHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\t\t\thash = hash.split('=');\n\n\t\t\t// modal show\n\t\t\tif (hash[0] && hash[0] === 'pid' && hash[1]) {\n\t\t\t\tthis.showPluginDialog(hash[1]);\n\t\t\t} else if (hash[0] && hash[0] === 'install-pid' && hash[1]) {\n\t\t\t\tthis.directInstall(hash[1]);\n\t\t\t}\n\t\t},\n\t\tisChangelogHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\treturn hash.indexOf('changelog') !== -1;\n\t\t},\n\t\tisUpdateHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\t\t\thash = hash.split('=');\n\n\t\t\tif (hash[0] && hash[0] === 'pid' && hash[1] && 'changelog' === hash[2]) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\trefreshUpdateCount: function (updated) {\n\t\t\tvar countOnWPMenu = $('.wdev-update-count'),\n\t\t\t\tcountOnTab = this.$el.find('.wdev-update-tab'),\n\t\t\t\tallTab = $('.wdev-all-tab');\n\n\t\t\tif (countOnTab.length) {\n\t\t\t\tvar count = countOnTab.data('count');\n\t\t\t\tcount = +count;\n\t\t\t\tvar prevCount = count;\n\t\t\t\tif (count > 0) {\n\t\t\t\t\tcount = count - updated;\n\t\t\t\t}\n\n\t\t\t\tif (count >= 0) {\n\t\t\t\t\tcountOnTab.data('count', count);\n\t\t\t\t\tcountOnWPMenu.data('count', count);\n\n\t\t\t\t\tif (countOnWPMenu.length) {\n\t\t\t\t\t\tcountOnWPMenu.find('span.countval').text(count);\n\t\t\t\t\t\tcountOnWPMenu.removeClass('count-' + prevCount);\n\t\t\t\t\t\tcountOnWPMenu.addClass('count-' + count);\n\t\t\t\t\t}\n\n\t\t\t\t\tcountOnTab.find('span.sui-tag').text(count);\n\t\t\t\t\tif (!count) {\n\t\t\t\t\t\tcountOnTab.parent('li').remove();\n\t\t\t\t\t\tallTab.parent('li').addClass('current');\n\t\t\t\t\t\tthis.filterPlugins('all', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tclearHash: function () {\n\t\t\twindow.location.hash = '_';\n\t\t},\n\n\t\t/**\n\t\t * Install a plugin when asked from URL.\n\t\t *\n\t\t * @param {int} pid Project ID.\n\t\t *\n\t\t * @since 4.11.3\n\t\t */\n\t\tdirectInstall: function (pid) {\n\t\t\t// Get the row.\n\t\t\tlet div = $(\"#project-row-\" + pid);\n\t\t\t// Clean hash from URL.\n\t\t\tthis.clearHash();\n\t\t\t// Only if it's valid.\n\t\t\tif (div.length > 0) {\n\t\t\t\t// Scroll to the row.\n\t\t\t\t$('html, body').animate({\n\t\t\t\t\tscrollTop: div.offset().top\n\t\t\t\t}, 'slow');\n\t\t\t\t// Process install.\n\t\t\t\tthis.install({\n\t\t\t\t\tproject: pid,\n\t\t\t\t\thash: $('#project-install-hash').val(),\n\t\t\t\t\taction: 'project-install'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminPluginsPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n})(jQuery, window, document);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n *\n * Modified logic/function,etc besides formatting should be marked with //SUI-SELECT2\n * For easy debugging process or update upstream of select\n */\n;\n\n(function (factory) {\n  // Disable AMD and module exports. @edited\n  if (false && typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (false && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        } else {\n          jQuery = require('jquery')(root);\n        }\n      }\n\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n})(function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 = function () {\n    // Restore the Select2 AMD loader so it can be used\n    // Needed mostly in the language files, where the loader is not inserted\n    if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n      var S2 = jQuery.fn.select2.amd;\n    }\n\n    var S2;\n\n    (function () {\n      if (!S2 || !S2.requirejs) {\n        if (!S2) {\n          S2 = {};\n        } else {\n          require = S2;\n        }\n        /**\n         * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n         * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n         */\n        //Going sloppy to avoid 'use strict' string cost, but strict practices should\n        //be followed.\n\n        /*global setTimeout: false */\n\n\n        var requirejs, require, define;\n\n        (function (undef) {\n          var main,\n              _req,\n              makeMap,\n              handlers,\n              defined = {},\n              waiting = {},\n              config = {},\n              defining = {},\n              hasOwn = Object.prototype.hasOwnProperty,\n              aps = [].slice,\n              jsSuffixRegExp = /\\.js$/;\n\n          function hasProp(obj, prop) {\n            return hasOwn.call(obj, prop);\n          }\n          /**\n           * Given a relative module name, like ./something, normalize it to\n           * a real name that can be mapped to a path.\n           * @param {String} name the relative name\n           * @param {String} baseName a real name that the name arg is relative\n           * to.\n           * @returns {String} normalized name\n           */\n\n\n          function normalize(name, baseName) {\n            var nameParts,\n                nameSegment,\n                mapValue,\n                foundMap,\n                lastIndex,\n                foundI,\n                foundStarMap,\n                starI,\n                i,\n                j,\n                part,\n                normalizedBaseParts,\n                baseParts = baseName && baseName.split(\"/\"),\n                map = config.map,\n                starMap = map && map['*'] || {}; //Adjust any relative paths.\n\n            if (name) {\n              name = name.split('/');\n              lastIndex = name.length - 1; // If wanting node ID compatibility, strip .js from end\n              // of IDs. Have to do this here, and not in nameToUrl\n              // because node allows either .js or non .js to map\n              // to same file.\n\n              if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n              } // Starts with a '.' so need the baseName\n\n\n              if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n              } //start trimDots\n\n\n              for (i = 0; i < name.length; i++) {\n                part = name[i];\n\n                if (part === '.') {\n                  name.splice(i, 1);\n                  i -= 1;\n                } else if (part === '..') {\n                  // If at the start, or previous value is still ..,\n                  // keep them so that when converted to a path it may\n                  // still work when converted to a path, even though\n                  // as an ID it is less than ideal. In larger point\n                  // releases, may be better to just kick out an error.\n                  if (i === 0 || i === 1 && name[2] === '..' || name[i - 1] === '..') {\n                    continue;\n                  } else if (i > 0) {\n                    name.splice(i - 1, 2);\n                    i -= 2;\n                  }\n                }\n              } //end trimDots\n\n\n              name = name.join('/');\n            } //Apply map config if available.\n\n\n            if ((baseParts || starMap) && map) {\n              nameParts = name.split('/');\n\n              for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                  //Find the longest baseName segment match in the config.\n                  //So, do joins on the biggest to smallest lengths of baseParts.\n                  for (j = baseParts.length; j > 0; j -= 1) {\n                    mapValue = map[baseParts.slice(0, j).join('/')]; //baseName segment has config, find if it has one for\n                    //this name.\n\n                    if (mapValue) {\n                      mapValue = mapValue[nameSegment];\n\n                      if (mapValue) {\n                        //Match, update name to the new value.\n                        foundMap = mapValue;\n                        foundI = i;\n                        break;\n                      }\n                    }\n                  }\n                }\n\n                if (foundMap) {\n                  break;\n                } //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n\n\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                  foundStarMap = starMap[nameSegment];\n                  starI = i;\n                }\n              }\n\n              if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n              }\n\n              if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n              }\n            }\n\n            return name;\n          }\n\n          function makeRequire(relName, forceSync) {\n            return function () {\n              //A version of a require function that passes a moduleName\n              //value for items that may need to\n              //look up paths relative to the moduleName\n              var args = aps.call(arguments, 0); //If first arg is not require('string'), and there is only\n              //one arg, it is the array form without a callback. Insert\n              //a null so that the following concat is correct.\n\n              if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n              }\n\n              return _req.apply(undef, args.concat([relName, forceSync]));\n            };\n          }\n\n          function makeNormalize(relName) {\n            return function (name) {\n              return normalize(name, relName);\n            };\n          }\n\n          function makeLoad(depName) {\n            return function (value) {\n              defined[depName] = value;\n            };\n          }\n\n          function callDep(name) {\n            if (hasProp(waiting, name)) {\n              var args = waiting[name];\n              delete waiting[name];\n              defining[name] = true;\n              main.apply(undef, args);\n            }\n\n            if (!hasProp(defined, name) && !hasProp(defining, name)) {\n              throw new Error('No ' + name);\n            }\n\n            return defined[name];\n          } //Turns a plugin!resource to [plugin, resource]\n          //with the plugin being undefined if the name\n          //did not have a plugin prefix.\n\n\n          function splitPrefix(name) {\n            var prefix,\n                index = name ? name.indexOf('!') : -1;\n\n            if (index > -1) {\n              prefix = name.substring(0, index);\n              name = name.substring(index + 1, name.length);\n            }\n\n            return [prefix, name];\n          } //Creates a parts array for a relName where first part is plugin ID,\n          //second part is resource ID. Assumes relName has already been normalized.\n\n\n          function makeRelParts(relName) {\n            return relName ? splitPrefix(relName) : [];\n          }\n          /**\n           * Makes a name map, normalizing the name, and using a plugin\n           * for normalization if necessary. Grabs a ref to plugin\n           * too, as an optimization.\n           */\n\n\n          makeMap = function makeMap(name, relParts) {\n            var plugin,\n                parts = splitPrefix(name),\n                prefix = parts[0],\n                relResourceName = relParts[1];\n            name = parts[1];\n\n            if (prefix) {\n              prefix = normalize(prefix, relResourceName);\n              plugin = callDep(prefix);\n            } //Normalize according\n\n\n            if (prefix) {\n              if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n              } else {\n                name = normalize(name, relResourceName);\n              }\n            } else {\n              name = normalize(name, relResourceName);\n              parts = splitPrefix(name);\n              prefix = parts[0];\n              name = parts[1];\n\n              if (prefix) {\n                plugin = callDep(prefix);\n              }\n            } //Using ridiculous property names for space reasons\n\n\n            return {\n              f: prefix ? prefix + '!' + name : name,\n              //fullName\n              n: name,\n              pr: prefix,\n              p: plugin\n            };\n          };\n\n          function makeConfig(name) {\n            return function () {\n              return config && config.config && config.config[name] || {};\n            };\n          }\n\n          handlers = {\n            require: function require(name) {\n              return makeRequire(name);\n            },\n            exports: function exports(name) {\n              var e = defined[name];\n\n              if (typeof e !== 'undefined') {\n                return e;\n              } else {\n                return defined[name] = {};\n              }\n            },\n            module: function module(name) {\n              return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n              };\n            }\n          };\n\n          main = function main(name, deps, callback, relName) {\n            var cjsModule,\n                depName,\n                ret,\n                map,\n                i,\n                relParts,\n                args = [],\n                callbackType = _typeof(callback),\n                usingExports; //Use name if no relName\n\n\n            relName = relName || name;\n            relParts = makeRelParts(relName); //Call the callback to define the module, if necessary.\n\n            if (callbackType === 'undefined' || callbackType === 'function') {\n              //Pull out the defined dependencies and pass the ordered\n              //values to the callback.\n              //Default to [require, exports, module] if no deps\n              deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n\n              for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f; //Fast path CommonJS standard dependencies.\n\n                if (depName === \"require\") {\n                  args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                  //CommonJS module spec 1.1\n                  args[i] = handlers.exports(name);\n                  usingExports = true;\n                } else if (depName === \"module\") {\n                  //CommonJS module spec 1.1\n                  cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {\n                  args[i] = callDep(depName);\n                } else if (map.p) {\n                  map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                  args[i] = defined[depName];\n                } else {\n                  throw new Error(name + ' missing ' + depName);\n                }\n              }\n\n              ret = callback ? callback.apply(defined[name], args) : undefined;\n\n              if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {\n                  defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                  //Use the return value from the function.\n                  defined[name] = ret;\n                }\n              }\n            } else if (name) {\n              //May just be an object definition for the module. Only\n              //worry about defining if have a module name.\n              defined[name] = callback;\n            }\n          };\n\n          requirejs = require = _req = function req(deps, callback, relName, forceSync, alt) {\n            if (typeof deps === \"string\") {\n              if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n              } //Just return the module wanted. In this scenario, the\n              //deps arg is the module name, and second arg (if passed)\n              //is just the relName.\n              //Normalize module name, if it contains . or ..\n\n\n              return callDep(makeMap(deps, makeRelParts(callback)).f);\n            } else if (!deps.splice) {\n              //deps is a config object, not an array.\n              config = deps;\n\n              if (config.deps) {\n                _req(config.deps, config.callback);\n              }\n\n              if (!callback) {\n                return;\n              }\n\n              if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n              } else {\n                deps = undef;\n              }\n            } //Support require(['a'])\n\n\n            callback = callback || function () {}; //If relName is a function, it is an errback handler,\n            //so remove it.\n\n\n            if (typeof relName === 'function') {\n              relName = forceSync;\n              forceSync = alt;\n            } //Simulate async callback;\n\n\n            if (forceSync) {\n              main(undef, deps, callback, relName);\n            } else {\n              //Using a non-zero value because of concern for what old browsers\n              //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n              //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n              //If want a value immediately, use require('id') instead -- something\n              //that works in almond on the global level, but not guaranteed and\n              //unlikely to work in other AMD implementations.\n              setTimeout(function () {\n                main(undef, deps, callback, relName);\n              }, 4);\n            }\n\n            return _req;\n          };\n          /**\n           * Just drops the config on the floor, but returns req in case\n           * the config return value is used.\n           */\n\n\n          _req.config = function (cfg) {\n            return _req(cfg);\n          };\n          /**\n           * Expose module registry for debugging and tooling\n           */\n\n\n          requirejs._defined = defined;\n\n          define = function define(name, deps, callback) {\n            if (typeof name !== 'string') {\n              throw new Error('See almond README: incorrect module build, no module name');\n            } //This module may not have dependencies\n\n\n            if (!deps.splice) {\n              //deps is not an array, so probably means\n              //an object literal or factory function for\n              //the value. Adjust args.\n              callback = deps;\n              deps = [];\n            }\n\n            if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n              waiting[name] = [name, deps, callback];\n            }\n          };\n\n          define.amd = {\n            jQuery: true\n          };\n        })();\n\n        S2.requirejs = requirejs;\n        S2.require = require;\n        S2.define = define;\n      }\n    })();\n\n    S2.define(\"almond\", function () {});\n    /* global jQuery:false, $:false */\n\n    S2.define('jquery', [], function () {\n      var _$ = jQuery || $;\n\n      if (_$ == null && console && console.error) {\n        console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n      }\n\n      return _$;\n    });\n    S2.define('select2/utils', ['jquery'], function ($) {\n      var Utils = {};\n\n      Utils.Extend = function (ChildClass, SuperClass) {\n        var __hasProp = {}.hasOwnProperty;\n\n        function BaseConstructor() {\n          this.constructor = ChildClass;\n        }\n\n        for (var key in SuperClass) {\n          if (__hasProp.call(SuperClass, key)) {\n            ChildClass[key] = SuperClass[key];\n          }\n        }\n\n        BaseConstructor.prototype = SuperClass.prototype;\n        ChildClass.prototype = new BaseConstructor();\n        ChildClass.__super__ = SuperClass.prototype;\n        return ChildClass;\n      };\n\n      function getMethods(theClass) {\n        var proto = theClass.prototype;\n        var methods = [];\n\n        for (var methodName in proto) {\n          var m = proto[methodName];\n\n          if (typeof m !== 'function') {\n            continue;\n          }\n\n          if (methodName === 'constructor') {\n            continue;\n          }\n\n          methods.push(methodName);\n        }\n\n        return methods;\n      }\n\n      Utils.Decorate = function (SuperClass, DecoratorClass) {\n        var decoratedMethods = getMethods(DecoratorClass);\n        var superMethods = getMethods(SuperClass);\n\n        function DecoratedClass() {\n          var unshift = Array.prototype.unshift;\n          var argCount = DecoratorClass.prototype.constructor.length;\n          var calledConstructor = SuperClass.prototype.constructor;\n\n          if (argCount > 0) {\n            unshift.call(arguments, SuperClass.prototype.constructor);\n            calledConstructor = DecoratorClass.prototype.constructor;\n          }\n\n          calledConstructor.apply(this, arguments);\n        }\n\n        DecoratorClass.displayName = SuperClass.displayName;\n\n        function ctr() {\n          this.constructor = DecoratedClass;\n        }\n\n        DecoratedClass.prototype = new ctr();\n\n        for (var m = 0; m < superMethods.length; m++) {\n          var superMethod = superMethods[m];\n          DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n        }\n\n        var calledMethod = function calledMethod(methodName) {\n          // Stub out the original method if it's not decorating an actual method\n          var originalMethod = function originalMethod() {};\n\n          if (methodName in DecoratedClass.prototype) {\n            originalMethod = DecoratedClass.prototype[methodName];\n          }\n\n          var decoratedMethod = DecoratorClass.prototype[methodName];\n          return function () {\n            var unshift = Array.prototype.unshift;\n            unshift.call(arguments, originalMethod);\n            return decoratedMethod.apply(this, arguments);\n          };\n        };\n\n        for (var d = 0; d < decoratedMethods.length; d++) {\n          var decoratedMethod = decoratedMethods[d];\n          DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n        }\n\n        return DecoratedClass;\n      };\n\n      var Observable = function Observable() {\n        this.listeners = {};\n      };\n\n      Observable.prototype.on = function (event, callback) {\n        this.listeners = this.listeners || {};\n\n        if (event in this.listeners) {\n          this.listeners[event].push(callback);\n        } else {\n          this.listeners[event] = [callback];\n        }\n      };\n\n      Observable.prototype.trigger = function (event) {\n        var slice = Array.prototype.slice;\n        var params = slice.call(arguments, 1);\n        this.listeners = this.listeners || {}; // Params should always come in as an array\n\n        if (params == null) {\n          params = [];\n        } // If there are no arguments to the event, use a temporary object\n\n\n        if (params.length === 0) {\n          params.push({});\n        } // Set the `_type` of the first object to the event\n\n\n        params[0]._type = event;\n\n        if (event in this.listeners) {\n          this.invoke(this.listeners[event], slice.call(arguments, 1));\n        }\n\n        if ('*' in this.listeners) {\n          this.invoke(this.listeners['*'], arguments);\n        }\n      };\n\n      Observable.prototype.invoke = function (listeners, params) {\n        for (var i = 0, len = listeners.length; i < len; i++) {\n          listeners[i].apply(this, params);\n        }\n      };\n\n      Utils.Observable = Observable;\n\n      Utils.generateChars = function (length) {\n        var chars = '';\n\n        for (var i = 0; i < length; i++) {\n          var randomChar = Math.floor(Math.random() * 36);\n          chars += randomChar.toString(36);\n        }\n\n        return chars;\n      };\n\n      Utils.bind = function (func, context) {\n        return function () {\n          func.apply(context, arguments);\n        };\n      };\n\n      Utils._convertData = function (data) {\n        for (var originalKey in data) {\n          var keys = originalKey.split('-');\n          var dataLevel = data;\n\n          if (keys.length === 1) {\n            continue;\n          }\n\n          for (var k = 0; k < keys.length; k++) {\n            var key = keys[k]; // Lowercase the first letter\n            // By default, dash-separated becomes camelCase\n\n            key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n            if (!(key in dataLevel)) {\n              dataLevel[key] = {};\n            }\n\n            if (k == keys.length - 1) {\n              dataLevel[key] = data[originalKey];\n            }\n\n            dataLevel = dataLevel[key];\n          }\n\n          delete data[originalKey];\n        }\n\n        return data;\n      };\n\n      Utils.hasScroll = function (index, el) {\n        // Adapted from the function created by @ShadowScripter\n        // and adapted by @BillBarry on the Stack Exchange Code Review website.\n        // The original code can be found at\n        // http://codereview.stackexchange.com/q/13338\n        // and was designed to be used with the Sizzle selector engine.\n        var $el = $(el);\n        var overflowX = el.style.overflowX;\n        var overflowY = el.style.overflowY; //Check both x and y declarations\n\n        if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) {\n          return false;\n        }\n\n        if (overflowX === 'scroll' || overflowY === 'scroll') {\n          return true;\n        }\n\n        return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\n      };\n\n      Utils.escapeMarkup = function (markup) {\n        var replaceMap = {\n          '\\\\': '&#92;',\n          '&': '&amp;',\n          '<': '&lt;',\n          '>': '&gt;',\n          '\"': '&quot;',\n          '\\'': '&#39;',\n          '/': '&#47;'\n        }; // Do not try to escape the markup if it's not a string\n\n        if (typeof markup !== 'string') {\n          return markup;\n        }\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n          return replaceMap[match];\n        });\n      }; // Cache objects in Utils.__cache instead of $.data (see #4346)\n\n\n      Utils.__cache = {};\n      var id = 0;\n\n      Utils.GetUniqueElementId = function (element) {\n        // Get a unique element Id. If element has no id,\n        // creates a new unique number, stores it in the id\n        // attribute and returns the new id with a prefix.\n        // If an id already exists, it simply returns it with a prefix.\n        var select2Id = element.getAttribute('data-select2-id');\n\n        if (select2Id != null) {\n          return select2Id;\n        } // If element has id, use it.\n\n\n        if (element.id) {\n          select2Id = 'select2-data-' + element.id;\n        } else {\n          select2Id = 'select2-data-' + (++id).toString() + '-' + Utils.generateChars(4);\n        }\n\n        element.setAttribute('data-select2-id', select2Id);\n        return select2Id;\n      };\n\n      Utils.StoreData = function (element, name, value) {\n        // Stores an item in the cache for a specified element.\n        // name is the cache key.\n        var id = Utils.GetUniqueElementId(element);\n\n        if (!Utils.__cache[id]) {\n          Utils.__cache[id] = {};\n        }\n\n        Utils.__cache[id][name] = value;\n      };\n\n      Utils.GetData = function (element, name) {\n        // Retrieves a value from the cache by its key (name)\n        // name is optional. If no name specified, return\n        // all cache items for the specified element.\n        // and for a specified element.\n        var id = Utils.GetUniqueElementId(element);\n\n        if (name) {\n          if (Utils.__cache[id]) {\n            if (Utils.__cache[id][name] != null) {\n              return Utils.__cache[id][name];\n            }\n\n            return $(element).data(name); // Fallback to HTML5 data attribs.\n          }\n\n          return $(element).data(name); // Fallback to HTML5 data attribs.\n        } else {\n          return Utils.__cache[id];\n        }\n      };\n\n      Utils.RemoveData = function (element) {\n        // Removes all cached items for a specified element.\n        var id = Utils.GetUniqueElementId(element);\n\n        if (Utils.__cache[id] != null) {\n          delete Utils.__cache[id];\n        }\n\n        element.removeAttribute('data-select2-id');\n      };\n\n      Utils.copyNonInternalCssClasses = function (dest, src) {\n        var classes;\n        var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n        destinationClasses = destinationClasses.filter(function (clazz) {\n          // Save all Select2 classes\n          return clazz.indexOf('select2-') === 0;\n        });\n        var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n        sourceClasses = sourceClasses.filter(function (clazz) {\n          // Only copy non-Select2 classes\n          return clazz.indexOf('select2-') !== 0;\n        });\n        var replacements = destinationClasses.concat(sourceClasses);\n        dest.setAttribute('class', replacements.join(' '));\n      };\n\n      return Utils;\n    });\n    S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n      function Results($element, options, dataAdapter) {\n        this.$element = $element;\n        this.data = dataAdapter;\n        this.options = options;\n\n        Results.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(Results, Utils.Observable);\n\n      Results.prototype.render = function () {\n        var $results = $('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');\n\n        if (this.options.get('multiple')) {\n          $results.attr('aria-multiselectable', 'true');\n        }\n\n        this.$results = $results;\n        return $results;\n      };\n\n      Results.prototype.clear = function () {\n        this.$results.empty();\n      };\n\n      Results.prototype.displayMessage = function (params) {\n        var escapeMarkup = this.options.get('escapeMarkup');\n        this.clear();\n        this.hideLoading();\n        var $message = $('<li role=\"alert\" aria-live=\"assertive\"' + ' class=\"select2-results__option\"></li>');\n        var message = this.options.get('translations').get(params.message);\n        $message.append(escapeMarkup(message(params.args)));\n        $message[0].className += ' select2-results__message';\n        this.$results.append($message);\n      };\n\n      Results.prototype.hideMessages = function () {\n        this.$results.find('.select2-results__message').remove();\n      };\n\n      Results.prototype.append = function (data) {\n        this.hideLoading();\n        var $options = [];\n\n        if (data.results == null || data.results.length === 0) {\n          if (this.$results.children().length === 0) {\n            this.trigger('results:message', {\n              message: 'noResults'\n            });\n          }\n\n          return;\n        }\n\n        data.results = this.sort(data.results);\n\n        for (var d = 0; d < data.results.length; d++) {\n          var item = data.results[d];\n          var $option = this.option(item);\n          $options.push($option);\n        }\n\n        this.$results.append($options);\n      };\n\n      Results.prototype.position = function ($results, $dropdown) {\n        var $resultsContainer = $dropdown.find('.select2-results');\n        $resultsContainer.append($results);\n      };\n\n      Results.prototype.sort = function (data) {\n        var sorter = this.options.get('sorter');\n        return sorter(data);\n      };\n\n      Results.prototype.highlightFirstItem = function () {\n        var $options = this.$results.find('.select2-results__option--selectable');\n        var $selected = $options.filter('.select2-results__option--selected'); // Check if there are any selected options\n\n        if ($selected.length > 0) {\n          // If there are selected options, highlight the first\n          $selected.first().trigger('mouseenter');\n        } else {\n          // If there are no selected options, highlight the first option\n          // in the dropdown\n          $options.first().trigger('mouseenter');\n        }\n\n        this.ensureHighlightVisible();\n      };\n\n      Results.prototype.setClasses = function () {\n        var self = this;\n        this.data.current(function (selected) {\n          var selectedIds = selected.map(function (s) {\n            return s.id.toString();\n          });\n          var $options = self.$results.find('.select2-results__option--selectable');\n          $options.each(function () {\n            var $option = $(this);\n            var item = Utils.GetData(this, 'data'); // id needs to be converted to a string when comparing\n\n            var id = '' + item.id;\n\n            if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) {\n              this.classList.add('select2-results__option--selected');\n              $option.attr('aria-selected', 'true');\n            } else {\n              this.classList.remove('select2-results__option--selected');\n              $option.attr('aria-selected', 'false');\n            }\n          });\n        });\n      };\n\n      Results.prototype.showLoading = function (params) {\n        this.hideLoading();\n        var loadingMore = this.options.get('translations').get('searching');\n        var loading = {\n          disabled: true,\n          loading: true,\n          text: loadingMore(params)\n        };\n        var $loading = this.option(loading);\n        $loading.className += ' loading-results';\n        this.$results.prepend($loading);\n      };\n\n      Results.prototype.hideLoading = function () {\n        this.$results.find('.loading-results').remove();\n      };\n\n      Results.prototype.option = function (data) {\n        var option = document.createElement('li');\n        option.classList.add('select2-results__option');\n        option.classList.add('select2-results__option--selectable');\n        var attrs = {\n          'role': 'option'\n        };\n        var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n\n        if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n          attrs['aria-disabled'] = 'true';\n          option.classList.remove('select2-results__option--selectable');\n          option.classList.add('select2-results__option--disabled');\n        }\n\n        if (data.id == null) {\n          option.classList.remove('select2-results__option--selectable');\n        }\n\n        if (data._resultId != null) {\n          option.id = data._resultId;\n        }\n\n        if (data.title) {\n          option.title = data.title;\n        }\n\n        if (data.children) {\n          attrs.role = 'group';\n          attrs['aria-label'] = data.text;\n          option.classList.remove('select2-results__option--selectable');\n          option.classList.add('select2-results__option--group');\n        }\n\n        for (var attr in attrs) {\n          var val = attrs[attr];\n          option.setAttribute(attr, val);\n        }\n\n        if (data.children) {\n          var $option = $(option);\n          var label = document.createElement('strong');\n          label.className = 'select2-results__group';\n          this.template(data, label);\n          var $children = [];\n\n          for (var c = 0; c < data.children.length; c++) {\n            var child = data.children[c];\n            var $child = this.option(child);\n            $children.push($child);\n          }\n\n          var $childrenContainer = $('<ul></ul>', {\n            'class': 'select2-results__options select2-results__options--nested',\n            'role': 'none'\n          });\n          $childrenContainer.append($children);\n          $option.append(label);\n          $option.append($childrenContainer);\n        } else {\n          this.template(data, option);\n        }\n\n        Utils.StoreData(option, 'data', data);\n        return option;\n      };\n\n      Results.prototype.bind = function (container, $container) {\n        var self = this;\n        var id = container.id + '-results';\n        this.$results.attr('id', id);\n        container.on('results:all', function (params) {\n          self.clear();\n          self.append(params.data);\n\n          if (container.isOpen()) {\n            self.setClasses();\n            self.highlightFirstItem();\n          }\n        });\n        container.on('results:append', function (params) {\n          self.append(params.data);\n\n          if (container.isOpen()) {\n            self.setClasses();\n          }\n        });\n        container.on('query', function (params) {\n          self.hideMessages();\n          self.showLoading(params);\n        });\n        container.on('select', function () {\n          if (!container.isOpen()) {\n            return;\n          }\n\n          self.setClasses();\n\n          if (self.options.get('scrollAfterSelect')) {\n            self.highlightFirstItem();\n          }\n        });\n        container.on('unselect', function () {\n          if (!container.isOpen()) {\n            return;\n          }\n\n          self.setClasses();\n\n          if (self.options.get('scrollAfterSelect')) {\n            self.highlightFirstItem();\n          }\n        });\n        container.on('open', function () {\n          // When the dropdown is open, aria-expended=\"true\"\n          self.$results.attr('aria-expanded', 'true');\n          self.$results.attr('aria-hidden', 'false');\n          self.setClasses();\n          self.ensureHighlightVisible();\n        });\n        container.on('close', function () {\n          // When the dropdown is closed, aria-expended=\"false\"\n          self.$results.attr('aria-expanded', 'false');\n          self.$results.attr('aria-hidden', 'true');\n          self.$results.removeAttr('aria-activedescendant');\n        });\n        container.on('results:toggle', function () {\n          var $highlighted = self.getHighlightedResults();\n\n          if ($highlighted.length === 0) {\n            return;\n          }\n\n          $highlighted.trigger('mouseup');\n        });\n        container.on('results:select', function () {\n          var $highlighted = self.getHighlightedResults();\n\n          if ($highlighted.length === 0) {\n            return;\n          }\n\n          var data = Utils.GetData($highlighted[0], 'data');\n\n          if ($highlighted.hasClass('select2-results__option--selected')) {\n            self.trigger('close', {});\n          } else {\n            self.trigger('select', {\n              data: data\n            });\n          }\n        });\n        container.on('results:previous', function () {\n          var $highlighted = self.getHighlightedResults();\n          var $options = self.$results.find('.select2-results__option--selectable');\n          var currentIndex = $options.index($highlighted); // If we are already at the top, don't move further\n          // If no options, currentIndex will be -1\n\n          if (currentIndex <= 0) {\n            return;\n          }\n\n          var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first\n\n          if ($highlighted.length === 0) {\n            nextIndex = 0;\n          }\n\n          var $next = $options.eq(nextIndex);\n          $next.trigger('mouseenter');\n          var currentOffset = self.$results.offset().top;\n          var nextTop = $next.offset().top;\n          var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n          if (nextIndex === 0) {\n            self.$results.scrollTop(0);\n          } else if (nextTop - currentOffset < 0) {\n            self.$results.scrollTop(nextOffset);\n          }\n        });\n        container.on('results:next', function () {\n          var $highlighted = self.getHighlightedResults();\n          var $options = self.$results.find('.select2-results__option--selectable');\n          var currentIndex = $options.index($highlighted);\n          var nextIndex = currentIndex + 1; // If we are at the last option, stay there\n\n          if (nextIndex >= $options.length) {\n            return;\n          }\n\n          var $next = $options.eq(nextIndex);\n          $next.trigger('mouseenter');\n          var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n          var nextBottom = $next.offset().top + $next.outerHeight(false);\n          var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n          if (nextIndex === 0) {\n            self.$results.scrollTop(0);\n          } else if (nextBottom > currentOffset) {\n            self.$results.scrollTop(nextOffset);\n          }\n        });\n        container.on('results:focus', function (params) {\n          params.element[0].classList.add('select2-results__option--highlighted');\n          params.element[0].setAttribute('aria-selected', 'true');\n        });\n        container.on('results:message', function (params) {\n          self.displayMessage(params);\n        });\n\n        if ($.fn.mousewheel) {\n          this.$results.on('mousewheel', function (e) {\n            var top = self.$results.scrollTop();\n            var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n            var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n            var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n            if (isAtTop) {\n              self.$results.scrollTop(0);\n              e.preventDefault();\n              e.stopPropagation();\n            } else if (isAtBottom) {\n              self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n              e.preventDefault();\n              e.stopPropagation();\n            }\n          });\n        }\n\n        this.$results.on('mouseup', '.select2-results__option--selectable', function (evt) {\n          var $this = $(this);\n          var data = Utils.GetData(this, 'data');\n\n          if ($this.hasClass('select2-results__option--selected')) {\n            if (self.options.get('multiple')) {\n              self.trigger('unselect', {\n                originalEvent: evt,\n                data: data\n              });\n            } else {\n              self.trigger('close', {});\n            }\n\n            return;\n          }\n\n          self.trigger('select', {\n            originalEvent: evt,\n            data: data\n          });\n        });\n        this.$results.on('mouseenter', '.select2-results__option--selectable', function (evt) {\n          var data = Utils.GetData(this, 'data');\n          self.getHighlightedResults().removeClass('select2-results__option--highlighted').attr('aria-selected', 'false');\n          self.trigger('results:focus', {\n            data: data,\n            element: $(this)\n          });\n        });\n      };\n\n      Results.prototype.getHighlightedResults = function () {\n        var $highlighted = this.$results.find('.select2-results__option--highlighted');\n        return $highlighted;\n      };\n\n      Results.prototype.destroy = function () {\n        this.$results.remove();\n      };\n\n      Results.prototype.ensureHighlightVisible = function () {\n        var $highlighted = this.getHighlightedResults();\n\n        if ($highlighted.length === 0) {\n          return;\n        }\n\n        var $options = this.$results.find('.select2-results__option--selectable');\n        var currentIndex = $options.index($highlighted);\n        var currentOffset = this.$results.offset().top;\n        var nextTop = $highlighted.offset().top;\n        var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n        var offsetDelta = nextTop - currentOffset;\n        nextOffset -= $highlighted.outerHeight(false) * 2;\n\n        if (currentIndex <= 2) {\n          this.$results.scrollTop(0);\n        } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n          this.$results.scrollTop(nextOffset);\n        }\n      };\n\n      Results.prototype.template = function (result, container) {\n        var template = this.options.get('templateResult');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        var content = template(result, container);\n\n        if (content == null) {\n          container.style.display = 'none';\n        } else if (typeof content === 'string') {\n          container.innerHTML = escapeMarkup(content);\n        } else {\n          $(container).append(content);\n        }\n      };\n\n      return Results;\n    });\n    S2.define('select2/keys', [], function () {\n      var KEYS = {\n        BACKSPACE: 8,\n        TAB: 9,\n        ENTER: 13,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        ESC: 27,\n        SPACE: 32,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        END: 35,\n        HOME: 36,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        DELETE: 46\n      };\n      return KEYS;\n    });\n    S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n      function BaseSelection($element, options) {\n        this.$element = $element;\n        this.options = options;\n\n        BaseSelection.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(BaseSelection, Utils.Observable);\n\n      BaseSelection.prototype.render = function () {\n        var $selection = $('<span class=\"select2-selection\" role=\"combobox\" ' + ' aria-haspopup=\"true\" aria-expanded=\"false\">' + '</span>');\n        this._tabindex = 0;\n\n        if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n          this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n        } else if (this.$element.attr('tabindex') != null) {\n          this._tabindex = this.$element.attr('tabindex');\n        }\n\n        $selection.attr('title', this.$element.attr('title'));\n        $selection.attr('tabindex', this._tabindex);\n        $selection.attr('aria-disabled', 'false');\n        this.$selection = $selection;\n        return $selection;\n      };\n\n      BaseSelection.prototype.bind = function (container, $container) {\n        var self = this;\n        var resultsId = container.id + '-results';\n        this.container = container;\n        this.$selection.on('focus', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this.$selection.on('blur', function (evt) {\n          self._handleBlur(evt);\n        });\n        this.$selection.on('keydown', function (evt) {\n          self.trigger('keypress', evt);\n\n          if (evt.which === KEYS.SPACE) {\n            evt.preventDefault();\n          }\n        });\n        container.on('results:focus', function (params) {\n          self.$selection.attr('aria-activedescendant', params.data._resultId);\n        });\n        container.on('selection:update', function (params) {\n          self.update(params.data);\n        });\n        container.on('open', function () {\n          // When the dropdown is open, aria-expanded=\"true\"\n          self.$selection.attr('aria-expanded', 'true');\n          self.$selection.attr('aria-owns', resultsId);\n\n          self._attachCloseHandler(container);\n        });\n        container.on('close', function () {\n          // When the dropdown is closed, aria-expanded=\"false\"\n          self.$selection.attr('aria-expanded', 'false');\n          self.$selection.removeAttr('aria-activedescendant');\n          self.$selection.removeAttr('aria-owns');\n          self.$selection.trigger('focus');\n\n          self._detachCloseHandler(container);\n        });\n        container.on('enable', function () {\n          self.$selection.attr('tabindex', self._tabindex);\n          self.$selection.attr('aria-disabled', 'false');\n        });\n        container.on('disable', function () {\n          self.$selection.attr('tabindex', '-1');\n          self.$selection.attr('aria-disabled', 'true');\n        });\n      };\n\n      BaseSelection.prototype._handleBlur = function (evt) {\n        var self = this; // This needs to be delayed as the active element is the body when the tab\n        // key is pressed, possibly along with others.\n\n        window.setTimeout(function () {\n          // Don't trigger `blur` if the focus is still in the selection\n          if (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n            return;\n          }\n\n          self.trigger('blur', evt);\n        }, 1);\n      };\n\n      BaseSelection.prototype._attachCloseHandler = function (container) {\n        $(document.body).on('mousedown.select2.' + container.id, function (e) {\n          var $target = $(e.target);\n          var $select = $target.closest('.select2');\n          var $all = $('.select2.select2-container--open');\n          $all.each(function () {\n            if (this == $select[0]) {\n              return;\n            }\n\n            var $element = Utils.GetData(this, 'element'); // Renamed function. @edited\n            // old: $element.select2('close');\n\n            $element.SUIselect2('close');\n          });\n        });\n      };\n\n      BaseSelection.prototype._detachCloseHandler = function (container) {\n        $(document.body).off('mousedown.select2.' + container.id);\n      };\n\n      BaseSelection.prototype.position = function ($selection, $container) {\n        var $selectionContainer = $container.find('.selection');\n        $selectionContainer.append($selection);\n      };\n\n      BaseSelection.prototype.destroy = function () {\n        this._detachCloseHandler(this.container);\n      };\n\n      BaseSelection.prototype.update = function (data) {\n        throw new Error('The `update` method must be defined in child classes.');\n      };\n      /**\n       * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n       * object.\n       *\n       * @return {true} if the instance is not disabled.\n       * @return {false} if the instance is disabled.\n       */\n\n\n      BaseSelection.prototype.isEnabled = function () {\n        return !this.isDisabled();\n      };\n      /**\n       * Helper method to abstract the \"disabled\" state of this object.\n       *\n       * @return {true} if the disabled option is true.\n       * @return {false} if the disabled option is false.\n       */\n\n\n      BaseSelection.prototype.isDisabled = function () {\n        return this.options.get('disabled');\n      };\n\n      return BaseSelection;\n    });\n    S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n      function SingleSelection() {\n        SingleSelection.__super__.constructor.apply(this, arguments);\n      }\n\n      Utils.Extend(SingleSelection, BaseSelection);\n\n      SingleSelection.prototype.render = function () {\n        var $selection = SingleSelection.__super__.render.call(this);\n\n        $selection[0].classList.add('select2-selection--single'); // Assign SUI icon to select button. @edited\n\n        $selection.html('<span class=\"select2-selection__rendered\"></span>' + '<span class=\"select2-selection__arrow\" role=\"presentation\">' + '<span class=\"sui-icon-chevron-down sui-sm\" aria-hidden=\"true\"></span>' + '</span>');\n        return $selection;\n      };\n\n      SingleSelection.prototype.bind = function (container, $container) {\n        var self = this;\n\n        SingleSelection.__super__.bind.apply(this, arguments);\n\n        var id = container.id + '-container';\n        this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n        this.$selection.attr('aria-labelledby', id);\n        this.$selection.attr('aria-controls', id);\n        this.$selection.on('mousedown', function (evt) {\n          // Only respond to left clicks\n          if (evt.which !== 1) {\n            return;\n          }\n\n          self.trigger('toggle', {\n            originalEvent: evt\n          });\n        });\n        this.$selection.on('focus', function (evt) {// User focuses on the container\n        });\n        this.$selection.on('blur', function (evt) {// User exits the container\n        });\n        container.on('focus', function (evt) {\n          if (!container.isOpen()) {\n            self.$selection.trigger('focus');\n          }\n        });\n      };\n\n      SingleSelection.prototype.clear = function () {\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        $rendered.empty();\n        $rendered.removeAttr('title'); // clear tooltip on empty\n      };\n\n      SingleSelection.prototype.display = function (data, container) {\n        var template = this.options.get('templateSelection');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        return escapeMarkup(template(data, container));\n      };\n\n      SingleSelection.prototype.selectionContainer = function () {\n        return $('<span></span>');\n      };\n\n      SingleSelection.prototype.update = function (data) {\n        // Add icon when variables is empty. @edited\n        if (data.length === 0) {\n          this.clear();\n\n          if ('vars' === this.options.get('theme')) {\n            this.$selection.find('.select2-selection__rendered').html('<span class=\"sui-icon-plus-circle sui-md\" aria-hidden=\"true\"></span>');\n          }\n\n          return;\n        }\n\n        var selection = data[0];\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        var formatted = this.display(selection, $rendered);\n        $rendered.empty().append(formatted);\n        var title = selection.title || selection.text;\n\n        if (title) {\n          $rendered.attr('title', title);\n        } else {\n          $rendered.removeAttr('title');\n        }\n      };\n\n      return SingleSelection;\n    });\n    S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n      function MultipleSelection($element, options) {\n        MultipleSelection.__super__.constructor.apply(this, arguments);\n      }\n\n      Utils.Extend(MultipleSelection, BaseSelection);\n\n      MultipleSelection.prototype.render = function () {\n        var $selection = MultipleSelection.__super__.render.call(this);\n\n        $selection[0].classList.add('select2-selection--multiple');\n        $selection.html('<ul class=\"select2-selection__rendered\"></ul>');\n        return $selection;\n      };\n\n      MultipleSelection.prototype.bind = function (container, $container) {\n        var self = this;\n\n        MultipleSelection.__super__.bind.apply(this, arguments);\n\n        var id = container.id + '-container';\n        this.$selection.find('.select2-selection__rendered').attr('id', id);\n        this.$selection.on('click', function (evt) {\n          self.trigger('toggle', {\n            originalEvent: evt\n          });\n        });\n        this.$selection.on('click', '.sui-button-icon', function (evt) {\n          // Ignore the event if it is disabled\n          if (self.isDisabled()) {\n            return;\n          }\n\n          var $remove = $(this);\n          var $selection = $remove.parent();\n          var data = Utils.GetData($selection[0], 'data');\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        });\n        this.$selection.on('keydown', '.sui-button-icon', function (evt) {\n          // Ignore the event if it is disabled\n          if (self.isDisabled()) {\n            return;\n          }\n\n          evt.stopPropagation();\n        });\n      };\n\n      MultipleSelection.prototype.clear = function () {\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        $rendered.empty();\n        $rendered.removeAttr('title');\n        $rendered.removeClass('has-option-selected');\n      };\n\n      MultipleSelection.prototype.display = function (data, container) {\n        var template = this.options.get('templateSelection');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        return escapeMarkup(template(data, container));\n      };\n\n      MultipleSelection.prototype.selectionContainer = function () {\n        var $container = $('<li class=\"select2-selection__choice\">' + '<span class=\"select2-selection__choice__display\"></span>' + '<button type=\"button\" class=\"sui-button-icon\" ' + 'tabindex=\"-1\">' + '<span class=\"sui-icon-close sui-sm\" aria-hidden=\"true\"></span>' + '</button>' + '</li>');\n        return $container;\n      };\n\n      MultipleSelection.prototype.update = function (data) {\n        this.clear();\n\n        if (data.length === 0) {\n          return;\n        }\n\n        var $selections = [];\n        var selectionIdPrefix = this.$selection.find('.select2-selection__rendered').attr('id') + '-choice-';\n\n        for (var d = 0; d < data.length; d++) {\n          var selection = data[d];\n          var $selection = this.selectionContainer();\n          var formatted = this.display(selection, $selection);\n          var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n          if (selection.id) {\n            selectionId += selection.id;\n          } else {\n            selectionId += Utils.generateChars(4);\n          }\n\n          $selection.find('.select2-selection__choice__display').append(formatted).attr('id', selectionId);\n          var title = selection.title || selection.text;\n\n          if (title) {\n            $selection.attr('title', title);\n          }\n\n          var removeItem = this.options.get('translations').get('removeItem');\n          var $remove = $selection.find('.sui-button-icon');\n          $remove.attr('title', removeItem());\n          $remove.attr('aria-label', removeItem());\n          $remove.attr('aria-describedby', selectionId);\n          Utils.StoreData($selection[0], 'data', selection);\n          $selections.push($selection);\n        }\n\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        $rendered.append($selections).addClass('has-option-selected');\n      };\n\n      return MultipleSelection;\n    });\n    S2.define('select2/selection/placeholder', [], function () {\n      function Placeholder(decorated, $element, options) {\n        this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n        decorated.call(this, $element, options);\n      }\n\n      Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n        if (typeof placeholder === 'string') {\n          placeholder = {\n            id: '',\n            text: placeholder\n          };\n        }\n\n        return placeholder;\n      };\n\n      Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n        var $placeholder = this.selectionContainer();\n        $placeholder.html(this.display(placeholder));\n        $placeholder[0].classList.add('select2-selection__placeholder');\n        $placeholder[0].classList.remove('select2-selection__choice');\n        var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text();\n        this.$selection.find('.select2-selection__rendered').attr('title', placeholderTitle);\n        return $placeholder;\n      };\n\n      Placeholder.prototype.update = function (decorated, data) {\n        var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n        var multipleSelections = data.length > 1;\n\n        if (multipleSelections || singlePlaceholder) {\n          return decorated.call(this, data);\n        }\n\n        this.clear();\n        var $placeholder = this.createPlaceholder(this.placeholder);\n        this.$selection.find('.select2-selection__rendered').append($placeholder);\n      };\n\n      return Placeholder;\n    });\n    S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n      function AllowClear() {}\n\n      AllowClear.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n\n        if (this.placeholder == null) {\n          if (this.options.get('debug') && window.console && console.error) {\n            console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n          }\n        }\n\n        this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n          self._handleClear(evt);\n        });\n        container.on('keypress', function (evt) {\n          self._handleKeyboardClear(evt, container);\n        });\n      };\n\n      AllowClear.prototype._handleClear = function (_, evt) {\n        // Ignore the event if it is disabled\n        if (this.isDisabled()) {\n          return;\n        }\n\n        var $clear = this.$selection.find('.select2-selection__clear'); // Ignore the event if nothing has been selected\n\n        if ($clear.length === 0) {\n          return;\n        }\n\n        evt.stopPropagation();\n        var data = Utils.GetData($clear[0], 'data');\n        var previousVal = this.$element.val();\n        this.$element.val(this.placeholder.id);\n        var unselectData = {\n          data: data\n        };\n        this.trigger('clear', unselectData);\n\n        if (unselectData.prevented) {\n          this.$element.val(previousVal);\n          return;\n        }\n\n        for (var d = 0; d < data.length; d++) {\n          unselectData = {\n            data: data[d]\n          }; // Trigger the `unselect` event, so people can prevent it from being\n          // cleared.\n\n          this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out.\n\n          if (unselectData.prevented) {\n            this.$element.val(previousVal);\n            return;\n          }\n        }\n\n        this.$element.trigger('input').trigger('change');\n        this.trigger('toggle', {});\n      };\n\n      AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n        if (container.isOpen()) {\n          return;\n        }\n\n        if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n          this._handleClear(evt);\n        }\n      };\n\n      AllowClear.prototype.update = function (decorated, data) {\n        decorated.call(this, data);\n        this.$selection.find('.select2-selection__clear').remove();\n        this.$selection[0].classList.remove('select2-selection--clearable');\n\n        if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n          return;\n        }\n\n        var selectionId = this.$selection.find('.select2-selection__rendered').attr('id');\n        var removeAll = this.options.get('translations').get('removeAllItems');\n        var $remove = $('<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' + '<span aria-hidden=\"true\">&times;</span>' + '</button>');\n        $remove.attr('title', removeAll());\n        $remove.attr('aria-label', removeAll());\n        $remove.attr('aria-describedby', selectionId);\n        Utils.StoreData($remove[0], 'data', data);\n        this.$selection.prepend($remove);\n        this.$selection[0].classList.add('select2-selection--clearable');\n      };\n\n      return AllowClear;\n    });\n    S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n      function Search(decorated, $element, options) {\n        decorated.call(this, $element, options);\n      }\n\n      Search.prototype.render = function (decorated) {\n        var searchLabel = this.options.get('translations').get('search');\n        var $search = $('<span class=\"select2-search select2-search--inline\">' + '<textarea class=\"select2-search__field\"' + ' type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' + '</textarea>' + '</span>');\n        this.$searchContainer = $search;\n        this.$search = $search.find('textarea');\n        this.$search.prop('autocomplete', this.options.get('autocomplete'));\n        this.$search.attr('aria-label', searchLabel());\n        var $rendered = decorated.call(this);\n\n        this._transferTabIndex();\n\n        $rendered.append(this.$searchContainer);\n        return $rendered;\n      };\n\n      Search.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var resultsId = container.id + '-results';\n        var selectionId = container.id + '-container';\n        decorated.call(this, container, $container);\n        self.$search.attr('aria-describedby', selectionId);\n        container.on('open', function () {\n          self.$search.attr('aria-controls', resultsId);\n          self.$search.trigger('focus');\n        });\n        container.on('close', function () {\n          self.$search.val('');\n          self.resizeSearch();\n          self.$search.removeAttr('aria-controls');\n          self.$search.removeAttr('aria-activedescendant');\n          self.$search.trigger('focus');\n        });\n        container.on('enable', function () {\n          self.$search.prop('disabled', false);\n\n          self._transferTabIndex();\n        });\n        container.on('disable', function () {\n          self.$search.prop('disabled', true);\n        });\n        container.on('focus', function (evt) {\n          self.$search.trigger('focus');\n        });\n        container.on('results:focus', function (params) {\n          if (params.data._resultId) {\n            self.$search.attr('aria-activedescendant', params.data._resultId);\n          } else {\n            self.$search.removeAttr('aria-activedescendant');\n          }\n        });\n        this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n          self._handleBlur(evt);\n        });\n        this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n          evt.stopPropagation();\n          self.trigger('keypress', evt);\n          self._keyUpPrevented = evt.isDefaultPrevented();\n          var key = evt.which;\n\n          if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n            var $previousChoice = self.$selection.find('.select2-selection__choice').last();\n\n            if ($previousChoice.length > 0) {\n              var item = Utils.GetData($previousChoice[0], 'data');\n              self.searchRemoveChoice(item);\n              evt.preventDefault();\n            }\n          }\n        });\n        this.$selection.on('click', '.select2-search--inline', function (evt) {\n          if (self.$search.val()) {\n            evt.stopPropagation();\n          }\n        }); // Try to detect the IE version should the `documentMode` property that\n        // is stored on the document. This is only implemented in IE and is\n        // slightly cleaner than doing a user agent check.\n        // This property is not available in Edge, but Edge also doesn't have\n        // this bug.\n\n        var msie = document.documentMode;\n        var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event\n        // This will prevent double-triggering of events for browsers which support\n        // both the `keyup` and `input` events.\n\n        this.$selection.on('input.searchcheck', '.select2-search--inline', function (evt) {\n          // IE will trigger the `input` event when a placeholder is used on a\n          // search box. To get around this issue, we are forced to ignore all\n          // `input` events in IE and keep using `keyup`.\n          if (disableInputEvents) {\n            self.$selection.off('input.search input.searchcheck');\n            return;\n          } // Unbind the duplicated `keyup` event\n\n\n          self.$selection.off('keyup.search');\n        });\n        this.$selection.on('keyup.search input.search', '.select2-search--inline', function (evt) {\n          // IE will trigger the `input` event when a placeholder is used on a\n          // search box. To get around this issue, we are forced to ignore all\n          // `input` events in IE and keep using `keyup`.\n          if (disableInputEvents && evt.type === 'input') {\n            self.$selection.off('input.search input.searchcheck');\n            return;\n          }\n\n          var key = evt.which; // We can freely ignore events from modifier keys\n\n          if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n            return;\n          } // Tabbing will be handled during the `keydown` phase\n\n\n          if (key == KEYS.TAB) {\n            return;\n          }\n\n          self.handleSearch(evt);\n        });\n      };\n      /**\n       * This method will transfer the tabindex attribute from the rendered\n       * selection to the search box. This allows for the search box to be used as\n       * the primary focus instead of the selection container.\n       *\n       * @private\n       */\n\n\n      Search.prototype._transferTabIndex = function (decorated) {\n        this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n        this.$selection.attr('tabindex', '-1');\n      };\n\n      Search.prototype.createPlaceholder = function (decorated, placeholder) {\n        this.$search.attr('placeholder', placeholder.text);\n      };\n\n      Search.prototype.update = function (decorated, data) {\n        var searchHadFocus = this.$search[0] == document.activeElement;\n        this.$search.attr('placeholder', '');\n        decorated.call(this, data);\n        this.resizeSearch();\n\n        if (searchHadFocus) {\n          this.$search.trigger('focus');\n        }\n      };\n\n      Search.prototype.handleSearch = function () {\n        this.resizeSearch();\n\n        if (!this._keyUpPrevented) {\n          var input = this.$search.val();\n          this.trigger('query', {\n            term: input\n          });\n        }\n\n        this._keyUpPrevented = false;\n      };\n\n      Search.prototype.searchRemoveChoice = function (decorated, item) {\n        this.trigger('unselect', {\n          data: item\n        });\n        this.$search.val(item.text);\n        this.handleSearch();\n      };\n\n      Search.prototype.resizeSearch = function () {\n        this.$search.css('width', '25px');\n        var width = '100%';\n\n        if (this.$search.attr('placeholder') === '') {\n          var minimumWidth = this.$search.val().length + 1;\n          width = minimumWidth * 0.75 + 'em';\n        }\n\n        this.$search.css('width', width);\n      };\n\n      return Search;\n    });\n    S2.define('select2/selection/selectionCss', ['../utils'], function (Utils) {\n      function SelectionCSS() {}\n\n      SelectionCSS.prototype.render = function (decorated) {\n        var $selection = decorated.call(this);\n        var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n        if (selectionCssClass.indexOf(':all:') !== -1) {\n          selectionCssClass = selectionCssClass.replace(':all:', '');\n          Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n        }\n\n        $selection.addClass(selectionCssClass);\n        return $selection;\n      };\n\n      return SelectionCSS;\n    });\n    S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n      function EventRelay() {}\n\n      EventRelay.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n        var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n        decorated.call(this, container, $container);\n        container.on('*', function (name, params) {\n          // Ignore events that should not be relayed\n          if (relayEvents.indexOf(name) === -1) {\n            return;\n          } // The parameters should always be an object\n\n\n          params = params || {}; // Generate the jQuery event for the Select2 event\n\n          var evt = $.Event('select2:' + name, {\n            params: params\n          });\n          self.$element.trigger(evt); // Only handle preventable events if it was one\n\n          if (preventableEvents.indexOf(name) === -1) {\n            return;\n          }\n\n          params.prevented = evt.isDefaultPrevented();\n        });\n      };\n\n      return EventRelay;\n    });\n    S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n      function Translation(dict) {\n        this.dict = dict || {};\n      }\n\n      Translation.prototype.all = function () {\n        return this.dict;\n      };\n\n      Translation.prototype.get = function (key) {\n        return this.dict[key];\n      };\n\n      Translation.prototype.extend = function (translation) {\n        this.dict = $.extend({}, translation.all(), this.dict);\n      }; // Static functions\n\n\n      Translation._cache = {};\n\n      Translation.loadPath = function (path) {\n        if (!(path in Translation._cache)) {\n          var translations = require(path);\n\n          Translation._cache[path] = translations;\n        }\n\n        return new Translation(Translation._cache[path]);\n      };\n\n      return Translation;\n    });\n    S2.define('select2/diacritics', [], function () {\n      var diacritics = {\n        \"\\u24B6\": 'A',\n        \"\\uFF21\": 'A',\n        \"\\xC0\": 'A',\n        \"\\xC1\": 'A',\n        \"\\xC2\": 'A',\n        \"\\u1EA6\": 'A',\n        \"\\u1EA4\": 'A',\n        \"\\u1EAA\": 'A',\n        \"\\u1EA8\": 'A',\n        \"\\xC3\": 'A',\n        \"\\u0100\": 'A',\n        \"\\u0102\": 'A',\n        \"\\u1EB0\": 'A',\n        \"\\u1EAE\": 'A',\n        \"\\u1EB4\": 'A',\n        \"\\u1EB2\": 'A',\n        \"\\u0226\": 'A',\n        \"\\u01E0\": 'A',\n        \"\\xC4\": 'A',\n        \"\\u01DE\": 'A',\n        \"\\u1EA2\": 'A',\n        \"\\xC5\": 'A',\n        \"\\u01FA\": 'A',\n        \"\\u01CD\": 'A',\n        \"\\u0200\": 'A',\n        \"\\u0202\": 'A',\n        \"\\u1EA0\": 'A',\n        \"\\u1EAC\": 'A',\n        \"\\u1EB6\": 'A',\n        \"\\u1E00\": 'A',\n        \"\\u0104\": 'A',\n        \"\\u023A\": 'A',\n        \"\\u2C6F\": 'A',\n        \"\\uA732\": 'AA',\n        \"\\xC6\": 'AE',\n        \"\\u01FC\": 'AE',\n        \"\\u01E2\": 'AE',\n        \"\\uA734\": 'AO',\n        \"\\uA736\": 'AU',\n        \"\\uA738\": 'AV',\n        \"\\uA73A\": 'AV',\n        \"\\uA73C\": 'AY',\n        \"\\u24B7\": 'B',\n        \"\\uFF22\": 'B',\n        \"\\u1E02\": 'B',\n        \"\\u1E04\": 'B',\n        \"\\u1E06\": 'B',\n        \"\\u0243\": 'B',\n        \"\\u0182\": 'B',\n        \"\\u0181\": 'B',\n        \"\\u24B8\": 'C',\n        \"\\uFF23\": 'C',\n        \"\\u0106\": 'C',\n        \"\\u0108\": 'C',\n        \"\\u010A\": 'C',\n        \"\\u010C\": 'C',\n        \"\\xC7\": 'C',\n        \"\\u1E08\": 'C',\n        \"\\u0187\": 'C',\n        \"\\u023B\": 'C',\n        \"\\uA73E\": 'C',\n        \"\\u24B9\": 'D',\n        \"\\uFF24\": 'D',\n        \"\\u1E0A\": 'D',\n        \"\\u010E\": 'D',\n        \"\\u1E0C\": 'D',\n        \"\\u1E10\": 'D',\n        \"\\u1E12\": 'D',\n        \"\\u1E0E\": 'D',\n        \"\\u0110\": 'D',\n        \"\\u018B\": 'D',\n        \"\\u018A\": 'D',\n        \"\\u0189\": 'D',\n        \"\\uA779\": 'D',\n        \"\\u01F1\": 'DZ',\n        \"\\u01C4\": 'DZ',\n        \"\\u01F2\": 'Dz',\n        \"\\u01C5\": 'Dz',\n        \"\\u24BA\": 'E',\n        \"\\uFF25\": 'E',\n        \"\\xC8\": 'E',\n        \"\\xC9\": 'E',\n        \"\\xCA\": 'E',\n        \"\\u1EC0\": 'E',\n        \"\\u1EBE\": 'E',\n        \"\\u1EC4\": 'E',\n        \"\\u1EC2\": 'E',\n        \"\\u1EBC\": 'E',\n        \"\\u0112\": 'E',\n        \"\\u1E14\": 'E',\n        \"\\u1E16\": 'E',\n        \"\\u0114\": 'E',\n        \"\\u0116\": 'E',\n        \"\\xCB\": 'E',\n        \"\\u1EBA\": 'E',\n        \"\\u011A\": 'E',\n        \"\\u0204\": 'E',\n        \"\\u0206\": 'E',\n        \"\\u1EB8\": 'E',\n        \"\\u1EC6\": 'E',\n        \"\\u0228\": 'E',\n        \"\\u1E1C\": 'E',\n        \"\\u0118\": 'E',\n        \"\\u1E18\": 'E',\n        \"\\u1E1A\": 'E',\n        \"\\u0190\": 'E',\n        \"\\u018E\": 'E',\n        \"\\u24BB\": 'F',\n        \"\\uFF26\": 'F',\n        \"\\u1E1E\": 'F',\n        \"\\u0191\": 'F',\n        \"\\uA77B\": 'F',\n        \"\\u24BC\": 'G',\n        \"\\uFF27\": 'G',\n        \"\\u01F4\": 'G',\n        \"\\u011C\": 'G',\n        \"\\u1E20\": 'G',\n        \"\\u011E\": 'G',\n        \"\\u0120\": 'G',\n        \"\\u01E6\": 'G',\n        \"\\u0122\": 'G',\n        \"\\u01E4\": 'G',\n        \"\\u0193\": 'G',\n        \"\\uA7A0\": 'G',\n        \"\\uA77D\": 'G',\n        \"\\uA77E\": 'G',\n        \"\\u24BD\": 'H',\n        \"\\uFF28\": 'H',\n        \"\\u0124\": 'H',\n        \"\\u1E22\": 'H',\n        \"\\u1E26\": 'H',\n        \"\\u021E\": 'H',\n        \"\\u1E24\": 'H',\n        \"\\u1E28\": 'H',\n        \"\\u1E2A\": 'H',\n        \"\\u0126\": 'H',\n        \"\\u2C67\": 'H',\n        \"\\u2C75\": 'H',\n        \"\\uA78D\": 'H',\n        \"\\u24BE\": 'I',\n        \"\\uFF29\": 'I',\n        \"\\xCC\": 'I',\n        \"\\xCD\": 'I',\n        \"\\xCE\": 'I',\n        \"\\u0128\": 'I',\n        \"\\u012A\": 'I',\n        \"\\u012C\": 'I',\n        \"\\u0130\": 'I',\n        \"\\xCF\": 'I',\n        \"\\u1E2E\": 'I',\n        \"\\u1EC8\": 'I',\n        \"\\u01CF\": 'I',\n        \"\\u0208\": 'I',\n        \"\\u020A\": 'I',\n        \"\\u1ECA\": 'I',\n        \"\\u012E\": 'I',\n        \"\\u1E2C\": 'I',\n        \"\\u0197\": 'I',\n        \"\\u24BF\": 'J',\n        \"\\uFF2A\": 'J',\n        \"\\u0134\": 'J',\n        \"\\u0248\": 'J',\n        \"\\u24C0\": 'K',\n        \"\\uFF2B\": 'K',\n        \"\\u1E30\": 'K',\n        \"\\u01E8\": 'K',\n        \"\\u1E32\": 'K',\n        \"\\u0136\": 'K',\n        \"\\u1E34\": 'K',\n        \"\\u0198\": 'K',\n        \"\\u2C69\": 'K',\n        \"\\uA740\": 'K',\n        \"\\uA742\": 'K',\n        \"\\uA744\": 'K',\n        \"\\uA7A2\": 'K',\n        \"\\u24C1\": 'L',\n        \"\\uFF2C\": 'L',\n        \"\\u013F\": 'L',\n        \"\\u0139\": 'L',\n        \"\\u013D\": 'L',\n        \"\\u1E36\": 'L',\n        \"\\u1E38\": 'L',\n        \"\\u013B\": 'L',\n        \"\\u1E3C\": 'L',\n        \"\\u1E3A\": 'L',\n        \"\\u0141\": 'L',\n        \"\\u023D\": 'L',\n        \"\\u2C62\": 'L',\n        \"\\u2C60\": 'L',\n        \"\\uA748\": 'L',\n        \"\\uA746\": 'L',\n        \"\\uA780\": 'L',\n        \"\\u01C7\": 'LJ',\n        \"\\u01C8\": 'Lj',\n        \"\\u24C2\": 'M',\n        \"\\uFF2D\": 'M',\n        \"\\u1E3E\": 'M',\n        \"\\u1E40\": 'M',\n        \"\\u1E42\": 'M',\n        \"\\u2C6E\": 'M',\n        \"\\u019C\": 'M',\n        \"\\u24C3\": 'N',\n        \"\\uFF2E\": 'N',\n        \"\\u01F8\": 'N',\n        \"\\u0143\": 'N',\n        \"\\xD1\": 'N',\n        \"\\u1E44\": 'N',\n        \"\\u0147\": 'N',\n        \"\\u1E46\": 'N',\n        \"\\u0145\": 'N',\n        \"\\u1E4A\": 'N',\n        \"\\u1E48\": 'N',\n        \"\\u0220\": 'N',\n        \"\\u019D\": 'N',\n        \"\\uA790\": 'N',\n        \"\\uA7A4\": 'N',\n        \"\\u01CA\": 'NJ',\n        \"\\u01CB\": 'Nj',\n        \"\\u24C4\": 'O',\n        \"\\uFF2F\": 'O',\n        \"\\xD2\": 'O',\n        \"\\xD3\": 'O',\n        \"\\xD4\": 'O',\n        \"\\u1ED2\": 'O',\n        \"\\u1ED0\": 'O',\n        \"\\u1ED6\": 'O',\n        \"\\u1ED4\": 'O',\n        \"\\xD5\": 'O',\n        \"\\u1E4C\": 'O',\n        \"\\u022C\": 'O',\n        \"\\u1E4E\": 'O',\n        \"\\u014C\": 'O',\n        \"\\u1E50\": 'O',\n        \"\\u1E52\": 'O',\n        \"\\u014E\": 'O',\n        \"\\u022E\": 'O',\n        \"\\u0230\": 'O',\n        \"\\xD6\": 'O',\n        \"\\u022A\": 'O',\n        \"\\u1ECE\": 'O',\n        \"\\u0150\": 'O',\n        \"\\u01D1\": 'O',\n        \"\\u020C\": 'O',\n        \"\\u020E\": 'O',\n        \"\\u01A0\": 'O',\n        \"\\u1EDC\": 'O',\n        \"\\u1EDA\": 'O',\n        \"\\u1EE0\": 'O',\n        \"\\u1EDE\": 'O',\n        \"\\u1EE2\": 'O',\n        \"\\u1ECC\": 'O',\n        \"\\u1ED8\": 'O',\n        \"\\u01EA\": 'O',\n        \"\\u01EC\": 'O',\n        \"\\xD8\": 'O',\n        \"\\u01FE\": 'O',\n        \"\\u0186\": 'O',\n        \"\\u019F\": 'O',\n        \"\\uA74A\": 'O',\n        \"\\uA74C\": 'O',\n        \"\\u0152\": 'OE',\n        \"\\u01A2\": 'OI',\n        \"\\uA74E\": 'OO',\n        \"\\u0222\": 'OU',\n        \"\\u24C5\": 'P',\n        \"\\uFF30\": 'P',\n        \"\\u1E54\": 'P',\n        \"\\u1E56\": 'P',\n        \"\\u01A4\": 'P',\n        \"\\u2C63\": 'P',\n        \"\\uA750\": 'P',\n        \"\\uA752\": 'P',\n        \"\\uA754\": 'P',\n        \"\\u24C6\": 'Q',\n        \"\\uFF31\": 'Q',\n        \"\\uA756\": 'Q',\n        \"\\uA758\": 'Q',\n        \"\\u024A\": 'Q',\n        \"\\u24C7\": 'R',\n        \"\\uFF32\": 'R',\n        \"\\u0154\": 'R',\n        \"\\u1E58\": 'R',\n        \"\\u0158\": 'R',\n        \"\\u0210\": 'R',\n        \"\\u0212\": 'R',\n        \"\\u1E5A\": 'R',\n        \"\\u1E5C\": 'R',\n        \"\\u0156\": 'R',\n        \"\\u1E5E\": 'R',\n        \"\\u024C\": 'R',\n        \"\\u2C64\": 'R',\n        \"\\uA75A\": 'R',\n        \"\\uA7A6\": 'R',\n        \"\\uA782\": 'R',\n        \"\\u24C8\": 'S',\n        \"\\uFF33\": 'S',\n        \"\\u1E9E\": 'S',\n        \"\\u015A\": 'S',\n        \"\\u1E64\": 'S',\n        \"\\u015C\": 'S',\n        \"\\u1E60\": 'S',\n        \"\\u0160\": 'S',\n        \"\\u1E66\": 'S',\n        \"\\u1E62\": 'S',\n        \"\\u1E68\": 'S',\n        \"\\u0218\": 'S',\n        \"\\u015E\": 'S',\n        \"\\u2C7E\": 'S',\n        \"\\uA7A8\": 'S',\n        \"\\uA784\": 'S',\n        \"\\u24C9\": 'T',\n        \"\\uFF34\": 'T',\n        \"\\u1E6A\": 'T',\n        \"\\u0164\": 'T',\n        \"\\u1E6C\": 'T',\n        \"\\u021A\": 'T',\n        \"\\u0162\": 'T',\n        \"\\u1E70\": 'T',\n        \"\\u1E6E\": 'T',\n        \"\\u0166\": 'T',\n        \"\\u01AC\": 'T',\n        \"\\u01AE\": 'T',\n        \"\\u023E\": 'T',\n        \"\\uA786\": 'T',\n        \"\\uA728\": 'TZ',\n        \"\\u24CA\": 'U',\n        \"\\uFF35\": 'U',\n        \"\\xD9\": 'U',\n        \"\\xDA\": 'U',\n        \"\\xDB\": 'U',\n        \"\\u0168\": 'U',\n        \"\\u1E78\": 'U',\n        \"\\u016A\": 'U',\n        \"\\u1E7A\": 'U',\n        \"\\u016C\": 'U',\n        \"\\xDC\": 'U',\n        \"\\u01DB\": 'U',\n        \"\\u01D7\": 'U',\n        \"\\u01D5\": 'U',\n        \"\\u01D9\": 'U',\n        \"\\u1EE6\": 'U',\n        \"\\u016E\": 'U',\n        \"\\u0170\": 'U',\n        \"\\u01D3\": 'U',\n        \"\\u0214\": 'U',\n        \"\\u0216\": 'U',\n        \"\\u01AF\": 'U',\n        \"\\u1EEA\": 'U',\n        \"\\u1EE8\": 'U',\n        \"\\u1EEE\": 'U',\n        \"\\u1EEC\": 'U',\n        \"\\u1EF0\": 'U',\n        \"\\u1EE4\": 'U',\n        \"\\u1E72\": 'U',\n        \"\\u0172\": 'U',\n        \"\\u1E76\": 'U',\n        \"\\u1E74\": 'U',\n        \"\\u0244\": 'U',\n        \"\\u24CB\": 'V',\n        \"\\uFF36\": 'V',\n        \"\\u1E7C\": 'V',\n        \"\\u1E7E\": 'V',\n        \"\\u01B2\": 'V',\n        \"\\uA75E\": 'V',\n        \"\\u0245\": 'V',\n        \"\\uA760\": 'VY',\n        \"\\u24CC\": 'W',\n        \"\\uFF37\": 'W',\n        \"\\u1E80\": 'W',\n        \"\\u1E82\": 'W',\n        \"\\u0174\": 'W',\n        \"\\u1E86\": 'W',\n        \"\\u1E84\": 'W',\n        \"\\u1E88\": 'W',\n        \"\\u2C72\": 'W',\n        \"\\u24CD\": 'X',\n        \"\\uFF38\": 'X',\n        \"\\u1E8A\": 'X',\n        \"\\u1E8C\": 'X',\n        \"\\u24CE\": 'Y',\n        \"\\uFF39\": 'Y',\n        \"\\u1EF2\": 'Y',\n        \"\\xDD\": 'Y',\n        \"\\u0176\": 'Y',\n        \"\\u1EF8\": 'Y',\n        \"\\u0232\": 'Y',\n        \"\\u1E8E\": 'Y',\n        \"\\u0178\": 'Y',\n        \"\\u1EF6\": 'Y',\n        \"\\u1EF4\": 'Y',\n        \"\\u01B3\": 'Y',\n        \"\\u024E\": 'Y',\n        \"\\u1EFE\": 'Y',\n        \"\\u24CF\": 'Z',\n        \"\\uFF3A\": 'Z',\n        \"\\u0179\": 'Z',\n        \"\\u1E90\": 'Z',\n        \"\\u017B\": 'Z',\n        \"\\u017D\": 'Z',\n        \"\\u1E92\": 'Z',\n        \"\\u1E94\": 'Z',\n        \"\\u01B5\": 'Z',\n        \"\\u0224\": 'Z',\n        \"\\u2C7F\": 'Z',\n        \"\\u2C6B\": 'Z',\n        \"\\uA762\": 'Z',\n        \"\\u24D0\": 'a',\n        \"\\uFF41\": 'a',\n        \"\\u1E9A\": 'a',\n        \"\\xE0\": 'a',\n        \"\\xE1\": 'a',\n        \"\\xE2\": 'a',\n        \"\\u1EA7\": 'a',\n        \"\\u1EA5\": 'a',\n        \"\\u1EAB\": 'a',\n        \"\\u1EA9\": 'a',\n        \"\\xE3\": 'a',\n        \"\\u0101\": 'a',\n        \"\\u0103\": 'a',\n        \"\\u1EB1\": 'a',\n        \"\\u1EAF\": 'a',\n        \"\\u1EB5\": 'a',\n        \"\\u1EB3\": 'a',\n        \"\\u0227\": 'a',\n        \"\\u01E1\": 'a',\n        \"\\xE4\": 'a',\n        \"\\u01DF\": 'a',\n        \"\\u1EA3\": 'a',\n        \"\\xE5\": 'a',\n        \"\\u01FB\": 'a',\n        \"\\u01CE\": 'a',\n        \"\\u0201\": 'a',\n        \"\\u0203\": 'a',\n        \"\\u1EA1\": 'a',\n        \"\\u1EAD\": 'a',\n        \"\\u1EB7\": 'a',\n        \"\\u1E01\": 'a',\n        \"\\u0105\": 'a',\n        \"\\u2C65\": 'a',\n        \"\\u0250\": 'a',\n        \"\\uA733\": 'aa',\n        \"\\xE6\": 'ae',\n        \"\\u01FD\": 'ae',\n        \"\\u01E3\": 'ae',\n        \"\\uA735\": 'ao',\n        \"\\uA737\": 'au',\n        \"\\uA739\": 'av',\n        \"\\uA73B\": 'av',\n        \"\\uA73D\": 'ay',\n        \"\\u24D1\": 'b',\n        \"\\uFF42\": 'b',\n        \"\\u1E03\": 'b',\n        \"\\u1E05\": 'b',\n        \"\\u1E07\": 'b',\n        \"\\u0180\": 'b',\n        \"\\u0183\": 'b',\n        \"\\u0253\": 'b',\n        \"\\u24D2\": 'c',\n        \"\\uFF43\": 'c',\n        \"\\u0107\": 'c',\n        \"\\u0109\": 'c',\n        \"\\u010B\": 'c',\n        \"\\u010D\": 'c',\n        \"\\xE7\": 'c',\n        \"\\u1E09\": 'c',\n        \"\\u0188\": 'c',\n        \"\\u023C\": 'c',\n        \"\\uA73F\": 'c',\n        \"\\u2184\": 'c',\n        \"\\u24D3\": 'd',\n        \"\\uFF44\": 'd',\n        \"\\u1E0B\": 'd',\n        \"\\u010F\": 'd',\n        \"\\u1E0D\": 'd',\n        \"\\u1E11\": 'd',\n        \"\\u1E13\": 'd',\n        \"\\u1E0F\": 'd',\n        \"\\u0111\": 'd',\n        \"\\u018C\": 'd',\n        \"\\u0256\": 'd',\n        \"\\u0257\": 'd',\n        \"\\uA77A\": 'd',\n        \"\\u01F3\": 'dz',\n        \"\\u01C6\": 'dz',\n        \"\\u24D4\": 'e',\n        \"\\uFF45\": 'e',\n        \"\\xE8\": 'e',\n        \"\\xE9\": 'e',\n        \"\\xEA\": 'e',\n        \"\\u1EC1\": 'e',\n        \"\\u1EBF\": 'e',\n        \"\\u1EC5\": 'e',\n        \"\\u1EC3\": 'e',\n        \"\\u1EBD\": 'e',\n        \"\\u0113\": 'e',\n        \"\\u1E15\": 'e',\n        \"\\u1E17\": 'e',\n        \"\\u0115\": 'e',\n        \"\\u0117\": 'e',\n        \"\\xEB\": 'e',\n        \"\\u1EBB\": 'e',\n        \"\\u011B\": 'e',\n        \"\\u0205\": 'e',\n        \"\\u0207\": 'e',\n        \"\\u1EB9\": 'e',\n        \"\\u1EC7\": 'e',\n        \"\\u0229\": 'e',\n        \"\\u1E1D\": 'e',\n        \"\\u0119\": 'e',\n        \"\\u1E19\": 'e',\n        \"\\u1E1B\": 'e',\n        \"\\u0247\": 'e',\n        \"\\u025B\": 'e',\n        \"\\u01DD\": 'e',\n        \"\\u24D5\": 'f',\n        \"\\uFF46\": 'f',\n        \"\\u1E1F\": 'f',\n        \"\\u0192\": 'f',\n        \"\\uA77C\": 'f',\n        \"\\u24D6\": 'g',\n        \"\\uFF47\": 'g',\n        \"\\u01F5\": 'g',\n        \"\\u011D\": 'g',\n        \"\\u1E21\": 'g',\n        \"\\u011F\": 'g',\n        \"\\u0121\": 'g',\n        \"\\u01E7\": 'g',\n        \"\\u0123\": 'g',\n        \"\\u01E5\": 'g',\n        \"\\u0260\": 'g',\n        \"\\uA7A1\": 'g',\n        \"\\u1D79\": 'g',\n        \"\\uA77F\": 'g',\n        \"\\u24D7\": 'h',\n        \"\\uFF48\": 'h',\n        \"\\u0125\": 'h',\n        \"\\u1E23\": 'h',\n        \"\\u1E27\": 'h',\n        \"\\u021F\": 'h',\n        \"\\u1E25\": 'h',\n        \"\\u1E29\": 'h',\n        \"\\u1E2B\": 'h',\n        \"\\u1E96\": 'h',\n        \"\\u0127\": 'h',\n        \"\\u2C68\": 'h',\n        \"\\u2C76\": 'h',\n        \"\\u0265\": 'h',\n        \"\\u0195\": 'hv',\n        \"\\u24D8\": 'i',\n        \"\\uFF49\": 'i',\n        \"\\xEC\": 'i',\n        \"\\xED\": 'i',\n        \"\\xEE\": 'i',\n        \"\\u0129\": 'i',\n        \"\\u012B\": 'i',\n        \"\\u012D\": 'i',\n        \"\\xEF\": 'i',\n        \"\\u1E2F\": 'i',\n        \"\\u1EC9\": 'i',\n        \"\\u01D0\": 'i',\n        \"\\u0209\": 'i',\n        \"\\u020B\": 'i',\n        \"\\u1ECB\": 'i',\n        \"\\u012F\": 'i',\n        \"\\u1E2D\": 'i',\n        \"\\u0268\": 'i',\n        \"\\u0131\": 'i',\n        \"\\u24D9\": 'j',\n        \"\\uFF4A\": 'j',\n        \"\\u0135\": 'j',\n        \"\\u01F0\": 'j',\n        \"\\u0249\": 'j',\n        \"\\u24DA\": 'k',\n        \"\\uFF4B\": 'k',\n        \"\\u1E31\": 'k',\n        \"\\u01E9\": 'k',\n        \"\\u1E33\": 'k',\n        \"\\u0137\": 'k',\n        \"\\u1E35\": 'k',\n        \"\\u0199\": 'k',\n        \"\\u2C6A\": 'k',\n        \"\\uA741\": 'k',\n        \"\\uA743\": 'k',\n        \"\\uA745\": 'k',\n        \"\\uA7A3\": 'k',\n        \"\\u24DB\": 'l',\n        \"\\uFF4C\": 'l',\n        \"\\u0140\": 'l',\n        \"\\u013A\": 'l',\n        \"\\u013E\": 'l',\n        \"\\u1E37\": 'l',\n        \"\\u1E39\": 'l',\n        \"\\u013C\": 'l',\n        \"\\u1E3D\": 'l',\n        \"\\u1E3B\": 'l',\n        \"\\u017F\": 'l',\n        \"\\u0142\": 'l',\n        \"\\u019A\": 'l',\n        \"\\u026B\": 'l',\n        \"\\u2C61\": 'l',\n        \"\\uA749\": 'l',\n        \"\\uA781\": 'l',\n        \"\\uA747\": 'l',\n        \"\\u01C9\": 'lj',\n        \"\\u24DC\": 'm',\n        \"\\uFF4D\": 'm',\n        \"\\u1E3F\": 'm',\n        \"\\u1E41\": 'm',\n        \"\\u1E43\": 'm',\n        \"\\u0271\": 'm',\n        \"\\u026F\": 'm',\n        \"\\u24DD\": 'n',\n        \"\\uFF4E\": 'n',\n        \"\\u01F9\": 'n',\n        \"\\u0144\": 'n',\n        \"\\xF1\": 'n',\n        \"\\u1E45\": 'n',\n        \"\\u0148\": 'n',\n        \"\\u1E47\": 'n',\n        \"\\u0146\": 'n',\n        \"\\u1E4B\": 'n',\n        \"\\u1E49\": 'n',\n        \"\\u019E\": 'n',\n        \"\\u0272\": 'n',\n        \"\\u0149\": 'n',\n        \"\\uA791\": 'n',\n        \"\\uA7A5\": 'n',\n        \"\\u01CC\": 'nj',\n        \"\\u24DE\": 'o',\n        \"\\uFF4F\": 'o',\n        \"\\xF2\": 'o',\n        \"\\xF3\": 'o',\n        \"\\xF4\": 'o',\n        \"\\u1ED3\": 'o',\n        \"\\u1ED1\": 'o',\n        \"\\u1ED7\": 'o',\n        \"\\u1ED5\": 'o',\n        \"\\xF5\": 'o',\n        \"\\u1E4D\": 'o',\n        \"\\u022D\": 'o',\n        \"\\u1E4F\": 'o',\n        \"\\u014D\": 'o',\n        \"\\u1E51\": 'o',\n        \"\\u1E53\": 'o',\n        \"\\u014F\": 'o',\n        \"\\u022F\": 'o',\n        \"\\u0231\": 'o',\n        \"\\xF6\": 'o',\n        \"\\u022B\": 'o',\n        \"\\u1ECF\": 'o',\n        \"\\u0151\": 'o',\n        \"\\u01D2\": 'o',\n        \"\\u020D\": 'o',\n        \"\\u020F\": 'o',\n        \"\\u01A1\": 'o',\n        \"\\u1EDD\": 'o',\n        \"\\u1EDB\": 'o',\n        \"\\u1EE1\": 'o',\n        \"\\u1EDF\": 'o',\n        \"\\u1EE3\": 'o',\n        \"\\u1ECD\": 'o',\n        \"\\u1ED9\": 'o',\n        \"\\u01EB\": 'o',\n        \"\\u01ED\": 'o',\n        \"\\xF8\": 'o',\n        \"\\u01FF\": 'o',\n        \"\\u0254\": 'o',\n        \"\\uA74B\": 'o',\n        \"\\uA74D\": 'o',\n        \"\\u0275\": 'o',\n        \"\\u0153\": 'oe',\n        \"\\u01A3\": 'oi',\n        \"\\u0223\": 'ou',\n        \"\\uA74F\": 'oo',\n        \"\\u24DF\": 'p',\n        \"\\uFF50\": 'p',\n        \"\\u1E55\": 'p',\n        \"\\u1E57\": 'p',\n        \"\\u01A5\": 'p',\n        \"\\u1D7D\": 'p',\n        \"\\uA751\": 'p',\n        \"\\uA753\": 'p',\n        \"\\uA755\": 'p',\n        \"\\u24E0\": 'q',\n        \"\\uFF51\": 'q',\n        \"\\u024B\": 'q',\n        \"\\uA757\": 'q',\n        \"\\uA759\": 'q',\n        \"\\u24E1\": 'r',\n        \"\\uFF52\": 'r',\n        \"\\u0155\": 'r',\n        \"\\u1E59\": 'r',\n        \"\\u0159\": 'r',\n        \"\\u0211\": 'r',\n        \"\\u0213\": 'r',\n        \"\\u1E5B\": 'r',\n        \"\\u1E5D\": 'r',\n        \"\\u0157\": 'r',\n        \"\\u1E5F\": 'r',\n        \"\\u024D\": 'r',\n        \"\\u027D\": 'r',\n        \"\\uA75B\": 'r',\n        \"\\uA7A7\": 'r',\n        \"\\uA783\": 'r',\n        \"\\u24E2\": 's',\n        \"\\uFF53\": 's',\n        \"\\xDF\": 's',\n        \"\\u015B\": 's',\n        \"\\u1E65\": 's',\n        \"\\u015D\": 's',\n        \"\\u1E61\": 's',\n        \"\\u0161\": 's',\n        \"\\u1E67\": 's',\n        \"\\u1E63\": 's',\n        \"\\u1E69\": 's',\n        \"\\u0219\": 's',\n        \"\\u015F\": 's',\n        \"\\u023F\": 's',\n        \"\\uA7A9\": 's',\n        \"\\uA785\": 's',\n        \"\\u1E9B\": 's',\n        \"\\u24E3\": 't',\n        \"\\uFF54\": 't',\n        \"\\u1E6B\": 't',\n        \"\\u1E97\": 't',\n        \"\\u0165\": 't',\n        \"\\u1E6D\": 't',\n        \"\\u021B\": 't',\n        \"\\u0163\": 't',\n        \"\\u1E71\": 't',\n        \"\\u1E6F\": 't',\n        \"\\u0167\": 't',\n        \"\\u01AD\": 't',\n        \"\\u0288\": 't',\n        \"\\u2C66\": 't',\n        \"\\uA787\": 't',\n        \"\\uA729\": 'tz',\n        \"\\u24E4\": 'u',\n        \"\\uFF55\": 'u',\n        \"\\xF9\": 'u',\n        \"\\xFA\": 'u',\n        \"\\xFB\": 'u',\n        \"\\u0169\": 'u',\n        \"\\u1E79\": 'u',\n        \"\\u016B\": 'u',\n        \"\\u1E7B\": 'u',\n        \"\\u016D\": 'u',\n        \"\\xFC\": 'u',\n        \"\\u01DC\": 'u',\n        \"\\u01D8\": 'u',\n        \"\\u01D6\": 'u',\n        \"\\u01DA\": 'u',\n        \"\\u1EE7\": 'u',\n        \"\\u016F\": 'u',\n        \"\\u0171\": 'u',\n        \"\\u01D4\": 'u',\n        \"\\u0215\": 'u',\n        \"\\u0217\": 'u',\n        \"\\u01B0\": 'u',\n        \"\\u1EEB\": 'u',\n        \"\\u1EE9\": 'u',\n        \"\\u1EEF\": 'u',\n        \"\\u1EED\": 'u',\n        \"\\u1EF1\": 'u',\n        \"\\u1EE5\": 'u',\n        \"\\u1E73\": 'u',\n        \"\\u0173\": 'u',\n        \"\\u1E77\": 'u',\n        \"\\u1E75\": 'u',\n        \"\\u0289\": 'u',\n        \"\\u24E5\": 'v',\n        \"\\uFF56\": 'v',\n        \"\\u1E7D\": 'v',\n        \"\\u1E7F\": 'v',\n        \"\\u028B\": 'v',\n        \"\\uA75F\": 'v',\n        \"\\u028C\": 'v',\n        \"\\uA761\": 'vy',\n        \"\\u24E6\": 'w',\n        \"\\uFF57\": 'w',\n        \"\\u1E81\": 'w',\n        \"\\u1E83\": 'w',\n        \"\\u0175\": 'w',\n        \"\\u1E87\": 'w',\n        \"\\u1E85\": 'w',\n        \"\\u1E98\": 'w',\n        \"\\u1E89\": 'w',\n        \"\\u2C73\": 'w',\n        \"\\u24E7\": 'x',\n        \"\\uFF58\": 'x',\n        \"\\u1E8B\": 'x',\n        \"\\u1E8D\": 'x',\n        \"\\u24E8\": 'y',\n        \"\\uFF59\": 'y',\n        \"\\u1EF3\": 'y',\n        \"\\xFD\": 'y',\n        \"\\u0177\": 'y',\n        \"\\u1EF9\": 'y',\n        \"\\u0233\": 'y',\n        \"\\u1E8F\": 'y',\n        \"\\xFF\": 'y',\n        \"\\u1EF7\": 'y',\n        \"\\u1E99\": 'y',\n        \"\\u1EF5\": 'y',\n        \"\\u01B4\": 'y',\n        \"\\u024F\": 'y',\n        \"\\u1EFF\": 'y',\n        \"\\u24E9\": 'z',\n        \"\\uFF5A\": 'z',\n        \"\\u017A\": 'z',\n        \"\\u1E91\": 'z',\n        \"\\u017C\": 'z',\n        \"\\u017E\": 'z',\n        \"\\u1E93\": 'z',\n        \"\\u1E95\": 'z',\n        \"\\u01B6\": 'z',\n        \"\\u0225\": 'z',\n        \"\\u0240\": 'z',\n        \"\\u2C6C\": 'z',\n        \"\\uA763\": 'z',\n        \"\\u0386\": \"\\u0391\",\n        \"\\u0388\": \"\\u0395\",\n        \"\\u0389\": \"\\u0397\",\n        \"\\u038A\": \"\\u0399\",\n        \"\\u03AA\": \"\\u0399\",\n        \"\\u038C\": \"\\u039F\",\n        \"\\u038E\": \"\\u03A5\",\n        \"\\u03AB\": \"\\u03A5\",\n        \"\\u038F\": \"\\u03A9\",\n        \"\\u03AC\": \"\\u03B1\",\n        \"\\u03AD\": \"\\u03B5\",\n        \"\\u03AE\": \"\\u03B7\",\n        \"\\u03AF\": \"\\u03B9\",\n        \"\\u03CA\": \"\\u03B9\",\n        \"\\u0390\": \"\\u03B9\",\n        \"\\u03CC\": \"\\u03BF\",\n        \"\\u03CD\": \"\\u03C5\",\n        \"\\u03CB\": \"\\u03C5\",\n        \"\\u03B0\": \"\\u03C5\",\n        \"\\u03CE\": \"\\u03C9\",\n        \"\\u03C2\": \"\\u03C3\",\n        \"\\u2019\": '\\''\n      };\n      return diacritics;\n    });\n    S2.define('select2/data/base', ['../utils'], function (Utils) {\n      function BaseAdapter($element, options) {\n        BaseAdapter.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(BaseAdapter, Utils.Observable);\n\n      BaseAdapter.prototype.current = function (callback) {\n        throw new Error('The `current` method must be defined in child classes.');\n      };\n\n      BaseAdapter.prototype.query = function (params, callback) {\n        throw new Error('The `query` method must be defined in child classes.');\n      };\n\n      BaseAdapter.prototype.bind = function (container, $container) {// Can be implemented in subclasses\n      };\n\n      BaseAdapter.prototype.destroy = function () {// Can be implemented in subclasses\n      };\n\n      BaseAdapter.prototype.generateResultId = function (container, data) {\n        var id = container.id + '-result-';\n        id += Utils.generateChars(4);\n\n        if (data.id != null) {\n          id += '-' + data.id.toString();\n        } else {\n          id += '-' + Utils.generateChars(4);\n        }\n\n        return id;\n      };\n\n      return BaseAdapter;\n    });\n    S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n      function SelectAdapter($element, options) {\n        this.$element = $element;\n        this.options = options;\n\n        SelectAdapter.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(SelectAdapter, BaseAdapter);\n\n      SelectAdapter.prototype.current = function (callback) {\n        var self = this;\n        var data = Array.prototype.map.call(this.$element[0].querySelectorAll(':checked'), function (selectedElement) {\n          return self.item($(selectedElement));\n        });\n        callback(data);\n      };\n\n      SelectAdapter.prototype.select = function (data) {\n        var self = this;\n        data.selected = true; // If data.element is a DOM node, use it instead\n\n        if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n          data.element.selected = true;\n          this.$element.trigger('input').trigger('change');\n          return;\n        }\n\n        if (this.$element.prop('multiple')) {\n          this.current(function (currentData) {\n            var val = [];\n            data = [data];\n            data.push.apply(data, currentData);\n\n            for (var d = 0; d < data.length; d++) {\n              var id = data[d].id;\n\n              if (val.indexOf(id) === -1) {\n                val.push(id);\n              }\n            }\n\n            self.$element.val(val);\n            self.$element.trigger('input').trigger('change');\n          });\n        } else {\n          var val = data.id;\n          this.$element.val(val);\n          this.$element.trigger('input').trigger('change');\n        }\n      };\n\n      SelectAdapter.prototype.unselect = function (data) {\n        var self = this;\n\n        if (!this.$element.prop('multiple')) {\n          return;\n        }\n\n        data.selected = false;\n\n        if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n          data.element.selected = false;\n          this.$element.trigger('input').trigger('change');\n          return;\n        }\n\n        this.current(function (currentData) {\n          var val = [];\n\n          for (var d = 0; d < currentData.length; d++) {\n            var id = currentData[d].id;\n\n            if (id !== data.id && val.indexOf(id) === -1) {\n              val.push(id);\n            }\n          }\n\n          self.$element.val(val);\n          self.$element.trigger('input').trigger('change');\n        });\n      };\n\n      SelectAdapter.prototype.bind = function (container, $container) {\n        var self = this;\n        this.container = container;\n        container.on('select', function (params) {\n          self.select(params.data);\n        });\n        container.on('unselect', function (params) {\n          self.unselect(params.data);\n        });\n      };\n\n      SelectAdapter.prototype.destroy = function () {\n        // Remove anything added to child elements\n        this.$element.find('*').each(function () {\n          // Remove any custom data set by Select2\n          Utils.RemoveData(this);\n        });\n      };\n\n      SelectAdapter.prototype.query = function (params, callback) {\n        var data = [];\n        var self = this;\n        var $options = this.$element.children();\n        $options.each(function () {\n          if (this.tagName.toLowerCase() !== 'option' && this.tagName.toLowerCase() !== 'optgroup') {\n            return;\n          }\n\n          var $option = $(this);\n          var option = self.item($option);\n          var matches = self.matches(params, option);\n\n          if (matches !== null) {\n            data.push(matches);\n          }\n        });\n        callback({\n          results: data\n        });\n      };\n\n      SelectAdapter.prototype.addOptions = function ($options) {\n        this.$element.append($options);\n      };\n\n      SelectAdapter.prototype.option = function (data) {\n        var option;\n\n        if (data.children) {\n          option = document.createElement('optgroup');\n          option.label = data.text;\n        } else {\n          option = document.createElement('option');\n\n          if (option.textContent !== undefined) {\n            option.textContent = data.text;\n          } else {\n            option.innerText = data.text;\n          }\n        }\n\n        if (data.id !== undefined) {\n          option.value = data.id;\n        }\n\n        if (data.disabled) {\n          option.disabled = true;\n        }\n\n        if (data.selected) {\n          option.selected = true;\n        }\n\n        if (data.title) {\n          option.title = data.title;\n        }\n\n        var normalizedData = this._normalizeItem(data);\n\n        normalizedData.element = option; // Override the option's data with the combined data\n\n        Utils.StoreData(option, 'data', normalizedData);\n        return $(option);\n      };\n\n      SelectAdapter.prototype.item = function ($option) {\n        var data = {};\n        data = Utils.GetData($option[0], 'data');\n\n        if (data != null) {\n          return data;\n        }\n\n        var option = $option[0];\n\n        if (option.tagName.toLowerCase() === 'option') {\n          data = {\n            id: $option.val(),\n            text: $option.text(),\n            disabled: $option.prop('disabled'),\n            selected: $option.prop('selected'),\n            title: $option.prop('title')\n          };\n        } else if (option.tagName.toLowerCase() === 'optgroup') {\n          data = {\n            text: $option.prop('label'),\n            children: [],\n            title: $option.prop('title')\n          };\n          var $children = $option.children('option');\n          var children = [];\n\n          for (var c = 0; c < $children.length; c++) {\n            var $child = $($children[c]);\n            var child = this.item($child);\n            children.push(child);\n          }\n\n          data.children = children;\n        }\n\n        data = this._normalizeItem(data);\n        data.element = $option[0];\n        Utils.StoreData($option[0], 'data', data);\n        return data;\n      };\n\n      SelectAdapter.prototype._normalizeItem = function (item) {\n        if (item !== Object(item)) {\n          item = {\n            id: item,\n            text: item\n          };\n        }\n\n        item = $.extend({}, {\n          text: ''\n        }, item);\n        var defaults = {\n          selected: false,\n          disabled: false\n        };\n\n        if (item.id != null) {\n          item.id = item.id.toString();\n        }\n\n        if (item.text != null) {\n          item.text = item.text.toString();\n        }\n\n        if (item._resultId == null && item.id && this.container != null) {\n          item._resultId = this.generateResultId(this.container, item);\n        }\n\n        return $.extend({}, defaults, item);\n      };\n\n      SelectAdapter.prototype.matches = function (params, data) {\n        var matcher = this.options.get('matcher');\n        return matcher(params, data);\n      };\n\n      return SelectAdapter;\n    });\n    S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n      function ArrayAdapter($element, options) {\n        this._dataToConvert = options.get('data') || [];\n\n        ArrayAdapter.__super__.constructor.call(this, $element, options);\n      }\n\n      Utils.Extend(ArrayAdapter, SelectAdapter);\n\n      ArrayAdapter.prototype.bind = function (container, $container) {\n        ArrayAdapter.__super__.bind.call(this, container, $container);\n\n        this.addOptions(this.convertToOptions(this._dataToConvert));\n      };\n\n      ArrayAdapter.prototype.select = function (data) {\n        var $option = this.$element.find('option').filter(function (i, elm) {\n          return elm.value == data.id.toString();\n        });\n\n        if ($option.length === 0) {\n          $option = this.option(data);\n          this.addOptions($option);\n        }\n\n        ArrayAdapter.__super__.select.call(this, data);\n      };\n\n      ArrayAdapter.prototype.convertToOptions = function (data) {\n        var self = this;\n        var $existing = this.$element.find('option');\n        var existingIds = $existing.map(function () {\n          return self.item($(this)).id;\n        }).get();\n        var $options = []; // Filter out all items except for the one passed in the argument\n\n        function onlyItem(item) {\n          return function () {\n            return $(this).val() == item.id;\n          };\n        }\n\n        for (var d = 0; d < data.length; d++) {\n          var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data\n\n\n          if (existingIds.indexOf(item.id) >= 0) {\n            var $existingOption = $existing.filter(onlyItem(item));\n            var existingData = this.item($existingOption);\n            var newData = $.extend(true, {}, item, existingData);\n            var $newOption = this.option(newData);\n            $existingOption.replaceWith($newOption);\n            continue;\n          }\n\n          var $option = this.option(item);\n\n          if (item.children) {\n            var $children = this.convertToOptions(item.children);\n            $option.append($children);\n          }\n\n          $options.push($option);\n        }\n\n        return $options;\n      };\n\n      return ArrayAdapter;\n    });\n    S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n      function AjaxAdapter($element, options) {\n        this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n        if (this.ajaxOptions.processResults != null) {\n          this.processResults = this.ajaxOptions.processResults;\n        }\n\n        AjaxAdapter.__super__.constructor.call(this, $element, options);\n      }\n\n      Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n      AjaxAdapter.prototype._applyDefaults = function (options) {\n        var defaults = {\n          data: function data(params) {\n            return $.extend({}, params, {\n              q: params.term\n            });\n          },\n          transport: function transport(params, success, failure) {\n            var $request = $.ajax(params);\n            $request.then(success);\n            $request.fail(failure);\n            return $request;\n          }\n        };\n        return $.extend({}, defaults, options, true);\n      };\n\n      AjaxAdapter.prototype.processResults = function (results) {\n        return results;\n      };\n\n      AjaxAdapter.prototype.query = function (params, callback) {\n        var matches = [];\n        var self = this;\n\n        if (this._request != null) {\n          // JSONP requests cannot always be aborted\n          if (typeof this._request.abort === 'function') {\n            this._request.abort();\n          }\n\n          this._request = null;\n        }\n\n        var options = $.extend({\n          type: 'GET'\n        }, this.ajaxOptions);\n\n        if (typeof options.url === 'function') {\n          options.url = options.url.call(this.$element, params);\n        }\n\n        if (typeof options.data === 'function') {\n          options.data = options.data.call(this.$element, params);\n        }\n\n        function request() {\n          var $request = options.transport(options, function (data) {\n            var results = self.processResults(data, params);\n\n            if (self.options.get('debug') && window.console && console.error) {\n              // Check to make sure that the response included a `results` key.\n              if (!results || !results.results || !Array.isArray(results.results)) {\n                console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\n              }\n            }\n\n            callback(results);\n          }, function () {\n            // Attempt to detect if a request was aborted\n            // Only works if the transport exposes a status property\n            if ('status' in $request && ($request.status === 0 || $request.status === '0')) {\n              return;\n            }\n\n            self.trigger('results:message', {\n              message: 'errorLoading'\n            });\n          });\n          self._request = $request;\n        }\n\n        if (this.ajaxOptions.delay && params.term != null) {\n          if (this._queryTimeout) {\n            window.clearTimeout(this._queryTimeout);\n          }\n\n          this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n        } else {\n          request();\n        }\n      };\n\n      return AjaxAdapter;\n    });\n    S2.define('select2/data/tags', ['jquery'], function ($) {\n      function Tags(decorated, $element, options) {\n        var tags = options.get('tags');\n        var createTag = options.get('createTag');\n\n        if (createTag !== undefined) {\n          this.createTag = createTag;\n        }\n\n        var insertTag = options.get('insertTag');\n\n        if (insertTag !== undefined) {\n          this.insertTag = insertTag;\n        }\n\n        decorated.call(this, $element, options);\n\n        if (Array.isArray(tags)) {\n          for (var t = 0; t < tags.length; t++) {\n            var tag = tags[t];\n\n            var item = this._normalizeItem(tag);\n\n            var $option = this.option(item);\n            this.$element.append($option);\n          }\n        }\n      }\n\n      Tags.prototype.query = function (decorated, params, callback) {\n        var self = this;\n\n        this._removeOldTags();\n\n        if (params.term == null || params.page != null) {\n          decorated.call(this, params, callback);\n          return;\n        }\n\n        function wrapper(obj, child) {\n          var data = obj.results;\n\n          for (var i = 0; i < data.length; i++) {\n            var option = data[i];\n            var checkChildren = option.children != null && !wrapper({\n              results: option.children\n            }, true);\n            var optionText = (option.text || '').toUpperCase();\n            var paramsTerm = (params.term || '').toUpperCase();\n            var checkText = optionText === paramsTerm;\n\n            if (checkText || checkChildren) {\n              if (child) {\n                return false;\n              }\n\n              obj.data = data;\n              callback(obj);\n              return;\n            }\n          }\n\n          if (child) {\n            return true;\n          }\n\n          var tag = self.createTag(params);\n\n          if (tag != null) {\n            var $option = self.option(tag);\n            $option.attr('data-select2-tag', 'true');\n            self.addOptions([$option]);\n            self.insertTag(data, tag);\n          }\n\n          obj.results = data;\n          callback(obj);\n        }\n\n        decorated.call(this, params, wrapper);\n      };\n\n      Tags.prototype.createTag = function (decorated, params) {\n        if (params.term == null) {\n          return null;\n        }\n\n        var term = params.term.trim();\n\n        if (term === '') {\n          return null;\n        }\n\n        return {\n          id: term,\n          text: term\n        };\n      };\n\n      Tags.prototype.insertTag = function (_, data, tag) {\n        data.unshift(tag);\n      };\n\n      Tags.prototype._removeOldTags = function (_) {\n        var $options = this.$element.find('option[data-select2-tag]');\n        $options.each(function () {\n          if (this.selected) {\n            return;\n          }\n\n          $(this).remove();\n        });\n      };\n\n      return Tags;\n    });\n    S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n      function Tokenizer(decorated, $element, options) {\n        var tokenizer = options.get('tokenizer');\n\n        if (tokenizer !== undefined) {\n          this.tokenizer = tokenizer;\n        }\n\n        decorated.call(this, $element, options);\n      }\n\n      Tokenizer.prototype.bind = function (decorated, container, $container) {\n        decorated.call(this, container, $container);\n        this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n      };\n\n      Tokenizer.prototype.query = function (decorated, params, callback) {\n        var self = this;\n\n        function createAndSelect(data) {\n          // Normalize the data object so we can use it for checks\n          var item = self._normalizeItem(data); // Check if the data object already exists as a tag\n          // Select it if it doesn't\n\n\n          var $existingOptions = self.$element.find('option').filter(function () {\n            return $(this).val() === item.id;\n          }); // If an existing option wasn't found for it, create the option\n\n          if (!$existingOptions.length) {\n            var $option = self.option(item);\n            $option.attr('data-select2-tag', true);\n\n            self._removeOldTags();\n\n            self.addOptions([$option]);\n          } // Select the item, now that we know there is an option for it\n\n\n          select(item);\n        }\n\n        function select(data) {\n          self.trigger('select', {\n            data: data\n          });\n        }\n\n        params.term = params.term || '';\n        var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n        if (tokenData.term !== params.term) {\n          // Replace the search term if we have the search box\n          if (this.$search.length) {\n            this.$search.val(tokenData.term);\n            this.$search.trigger('focus');\n          }\n\n          params.term = tokenData.term;\n        }\n\n        decorated.call(this, params, callback);\n      };\n\n      Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n        var separators = options.get('tokenSeparators') || [];\n        var term = params.term;\n        var i = 0;\n\n        var createTag = this.createTag || function (params) {\n          return {\n            id: params.term,\n            text: params.term\n          };\n        };\n\n        while (i < term.length) {\n          var termChar = term[i];\n\n          if (separators.indexOf(termChar) === -1) {\n            i++;\n            continue;\n          }\n\n          var part = term.substr(0, i);\n          var partParams = $.extend({}, params, {\n            term: part\n          });\n          var data = createTag(partParams);\n\n          if (data == null) {\n            i++;\n            continue;\n          }\n\n          callback(data); // Reset the term to not include the tokenized portion\n\n          term = term.substr(i + 1) || '';\n          i = 0;\n        }\n\n        return {\n          term: term\n        };\n      };\n\n      return Tokenizer;\n    });\n    S2.define('select2/data/minimumInputLength', [], function () {\n      function MinimumInputLength(decorated, $e, options) {\n        this.minimumInputLength = options.get('minimumInputLength');\n        decorated.call(this, $e, options);\n      }\n\n      MinimumInputLength.prototype.query = function (decorated, params, callback) {\n        params.term = params.term || '';\n\n        if (params.term.length < this.minimumInputLength) {\n          this.trigger('results:message', {\n            message: 'inputTooShort',\n            args: {\n              minimum: this.minimumInputLength,\n              input: params.term,\n              params: params\n            }\n          });\n          return;\n        }\n\n        decorated.call(this, params, callback);\n      };\n\n      return MinimumInputLength;\n    });\n    S2.define('select2/data/maximumInputLength', [], function () {\n      function MaximumInputLength(decorated, $e, options) {\n        this.maximumInputLength = options.get('maximumInputLength');\n        decorated.call(this, $e, options);\n      }\n\n      MaximumInputLength.prototype.query = function (decorated, params, callback) {\n        params.term = params.term || '';\n\n        if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) {\n          this.trigger('results:message', {\n            message: 'inputTooLong',\n            args: {\n              maximum: this.maximumInputLength,\n              input: params.term,\n              params: params\n            }\n          });\n          return;\n        }\n\n        decorated.call(this, params, callback);\n      };\n\n      return MaximumInputLength;\n    });\n    S2.define('select2/data/maximumSelectionLength', [], function () {\n      function MaximumSelectionLength(decorated, $e, options) {\n        this.maximumSelectionLength = options.get('maximumSelectionLength');\n        decorated.call(this, $e, options);\n      }\n\n      MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('select', function () {\n          self._checkIfMaximumSelected();\n        });\n      };\n\n      MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n        var self = this;\n\n        this._checkIfMaximumSelected(function () {\n          decorated.call(self, params, callback);\n        });\n      };\n\n      MaximumSelectionLength.prototype._checkIfMaximumSelected = function (_, successCallback) {\n        var self = this;\n        this.current(function (currentData) {\n          var count = currentData != null ? currentData.length : 0;\n\n          if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n            self.trigger('results:message', {\n              message: 'maximumSelected',\n              args: {\n                maximum: self.maximumSelectionLength\n              }\n            });\n            return;\n          }\n\n          if (successCallback) {\n            successCallback();\n          }\n        });\n      };\n\n      return MaximumSelectionLength;\n    });\n    S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n      function Dropdown($element, options) {\n        this.$element = $element;\n        this.options = options;\n\n        Dropdown.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(Dropdown, Utils.Observable);\n\n      Dropdown.prototype.render = function () {\n        // Change dropdown classname and markup. @edited\n        var $dropdown = $('<span class=\"sui-select-dropdown\">' + '<span class=\"select2-results\"></span>' + '</span>');\n        $dropdown.attr('dir', this.options.get('dir'));\n        this.$dropdown = $dropdown;\n        return $dropdown;\n      };\n\n      Dropdown.prototype.bind = function () {// Should be implemented in subclasses\n      };\n\n      Dropdown.prototype.position = function ($dropdown, $container) {// Should be implemented in subclasses\n      };\n\n      Dropdown.prototype.destroy = function () {\n        // Remove the dropdown from the DOM\n        this.$dropdown.remove();\n      };\n\n      return Dropdown;\n    });\n    S2.define('select2/dropdown/search', ['jquery'], function ($) {\n      function Search() {}\n\n      Search.prototype.render = function (decorated) {\n        var $rendered = decorated.call(this);\n        var searchLabel = this.options.get('translations').get('search');\n        var $search = $('<span class=\"select2-search select2-search--dropdown\">' + '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' + '</span>');\n        this.$searchContainer = $search;\n        this.$search = $search.find('input');\n        this.$search.prop('autocomplete', this.options.get('autocomplete'));\n        this.$search.attr('aria-label', searchLabel());\n        $rendered.prepend($search);\n        return $rendered;\n      };\n\n      Search.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var resultsId = container.id + '-results';\n        decorated.call(this, container, $container);\n        this.$search.on('keydown', function (evt) {\n          self.trigger('keypress', evt);\n          self._keyUpPrevented = evt.isDefaultPrevented();\n        }); // Workaround for browsers which do not support the `input` event\n        // This will prevent double-triggering of events for browsers which support\n        // both the `keyup` and `input` events.\n\n        this.$search.on('input', function (evt) {\n          // Unbind the duplicated `keyup` event\n          $(this).off('keyup');\n        });\n        this.$search.on('keyup input', function (evt) {\n          self.handleSearch(evt);\n        });\n        container.on('open', function () {\n          self.$search.attr('tabindex', 0);\n          self.$search.attr('aria-controls', resultsId);\n          self.$search.trigger('focus');\n          window.setTimeout(function () {\n            self.$search.trigger('focus');\n          }, 0);\n        });\n        container.on('close', function () {\n          self.$search.attr('tabindex', -1);\n          self.$search.removeAttr('aria-controls');\n          self.$search.removeAttr('aria-activedescendant');\n          self.$search.val('');\n          self.$search.trigger('blur');\n        });\n        container.on('focus', function () {\n          if (!container.isOpen()) {\n            self.$search.trigger('focus');\n          }\n        });\n        container.on('results:all', function (params) {\n          if (params.query.term == null || params.query.term === '') {\n            var showSearch = self.showSearch(params);\n\n            if (showSearch) {\n              self.$searchContainer[0].classList.remove('select2-search--hide');\n            } else {\n              self.$searchContainer[0].classList.add('select2-search--hide');\n            }\n          }\n        });\n        container.on('results:focus', function (params) {\n          if (params.data._resultId) {\n            self.$search.attr('aria-activedescendant', params.data._resultId);\n          } else {\n            self.$search.removeAttr('aria-activedescendant');\n          }\n        });\n      };\n\n      Search.prototype.handleSearch = function (evt) {\n        if (!this._keyUpPrevented) {\n          var input = this.$search.val();\n          this.trigger('query', {\n            term: input\n          });\n        }\n\n        this._keyUpPrevented = false;\n      };\n\n      Search.prototype.showSearch = function (_, params) {\n        return true;\n      };\n\n      return Search;\n    });\n    S2.define('select2/dropdown/hidePlaceholder', [], function () {\n      function HidePlaceholder(decorated, $element, options, dataAdapter) {\n        this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n        decorated.call(this, $element, options, dataAdapter);\n      }\n\n      HidePlaceholder.prototype.append = function (decorated, data) {\n        data.results = this.removePlaceholder(data.results);\n        decorated.call(this, data);\n      };\n\n      HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n        if (typeof placeholder === 'string') {\n          placeholder = {\n            id: '',\n            text: placeholder\n          };\n        }\n\n        return placeholder;\n      };\n\n      HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n        var modifiedData = data.slice(0);\n\n        for (var d = data.length - 1; d >= 0; d--) {\n          var item = data[d];\n\n          if (this.placeholder.id === item.id) {\n            modifiedData.splice(d, 1);\n          }\n        }\n\n        return modifiedData;\n      };\n\n      return HidePlaceholder;\n    });\n    S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n      function InfiniteScroll(decorated, $element, options, dataAdapter) {\n        this.lastParams = {};\n        decorated.call(this, $element, options, dataAdapter);\n        this.$loadingMore = this.createLoadingMore();\n        this.loading = false;\n      }\n\n      InfiniteScroll.prototype.append = function (decorated, data) {\n        this.$loadingMore.remove();\n        this.loading = false;\n        decorated.call(this, data);\n\n        if (this.showLoadingMore(data)) {\n          this.$results.append(this.$loadingMore);\n          this.loadMoreIfNeeded();\n        }\n      };\n\n      InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('query', function (params) {\n          self.lastParams = params;\n          self.loading = true;\n        });\n        container.on('query:append', function (params) {\n          self.lastParams = params;\n          self.loading = true;\n        });\n        this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n      };\n\n      InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n        var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n\n        if (this.loading || !isLoadMoreVisible) {\n          return;\n        }\n\n        var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n        var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);\n\n        if (currentOffset + 50 >= loadingMoreOffset) {\n          this.loadMore();\n        }\n      };\n\n      InfiniteScroll.prototype.loadMore = function () {\n        this.loading = true;\n        var params = $.extend({}, {\n          page: 1\n        }, this.lastParams);\n        params.page++;\n        this.trigger('query:append', params);\n      };\n\n      InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n        return data.pagination && data.pagination.more;\n      };\n\n      InfiniteScroll.prototype.createLoadingMore = function () {\n        var $option = $('<li ' + 'class=\"select2-results__option select2-results__option--load-more\"' + 'role=\"option\" aria-disabled=\"true\"></li>');\n        var message = this.options.get('translations').get('loadingMore');\n        $option.html(message(this.lastParams));\n        return $option;\n      };\n\n      return InfiniteScroll;\n    });\n    S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n      function AttachBody(decorated, $element, options) {\n        this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n        decorated.call(this, $element, options);\n      }\n\n      AttachBody.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('open', function () {\n          self._showDropdown();\n\n          self._attachPositioningHandler(container); // Must bind after the results handlers to ensure correct sizing\n\n\n          self._bindContainerResultHandlers(container);\n        });\n        container.on('close', function () {\n          self._hideDropdown();\n\n          self._detachPositioningHandler(container);\n        });\n        this.$dropdownContainer.on('mousedown', function (evt) {\n          evt.stopPropagation();\n        });\n      };\n\n      AttachBody.prototype.destroy = function (decorated) {\n        decorated.call(this);\n        this.$dropdownContainer.remove();\n      };\n\n      AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n        // Clone all of the container classes\n        $dropdown.attr('class', $container.attr('class')); // Custom SUIselect dropdown. @edited\n\n        $dropdown.removeClass('select2');\n        $dropdown.addClass('sui-select-dropdown-container--open');\n        $dropdown[0].classList.remove('select2');\n        $dropdown[0].classList.add('select2-container--open');\n        $dropdown.css({\n          position: 'absolute',\n          top: -999999\n        });\n        this.$container = $container;\n      };\n\n      AttachBody.prototype.render = function (decorated) {\n        var $container = $('<span></span>');\n        var $dropdown = decorated.call(this);\n        $container.append($dropdown);\n        this.$dropdownContainer = $container;\n        return $container;\n      };\n\n      AttachBody.prototype._hideDropdown = function (decorated) {\n        this.$dropdownContainer.detach();\n      };\n\n      AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n        // These should only be bound once\n        if (this._containerResultsHandlersBound) {\n          return;\n        }\n\n        var self = this;\n        container.on('results:all', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('results:append', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('results:message', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('select', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('unselect', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        this._containerResultsHandlersBound = true;\n      };\n\n      AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n        var self = this;\n        var scrollEvent = 'scroll.select2.' + container.id;\n        var resizeEvent = 'resize.select2.' + container.id;\n        var orientationEvent = 'orientationchange.select2.' + container.id;\n        var $watchers = this.$container.parents().filter(Utils.hasScroll);\n        $watchers.each(function () {\n          Utils.StoreData(this, 'select2-scroll-position', {\n            x: $(this).scrollLeft(),\n            y: $(this).scrollTop()\n          });\n        });\n        $watchers.on(scrollEvent, function (ev) {\n          var position = Utils.GetData(this, 'select2-scroll-position');\n          $(this).scrollTop(position.y);\n        });\n        $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n      };\n\n      AttachBody.prototype._detachPositioningHandler = function (decorated, container) {\n        var scrollEvent = 'scroll.select2.' + container.id;\n        var resizeEvent = 'resize.select2.' + container.id;\n        var orientationEvent = 'orientationchange.select2.' + container.id;\n        var $watchers = this.$container.parents().filter(Utils.hasScroll);\n        $watchers.off(scrollEvent);\n        $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n      };\n\n      AttachBody.prototype._positionDropdown = function () {\n        var $window = $(window); // Custom SUIselect dropdown. @edited\n\n        var isCurrentlyAbove = this.$dropdown[0].classList.contains('sui-select-dropdown--above');\n        var isCurrentlyBelow = this.$dropdown[0].classList.contains('sui-select-dropdown--below');\n        var newDirection = null;\n        var offset = this.$container.offset();\n        offset.bottom = offset.top + this.$container.outerHeight(false);\n        var container = {\n          height: this.$container.outerHeight(false)\n        };\n        container.top = offset.top;\n        container.bottom = offset.top + container.height;\n        var dropdown = {\n          height: this.$dropdown.outerHeight(false)\n        };\n        var viewport = {\n          top: $window.scrollTop(),\n          bottom: $window.scrollTop() + $window.height()\n        };\n        var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n        var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n        var css = {\n          left: offset.left,\n          top: container.bottom\n        }; // Determine what the parent element is to use for calculating the offset\n\n        var $offsetParent = this.$dropdownParent; // For statically positioned elements, we need to get the element\n        // that is determining the offset\n\n        if ($offsetParent.css('position') === 'static') {\n          $offsetParent = $offsetParent.offsetParent();\n        }\n\n        var parentOffset = {\n          top: 0,\n          left: 0\n        };\n\n        if ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\n          parentOffset = $offsetParent.offset();\n        }\n\n        css.top -= parentOffset.top;\n        css.left -= parentOffset.left;\n\n        if (!isCurrentlyAbove && !isCurrentlyBelow) {\n          newDirection = 'below';\n        }\n\n        if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n          newDirection = 'above';\n        } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n          newDirection = 'below';\n        }\n\n        if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n          css.top = container.top - parentOffset.top - dropdown.height;\n        } // Custom SUIselect dropdown. @edited\n\n\n        if (newDirection != null) {\n          this.$dropdown[0].classList.remove('sui-select-dropdown--below');\n          this.$dropdown[0].classList.remove('sui-select-dropdown--above');\n          this.$dropdown[0].classList.add('sui-select-dropdown--' + newDirection);\n          this.$container[0].classList.remove('sui-select-container--below');\n          this.$container[0].classList.remove('sui-select-container--above');\n          this.$container[0].classList.add('sui-select-dropdown-container--' + newDirection);\n        }\n\n        this.$dropdownContainer.css(css);\n      };\n\n      AttachBody.prototype._resizeDropdown = function () {\n        var css = {\n          width: this.$container.outerWidth(false) + 'px'\n        };\n\n        if (this.options.get('dropdownAutoWidth')) {\n          css.minWidth = css.width;\n          css.position = 'relative';\n          css.width = 'auto';\n        }\n\n        this.$dropdown.css(css);\n      };\n\n      AttachBody.prototype._showDropdown = function (decorated) {\n        this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n        this._positionDropdown();\n\n        this._resizeDropdown();\n      };\n\n      return AttachBody;\n    });\n    S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n      function countResults(data) {\n        var count = 0;\n\n        for (var d = 0; d < data.length; d++) {\n          var item = data[d];\n\n          if (item.children) {\n            count += countResults(item.children);\n          } else {\n            count++;\n          }\n        }\n\n        return count;\n      }\n\n      function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n        this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n        if (this.minimumResultsForSearch < 0) {\n          this.minimumResultsForSearch = Infinity;\n        }\n\n        decorated.call(this, $element, options, dataAdapter);\n      }\n\n      MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n        if (countResults(params.data.results) < this.minimumResultsForSearch) {\n          return false;\n        }\n\n        return decorated.call(this, params);\n      };\n\n      return MinimumResultsForSearch;\n    });\n    S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n      function SelectOnClose() {}\n\n      SelectOnClose.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('close', function (params) {\n          self._handleSelectOnClose(params);\n        });\n      };\n\n      SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n        if (params && params.originalSelect2Event != null) {\n          var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or\n          // unselect event\n\n          if (event._type === 'select' || event._type === 'unselect') {\n            return;\n          }\n        }\n\n        var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results\n\n        if ($highlightedResults.length < 1) {\n          return;\n        }\n\n        var data = Utils.GetData($highlightedResults[0], 'data'); // Don't re-select already selected resulte\n\n        if (data.element != null && data.element.selected || data.element == null && data.selected) {\n          return;\n        }\n\n        this.trigger('select', {\n          data: data\n        });\n      };\n\n      return SelectOnClose;\n    });\n    S2.define('select2/dropdown/closeOnSelect', [], function () {\n      function CloseOnSelect() {}\n\n      CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('select', function (evt) {\n          self._selectTriggered(evt);\n        });\n        container.on('unselect', function (evt) {\n          self._selectTriggered(evt);\n        });\n      };\n\n      CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n        var originalEvent = evt.originalEvent; // Don't close if the control key is being held\n\n        if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n          return;\n        }\n\n        this.trigger('close', {\n          originalEvent: originalEvent,\n          originalSelect2Event: evt\n        });\n      };\n\n      return CloseOnSelect;\n    });\n    S2.define('select2/dropdown/dropdownCss', ['../utils'], function (Utils) {\n      function DropdownCSS() {}\n\n      DropdownCSS.prototype.render = function (decorated) {\n        var $dropdown = decorated.call(this);\n        var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n        if (dropdownCssClass.indexOf(':all:') !== -1) {\n          dropdownCssClass = dropdownCssClass.replace(':all:', '');\n          Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n        }\n\n        $dropdown.addClass('sui-select-dropdown'); // FIX: Make sure \"sui-select-dropdown\" main class does not get erased. @edited\n\n        $dropdown.addClass(dropdownCssClass);\n        return $dropdown;\n      };\n\n      return DropdownCSS;\n    });\n    S2.define('select2/dropdown/tagsSearchHighlight', ['../utils'], function (Utils) {\n      function TagsSearchHighlight() {}\n\n      TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n        var $options = this.$results.find('.select2-results__option--selectable' + ':not(.select2-results__option--selected)');\n\n        if ($options.length > 0) {\n          var $firstOption = $options.first();\n          var data = Utils.GetData($firstOption[0], 'data');\n          var firstElement = data.element;\n\n          if (firstElement && firstElement.getAttribute) {\n            if (firstElement.getAttribute('data-select2-tag') === 'true') {\n              $firstOption.trigger('mouseenter');\n              return;\n            }\n          }\n        }\n\n        decorated.call(this);\n      };\n\n      return TagsSearchHighlight;\n    });\n    S2.define('select2/i18n/en', [], function () {\n      // English\n      return {\n        errorLoading: function errorLoading() {\n          return 'The results could not be loaded.';\n        },\n        inputTooLong: function inputTooLong(args) {\n          var overChars = args.input.length - args.maximum;\n          var message = 'Please delete ' + overChars + ' character';\n\n          if (overChars != 1) {\n            message += 's';\n          }\n\n          return message;\n        },\n        inputTooShort: function inputTooShort(args) {\n          var remainingChars = args.minimum - args.input.length;\n          var message = 'Please enter ' + remainingChars + ' or more characters';\n          return message;\n        },\n        loadingMore: function loadingMore() {\n          return 'Loading more results…';\n        },\n        maximumSelected: function maximumSelected(args) {\n          var message = 'You can only select ' + args.maximum + ' item';\n\n          if (args.maximum != 1) {\n            message += 's';\n          }\n\n          return message;\n        },\n        noResults: function noResults() {\n          return 'No results found';\n        },\n        searching: function searching() {\n          return 'Searching…';\n        },\n        removeAllItems: function removeAllItems() {\n          return 'Remove all items';\n        },\n        removeItem: function removeItem() {\n          return 'Remove item';\n        },\n        search: function search() {\n          return 'Search';\n        }\n      };\n    });\n    S2.define('select2/defaults', ['jquery', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/selectionCss', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './dropdown/dropdownCss', './dropdown/tagsSearchHighlight', './i18n/en'], function ($, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) {\n      function Defaults() {\n        this.reset();\n      }\n\n      Defaults.prototype.apply = function (options) {\n        options = $.extend(true, {}, this.defaults, options);\n\n        if (options.dataAdapter == null) {\n          if (options.ajax != null) {\n            options.dataAdapter = AjaxData;\n          } else if (options.data != null) {\n            options.dataAdapter = ArrayData;\n          } else {\n            options.dataAdapter = SelectData;\n          }\n\n          if (options.minimumInputLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n          }\n\n          if (options.maximumInputLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n          }\n\n          if (options.maximumSelectionLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n          }\n\n          if (options.tags) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n          }\n\n          if (options.tokenSeparators != null || options.tokenizer != null) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n          }\n        }\n\n        if (options.resultsAdapter == null) {\n          options.resultsAdapter = ResultsList;\n\n          if (options.ajax != null) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n          }\n\n          if (options.placeholder != null) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n          }\n\n          if (options.selectOnClose) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\n          }\n\n          if (options.tags) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, TagsSearchHighlight);\n          }\n        }\n\n        if (options.dropdownAdapter == null) {\n          if (options.multiple) {\n            options.dropdownAdapter = Dropdown;\n          } else {\n            var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n            options.dropdownAdapter = SearchableDropdown;\n          }\n\n          if (options.minimumResultsForSearch !== 0) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n          }\n\n          if (options.closeOnSelect) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n          }\n\n          if (options.dropdownCssClass != null) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n          }\n\n          options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\n        }\n\n        if (options.selectionAdapter == null) {\n          if (options.multiple) {\n            options.selectionAdapter = MultipleSelection;\n          } else {\n            options.selectionAdapter = SingleSelection;\n          } // Add the placeholder mixin if a placeholder was specified\n\n\n          if (options.placeholder != null) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, Placeholder);\n          }\n\n          if (options.allowClear) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n          }\n\n          if (options.multiple) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n          }\n\n          if (options.selectionCssClass != null) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionCSS);\n          }\n\n          options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n        } // If the defaults were not previously applied from an element, it is\n        // possible for the language option to have not been resolved\n\n\n        options.language = this._resolveLanguage(options.language); // Always fall back to English since it will always be complete\n\n        options.language.push('en');\n        var uniqueLanguages = [];\n\n        for (var l = 0; l < options.language.length; l++) {\n          var language = options.language[l];\n\n          if (uniqueLanguages.indexOf(language) === -1) {\n            uniqueLanguages.push(language);\n          }\n        }\n\n        options.language = uniqueLanguages;\n        options.translations = this._processTranslations(options.language, options.debug);\n        return options;\n      };\n\n      Defaults.prototype.reset = function () {\n        function stripDiacritics(text) {\n          // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n          function match(a) {\n            return DIACRITICS[a] || a;\n          }\n\n          return text.replace(/[^\\u0000-\\u007E]/g, match);\n        }\n\n        function matcher(params, data) {\n          // Always return the object if there is nothing to compare\n          if (params.term == null || params.term.trim() === '') {\n            return data;\n          } // Do a recursive check for options with children\n\n\n          if (data.children && data.children.length > 0) {\n            // Clone the data object if there are children\n            // This is required as we modify the object to remove any non-matches\n            var match = $.extend(true, {}, data); // Check each child of the option\n\n            for (var c = data.children.length - 1; c >= 0; c--) {\n              var child = data.children[c];\n              var matches = matcher(params, child); // If there wasn't a match, remove the object in the array\n\n              if (matches == null) {\n                match.children.splice(c, 1);\n              }\n            } // If any children matched, return the new object\n\n\n            if (match.children.length > 0) {\n              return match;\n            } // If there were no matching children, check just the plain object\n\n\n            return matcher(params, match);\n          }\n\n          var original = stripDiacritics(data.text).toUpperCase();\n          var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term\n\n          if (original.indexOf(term) > -1) {\n            return data;\n          } // If it doesn't contain the term, don't return anything\n\n\n          return null;\n        }\n\n        this.defaults = {\n          amdLanguageBase: './i18n/',\n          autocomplete: 'off',\n          closeOnSelect: true,\n          debug: false,\n          dropdownAutoWidth: false,\n          escapeMarkup: Utils.escapeMarkup,\n          language: {},\n          matcher: matcher,\n          minimumInputLength: 0,\n          maximumInputLength: 0,\n          maximumSelectionLength: 0,\n          minimumResultsForSearch: 0,\n          selectOnClose: false,\n          scrollAfterSelect: false,\n          sorter: function sorter(data) {\n            return data;\n          },\n          templateResult: function templateResult(result) {\n            return result.text;\n          },\n          templateSelection: function templateSelection(selection) {\n            return selection.text;\n          },\n          theme: 'default',\n          width: 'resolve'\n        };\n      };\n\n      Defaults.prototype.applyFromElement = function (options, $element) {\n        var optionLanguage = options.language;\n        var defaultLanguage = this.defaults.language;\n        var elementLanguage = $element.prop('lang');\n        var parentLanguage = $element.closest('[lang]').prop('lang');\n        var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n        options.language = languages;\n        return options;\n      };\n\n      Defaults.prototype._resolveLanguage = function (language) {\n        if (!language) {\n          return [];\n        }\n\n        if ($.isEmptyObject(language)) {\n          return [];\n        }\n\n        if ($.isPlainObject(language)) {\n          return [language];\n        }\n\n        var languages;\n\n        if (!Array.isArray(language)) {\n          languages = [language];\n        } else {\n          languages = language;\n        }\n\n        var resolvedLanguages = [];\n\n        for (var l = 0; l < languages.length; l++) {\n          resolvedLanguages.push(languages[l]);\n\n          if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n            // Extract the region information if it is included\n            var languageParts = languages[l].split('-');\n            var baseLanguage = languageParts[0];\n            resolvedLanguages.push(baseLanguage);\n          }\n        }\n\n        return resolvedLanguages;\n      };\n\n      Defaults.prototype._processTranslations = function (languages, debug) {\n        var translations = new Translation();\n\n        for (var l = 0; l < languages.length; l++) {\n          var languageData = new Translation();\n          var language = languages[l];\n\n          if (typeof language === 'string') {\n            try {\n              // Try to load it with the original name\n              languageData = Translation.loadPath(language);\n            } catch (e) {\n              try {\n                // If we couldn't load it, check if it wasn't the full path\n                language = this.defaults.amdLanguageBase + language;\n                languageData = Translation.loadPath(language);\n              } catch (ex) {\n                // The translation could not be loaded at all. Sometimes this is\n                // because of a configuration problem, other times this can be\n                // because of how Select2 helps load all possible translation files\n                if (debug && window.console && console.warn) {\n                  console.warn('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\n                }\n              }\n            }\n          } else if ($.isPlainObject(language)) {\n            languageData = new Translation(language);\n          } else {\n            languageData = language;\n          }\n\n          translations.extend(languageData);\n        }\n\n        return translations;\n      };\n\n      Defaults.prototype.set = function (key, value) {\n        var camelKey = $.camelCase(key);\n        var data = {};\n        data[camelKey] = value;\n\n        var convertedData = Utils._convertData(data);\n\n        $.extend(true, this.defaults, convertedData);\n      };\n\n      var defaults = new Defaults();\n      return defaults;\n    });\n    S2.define('select2/options', ['jquery', './defaults', './utils'], function ($, Defaults, Utils) {\n      function Options(options, $element) {\n        this.options = options;\n\n        if ($element != null) {\n          this.fromElement($element);\n        }\n\n        if ($element != null) {\n          this.options = Defaults.applyFromElement(this.options, $element);\n        }\n\n        this.options = Defaults.apply(this.options);\n      }\n\n      Options.prototype.fromElement = function ($e) {\n        var excludedData = ['select2'];\n\n        if (this.options.multiple == null) {\n          this.options.multiple = $e.prop('multiple');\n        }\n\n        if (this.options.disabled == null) {\n          this.options.disabled = $e.prop('disabled');\n        }\n\n        if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n          this.options.autocomplete = $e.prop('autocomplete');\n        }\n\n        if (this.options.dir == null) {\n          if ($e.prop('dir')) {\n            this.options.dir = $e.prop('dir');\n          } else if ($e.closest('[dir]').prop('dir')) {\n            this.options.dir = $e.closest('[dir]').prop('dir');\n          } else {\n            this.options.dir = 'ltr';\n          }\n        }\n\n        $e.prop('disabled', this.options.disabled);\n        $e.prop('multiple', this.options.multiple);\n\n        if (Utils.GetData($e[0], 'select2Tags')) {\n          if (this.options.debug && window.console && console.warn) {\n            console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n          }\n\n          Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n          Utils.StoreData($e[0], 'tags', true);\n        }\n\n        if (Utils.GetData($e[0], 'ajaxUrl')) {\n          if (this.options.debug && window.console && console.warn) {\n            console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n          }\n\n          $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n          Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n        }\n\n        var dataset = {};\n\n        function upperCaseLetter(_, letter) {\n          return letter.toUpperCase();\n        } // Pre-load all of the attributes which are prefixed with `data-`\n\n\n        for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n          var attributeName = $e[0].attributes[attr].name;\n          var prefix = 'data-';\n\n          if (attributeName.substr(0, prefix.length) == prefix) {\n            // Get the contents of the attribute after `data-`\n            var dataName = attributeName.substring(prefix.length); // Get the data contents from the consistent source\n            // This is more than likely the jQuery data helper\n\n            var dataValue = Utils.GetData($e[0], dataName); // camelCase the attribute name to match the spec\n\n            var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); // Store the data attribute contents into the dataset since\n\n            dataset[camelDataName] = dataValue;\n          }\n        } // Prefer the element's `dataset` attribute if it exists\n        // jQuery 1.x does not correctly handle data attributes with multiple dashes\n\n\n        if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n          dataset = $.extend(true, {}, $e[0].dataset, dataset);\n        } // Prefer our internal data cache if it exists\n\n\n        var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n        data = Utils._convertData(data);\n\n        for (var key in data) {\n          if (excludedData.indexOf(key) > -1) {\n            continue;\n          }\n\n          if ($.isPlainObject(this.options[key])) {\n            $.extend(this.options[key], data[key]);\n          } else {\n            this.options[key] = data[key];\n          }\n        }\n\n        return this;\n      };\n\n      Options.prototype.get = function (key) {\n        return this.options[key];\n      };\n\n      Options.prototype.set = function (key, val) {\n        this.options[key] = val;\n      };\n\n      return Options;\n    });\n    S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n      var Select2 = function Select2($element, options) {\n        if (Utils.GetData($element[0], 'select2') != null) {\n          Utils.GetData($element[0], 'select2').destroy();\n        }\n\n        this.$element = $element;\n        this.id = this._generateId($element);\n        options = options || {};\n        this.options = new Options(options, $element);\n\n        Select2.__super__.constructor.call(this); // Set up the tabindex\n\n\n        var tabindex = $element.attr('tabindex') || 0;\n        Utils.StoreData($element[0], 'old-tabindex', tabindex);\n        $element.attr('tabindex', '-1'); // Set up containers and adapters\n\n        var DataAdapter = this.options.get('dataAdapter');\n        this.dataAdapter = new DataAdapter($element, this.options);\n        var $container = this.render();\n\n        this._placeContainer($container);\n\n        var SelectionAdapter = this.options.get('selectionAdapter');\n        this.selection = new SelectionAdapter($element, this.options);\n        this.$selection = this.selection.render();\n        this.selection.position(this.$selection, $container);\n        var DropdownAdapter = this.options.get('dropdownAdapter');\n        this.dropdown = new DropdownAdapter($element, this.options);\n        this.$dropdown = this.dropdown.render();\n        this.dropdown.position(this.$dropdown, $container);\n        var ResultsAdapter = this.options.get('resultsAdapter');\n        this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n        this.$results = this.results.render();\n        this.results.position(this.$results, this.$dropdown); // Bind events\n\n        var self = this; // Bind the container to all of the adapters\n\n        this._bindAdapters(); // Register any DOM event handlers\n\n\n        this._registerDomEvents(); // Register any internal event handlers\n\n\n        this._registerDataEvents();\n\n        this._registerSelectionEvents();\n\n        this._registerDropdownEvents();\n\n        this._registerResultsEvents();\n\n        this._registerEvents(); // Set the initial state\n\n\n        this.dataAdapter.current(function (initialData) {\n          self.trigger('selection:update', {\n            data: initialData\n          });\n        }); // Hide the original select\n\n        $element[0].classList.add('select2-hidden-accessible');\n        $element.attr('aria-hidden', 'true'); // Hide the original select with SUI. @edited\n\n        $element.addClass('sui-screen-reader-text'); // Synchronize any monitored attributes\n\n        this._syncAttributes();\n\n        Utils.StoreData($element[0], 'select2', this); // Ensure backwards compatibility with $element.data('select2').\n\n        $element.data('select2', this);\n      };\n\n      Utils.Extend(Select2, Utils.Observable);\n\n      Select2.prototype._generateId = function ($element) {\n        var id = '';\n\n        if ($element.attr('id') != null) {\n          id = $element.attr('id');\n        } else if ($element.attr('name') != null) {\n          id = $element.attr('name') + '-' + Utils.generateChars(2);\n        } else {\n          id = Utils.generateChars(4);\n        }\n\n        id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n        id = 'select2-' + id;\n        return id;\n      };\n\n      Select2.prototype._placeContainer = function ($container) {\n        $container.insertAfter(this.$element);\n\n        var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n        if (width != null) {\n          $container.css('width', width);\n        }\n      };\n\n      Select2.prototype._resolveWidth = function ($element, method) {\n        var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n        if (method == 'resolve') {\n          var styleWidth = this._resolveWidth($element, 'style');\n\n          if (styleWidth != null) {\n            return styleWidth;\n          }\n\n          return this._resolveWidth($element, 'element');\n        }\n\n        if (method == 'element') {\n          var elementWidth = $element.outerWidth(false);\n\n          if (elementWidth <= 0) {\n            return 'auto';\n          }\n\n          return elementWidth + 'px';\n        }\n\n        if (method == 'style') {\n          var style = $element.attr('style');\n\n          if (typeof style !== 'string') {\n            return null;\n          }\n\n          var attrs = style.split(';');\n\n          for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n            var attr = attrs[i].replace(/\\s/g, '');\n            var matches = attr.match(WIDTH);\n\n            if (matches !== null && matches.length >= 1) {\n              return matches[1];\n            }\n          }\n\n          return null;\n        }\n\n        if (method == 'computedstyle') {\n          var computedStyle = window.getComputedStyle($element[0]);\n          return computedStyle.width;\n        }\n\n        return method;\n      };\n\n      Select2.prototype._bindAdapters = function () {\n        this.dataAdapter.bind(this, this.$container);\n        this.selection.bind(this, this.$container);\n        this.dropdown.bind(this, this.$container);\n        this.results.bind(this, this.$container);\n      };\n\n      Select2.prototype._registerDomEvents = function () {\n        var self = this;\n        this.$element.on('change.select2', function () {\n          self.dataAdapter.current(function (data) {\n            self.trigger('selection:update', {\n              data: data\n            });\n          });\n        });\n        this.$element.on('focus.select2', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this._syncA = Utils.bind(this._syncAttributes, this);\n        this._syncS = Utils.bind(this._syncSubtree, this);\n        this._observer = new window.MutationObserver(function (mutations) {\n          self._syncA();\n\n          self._syncS(mutations);\n        });\n\n        this._observer.observe(this.$element[0], {\n          attributes: true,\n          childList: true,\n          subtree: false\n        });\n      };\n\n      Select2.prototype._registerDataEvents = function () {\n        var self = this;\n        this.dataAdapter.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerSelectionEvents = function () {\n        var self = this;\n        var nonRelayEvents = ['toggle', 'focus'];\n        this.selection.on('toggle', function () {\n          self.toggleDropdown();\n        });\n        this.selection.on('focus', function (params) {\n          self.focus(params);\n        });\n        this.selection.on('*', function (name, params) {\n          if (nonRelayEvents.indexOf(name) !== -1) {\n            return;\n          }\n\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerDropdownEvents = function () {\n        var self = this;\n        this.dropdown.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerResultsEvents = function () {\n        var self = this;\n        this.results.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerEvents = function () {\n        var self = this;\n        this.on('open', function () {\n          self.$container[0].classList.add('select2-container--open');\n        });\n        this.on('close', function () {\n          self.$container[0].classList.remove('select2-container--open');\n        });\n        this.on('enable', function () {\n          self.$container[0].classList.remove('select2-container--disabled');\n        });\n        this.on('disable', function () {\n          self.$container[0].classList.add('select2-container--disabled');\n        });\n        this.on('blur', function () {\n          self.$container[0].classList.remove('select2-container--focus');\n        });\n        this.on('query', function (params) {\n          if (!self.isOpen()) {\n            self.trigger('open', {});\n          }\n\n          this.dataAdapter.query(params, function (data) {\n            self.trigger('results:all', {\n              data: data,\n              query: params\n            });\n          });\n        });\n        this.on('query:append', function (params) {\n          this.dataAdapter.query(params, function (data) {\n            self.trigger('results:append', {\n              data: data,\n              query: params\n            });\n          });\n        });\n        this.on('keypress', function (evt) {\n          var key = evt.which;\n          var isMultiSelect = this.$element[0].hasAttribute('multiple');\n\n          if (self.isOpen()) {\n            if (key === KEYS.ENTER) {\n              self.trigger('results:select');\n              evt.preventDefault();\n            } else if (key === KEYS.SPACE && evt.ctrlKey) {\n              self.trigger('results:toggle');\n              evt.preventDefault();\n            } else if (key === KEYS.UP) {\n              self.trigger('results:previous');\n              evt.preventDefault();\n            } else if (key === KEYS.DOWN) {\n              self.trigger('results:next');\n              evt.preventDefault();\n            } else if (key === KEYS.ESC || key === KEYS.TAB) {\n              self.close();\n              evt.preventDefault();\n            }\n          } else if (!isMultiSelect) {\n            // Added the functionality to change option on press of up and down arrow. @edited\n            if (key === KEYS.ENTER || key === KEYS.SPACE || (key === KEYS.DOWN || key === KEYS.UP) && evt.altKey) {\n              self.open();\n              evt.preventDefault();\n            } else if (key === KEYS.DOWN) {\n              if (undefined != this.$element.find('option:selected').next().val()) {\n                this.$element.val(this.$element.find('option:selected').next().val());\n                this.$element.trigger('change');\n              }\n\n              evt.preventDefault();\n            } else if (key === KEYS.UP) {\n              if (undefined != this.$element.find('option:selected').prev().val()) {\n                this.$element.val(this.$element.find('option:selected').prev().val());\n                this.$element.trigger('change');\n              }\n\n              evt.preventDefault();\n            } // Added the functionality to select option based on key press. @edited\n            else {\n              var selectedValue = this.$element.find('option:selected').text();\n              var keyPressed = String.fromCharCode(key).toLowerCase();\n              var values = this.$element.find('option').filter(function () {\n                var _$$text;\n\n                return (_$$text = $(this).text()) === null || _$$text === void 0 ? void 0 : _$$text.toLowerCase().startsWith(keyPressed);\n              });\n              var arrLength = values.length - 1;\n              var elemVal = selectedValue;\n              values.each(function (index) {\n                if (selectedValue !== '' && selectedValue[0].toLowerCase() === keyPressed) {\n                  if ($(this).text() === selectedValue && index !== arrLength) {\n                    elemVal = $(values[index + 1]).val();\n                    return false;\n                  }\n\n                  return;\n                }\n\n                elemVal = $(this).val();\n                return false;\n              });\n              elemVal !== selectedValue && (self.$element.val(elemVal), self.$element.trigger('change'));\n            }\n          }\n        });\n      };\n\n      Select2.prototype._syncAttributes = function () {\n        this.options.set('disabled', this.$element.prop('disabled'));\n\n        if (this.isDisabled()) {\n          if (this.isOpen()) {\n            this.close();\n          }\n\n          this.trigger('disable', {});\n        } else {\n          this.trigger('enable', {});\n        }\n      };\n\n      Select2.prototype._isChangeMutation = function (mutations) {\n        var self = this;\n\n        if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n          for (var n = 0; n < mutations.addedNodes.length; n++) {\n            var node = mutations.addedNodes[n];\n\n            if (node.selected) {\n              return true;\n            }\n          }\n        } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n          return true;\n        } else if (Array.isArray(mutations)) {\n          return mutations.some(function (mutation) {\n            return self._isChangeMutation(mutation);\n          });\n        }\n\n        return false;\n      };\n\n      Select2.prototype._syncSubtree = function (mutations) {\n        var changed = this._isChangeMutation(mutations);\n\n        var self = this; // Only re-pull the data if we think there is a change\n\n        if (changed) {\n          this.dataAdapter.current(function (currentData) {\n            self.trigger('selection:update', {\n              data: currentData\n            });\n          });\n        }\n      };\n      /**\n       * Override the trigger method to automatically trigger pre-events when\n       * there are events that can be prevented.\n       */\n\n\n      Select2.prototype.trigger = function (name, args) {\n        var actualTrigger = Select2.__super__.trigger;\n        var preTriggerMap = {\n          'open': 'opening',\n          'close': 'closing',\n          'select': 'selecting',\n          'unselect': 'unselecting',\n          'clear': 'clearing'\n        };\n\n        if (args === undefined) {\n          args = {};\n        }\n\n        if (name in preTriggerMap) {\n          var preTriggerName = preTriggerMap[name];\n          var preTriggerArgs = {\n            prevented: false,\n            name: name,\n            args: args\n          };\n          actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n          if (preTriggerArgs.prevented) {\n            args.prevented = true;\n            return;\n          }\n        }\n\n        actualTrigger.call(this, name, args);\n      };\n\n      Select2.prototype.toggleDropdown = function () {\n        if (this.isDisabled()) {\n          return;\n        }\n\n        if (this.isOpen()) {\n          this.close();\n        } else {\n          this.open();\n        }\n      };\n\n      Select2.prototype.open = function () {\n        if (this.isOpen()) {\n          return;\n        }\n\n        if (this.isDisabled()) {\n          return;\n        }\n\n        this.trigger('query', {});\n      };\n\n      Select2.prototype.close = function (evt) {\n        if (!this.isOpen()) {\n          return;\n        }\n\n        this.trigger('close', {\n          originalEvent: evt\n        });\n      };\n      /**\n       * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n       * object.\n       *\n       * @return {true} if the instance is not disabled.\n       * @return {false} if the instance is disabled.\n       */\n\n\n      Select2.prototype.isEnabled = function () {\n        return !this.isDisabled();\n      };\n      /**\n       * Helper method to abstract the \"disabled\" state of this object.\n       *\n       * @return {true} if the disabled option is true.\n       * @return {false} if the disabled option is false.\n       */\n\n\n      Select2.prototype.isDisabled = function () {\n        return this.options.get('disabled');\n      };\n\n      Select2.prototype.isOpen = function () {\n        return this.$container[0].classList.contains('select2-container--open');\n      };\n\n      Select2.prototype.hasFocus = function () {\n        return this.$container[0].classList.contains('select2-container--focus');\n      };\n\n      Select2.prototype.focus = function (data) {\n        // No need to re-trigger focus events if we are already focused\n        if (this.hasFocus()) {\n          return;\n        }\n\n        this.$container[0].classList.add('select2-container--focus');\n        this.trigger('focus', {});\n      };\n\n      Select2.prototype.enable = function (args) {\n        if (this.options.get('debug') && window.console && console.warn) {\n          console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n        }\n\n        if (args == null || args.length === 0) {\n          args = [true];\n        }\n\n        var disabled = !args[0];\n        this.$element.prop('disabled', disabled);\n      };\n\n      Select2.prototype.data = function () {\n        if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n          console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n        }\n\n        var data = [];\n        this.dataAdapter.current(function (currentData) {\n          data = currentData;\n        });\n        return data;\n      };\n\n      Select2.prototype.val = function (args) {\n        if (this.options.get('debug') && window.console && console.warn) {\n          console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n        }\n\n        if (args == null || args.length === 0) {\n          return this.$element.val();\n        }\n\n        var newVal = args[0];\n\n        if (Array.isArray(newVal)) {\n          newVal = newVal.map(function (obj) {\n            return obj.toString();\n          });\n        }\n\n        this.$element.val(newVal).trigger('input').trigger('change');\n      };\n\n      Select2.prototype.destroy = function () {\n        Utils.RemoveData(this.$container[0]);\n        this.$container.remove();\n\n        this._observer.disconnect();\n\n        this._observer = null;\n        this._syncA = null;\n        this._syncS = null;\n        this.$element.off('.select2');\n        this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex')); // Remove SUI screen reader class. @edited\n\n        this.$element.removeClass('sui-screen-reader-text');\n        this.$element[0].classList.remove('select2-hidden-accessible');\n        this.$element.attr('aria-hidden', 'false');\n        Utils.RemoveData(this.$element[0]);\n        this.$element.removeData('select2');\n        this.dataAdapter.destroy();\n        this.selection.destroy();\n        this.dropdown.destroy();\n        this.results.destroy();\n        this.dataAdapter = null;\n        this.selection = null;\n        this.dropdown = null;\n        this.results = null;\n      };\n\n      Select2.prototype.render = function () {\n        var $container = $('<span class=\"select2 select2-container\">' + '<span class=\"selection\"></span>' + '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' + '</span>');\n        $container.attr('dir', this.options.get('dir'));\n        this.$container = $container; // Add SUIselect class to select main div. @edited\n\n        this.$container[0].classList.add('sui-select'); // Additional class for themes. @edited\n\n        if ('default' !== this.options.get('theme')) {\n          this.$container[0].classList.add('sui-select-theme--' + this.options.get('theme'));\n        }\n\n        Utils.StoreData($container[0], 'element', this.$element);\n        return $container;\n      };\n\n      return Select2;\n    });\n    S2.define('jquery-mousewheel', ['jquery'], function ($) {\n      // Used to shim jQuery.mousewheel for non-full builds.\n      return $;\n    });\n    /**\n     * Rebranding select2 to SUIselect2\n     * It does avoid conflicts with other(s) that include select2 manually\n     * @edited\n     */\n\n    S2.define('sui.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults', './select2/utils'], function ($, _, Select2, Defaults, Utils) {\n      // Rename function. @edited\n      if ($.fn.SUIselect2 == null) {\n        // All methods that should return the element\n        var thisMethods = ['open', 'close', 'destroy']; // Rename function. @edited\n\n        $.fn.SUIselect2 = function (options) {\n          options = options || {};\n\n          if (_typeof(options) === 'object') {\n            this.each(function () {\n              var instanceOptions = $.extend(true, {}, options);\n              var instance = new Select2($(this), instanceOptions);\n            });\n            return this;\n          } else if (typeof options === 'string') {\n            var ret;\n            var args = Array.prototype.slice.call(arguments, 1);\n            this.each(function () {\n              var instance = Utils.GetData(this, 'select2');\n\n              if (instance == null && window.console && console.error) {\n                // Rename function on error message. @edited\n                console.error('The SUIselect2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n              }\n\n              ret = instance[options].apply(instance, args);\n            }); // Check if we should be returning `this`\n\n            if (thisMethods.indexOf(options) > -1) {\n              return this;\n            }\n\n            return ret;\n          } else {\n            // Rename function on error message. @edited\n            throw new Error('Invalid arguments for SUIselect2: ' + options);\n          }\n        };\n      } // Rename function. @edited\n\n\n      if ($.fn.SUIselect2.defaults == null) {\n        $.fn.SUIselect2.defaults = Defaults; // Rename function. @edited\n      }\n\n      return Select2;\n    }); // Return the AMD loader configuration so it can be used outside of this file\n\n    return {\n      define: S2.define,\n      require: S2.require\n    };\n  }(); // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n\n\n  var select2 = S2.require('sui.select2'); // Rename function. @edited\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  // jQuery.fn.select2.amd = S2;\n  // Return the Select2 instance for anyone who is importing it.\n\n\n  return select2;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode\n  'use strict'; // Define global SUI object if it doesn't exist\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.sideTabs = function (element) {\n    var $this = $(element),\n        $label = $this.parent('label'),\n        $data = $this.data('tab-menu'),\n        $wrapper = $this.closest('.sui-side-tabs'),\n        $alllabels = $wrapper.find('>.sui-tabs-menu .sui-tab-item'),\n        $allinputs = $alllabels.find('input'),\n        newContent;\n    $this.on('click', function (e) {\n      $alllabels.removeClass('active');\n      $allinputs.attr('checked', false);\n      $allinputs.attr('aria-selected', false);\n      $wrapper.find('> .sui-tabs-content > div[data-tab-content]').removeClass('active');\n      $label.addClass('active');\n      $this.attr('checked', true);\n      $this.attr('aria-selected', true);\n      newContent = $wrapper.find('.sui-tabs-content div[data-tab-content=\"' + $data + '\"]');\n\n      if (newContent.length) {\n        newContent.addClass('active');\n      }\n    });\n  };\n\n  $('.sui-2-12-24 .sui-side-tabs label.sui-tab-item input').each(function () {\n    SUI.sideTabs(this);\n  });\n})(jQuery);","/* global jQuery */\n(function ($) {\n\t'use strict'\n\n\t/**\n\t * Plugin's data settings management.\n\t *\n\t * @since 4.11.4\n\t */\n\t$(window).on('load', function () {\n\t\tlet confirmButton = $('#wpmudev-reset-settings-confirm-button')\n\n\t\t// Hide/Show fields when redirect to value changes.\n\t\tconfirmButton.on('click', function () {\n\t\t\t// sui-button-onload-text\n\t\t\tresetSettings()\n\t\t})\n\n\t\t/**\n\t\t * Reset plugin settings using ajax.\n\t\t *\n\t\t * @since 4.11.4\n\t\t */\n\t\tlet resetSettings = function () {\n\t\t\tconfirmButton.addClass('sui-button-onload-text')\n\n\t\t\tlet ajaxData = {\n\t\t\t\taction: 'wdp-reset-settings',\n\t\t\t\thash: confirmButton.data('hash'),\n\t\t\t}\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.data && response.data.redirect) {\n\t\t\t\t\t\t// Redirect to success url.\n\t\t\t\t\t\twindow.location.href = response.data.redirect\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Reload as a fallback.\n\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t).fail(function () {\n\t\t\t\twindow.location.reload()\n\t\t\t})\n\t\t}\n\t})\n})(jQuery)\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminSettingsPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminSettingsPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.adminAddDialog = null;\n\t\tthis.translationDialog = null;\n\t\tthis.bulkAjaxQueueName = 'bulk-ajax-queue-translation';\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminSettingsPage.prototype, {\n\t\tinit: function () {\n\t\t\tvar self = this;\n\t\t\tthis.prepareTranslationUpdateDialog();\n\t\t\tthis.attachEvents();\n\t\t\tthis.showAlertNotice();\n\t\t\tthis.initUsersSelect();\n\n\t\t\t$(window).trigger('hashchange');\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\n\t\t\t$(window).on('hashchange', function () {\n\t\t\t\tself.processHash();\n\t\t\t});\n\n\t\t\tthis.$el.on('change', 'input.js-plugin-check', function () {\n\t\t\t\tvar project_slug = $(this).val();\n\t\t\t\tif (!self.bulkPluginsList) {\n\t\t\t\t\tself.bulkPluginsList = [];\n\t\t\t\t}\n\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\tself.bulkPluginsList.push(project_slug);\n\t\t\t\t} else {\n\t\t\t\t\tvar bulkPluginsList = self.bulkPluginsList;\n\t\t\t\t\tbulkPluginsList = bulkPluginsList.filter(function (item) {\n\t\t\t\t\t\treturn item !== project_slug\n\t\t\t\t\t});\n\t\t\t\t\tself.bulkPluginsList = bulkPluginsList;\n\t\t\t\t}\n\t\t\t\tself.$el.trigger('wpmu:translation-projects');\n\t\t\t});\n\n\t\t\tthis.$el.on('wpmu:translation-projects', function () {\n\t\t\t\tvar slugs = self.bulkPluginsList;\n\n\t\t\t\tif (!slugs.length || self.bulkPluginAction === '') {\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find('#update-selected-translations')\n\t\t\t\t\t.attr('disabled', 'disabled');\n\t\t\t\t} else {\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find('#update-selected-translations')\n\t\t\t\t\t.removeAttr('disabled');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', 'form#form-admin-add', function (e) {\n\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload');\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', 'form', function (e) {\n\t\t\t\tif ($(this).attr('id') !== 'form-admin-add') {\n\t\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload');\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.modal-open', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.showModals(this);\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-remove-user-permisssions', function () {\n\t\t\t\t$(this).addClass('sui-button-onload');\n\t\t\t});\n\n\t\t\tif (this.isUpdateNotificationHash()) {\n\t\t\t\t// var message = window.wdp_locale.translation_installed;\n\t\t\t\tvar message = window.wdp_locale.translation_updated;\n\t\t\t\tmessage = message.replace('%s', this.getTranslationUpdateCount());\n\t\t\t\tthis.showNotification('js-translation-updated', message);\n\n\t\t\t\t//remove all the hash\n\t\t\t\tvar url = window.location.href.split(\"#\")[0] + '#translation';\n\t\t\t\t//add translation tab hash again\n\t\t\t\thistory.replaceState(null, null, url);\n\t\t\t}\n\t\t\t$(window).on('wpmudev:startTranslation', function () {\n\t\t\t\tself.applyBulkAction();\n\t\t\t});\n\n\t\t\tthis.$el.on('change', '.sui-mobile-nav', function (e) {\n\t\t\t\tself.mobileNav($(this).val());\n\t\t\t});\n\t\t},\n\t\tprocessHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\n\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab').removeClass('current');\n\t\t\tthis.$el.find('.js-sidenav-content').hide();\n\n\t\t\t//for update translation\n\t\t\tif (hash.includes('translation#')) {\n\t\t\t\thash = 'translation';\n\t\t\t}\n\n\t\t\tswitch (hash) {\n\t\t\t\tcase 'permissions':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#permissions\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#permissions').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#permissions');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'translation':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#translation\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#translation').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#translation');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'membership':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#membership\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#membership').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#membership');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'apikey':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#apikey\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#apikey').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#apikey');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'data':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#data\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#data').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#data');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#general\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#general').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#general');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tmobileNav: function (tab) {\n\t\t\tvar hash = location.hash;\n\t\t\tif (hash !== tab) {\n\t\t\t\tlocation.hash = tab;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Initialize dash icons selector.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitUsersSelect: function () {\n\t\t\tvar self = this,\n\t\t\t\tchanged = false,\n\t\t\t\t// Main wrappers.\n\t\t\t\t$form = this.$el.find('#form-admin-add'),\n\t\t\t\t$added = $('#wpmudev-permissions-users-added'),\n\t\t\t\t$available = $('#wpmudev-permissions-users-all'),\n\t\t\t\t$addedLabel = $('#wpmudev-permissions-users-added-label'),\n\t\t\t\t$availableLabel = $('#wpmudev-permissions-users-all-label'),\n\t\t\t\t$noResultsNotice = $('#permissions-users-empty-results-notice'),\n\t\t\t\t$allAddedNotice = $('#permissions-users-all-added-notice'),\n\t\t\t\t$submit = $('#permissions-users-save');\n\n\t\t\t// Make sure it's disabled.\n\t\t\t$submit.prop('disabled', true);\n\n\t\t\t// On search input change.\n\t\t\t$('#search-user').on('input', function () {\n\t\t\t\tvar keyword = $(this).val().toLowerCase(),\n\t\t\t\t\t// Searchable by name, email, first name and last name.\n\t\t\t\t\t$searchable = '[data-name*=\"' + keyword + '\"],' +\n\t\t\t\t\t\t'[data-email*=\"' + keyword + '\"],' +\n\t\t\t\t\t\t'[data-username*=\"' + keyword + '\"]',\n\t\t\t\t\t$matchesAll = $($searchable, $available),\n\t\t\t\t\t$matchesAdded = $($searchable, $added),\n\t\t\t\t\t$elements = $('.permissions-user-available, .permissions-user-added', $form)\n\n\t\t\t\t// Hide notice.\n\t\t\t\t$noResultsNotice.addClass('sui-hidden')\n\t\t\t\t$allAddedNotice.addClass('sui-hidden');\n\n\t\t\t\t// If no search input, show all.\n\t\t\t\tif ('' === keyword) {\n\t\t\t\t\t$elements.show()\n\t\t\t\t\t$addedLabel.show()\n\t\t\t\t\t$availableLabel.show()\n\t\t\t\t\ttoggleNotice()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// Hide all.\n\t\t\t\t$elements.hide()\n\t\t\t\t$addedLabel.hide()\n\t\t\t\t$availableLabel.hide()\n\t\t\t\t// Go through each items.\n\t\t\t\tif ($matchesAdded.length > 0) {\n\t\t\t\t\t$matchesAdded.each(function () {\n\t\t\t\t\t\t// Show icon.\n\t\t\t\t\t\t$(this).show()\n\t\t\t\t\t})\n\t\t\t\t\t$addedLabel.show()\n\t\t\t\t}\n\t\t\t\tif ($matchesAll.length > 0) {\n\t\t\t\t\t$matchesAll.each(function () {\n\t\t\t\t\t\t// Show icon.\n\t\t\t\t\t\t$(this).show()\n\t\t\t\t\t})\n\t\t\t\t\t$availableLabel.show()\n\t\t\t\t}\n\t\t\t\tif (!$matchesAll.length && !$matchesAdded.length) {\n\t\t\t\t\t$noResultsNotice.removeClass('sui-hidden')\n\t\t\t\t\t$allAddedNotice.addClass('sui-hidden');\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// On user add.\n\t\t\t$('.permissions-user-add').on('click', function () {\n\t\t\t\t// User list changed.\n\t\t\t\tchanged = true;\n\t\t\t\tvar $user = $(this).data('user'),\n\t\t\t\t\t$el = $(this).closest('.permissions-user-item');\n\t\t\t\t// Hide add button.\n\t\t\t\t$(this).addClass('sui-hidden');\n\t\t\t\t// Show remove button.\n\t\t\t\t$el.find('button.permissions-user-remove').removeClass('sui-hidden');\n\t\t\t\t// Add user id to input.\n\t\t\t\t$(this).closest('.dashui-item').append('<input type=\"hidden\" name=\"users[]\" class=\"user-id-hidden\" value=\"' + $user + '\"/>');\n\t\t\t\t// Move to added list.\n\t\t\t\t$added.append($el);\n\n\t\t\t\t// Show/hide notice.\n\t\t\t\ttoggleNotice();\n\n\t\t\t\t// Enable save button.\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t})\n\n\t\t\t// On user remove.\n\t\t\t$('.permissions-user-remove').on('click', function () {\n\t\t\t\t// User list changed.\n\t\t\t\tchanged = true;\n\t\t\t\tvar $user = $(this).data('user'),\n\t\t\t\t\t$el = $(this).closest('.permissions-user-item');\n\t\t\t\t// Hide remove button.\n\t\t\t\t$(this).addClass('sui-hidden');\n\t\t\t\t// Show add button.\n\t\t\t\t$el.find('button.permissions-user-add').removeClass('sui-hidden');\n\t\t\t\t// Remove input.\n\t\t\t\t$(this).closest('.dashui-item').find('.user-id-hidden').remove();\n\t\t\t\t// Move to added list.\n\t\t\t\t$available.append($el);\n\n\t\t\t\t// Show/hide notice.\n\t\t\t\ttoggleNotice();\n\n\t\t\t\t// Enable save button.\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Show or hide empty notice.\n\t\t\t *\n\t\t\t * @since 4.11.2\n\t\t\t */\n\t\t\tfunction toggleNotice() {\n\t\t\t\tif ( $('#wpmudev-permissions-users-all').find('.permissions-user-item').length > 0 ) {\n\t\t\t\t\t$('#permissions-users-all-added-notice').addClass('sui-hidden');\n\t\t\t\t} else {\n\t\t\t\t\t$('#permissions-users-all-added-notice').removeClass('sui-hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tprepareTranslationUpdateDialog: function () {\n\t\t\tvar self = this;\n\t\t\tvar dialog = document.getElementById('bulk-action-translation-modal');\n\n\t\t\tif (dialog && dialog.length > 0) {\n\t\t\t\tdialog.on('open', function () {\n\t\t\t\t\tself.onTranslationUpdateShow();\n\t\t\t\t});\n\t\t\t\tdialog.on('close', function () {\n\t\t\t\t\tself.onTranslationUpdateHide();\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tonTranslationUpdateHide: function () {\n\t\t\tif ($.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\t$.ajaxq.abort(this.bulkAjaxQueueName);\n\t\t\t}\n\t\t},\n\t\tonTranslationUpdateShow: function () {\n\t\t\tthis.applyBulkAction();\n\t\t},\n\t\tapplyBulkAction: function () {\n\t\t\tvar dialog = this.$el.find('#bulk-action-translation-modal');\n\n\t\t\tthis.bulkActionProgress = 0;\n\t\t\tdialog.find('.sui-progress-text>span').text('0%');\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '0%');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').show();\n\n\t\t\tthis.bulkActionErrors = [];\n\t\t\tvar i = 1;\n\t\t\tvar isLast = false;\n\t\t\tvar bulkPluginsCount = this.bulkPluginsList.length;\n\t\t\tif (bulkPluginsCount > 0) {\n\t\t\t\tfor (var index in this.bulkPluginsList) {\n\n\t\t\t\t\tif (i === bulkPluginsCount) {\n\t\t\t\t\t\tisLast = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.bulkPluginsList) {\n\t\t\t\t\t\tthis.addBulkQueue(this.bulkPluginsList[index], isLast);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\taddBulkQueue: function (project_slug, isLast) {\n\t\t\tvar self = this;\n\t\t\tvar dialog = this.$el.find('#bulk-action-translation-modal');\n\t\t\tvar hashes = dialog.find('.js-bulk-hash').data();\n\t\t\tvar ajax_action = 'wdp-translation-update';\n\t\t\tvar hash = hashes['translationUpdate'];\n\t\t\tvar name = self.$el.find('#translation-bulk-action-' + project_slug).data('plugin-name');\n\t\t\tvar bulkPluginsCount = this.bulkPluginsList.length;\n\t\t\tvar progressIncreaser = 100 / bulkPluginsCount;\n\t\t\tprogressIncreaser = +progressIncreaser;\n\t\t\tprogressIncreaser = Math.floor(progressIncreaser);\n\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar stateBaseText = window.wdp_locale.installing_translation;\n\n\n\t\t\t$.ajaxq(this.bulkAjaxQueueName, {\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: ajax_action,\n\t\t\t\t\thash: hash,\n\t\t\t\t\tslug: project_slug,\n\t\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t\t},\n\t\t\t\tbeforeSend: function () {\n\t\t\t\t\tstateBaseText = stateBaseText.replace('%s', name);\n\t\t\t\t\tstateText.text(stateBaseText);\n\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (!response.success) {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tdialog.find('.js-bulk-errors').append('<p>' + name + ' : ' + response.data.message + '</p>');\n\t\t\t\t\t\t\tdialog.find('.js-bulk-errors').show();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.bulkActionErrors.push(response.data.message);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (error) {\n\t\t\t\t\tdialog.find('.js-bulk-errors').show();\n\t\t\t\t\tdialog.find('.js-bulk-errors').append('<p>' + name + ' : HTTP Request Error</p>');\n\t\t\t\t\tself.bulkActionErrors.push('HTTP Request Error');\n\t\t\t\t},\n\t\t\t\tcomplete: function () {\n\t\t\t\t\tself.updateBulkProgressBar(dialog, progressIncreaser, true);\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tupdateBulkProgressBar: function (dialog, progressIncreaser, checkAjax) {\n\t\t\tvar currentProgress = this.bulkActionProgress;\n\t\t\tcurrentProgress = +currentProgress;\n\t\t\tcurrentProgress = Math.floor(currentProgress);\n\n\t\t\tthis.bulkActionProgress = currentProgress + progressIncreaser;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', (this.bulkActionProgress) + '%');\n\t\t\tdialog.find('.sui-progress-text>span').text((this.bulkActionProgress) + '%');\n\n\t\t\tif (checkAjax && !$.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\tthis.onBulkActionCompleted();\n\t\t\t}\n\t\t},\n\t\tonBulkActionCompleted: function () {\n\t\t\tvar dialog = this.$el.find('#bulk-action-translation-modal');\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar bulkPluginsCount = this.bulkPluginsList.length;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '100%');\n\t\t\tdialog.find('.sui-progress-text>span').text('100%');\n\t\t\tstateText.text('');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').hide();\n\t\t\tif (!this.bulkActionErrors.length) {\n\t\t\t\twindow.location.href += \"#translationUpdate=\" + bulkPluginsCount;\n\t\t\t\tlocation.reload();\n\t\t\t}\n\n\t\t},\n\t\tisUpdateNotificationHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\treturn hash.indexOf('translationUpdate') !== -1;\n\t\t},\n\t\tgetTranslationUpdateCount: function () {\n\t\t\tvar hash = location.hash,\n\t\t\t\tcount = 0,\n\t\t\t\tindex = hash.indexOf('translationUpdate');\n\t\t\tif (index !== -1) {\n\t\t\t\tcount = window.location.hash.slice(index);\n\t\t\t\tcount = count.split('=')[1];\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\t\tshowNotification: function (noticeID, message) {\n\t\t\tvar container = $('#' + noticeID),\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\n\t\t\tif (container.length !== 0) {\n\t\t\t\tmessage = '<p>' + message + '</p>';\n\t\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t\t}\n\t\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t\t}\n\t\t},\n\t\tshowAlertNotice: function (container = '') {\n\t\t\tvar container = $('.sui-settings-notice-alert'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tmessage = '',\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tmessage = container.data('notice-msg');\n\t\t\tnoticeID = container.attr('id');\n\n\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t}\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t},\n\t\tshowModals: function (container) {\n\t\t\tlet modalId = $(container).data('modal-open'),\n\t\t\t\tfocusAfterClosed = container,\n\t\t\t\tfocusWhenOpen = undefined,\n\t\t\t\thasOverlayMask = $(container).data('modal-mask'),\n\t\t\t\thasTrigger = $(container).data('trigger');\n\n\t\t\tSUI.openModal(\n\t\t\t\tmodalId,\n\t\t\t\tfocusAfterClosed,\n\t\t\t\tfocusWhenOpen,\n\t\t\t\thasOverlayMask\n\t\t\t);\n\n\t\t\tif (hasTrigger) {\n\t\t\t\t$(window).trigger(hasTrigger);\n\t\t\t}\n\t\t},\n\t\tshowTranslationUpdateModal: function (container) {\n\n\t\t}\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminSettingsPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminLoginPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminLoginPage(element, options) {\n\t\tthis.element            = element;\n\t\tthis.$el                = $(this.element);\n\t\tthis.animSyncInterval   = null;\n\t\tthis.numAnimateSync     = 0;\n\t\tthis.currentAnimateSync = 1;\n\t\tthis.emailInput         = this.$el.find('.js-wpmudev-login-form').find('#dashboard-email');\n\t\tthis.passwordInput      = this.$el.find('.js-wpmudev-login-form').find('#dashboard-password');\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminLoginPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.initLoginButtonState();\n\t\t\tthis.attachEvents();\n\t\t\tthis.animateSync();\n\t\t\tthis.initiateHubSync();\n\t\t\tthis.storeSingleSignOnStatus();\n\t\t},\n\t\tinitLoginButtonState: function () {\n\t\t\tvar self = this;\n\t\t\tthis.$el.find('.js-login-form-submit-button').removeAttr('disabled');\n\t\t\tif (this.$el.find('.js-login-form-submit-button').length) {\n\t\t\t\tvar email    = this.emailInput.val();\n\t\t\t\tvar password = this.passwordInput.val();\n\n\t\t\t\temail    = $.trim(email);\n\t\t\t\tpassword = $.trim(password);\n\t\t\t\tif (email === '' || !self.isValidEmail(email) || password === '') {\n\t\t\t\t\tthis.$el.find('.js-login-form-submit-button').attr('disabled', 'disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\n\t\t\t// Handle team selection.\n\t\t\tthis.$el.on('change', 'input[type=radio][name=\"team_id\"]', function (e) {\n\t\t\t\tif (this.value === '') {\n\t\t\t\t\t$('#dashui-team-select-submit').prop('disabled', true)\n\t\t\t\t} else {\n\t\t\t\t\t$('#dashui-team-select-submit').prop('disabled', false)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Handle team select form submit.\n\t\t\tthis.$el.on('click', '#dashui-team-select-submit', function (e) {\n\t\t\t\t$(this).addClass('sui-button-onload')\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function () {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs');\n\t\t\t\tvar index      = $(this).data('index');\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active');\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]').addClass('active');\n\t\t\t});\n\n\t\t\t// on Submit Login\n\t\t\tthis.$el.on('submit', 'form.js-wpmudev-login-form', function () {\n\t\t\t\t$(this).find('#dashboard-email').trigger('keyup');\n\t\t\t\t$(this).find('#dashboard-password').trigger('keyup');\n\t\t\t\t$(this).find('.js-login-form-submit-button').trigger('sso:save');\n\n\t\t\t\t$(this).find('.js-login-form-submit-button').addClass('sui-button-onload');\n\n\t\t\t\tvar email    = self.emailInput.val();\n\t\t\t\tvar password = self.passwordInput.val();\n\n\t\t\t\temail    = $.trim(email);\n\t\t\t\tpassword = $.trim(password);\n\n\n\t\t\t\tif (email === '' || !self.isValidEmail(email) || password === '') {\n\t\t\t\t\t$(this).find('.js-login-form-submit-button').removeClass('sui-button-onload');\n\t\t\t\t\t$(this).find('.js-login-form-submit-button').attr('disabled', 'disabled');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tthis.$el.on('keyup', 'form.js-wpmudev-login-form #dashboard-email', function () {\n\t\t\t\t$(this).closest('.sui-form-field').removeClass('sui-form-field-error');\n\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').addClass('sui-hidden');\n\t\t\t\t$(this).closest('.sui-form-field').find('.js-valid-email-message').addClass('sui-hidden');\n\t\t\t\tvar email = $.trim($(this).val());\n\t\t\t\tif (email === '') {\n\t\t\t\t\t$(this).closest('.sui-form-field').addClass('sui-form-field-error');\n\t\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').removeClass('sui-hidden');\n\t\t\t\t} else if (!self.isValidEmail(email)) {\n\t\t\t\t\t$(this).closest('.sui-form-field').addClass('sui-form-field-error');\n\t\t\t\t\t$(this).closest('.sui-form-field').find('.js-valid-email-message').removeClass('sui-hidden');\n\t\t\t\t}\n\n\t\t\t\tself.initLoginButtonState();\n\t\t\t});\n\n\t\t\tthis.$el.on('keyup', 'form.js-wpmudev-login-form #dashboard-password', function () {\n\t\t\t\t$(this).closest('.sui-form-field').removeClass('sui-form-field-error');\n\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').addClass('sui-hidden');\n\t\t\t\tvar password = $.trim($(this).val());\n\t\t\t\tif (password === '') {\n\t\t\t\t\t$(this).closest('.sui-form-field').addClass('sui-form-field-error');\n\t\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').removeClass('sui-hidden');\n\t\t\t\t}\n\n\t\t\t\tself.initLoginButtonState();\n\t\t\t});\n\n\t\t},\n\t\tisValidEmail: function (email) {\n\t\t\t//simple email validation contains @str\n\t\t\tvar regex = /.+\\@.+/g;\n\t\t\tvar match = email.match(regex);\n\t\t\treturn match && match.length;\n\t\t},\n\t\tanimateSync: function () {\n\t\t\tvar self            = this;\n\t\t\tvar anims           = this.$el.find('.animate-sync');\n\t\t\tthis.numAnimateSync = anims.length;\n\n\t\t\tthis.animSyncInterval = setInterval(function () {\n\t\t\t\tvar nextAnimateItem = self.currentAnimateSync + 1;\n\t\t\t\tif (nextAnimateItem > self.numAnimateSync) {\n\t\t\t\t\tnextAnimateItem = 1;\n\t\t\t\t}\n\t\t\t\tself.$el.find('.animate-sync').addClass('sui-hidden');\n\t\t\t\tself.$el.find('.animate-sync.animate-' + nextAnimateItem).removeClass('sui-hidden');\n\t\t\t\tself.currentAnimateSync = nextAnimateItem;\n\n\t\t\t}, 5000); // 5 seconds\n\t\t},\n\t\tinitiateHubSync: function () {\n\t\t\tvar self    = this;\n\t\t\tvar wrapper = this.$el.find('.js-login-sync');\n\n\t\t\tif (wrapper.length) {\n\t\t\t\tvar data     = $(wrapper).data();\n\t\t\t\tvar ajaxData = {\n\t\t\t\t\taction: 'wdp-hub-sync',\n\t\t\t\t\thash: data.hash,\n\t\t\t\t\tkey: data.key\n\t\t\t\t};\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tajaxData,\n\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\tif (response.data && response.data.redirect) {\n\t\t\t\t\t\t\twindow.location.href = response.data.redirect;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twindow.location.href = data.dashurl;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'json'\n\t\t\t\t).always(function () {\n\t\t\t\t\t// clearInterval(self.animSyncInterval);\n\t\t\t\t}).fail(function () {\n\t\t\t\t\twindow.location.href = data.dashurl;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tstoreSingleSignOnStatus: function() {\n\t\t\tvar self    = this;\n\t\t\tvar wrapper = this.$el.find('#enable-sso');\n\n\t\t\tthis.$el.on('sso:save', '.js-login-form-submit-button', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).addClass('sui-button-onload');\n\t\t\t\tvar data = {};\n\t\t\t\tdata.action = 'wdp-sso-status';\n\t\t\t\tdata.hash = $(wrapper).data('nonce');\n\t\t\t\tdata.sso = 0;\n\t\t\t\tdata.ssoUserId = $(wrapper).data('userid');\n\t\t\t\tif ($(wrapper).is(':checked')) {\n\t\t\t\t\tdata.sso = $(wrapper).val();\n\t\t\t\t}\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tdata,\n\t\t\t\t\tnull,\n\t\t\t\t\t'json'\n\t\t\t\t);\n\t\t\t});\n\n\t\t},\n\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminLoginPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminSupportPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminSupportPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.secDialog = null;\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminSupportPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.attachEvents();\n\t\t\tthis.showAlertNotice();\n\t\t\t$(window).trigger('hashchange');\n\t\t\tthis.$el.find('.sui-tabs-menu.js-filter-ticket .sui-tab-item.active').trigger('click');\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function () {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs');\n\t\t\t\tvar index = $(this).data('index');\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active');\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]').addClass('active');\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-modal-security', function (e) {\n\t\t\t\tself.showSupportAccessInfoModal();\n\t\t\t});\n\n\t\t\t$(window).on('hashchange', function () {\n\t\t\t\tself.processHash();\n\t\t\t});\n\n\t\t\tthis.$el.find('.sui-tabs-menu.js-filter-ticket .sui-tab-item').click(function () {\n\t\t\t\t$(this).closest('.sui-tabs-menu').find('.sui-tab-item').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\t\t\t\tself.filterTickets($(this).data('filter'));\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('.sui-notice-top').stop().slideUp('slow');\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', 'form', function (e) {\n\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload');\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-loading-link', function (e) {\n\t\t\t\t$(this).addClass('sui-button-onload');\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '#close-sec-det', function () {\n\t\t\t\tSUI.closeModal();\n\t\t\t});\n\n\t\t\tthis.$el.on('change', '.sui-mobile-nav', function (e) {\n\t\t\t\tself.mobileNav( $(this).val() );\n\t\t\t});\n\t\t},\n\t\tprocessHash: function (mob = true) {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\n\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab').removeClass('current');\n\t\t\tthis.$el.find('.js-sidenav-content').hide();\n\n\t\t\tswitch (hash) {\n\t\t\t\tcase 'access':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href=\"#access\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#access').show();\n\t\t\t\t\tif (mob) {\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#access');\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'system':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href=\"#system\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#system').show();\n\t\t\t\t\tif (mob) {\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#system');\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href=\"#ticket\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#ticket').show();\n\t\t\t\t\tif (mob) {\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#ticket');\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tmobileNav: function (tab) {\n\t\t\tvar hash = location.hash;\n\t\t\tif (hash !== tab) {\n\t\t\t\tlocation.hash = tab;\n\t\t\t}\n\t\t},\n\t\tfilterTickets: function (filter) {\n\t\t\tthis.$el.find('.js-filter-ticket-content').hide();\n\t\t\tthis.$el.find('.js-filter-ticket-content[data-filter=' + filter + ']').show();\n\t\t},\n\t\tshowAlertNotice: function () {\n\t\t\tvar container = $('.sui-support-notice-alert'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tmessage = '',\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\t;\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tmessage = container.data('notice-msg');\n\t\t\tnoticeID = container.attr('id');\n\n\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t}\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\n\t\t},\n\t\tshowSupportAccessInfoModal: function () {\n\t\t\tvar self = this,\n\t\t\t\tmodalID = 'security-details',\n\t\t\t\tcontainer = 'modal-security';\n\n\t\t\tSUI.openModal(\n\t\t\t\tmodalID,\n\t\t\t\tcontainer,\n\t\t\t\tundefined,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminSupportPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// AjaxQ jQuery Plugin\n// Copyright (c) 2012 Foliotek Inc.\n// MIT License\n// https://github.com/Foliotek/ajaxq\n// Uses CommonJS, AMD or browser globals to create a jQuery plugin.\n\n(function (factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // Node/CommonJS\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n    var queues = {};\n    var activeReqs = {};\n\n    // Register an $.ajaxq function, which follows the $.ajax interface, but allows a queue name which will force only one request per queue to fire.\n    // opts can be the regular $.ajax settings plainObject, or a callback returning the settings object, to be evaluated just prior to the actual call to $.ajax.\n    $.ajaxq = function(qname, opts) {\n\n        if (typeof opts === \"undefined\") {\n            throw (\"AjaxQ: queue name is not provided\");\n        }\n\n        // Will return a Deferred promise object extended with success/error/callback, so that this function matches the interface of $.ajax\n        var deferred = $.Deferred(),\n            promise = deferred.promise();\n\n        promise.success = promise.done;\n        promise.error = promise.fail;\n        promise.complete = promise.always;\n\n        // Check whether options are to be evaluated at call time or not.\n        var deferredOpts = typeof opts === 'function';\n        // Create a deep copy of the arguments, and enqueue this request.\n        var clonedOptions = !deferredOpts ? $.extend(true, {}, opts) : null;\n        enqueue(function() {\n            // Send off the ajax request now that the item has been removed from the queue\n            var jqXHR = $.ajax.apply(window, [deferredOpts ? opts() : clonedOptions]);\n\n            // Notify the returned deferred object with the correct context when the jqXHR is done or fails\n            // Note that 'always' will automatically be fired once one of these are called: http://api.jquery.com/category/deferred-object/.\n            jqXHR.done(function() {\n                deferred.resolve.apply(this, arguments);\n            });\n            jqXHR.fail(function() {\n                deferred.reject.apply(this, arguments);\n            });\n\n            jqXHR.always(dequeue); // make sure to dequeue the next request AFTER the done and fail callbacks are fired\n\n            return jqXHR;\n        });\n\n        return promise;\n\n\n        // If there is no queue, create an empty one and instantly process this item.\n        // Otherwise, just add this item onto it for later processing.\n        function enqueue(cb) {\n            if (!queues[qname]) {\n                queues[qname] = [];\n                var xhr = cb();\n                activeReqs[qname] = xhr;\n            }\n            else {\n                queues[qname].push(cb);\n            }\n        }\n\n        // Remove the next callback from the queue and fire it off.\n        // If the queue was empty (this was the last item), delete it from memory so the next one can be instantly processed.\n        function dequeue() {\n            if (!queues[qname]) {\n                return;\n            }\n            var nextCallback = queues[qname].shift();\n            if (nextCallback) {\n                var xhr = nextCallback();\n                activeReqs[qname] = xhr;\n            }\n            else {\n                delete queues[qname];\n                delete activeReqs[qname];\n            }\n        }\n    };\n\n    // Register a $.postq and $.getq method to provide shortcuts for $.get and $.post\n    // Copied from jQuery source to make sure the functions share the same defaults as $.get and $.post.\n    $.each( [ \"getq\", \"postq\" ], function( i, method ) {\n        $[ method ] = function( qname, url, data, callback, type ) {\n\n            if ( $.isFunction( data ) ) {\n                type = type || callback;\n                callback = data;\n                data = undefined;\n            }\n\n            return $.ajaxq(qname, {\n                type: method === \"postq\" ? \"post\" : \"get\",\n                url: url,\n                data: data,\n                success: callback,\n                dataType: type\n            });\n        };\n    });\n\n    var isQueueRunning = function(qname) {\n        return (queues.hasOwnProperty(qname) && queues[qname].length > 0) || activeReqs.hasOwnProperty(qname);\n    };\n\n    var isAnyQueueRunning = function() {\n        for (var i in queues) {\n            if (isQueueRunning(i)) return true;\n        }\n        return false;\n    };\n\n    $.ajaxq.isRunning = function(qname) {\n        if (qname) return isQueueRunning(qname);\n        else return isAnyQueueRunning();\n    };\n\n    $.ajaxq.getActiveRequest = function(qname) {\n        if (!qname) throw (\"AjaxQ: queue name is required\");\n\n        return activeReqs[qname];\n    };\n\n    $.ajaxq.abort = function(qname) {\n        if (!qname) throw (\"AjaxQ: queue name is required\");\n        \n        var current = $.ajaxq.getActiveRequest(qname);\n        delete queues[qname];\n        delete activeReqs[qname];\n        if (current) current.abort();\n    };\n\n    $.ajaxq.clear = function(qname) {\n        if (!qname) {\n            for (var i in queues) {\n                if (queues.hasOwnProperty(i)) {\n                    queues[i] = [];\n                }\n            }\n        }\n        else {\n            if (queues[qname]) {\n                queues[qname] = [];\n            }\n        }\n    };\n\n}));\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it doesn't exist.\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.showHidePassword = function () {\n    $('.sui-2-12-24 .sui-form-field').each(function () {\n      var $this = $(this);\n\n      if (0 !== $this.find('input[type=\"password\"]').length) {\n        $this.find('[class*=\"sui-button\"], .sui-password-toggle').off('click.toggle-password').on('click.toggle-password', function () {\n          var $button = $(this),\n              $input = $button.parent().find('input'),\n              $icon = $button.find('> span');\n          $button.parent().toggleClass('sui-password-visible');\n          $button.find('.sui-password-text').toggleClass('sui-hidden');\n\n          if ($button.parent().hasClass('sui-password-visible')) {\n            $input.prop('type', 'text');\n            $icon.removeClass('sui-icon-eye').addClass('sui-icon-eye-hide');\n          } else {\n            $input.prop('type', 'password');\n            $icon.removeClass('sui-icon-eye-hide').addClass('sui-icon-eye');\n          }\n        });\n      }\n    });\n  };\n\n  SUI.showHidePassword();\n})(jQuery);","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","import '../scss/dashboard-admin.scss';\n\n// shared ui\nimport \"@wpmudev/shared-ui/dist/js/_src/dropdowns\";\nimport \"@wpmudev/shared-ui/dist/js/_src/select2.full\";\nimport \"@wpmudev/shared-ui/dist/js/_src/select2\";\nimport \"@wpmudev/shared-ui/dist/js/_src/password\";\nimport \"@wpmudev/shared-ui/dist/js/_src/notifications\";\nimport \"@wpmudev/shared-ui/dist/js/_src/modal-dialog\";\nimport \"@wpmudev/shared-ui/dist/js/_src/tabs\";\nimport \"@wpmudev/shared-ui/dist/js/_src/side-tabs\";\nimport \"ajaxq\";\nimport \"./admin/plugins\";\nimport \"./admin/support\";\nimport \"./admin/tools\";\nimport \"./admin/settings\";\nimport \"./admin/login\";\nimport \"./admin/dashboard\";\nimport \"./admin/common\";\nimport \"./admin/settings/data\";\n\n// export A11yDialog\njQuery(document).ready(function () {\n\tjQuery(\"body.wpmud-plugins\").wpmudevDashboardAdminPluginsPage();\n\tjQuery(\"body.wpmud-support\").wpmudevDashboardAdminSupportPage();\n\tjQuery(\"body.wpmud-analytics\").wpmudevDashboardAdminToolsPage();\n\tjQuery(\"body.wpmud-whitelabel\").wpmudevDashboardAdminToolsPage();\n\tjQuery(\"body.wpmud-settings\").wpmudevDashboardAdminSettingsPage();\n\tjQuery(\"body.wpmud-login\").wpmudevDashboardAdminLoginPage();\n\tjQuery(\"body.wpmud-dashboard\").wpmudevDashboardAdminDashboardPage();\n\tjQuery(\"body.wpmudevdash\").wpmudevDashboardAdminCommon();\n\n\tjQuery(document).trigger(\"wpmud.ready\");\n});\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","$","window","SUI","linkDropdown","closeAllDropdowns","$except","$dropdowns","not","removeClass","on","e","$parent","this","parent","hasClass","toggleClass","preventDefault","$anchor","is","target","has","length","jQuery","suiTabs","config","data","type","indexGroup","indexItem","types","groups","activeGroups","activeChildren","activeItems","memory","onClick","groupIndex","itemIndex","setNodes","callback","tab","pane","i","children","putActiveClass","classList","remove","add","setOption","key","value","options","tabItems","setDefaults","document","querySelectorAll","tabGroup","paneGroup","addEventListener","bind","location","hash","replace","id","init","tabsOverflow","$el","tabs","closest","find","leftButton","rightButton","overflowing","scrollWidth","width","scrollLeft","addClass","reachedEnd","offset","newScrollLeft","outerWidth","get","animate","tabgroup","tablist","keys","direction","each","clickEventListener","event","index","keyCode","which","determineOrientation","keydownEventListener","activateTab","keyupEventListener","inputs","panels","controls","attr","input","next","panel","prop","deactivateTabs","removeAttr","proceed","pressed","undefined","focus","switchTabOnArrowPress","currentTab","setCallback","stopPropagation","pluginName","wpmudevDashboardAdminDashboardPage","element","pluginList","upgradeNonce","redirectHash","upgradeQueName","isFailed","upgradedPlugins","extend","attachEvents","initUpgrading","stop","slideUp","self","redirecth","push","project","upgradePlugins","project_id","addUpgradeAjaxQue","ajaxq","url","ajaxurl","action","pid","success","response","message","console","log","error","complete","isRunning","redirectToDash","redirect","href","fn","module","exports","select","escapeJS","string","html","text","formatIcon","container","label","icon","toLowerCase","formatIconSelection","formatColor","markup","border","color","formatColorSelection","formatVars","content","val","formatVarsSelection","getParent","getParentId","selectParent","hasSearch","isSmall","SUIselect2","dropdownParent","minimumResultsForSearch","dropdownCssClass","initIcon","templateResult","templateSelection","escapeMarkup","initColor","initSearch","minimumInputLength","maximumSelectionLength","initVars","theme","_defineProperty","Object","defineProperty","enumerable","configurable","writable","_this","openNotice","noticeId","noticeMessage","noticeOptions","noticeNode","nodeWrapper","Error","utils","allowedNotices","isObject","isPlainObject","deepMerge","_len","arguments","sources","Array","_key","source","shift","assign","apply","concat","setProperties","incomingOptions","dismiss","show","tooltip","autoclose","timeout","buildDismiss","createElement","className","innerHTML","buildIcon","setAttribute","buildMessage","prepend","buildNotice","append","showNotice","animation","slideDown","trigger","closeNotice","setTimeout","parseInt","fadeIn","fadeOut","hide","hideNotice","empty","notice","Utils","Open","paragraph","Close","btnOpen","btnClose","wpmudevDashboardAdminToolsPage","wpMediaFrames","initDashIconPicker","initBrandingMediaUploader","initBrandingLinkLogo","showAlertNotice","initSitesActions","overflowTabsShowArrowRight","tabWrapper","processHash","mediaButton","wrapperId","wrapper","hasOwnProperty","open","wp","media","title","button","multiple","attachment","state","first","toJSON","inputId","preview","css","$submitbtn","$input","$clearbtn","$preview","$formfield","$type","isValidLink","$iconWrapper","$search","keyword","$matches","$elements","site","name","appendTo","click","link","test","noticeID","aria","KeyCode","BACKSPACE","TAB","RETURN","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","item","parentNode","removeChild","isFocusable","tabIndex","getAttribute","disabled","nodeName","rel","simulateClick","evt","MouseEvent","bubbles","cancelable","view","dispatchEvent","IgnoreUtilFocusChanges","dialogOpenClass","focusFirstDescendant","childNodes","child","attemptFocus","focusLastDescendant","activeElement","OpenDialogList","getCurrentDialog","closeCurrentDialog","currentDialog","close","handleEscape","Dialog","dialogId","focusAfterClosed","focusFirst","hasOverlayMask","isCloseOnEsc","isAnimated","dialogNode","getElementById","validRoles","trim","split","some","token","role","openEvent","Event","backdropClass","contains","backdropNode","insertBefore","dialogNodev","appendChild","body","preDiv","preNode","onclick","postDiv","postNode","nextSibling","removeListeners","addListeners","lastFocus","afterOpenEvent","closeEvent","pop","slides","hasAttribute","newDialogSize","newDialogLabel","getDialogLabel","newDialogDesc","getDialogDesc","removeAttribute","afterCloseEvent","newDialogId","newFocusAfterClosed","newFocusFirst","slide","newSlideId","newSlideFocus","newSlideEntrance","getAllSlides","getNewSlide","trapFocus","removeEventListener","parentElement","openModal","dialogOverlay","closeModal","replaceModal","slideModal","modalDialog","buttonOpen","buttonClose","buttonReplace","buttonSlide","overlayMask","modalId","slideId","closeFocus","newFocus","wpmudevDashboardAdminCommon","showUpgradeHighlightsModal","initSelectSearch","modal","post","search","searchAction","searchParent","languageSearching","languageNoresults","languageErrorLoading","languageInputTooShort","ajax","params","q","term","processResults","results","result","display","language","searching","noResults","errorLoading","inputTooShort","wpmudevDashboardAdminPluginsPage","plugins","limitPerPage","skipPluginIds","page","currentPluginsList","ftpDialog","pluginDialogs","pluginAfterInstallDialogs","actionEnabled","currentFilter","bulkPluginsList","bulkDialog","bulkActionErrors","bulkPluginAction","bulkAjaxQueueName","bulkActionProgress","isSearching","topPluginIds","newReleasePluginIds","maybeShowFtpDialog","info","pluginData","displayPlugins","isChangelogHash","isUpdateHash","showSuccessNotification","match","history","pushState","showNotification","refreshPluginList","filterPlugins","clearBulk","sort","a","b","sortA","sortB","isCompatible","installed","active","hasUpdate","notInstalledHeader","row","clone","avheader","paginate","searchTerm","showChangelog","update","activate","deactivate","install","uninstall","saveFtp","dialogType","showPluginDialog","$thumb","$thumbs","$sliders","$slides","$slide","height","$currThumb","$nextThumb","$currSlide","$nextSlide","$slider","$prevThumb","$prevSlide","prev","plugin","searchPluginById","ids","checkboxes","activePlugins","notInstalledPlugins","isProject","onBulkDialogShow","wdp_locale","plugins_cannot_delete","forEach","plugins_active","plugins_not_installed","showBulkErrorNotice","onBulkDialogHide","filter","resetPage","no_result_search_lang","no_plugins_lang","getSearchResult","no_result_search_message","showSearchNotice","closeSearchNotice","no_plugins_message","pluginsList","toSearch","searchable","indexOf","disableActions","hideNotifications","ajaxData","is_network","reload","always","enableActions","fail","xhr","statusText","exception","doUpdate","replaceWith","hidePluginDialog","refreshUpdateCount","showPluginDialogAfterInstall","applyBulkAction","dialog","isLast","bulkPluginsCount","addBulkQueue","ajax_action","progressIncreaser","Math","floor","stateText","stateBaseText","updating_plugin","activating_plugin","installing_plugin","installing_activating_plugin","deactivating_plugin","deleting_plugin","incompatibleReason","updateBulkProgressBar","beforeSend","checkAjax","currentProgress","onBulkActionCompleted","noticeMsg","notif","form","ftp_pass","ftp_user","ftp_host","abort","modalID","loadPluginDialogContent","initPluginDialog","destroy","onPluginDialogContentLoaded","navSlider","firstImage","onSliderFirstImageLoaded","dropdownActions","directInstall","updated","countOnWPMenu","countOnTab","allTab","count","prevCount","clearHash","div","scrollTop","top","S2","select2","amd","requirejs","require","define","undef","main","_req","makeMap","handlers","defined","waiting","defining","hasOwn","aps","slice","jsSuffixRegExp","hasProp","call","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","j","part","baseParts","map","starMap","nodeIdCompat","charAt","splice","join","makeRequire","relName","forceSync","args","makeNormalize","makeLoad","depName","callDep","splitPrefix","prefix","substring","makeRelParts","makeConfig","relParts","parts","relResourceName","f","n","pr","p","uri","deps","cjsModule","ret","usingExports","callbackType","load","alt","cfg","_defined","_$","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","ctr","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","_type","invoke","len","generateChars","chars","random","toString","func","context","_convertData","originalKey","dataLevel","k","hasScroll","el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","replaceMap","String","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","dest","src","destinationClasses","clazz","sourceClasses","replacements","Results","$element","dataAdapter","render","$results","clear","displayMessage","hideLoading","$message","hideMessages","$options","$option","option","position","$dropdown","sorter","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","current","selected","selectedIds","s","showLoading","loading","loadingMore","$loading","attrs","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","template","$children","c","$child","$childrenContainer","$container","isOpen","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","nextTop","nextOffset","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","$this","originalEvent","offsetDelta","ENTER","SHIFT","CTRL","ALT","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","off","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","all","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","selectedElement","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","defaults","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","transport","failure","$request","then","_request","request","isArray","status","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","checkChildren","toUpperCase","_removeOldTags","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","substr","MinimumInputLength","$e","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","minWidth","countResults","MinimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","TagsSearchHighlight","$firstOption","firstElement","inputTooLong","overChars","maximumSelected","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","original","amdLanguageBase","autocomplete","dropdownAutoWidth","scrollAfterSelect","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","isMultiSelect","altKey","selectedValue","keyPressed","fromCharCode","values","_$$text","startsWith","arrLength","elemVal","_isChangeMutation","addedNodes","removedNodes","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance","factory","sideTabs","newContent","$label","$data","$wrapper","$alllabels","$allinputs","confirmButton","resetSettings","wpmudevDashboardAdminSettingsPage","adminAddDialog","translationDialog","prepareTranslationUpdateDialog","initUsersSelect","project_slug","showModals","isUpdateNotificationHash","translation_updated","getTranslationUpdateCount","replaceState","mobileNav","includes","$form","$added","$available","$addedLabel","$availableLabel","$noResultsNotice","$allAddedNotice","$submit","toggleNotice","$searchable","$matchesAll","$matchesAdded","$user","onTranslationUpdateShow","onTranslationUpdateHide","installing_translation","slug","focusWhenOpen","hasTrigger","showTranslationUpdateModal","wpmudevDashboardAdminLoginPage","animSyncInterval","numAnimateSync","currentAnimateSync","emailInput","passwordInput","initLoginButtonState","animateSync","initiateHubSync","storeSingleSignOnStatus","email","password","isValidEmail","anims","setInterval","nextAnimateItem","dashurl","sso","ssoUserId","wpmudevDashboardAdminSupportPage","secDialog","showSupportAccessInfoModal","filterTickets","mob","queues","activeReqs","qname","opts","deferred","Deferred","promise","done","deferredOpts","clonedOptions","enqueue","jqXHR","resolve","reject","dequeue","cb","nextCallback","isFunction","dataType","isQueueRunning","isAnyQueueRunning","getActiveRequest","showHidePassword","$button","$icon","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","ready"],"sourceRoot":""}

haha - 2025