{"version":3,"file":"kendo.toolbar.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","Class","ui","Widget","isFunction","keys","outerWidth","_outerWidth","ns","KBUTTON","OVERFLOW_BUTTON","TOGGLE_BUTTON","BUTTON_GROUP","SPLIT_BUTTON","MENU_BUTTON","KSEPARATOR","SPACER_CLASS","STATE_SELECTED","STATE_DISABLED","STATE_HIDDEN","FORCE_HIDDEN","OVERFLOW_HIDDEN","OVERFLOW_ANCHOR","OVERFLOW_CONTAINER","FIRST_TOOLBAR_VISIBLE","LAST_TOOLBAR_VISIBLE","SPLIT_BUTTON_ARROW","TEMPLATE_ITEM","DROPDOWNLIST","COLORPICKER","INPUT_BUTTON","KFOCUS","ARIA_DISABLED","ARIA_LEBEL","CLICK","TOGGLE","OPEN","CLOSE","FOCUS","KEYDOWN","SPACER","BOTH","PRIMARY","ROLE","BUTTON","SPLITBUTTON","DROPDOWNBUTTON","SEPARATOR","OVERFLOW","NEXT","TABINDEX","TEMPLATE","INPUT","HIDDEN","GROUP","KENDO_FOCUSABLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OPTION_LIST_SUFFIX","KENDO_UID_ATTR","attr","EMPTY","NOTHING","TEXT_ITEM","DOT","COMMA","toolbar","components","overflowAnchor","overflowContainer","registerComponent","name","overflow","Item","extend","addOverflowAttr","this","element","options","addUidAttr","uid","addIdAttr","id","addOverflowIdAttr","attributes","classes","class","addClass","show","removeClass","hidden","hide","overflowHidden","remove","enable","isEnabled","toggleClass","twin","splitContainerId","find","data","type","resizable","popup","BareItem","init","Button","useButtonTag","primary","themeColor","togglable","toggle","selected","url","mobile","group","addToGroup","click","clickHandler","toggleHandler","showIcon","showText","state","propagate","select","getParentGroup","isChild","closest","ToolBarButton","fn","call","align","text","html","icon","spriteCssClass","imageUrl","renderButton","button","OverflowButton","_wrap","wrap","parent","ButtonGroup","createButtons","buttonConstructor","items","buttons","i","length","guid","appendTo","refresh","children","filter","first","last","ToolBarButtonGroup","buttonGroup","OverflowButtonGroup","ToolBarMenuButton","template","href","prependTo","ToolBarSplitButton","that","splitButton","SplitButton","_extend","menuButtons","wrapper","bind","_buttonClick","_close","_open","addMenuAttributes","ev","trigger","target","preventDefault","map","item","itemInstance","each","index","elmToRemove","destroy","mainButton","OverflowSplitButton","main","elements","add","ToolBarDropDownButton","dropDownButton","DropDownButton","OverflowTextItem","append","textItem","OverflowDropDownButton","ToolBarSeparator","separator","OverflowSeparator","ToolBarSpacer","TemplateItem","jQuery","OverflowTemplateItem","toggleActive","e","is","preventClick","findFocusableSibling","dir","getSibling","next","prev","getter","candidate","Group","inArray","splice","ToolBar","TOOLBAR","_isRtl","support","isRtl","_groups","isMobile","animation","open","effects","_renderOverflow","overflowUserEvents","UserEvents","threshold","allowSelection","tap","_toggleOverflow","_resizeHandler","onResize","resize","_shrink","innerWidth","userEvents","document","documentElement","press","release","on","_keydown","_focusIn","_focusOut","_toggleOverflowAnchor","_tabIndex","notify","events","navigateOnTab","groupName","destroySplitButtons","destroyDropDownButtons","off","unbindResize","idx","_getItem","tool","overflowTool","inputsInTemplate","component","itemClasses","overflowTemplate","rootUid","container","angular","get","toolbarItem","overflowItem","isResizable","buttonGroupInstance","getSelectedFromGroup","checked","horizontalDirection","hasClass","Popup","origin","position","anchor","copyAnchorStyles","css","parseFloat","innerHeight","width","activate","close","li","isComplexTool","keyCode","ESC","TAB","altKey","UP","DOWN","SPACEBAR","ENTER","HOME","END","paddingEnd","visibility","handler","eventData","urlTarget","templateFocusable","_resetTabIndex","sender","innerFocusable","innerWidget","widgetInstance","_getItems","direction","templateItem","activeElement","visible","eq","RIGHT","_getNextElement","LEFT","itemIndex","parentElement","focusableItem","current","_toggle","_resize","containerWidth","_stretch","_markVisibles","_childrenWidth","childrenWidth","gap","parseInt","Math","ceil","commandElement","visibleCommands","_hideItem","hiddenCommands","_showItem","itemOuterWidth","overflowItems","toolbarItems","visibleOverflowItems","visibleToolbarItems","toFocus","focusableItems","firstFocusable","plugin"],"sources":["kendo.toolbar.js"],"mappings":"CAAA,SAAWA,GACW,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,iBAAkB,uBAAwB,kBAAmB,wBAAyB,wBAAyB,4BAA6BD,GACjMA,IAFJ,EAGG,YASC,SAAUG,EAAGC,GACT,IAAIC,EAAQC,OAAOD,MACfE,EAAQF,EAAME,MACdC,EAAKH,EAAMG,GACXC,EAASD,EAAGC,OACZC,EAAaL,EAAMK,WACnBC,EAAON,EAAMM,KACbC,EAAaP,EAAMQ,YACnBC,EAAK,gBAELC,EAAU,WACVC,EAAkB,oBAClBC,EAAgB,kBAChBC,EAAe,iBACfC,EAAe,iBACfC,EAAc,gBACdC,EAAa,cACbC,EAAe,WAGfC,EAAiB,aACjBC,EAAiB,aACjBC,EAAe,WACfC,EAAe,iBAMfC,EAAkB,oBAClBC,EAAkB,oBAClBC,EAAqB,uBAErBC,EAAwB,0BACxBC,EAAuB,yBACvBC,EAAqB,uBACrBC,EAAgB,iBAChBC,EAAe,iBACfC,EAAc,gBACdC,EAAe,iBACfC,EAAS,UAETC,EAAgB,gBAEhBC,EAAa,aAEbC,EAAQ,QACRC,EAAS,SACTC,EAAO,OACPC,EAAQ,QACRC,EAAQ,QACRC,EAAU,UAGVC,EAAS,SACTC,EAAO,OACPC,EAAU,UAEVC,EAAO,OACPC,EAAS,SACTC,EAAc,cACdC,EAAiB,iBACjBC,EAAY,YACZC,EAAW,WACXC,EAAO,OAEPC,EAAW,WACXC,EAAW,WACXC,EAAQ,QAGRC,GAAS,SACTC,GAAQ,QAERC,GAAkB,kBAElBC,GAAgB,eAChBC,GAAiB,gBACjBC,GAAiB,QACjBC,GAAgB,OAGhBC,GAAqB,cAErBC,GAAiB9D,EAAM+D,KAAK,OAY5BC,GAAQ,IACRC,GAAU,GACVC,GAAY,WACZC,GAAM,IACNC,GAAQ,IAIRpE,EAAMqE,QAAU,GAEhB,IAAIC,GAAa,CACbC,eAAgB,yJAChBC,kBAAmB,2DAGvBxE,EAAMqE,QAAQI,kBAAoB,SAASC,EAAML,EAASM,GACtDL,GAAWI,GAAQ,CACfL,QAASA,EACTM,SAAUA,IAIlB,IAAIC,GAAO5E,EAAME,MAAM2E,OAAO,CAC1BC,gBAAiB,WACbC,KAAKC,QAAQjB,KAAK/D,EAAM+D,KAAKd,GAAW8B,KAAKE,QAAQN,UAAYf,KAGrEsB,WAAY,WACRH,KAAKC,QAAQjB,KAAKD,GAAgBiB,KAAKE,QAAQE,MAGnDC,UAAW,WACHL,KAAKE,QAAQI,IACbN,KAAKC,QAAQjB,KA5BpB,KA4B6BgB,KAAKE,QAAQI,KAI3CC,kBAAmB,WACXP,KAAKE,QAAQI,IACbN,KAAKC,QAAQjB,KAlCpB,KAkC6BgB,KAAKE,QAAQI,GAAK,cAIhDE,WAAY,WACR,IACIC,EADAD,EAAaR,KAAKE,QAAQM,WAG1BA,IACIA,EAAWE,QACXD,EAAUD,EAAWE,MAErBV,KAAKC,QAAQU,SAASF,UAEfD,EAAWE,OAGtBV,KAAKC,QAAQjB,KAAKwB,GAElBA,EAAWE,MAAQD,IAI3BG,KAAM,WACFZ,KAAKC,QAAQY,YAAYxE,GACzB2D,KAAKC,QAAQY,YAAYvE,GACzB0D,KAAKE,QAAQY,QAAS,GAG1BC,KAAM,WACFf,KAAKC,QAAQU,SAAStE,GACtB2D,KAAKC,QAAQU,SAASrE,GAElB0D,KAAKJ,UAAYI,KAAKgB,gBACtBhB,KAAKgB,iBAEThB,KAAKE,QAAQY,QAAS,GAG1BG,OAAQ,WACJjB,KAAKC,QAAQgB,UAGjBC,OAAQ,SAASC,GACTA,IAAcnG,IACdmG,GAAY,GAEhBnB,KAAKC,QAAQmB,YAAYhF,GAAiB+E,GAC1CnB,KAAKC,QAAQjB,KAAK9B,GAAgBiE,GAElCnB,KAAKE,QAAQgB,OAASC,GAG1BE,KAAM,WACF,IAAIjB,EAAMJ,KAAKC,QAAQjB,KAAKD,IAC5B,OAAIiB,KAAKJ,UAAYI,KAAKE,QAAQoB,iBACvBvG,EAAE,IAAMiF,KAAKE,QAAQoB,kBACnBC,KAAK,IAAMxC,GAAiB,KAAOqB,EAAM,MACzCoB,KAAKxB,KAAKE,QAAQuB,MACpBzB,KAAKJ,SACLI,KAAKV,QACHW,QACAsB,KAAK,IAAMxC,GAAiB,KAAOqB,EAAM,MACzCoB,KAAKxB,KAAKE,QAAQuB,MACpBzB,KAAKV,QAAQY,QAAQwB,UACrB1B,KAAKV,QACHqC,MAAM1B,QACNsB,KAAK,IAAMxC,GAAiB,KAAOqB,EAAM,MACzCoB,KAAKxB,KAAKE,QAAQuB,WAJxB,KASfxG,EAAMqE,QAAQO,KAAOA,GAErB,IAAI+B,GAAW/B,GAAKC,OAAO,CACvB+B,KAAM,SAAS3B,EAASZ,GACpBU,KAAKE,QAAUnF,EAAE+E,OAAO,GAAIE,KAAKE,QAASA,GAC1CF,KAAKV,QAAUA,KAIvBrE,EAAMqE,QAAQsC,SAAWA,GAEzB,IAAIE,GAASjC,GAAKC,OAAO,CACrB+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUC,EAAQ6B,aAAehH,EAAE,qBAAuBA,EAAE,8BAEhEiF,KAAKC,QAAUA,EACfD,KAAKE,QAAUnF,EAAE+E,OAAO,GAAIE,KAAKE,QAASA,GAC1CF,KAAKV,QAAUA,EAEfU,KAAKQ,aAEDN,EAAQ8B,UACRhC,KAAKE,QAAQ+B,WAAarE,GAG1BsC,EAAQgC,YACRjC,EAAQU,SAAS9E,GACjBmE,KAAKmC,OAAOjC,EAAQkC,WAGpBlC,EAAQmC,MAAQrH,GAAgBkF,EAAQ6B,eACxC9B,EAAQjB,KAtLb,OAsLwBkB,EAAQmC,KACvBnC,EAAQoC,QACRrC,EAAQjB,KAAK/D,EAAM+D,KAAKnB,GAAOC,IAInCoC,EAAQqC,QACRtC,EAAQjB,KAAK/D,EAAM+D,KAAKR,IAAQ0B,EAAQqC,OACxCvC,KAAKuC,MAAQvC,KAAKV,QAAQkD,WAAWxC,KAAME,EAAQqC,SAGlDrC,EAAQgC,WAAahC,EAAQuC,OAASnH,EAAW4E,EAAQuC,SAC1DzC,KAAK0C,aAAexC,EAAQuC,OAG5BvC,EAAQgC,WAAahC,EAAQiC,QAAU7G,EAAW4E,EAAQiC,UAC1DnC,KAAK2C,cAAgBzC,EAAQiC,SAIrCjC,QAAS,CACL0C,SAAUjF,EACVkF,SAAUlF,GAGdwE,OAAQ,SAASW,EAAOC,GACpBD,IAAUA,EAEN9C,KAAKuC,OAASO,EACd9C,KAAKuC,MAAMS,OAAOhD,MACVA,KAAKuC,OACbvC,KAAKgD,OAAOF,GAGZC,GAAa/C,KAAKqB,QAClBrB,KAAKqB,OAAOc,OAAOW,IAI3BG,eAAgB,WACZ,GAAIjD,KAAKE,QAAQgD,QACb,OAAOlD,KAAKC,QAAQkD,QAAQ/D,GAAMtD,GAAc0F,KAAK,kBAKjEvG,EAAMqE,QAAQwC,OAASA,GAEvB,IAAIsB,GAAgBtB,GAAOhC,OAAO,CAC9B+B,KAAM,SAAS3B,EAASZ,GACpBwC,GAAOuB,GAAGxB,KAAKyB,KAAKtD,KAAME,EAASZ,GAEnC,IAAIW,EAAUD,KAAKC,QACnBC,EAAUF,KAAKE,QAEfD,EAAQU,SAAShF,GAEjBqE,KAAKK,YAEDH,EAAQqD,OACRtD,EAAQU,SAAS,WAAaT,EAAQqD,QAGpCrD,EAAQsD,MAA6B,WAApBtD,EAAQ2C,UAAyB3C,EAAQ2C,UAAYlF,EAM/DuC,EAAQsD,MACjBvD,EAAQjB,KAAK7B,EAAY+C,EAAQsD,MAN7BtD,EAAQoC,OACRrC,EAAQwD,KAAK,yBAA2BvD,EAAQsD,KAAO,WAEvDvD,EAAQwD,KAAKvD,EAAQsD,OAMzBtD,EAAQwD,MAAQxD,EAAQyD,gBAAkBzD,EAAQ0D,WACzB,YAArB1D,EAAQ0C,UAA0B1C,EAAQ0C,WAAajF,IACvDuC,EAAQwD,KAAO,KACfxD,EAAQyD,eAAiB,KACzBzD,EAAQ0D,SAAW,MAI3B3I,EAAMwI,KAAKI,aAAa5D,EAASC,GAEjCF,KAAKG,aACLH,KAAKD,kBACLC,KAAKkB,OAAOhB,EAAQgB,QAEhBhB,EAAQY,QACRd,KAAKe,OAGTf,KAAKC,QAAQuB,KAAK,CACdC,KAAM3D,EACNgG,OAAQ9D,QAIhBgD,OAAQ,SAASZ,GACTA,IAAapH,IACboH,GAAW,GAGXpC,KAAKE,QAAQgC,WACblC,KAAKC,QAAQjB,KA3SV,eA2S6BoD,GAGpCpC,KAAKC,QAAQmB,YAAYjF,EAAgBiG,GACzCpC,KAAKE,QAAQkC,SAAWA,KAIhCnH,EAAMqE,QAAQ8D,cAAgBA,GAE9B,IAAIW,GAAiBjC,GAAOhC,OAAO,CAC/B+B,KAAM,SAAS3B,EAASZ,GACpBU,KAAKJ,UAAW,EAEhBkC,GAAOuB,GAAGxB,KAAKyB,KAAKtD,KAAMjF,EAAE+E,OAAO,GAAII,GAAUZ,GAEjD,IAAIW,EAAUD,KAAKC,UACnBC,EAAUF,KAAKE,SAEDsD,MAAStD,EAAQ2C,UAAY3E,GAAYgC,EAAQ2C,UAAYlF,EAM9DuC,EAAQsD,MACjBvD,EAAQjB,KAAK7B,EAAY+C,EAAQsD,MAN7BtD,EAAQoC,OACRrC,EAAQwD,KAAK,yBAA2BvD,EAAQsD,KAAO,WAEvDvD,EAAQwD,KAAKvD,EAAQsD,OAMzBtD,EAAQwD,MAAQxD,EAAQyD,gBAAkBzD,EAAQ0D,WAC9C1D,EAAQ0C,WAAa1E,GAAYgC,EAAQ0C,WAAajF,IACtDuC,EAAQwD,KAAO,KACfxD,EAAQyD,eAAiB,KACzBzD,EAAQ0D,SAAW,MAI3B3I,EAAMwI,KAAKI,aAAa5D,EAASC,GAE5BA,EAAQgD,SACTlD,KAAKgE,QAGThE,KAAKO,oBACLP,KAAKQ,aACLR,KAAKG,aACLH,KAAKD,kBACLC,KAAKkB,OAAOhB,EAAQgB,QAEpBjB,EAAQU,SAAS/E,qBAA0BD,GAEvCuE,EAAQY,QACRd,KAAKe,OAGLb,EAAQgC,WACRlC,KAAKmC,OAAOjC,EAAQkC,UAGxBpC,KAAKC,QAAQuB,KAAK,CACdC,KAAM3D,EACNgG,OAAQ9D,QAIhBgE,MAAO,WACHhE,KAAKC,QAAUD,KAAKC,QAAQgE,KAlUd,mCAkUwCC,UAG1DlD,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,IAG1ByG,OAAQ,SAASZ,GACTA,IAAapH,IACboH,GAAW,GAGXpC,KAAKE,QAAQgD,QACblD,KAAKC,QAAQmB,YAAYjF,EAAgBiG,GAEzCpC,KAAKC,QAAQsB,KAAKnC,GAAMzD,GAASyF,YAAYjF,EAAgBiG,GAEjEpC,KAAKE,QAAQkC,SAAWA,KAIhCnH,EAAMqE,QAAQyE,eAAiBA,GAC/B9I,EAAMqE,QAAQI,kBAAkB5B,EAAQsF,GAAeW,IAEvD,IAAII,GAActE,GAAKC,OAAO,CAC1BsE,cAAe,SAASC,GAKpB,IAJA,IAAInE,EAAUF,KAAKE,QACfoE,EAAQpE,EAAQqE,SAAW,GAGtBC,EAAI,EAAGA,EAAIF,EAAMG,OAAQD,IACzBF,EAAME,GAAGpE,MACVkE,EAAME,GAAGpE,IAAMnF,EAAMyJ,QAElB,IAAIL,EAAkBtJ,EAAE+E,OAAO,CAAEwC,OAAQpC,EAAQoC,OAAQY,SAAS,EAAMzB,KAAM3D,GAAUwG,EAAME,IAAKxE,KAAKV,SAC1GW,QAAQ0E,SAAS3E,KAAKC,UAInC2E,QAAS,WACL5E,KAAKC,QAAQ4E,WAAWC,OAAO,qBAAiCC,QAAQpE,SAxalE,iBAyaNX,KAAKC,QAAQ4E,WAAWC,OAAO,qBAAiCE,OAAOrE,SAxanE,kBA4aZ1F,EAAMqE,QAAQ6E,YAAcA,GAE5B,IAAIc,GAAqBd,GAAYrE,OAAO,CACxC+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUD,KAAKC,QAAUlF,EAAE,eAC/BiF,KAAKE,QAAUA,EACfF,KAAKV,QAAUA,EAEfU,KAAKK,YAEDH,EAAQqD,OACRtD,EAAQU,SAAS,WAAaT,EAAQqD,OAG1CvD,KAAKoE,cAAchB,IACnBpD,KAAKQ,aACLR,KAAKG,aACLH,KAAKD,kBACLC,KAAK4E,UAEL3E,EAAQU,SAAS7E,GAEboE,EAAQY,QACRd,KAAKe,OAGTf,KAAKC,QAAQuB,KAAK,CACdC,KAAM,cACNyD,YAAalF,UAKzB/E,EAAMqE,QAAQ2F,mBAAqBA,GAEnC,IAAIE,GAAsBhB,GAAYrE,OAAO,CACzC+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUD,KAAKC,QAAUlF,EAAE,aAC/BiF,KAAKE,QAAUA,EACfF,KAAKV,QAAUA,EACfU,KAAKJ,UAAW,EAEhBI,KAAKO,oBAELP,KAAKoE,cAAcL,IACnB/D,KAAKQ,aACLR,KAAKG,aACLH,KAAKD,kBACLC,KAAK4E,UAEL3E,EAAQU,UAAUT,EAAQoC,OAASpD,GAAUpD,GAAgBmD,GA3dpD,oBA6dTe,KAAKC,QAAQuB,KAAK,CACdC,KAAM,cACNyD,YAAalF,QAIrBgB,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,MAI9BtB,EAAMqE,QAAQ6F,oBAAsBA,GACpClK,EAAMqE,QAAQI,kBAAkB,cAAeuF,GAAoBE,IAEnE,IAAIC,GAAoBhC,GAActD,OAAO,CACzC+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAKAA,GAHJC,EAAUF,KAAKE,QAAUnF,EAAE+E,OAAO,GAAIE,KAAKE,QAASA,IAExCmC,MAAQrH,EACND,EAAEE,EAAMoK,SAlbhB,iGAkbUpK,CAA4B,CACpCqK,KAAMpF,EAAQmC,IACdmB,KAAMtD,EAAQsD,QAGRzI,EAAEE,EAAMoK,SA3bb,qGA2bOpK,CAA+B,CACvCuI,KAAMtD,EAAQsD,QAItBxD,KAAKC,QAAUA,EACfD,KAAKV,QAAUA,EAEXY,EAAQuC,OAASnH,EAAW4E,EAAQuC,SACpCzC,KAAK0C,aAAexC,EAAQuC,OAG5BvC,EAAQgC,WAAahC,EAAQiC,QAAU7G,EAAW4E,EAAQiC,UAC1DnC,KAAK2C,cAAgBzC,EAAQiC,QAG7BjC,EAAQ0D,SACF7I,EAAE,sCAAsCwK,UAAUtF,GACpDjB,KAAK,MAAOkB,EAAQ0D,UACjB1D,EAAQwD,KACR3I,EAAE,iBAAiBwK,UAAUtF,GAC/BjB,KAAK,QAAS,cAAgBkB,EAAQwD,MACpCxD,EAAQyD,gBACR5I,EAAE,kCAAkCwK,UAAUtF,GAChDU,SAAST,EAAQyD,gBAG1B3D,KAAKK,YACLL,KAAKG,aACLH,KAAKD,kBACLC,KAAKQ,aACLR,KAAKkB,OAAOhB,EAAQgB,QAEhBhB,EAAQqC,QACRtC,EAAQjB,KAAK/D,EAAM+D,KAAKR,IAAQ0B,EAAQqC,OACxCvC,KAAKuC,MAAQvC,KAAKV,QAAQkD,WAAWxC,KAAME,EAAQqC,QAGnDrC,EAAQY,QACRd,KAAKe,OAGTf,KAAKC,QAAQuB,KAAK,CACdC,KAAM3D,EACNgG,OAAQ9D,UAKpB/E,EAAMqE,QAAQ8F,kBAAoBA,GAElC,IAAII,GAAqB3F,GAAKC,OAAO,CACjC+B,KAAM,SAAS3B,EAASZ,GACpB,IAAImG,EAAOzF,KAEXyF,EAAKvF,QAAUnF,EAAE+E,OAAO,CACpBQ,GAAIJ,EAAQI,IAAMJ,EAAQE,IAC1Bc,QAAQ,GACThB,EAAS,CACRgC,WAAW,IAGXhC,EAAQ8B,UACRyD,EAAKvF,QAAQ+B,WAAarE,GAG1BsC,EAAQ0C,WAAa1E,IACrBuH,EAAKvF,QAAQwD,KAAO,MAGpBxD,EAAQ2C,WAAa3E,IACrBuH,EAAKvF,QAAQsD,KAAO,IAGxBiC,EAAKnG,QAAUA,EAEfmG,EAAKC,YAAc,IAAItK,EAAGuK,YAAY5K,EAAE,eAAiB0K,EAAKvF,QAAQI,GAAK,KAAOmF,EAAKvF,QAAQsD,KAAO,aAC7DzI,EAAE+E,OAAO,GAAI2F,EAAKvF,QAAS,CACvBoE,MAAOmB,EAAKG,QAAQ1F,EAAQ2F,eAC7BvG,EAAQY,SACpDuF,EAAKxF,QAAUwF,EAAKC,YAAYI,QAEhCL,EAAKC,YAAYK,KAAK3I,EAAOkC,EAAQ0G,aAAaD,KAAKzG,IACvDmG,EAAKC,YAAYK,KAAKxI,EAAOkI,EAAKQ,OAAOF,KAAKN,IAC9CA,EAAKC,YAAYK,KAAKzI,EAAMmI,EAAKS,MAAMH,KAAKN,IAE5CA,EAAKC,YAAYzF,QAAQuB,KAAK,CAC1BC,KAAM1D,EACN+F,OAAQ2B,EACRC,YAAaD,IAGjBA,EAAKC,YAAYI,QAAQtE,KAAK,CAC1BC,KAAM1D,EACN+F,OAAQ2B,EACRC,YAAaD,IAGjBA,EAAK1F,kBACL0F,EAAKtF,aACLsF,EAAKjF,aACLiF,EAAKU,qBAEuB,IAAxBV,EAAKvF,QAAQgB,QACbuE,EAAKvE,OAAOlB,KAAKE,QAAQgB,QAGzBuE,EAAKvF,QAAQY,QACb2E,EAAK1E,QAGbmF,MAAO,SAASE,GACDpG,KACmBV,QAAQ+G,QAAQ/I,EAAM,CAAEgJ,OAD3CtG,KACwDC,WAE/DmG,EAAGG,kBAGXN,OAAQ,SAASG,GACb,IAAIX,EAAOzF,KACcyF,EAAKnG,QAAQ+G,QAAQ9I,EAAO,CAAE+I,OAAQb,EAAKxF,WAEhEmG,EAAGG,iBAEPd,EAAKC,YAAYzF,QAAQoG,QAAQ7I,IAErCoI,QAAS,SAAStB,GACd,IAAImB,EAAOzF,KACX,OAAOsE,EAAMkC,KAAI,SAASC,GACtB,IAAIC,EAAe,IAAI9E,GAAS6E,EAAMhB,EAAKnG,SAC3C,OAAOvE,EAAE+E,OAAO,GAAI2G,EAAM,CACtBvE,WAAW,EACXV,KAAM,WACF,MAAO,CACHC,KAAM3D,EACNgG,OAAQ4C,EACRhB,YAAaD,UAMjCU,kBAAmB,WACf,IAEIO,EAFO1G,KACM0F,YAAYpB,QAGvBqC,MAAK,SAASC,EAAOH,GACvBA,EAAO1L,EAAE0L,IACTC,EAAeD,EAAKjF,KAAK1D,IACZmC,QAAUwG,EACvBC,EAAaxG,QAAUnF,EAAE+E,OAAO,CAC5B2B,KAAM3D,EACNoD,QAAQ,GACTwF,EAAaxG,SAEhBwG,EAAa3G,kBACb2G,EAAavG,iBAGrBc,OAAQ,WACJ,IAAI4F,EAAc7G,KAAK0F,YAAYI,QACnC9F,KAAK0F,YAAYoB,UACjBD,EAAY5F,UAEhBC,OAAQ,SAASA,EAAQuF,GACrBzG,KAAK0F,YAAYxE,OAAOA,EAAQuF,GAAM,GAElCzG,KAAKqB,QACLrB,KAAKqB,OAAOH,OAAOA,IAG3BV,WAAY,WACR,IAGIC,EAFAsG,EADO/G,KACW0F,YAAYzF,QAC9BO,EAAaR,KAAKE,QAAQM,WAG1BA,IACIA,EAAWE,QACXD,EAAUD,EAAWE,MAErBqG,EAAWpG,SAASF,UAEbD,EAAWE,OAGtBqG,EAAW/H,KAAKwB,GAEhBA,EAAWE,MAAQD,MAK/BxF,EAAMqE,QAAQkG,mBAAqBA,GAEnC,IAAIwB,GAAsBnH,GAAKC,OAAO,CAClC+B,KAAM,SAAS3B,EAASZ,GACpB,IAEUgC,EAFNrB,EAAUD,KAAKC,QAAUlF,EAAE,oCAC3BuJ,EAAQpE,EAAQ2F,YAGpB7F,KAAKE,QAAUnF,EAAE+E,OAAO,GAAII,EAAS,CAAEgC,WAAW,IAClDlC,KAAKV,QAAUA,EACfU,KAAKJ,UAAW,EAChB0B,GAAoBpB,EAAQI,IAAMJ,EAAQE,KAAOtB,GAEjDkB,KAAK+G,WAAa,IAAIhD,GAAehJ,EAAE+E,OAAO,CAAEoD,SAAS,GAAQhD,EAAS,CAAEgC,WAAW,KACvFlC,KAAK+G,WAAW9G,QAAQ0E,SAAS1E,GAEjC,IAAK,IAAIuE,EAAI,EAAGA,EAAIF,EAAMG,OAAQD,IACvB,IAAIT,GAAehJ,EAAE+E,OAAO,CAAEwC,OAAQpC,EAAQoC,OAAQb,KAAM3D,EAAQwD,iBAAkBA,EAAkB4B,SAAS,GAAQoB,EAAME,GAAI,CAAE/B,MAAOvC,EAAQuC,QAAUzC,KAAKV,SACrKW,QAAQ0E,SAAS1E,GAG1BD,KAAKG,aACLH,KAAKD,kBAELC,KAAK+G,WAAWE,MAAO,GAEK,IAAxBjH,KAAKE,QAAQgB,QACblB,KAAKkB,OAAOlB,KAAKE,QAAQgB,QAG7BjB,EAAQuB,KAAK,CACTC,KAAM1D,EACN2H,YAAa1F,QAIrBkB,OAAQ,SAASC,GACb,IAAI+F,EAAWlH,KAAKC,QAAQkH,IAAInH,KAAKC,QAAQsB,KAAKnC,GAAMxD,IAEpDuF,IAAcnG,IACdmG,GAAY,GAGhB+F,EAAS9F,YAAYhF,GAAiB+E,GACtC+F,EAASlI,KAAK9B,GAAgBiE,GAE9BnB,KAAKE,QAAQgB,OAASC,GAG1BH,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,MAI9BtB,EAAMqE,QAAQ0H,oBAAsBA,GACpC/L,EAAMqE,QAAQI,kBAAkB3B,EAAayH,GAAoBwB,IAEjE,IAAII,GAAwBvH,GAAKC,OAAO,CACpC+B,KAAM,SAAS3B,EAASZ,GACpB,IAAImG,EAAOzF,KAEXyF,EAAKvF,QAAUnF,EAAE+E,OAAO,CACpBQ,GAAIJ,EAAQI,IAAMJ,EAAQE,IAC1Bc,QAAQ,GACThB,EAAS,CACRgC,WAAW,IAGXhC,EAAQ8B,UACRyD,EAAKvF,QAAQ+B,WAAarE,GAG1BsC,EAAQ0C,WAAa1E,IACrBuH,EAAKvF,QAAQwD,KAAO,MAGpBxD,EAAQ2C,WAAa3E,IACrBuH,EAAKvF,QAAQsD,KAAO,IAGxBiC,EAAKnG,QAAUA,EAEfmG,EAAK4B,eAAiB,IAAIjM,EAAGkM,eAAevM,EAAE,eAAiB0K,EAAKvF,QAAQI,GAAK,KAAOmF,EAAKvF,QAAQsD,KAAO,aACnEzI,EAAE+E,OAAO,GAAI2F,EAAKvF,QAAS,CACvBoE,MAAOmB,EAAKG,QAAQ1F,EAAQ2F,eAC7BvG,EAAQY,SACpDuF,EAAKxF,QAAUwF,EAAK4B,eAAepH,QAEnCwF,EAAK4B,eAAetB,KAAK3I,EAAOkC,EAAQ0G,aAAaD,KAAKzG,IAC1DmG,EAAK4B,eAAetB,KAAKxI,EAAOkI,EAAKQ,OAAOF,KAAKN,IACjDA,EAAK4B,eAAetB,KAAKzI,EAAMmI,EAAKS,MAAMH,KAAKN,IAE/CA,EAAK4B,eAAepH,QAAQuB,KAAK,CAC7BC,KAAMzD,EACN8F,OAAQ2B,EACR4B,eAAgB5B,IAGpBA,EAAK1F,kBACL0F,EAAKtF,aACLsF,EAAKjF,aACLiF,EAAKU,qBAEuB,IAAxBV,EAAKvF,QAAQgB,QACbuE,EAAKvE,OAAOlB,KAAKE,QAAQgB,QAGzBuE,EAAKvF,QAAQY,QACb2E,EAAK1E,QAGbmF,MAAO,SAASE,GACDpG,KACmBV,QAAQ+G,QAAQ/I,EAAM,CAAEgJ,OAD3CtG,KACwDC,WAE/DmG,EAAGG,kBAGXN,OAAQ,SAASG,GACb,IAAIX,EAAOzF,KACcyF,EAAKnG,QAAQ+G,QAAQ9I,EAAO,CAAE+I,OAAQb,EAAKxF,WAEhEmG,EAAGG,iBAEPd,EAAK4B,eAAepH,QAAQoG,QAAQ7I,IAExCoI,QAAS,SAAStB,GACd,IAAImB,EAAOzF,KACX,OAAOsE,EAAMkC,KAAI,SAASC,GACtB,IAAIC,EAAe,IAAI9E,GAAS6E,EAAMhB,EAAKnG,SAC3C,OAAOvE,EAAE+E,OAAO,GAAI2G,EAAM,CACtBjF,KAAM,WACF,MAAO,CACHC,KAAM3D,EACNgG,OAAQ4C,EACRW,eAAgB5B,UAMpCU,kBAAmB,WACf,IAEIO,EAFO1G,KACMqH,eAAe/C,QAG1BqC,MAAK,SAASC,EAAOH,GACvBA,EAAO1L,EAAE0L,IACTC,EAAeD,EAAKjF,KAAK1D,IACZmC,QAAUwG,EACvBC,EAAaxG,QAAUnF,EAAE+E,OAAO,CAC5B2B,KAAM3D,EACNoD,QAAQ,GACTwF,EAAaxG,SAEhBwG,EAAa3G,kBACb2G,EAAavG,iBAGrBc,OAAQ,WACJ,IAAI4F,EAAc7G,KAAKqH,eAAepH,QACtCD,KAAKqH,eAAeP,UACpBD,EAAY5F,UAEhBC,OAAQ,SAASA,EAAQuF,GACrBzG,KAAKqH,eAAenG,OAAOA,EAAQuF,GAAM,GAErCzG,KAAKqB,QACLrB,KAAKqB,OAAOH,OAAOA,IAG3BV,WAAY,WACR,IAGIC,EAFAsG,EADO/G,KACWC,QAClBO,EAAaR,KAAKE,QAAQM,WAG1BA,IACIA,EAAWE,QACXD,EAAUD,EAAWE,MAErBqG,EAAWpG,SAASF,UAEbD,EAAWE,OAGtBqG,EAAW/H,KAAKwB,GAEhBA,EAAWE,MAAQD,MAK/BxF,EAAMqE,QAAQkG,mBAAqBA,GAEnC,IAAI+B,GAAmB1H,GAAKC,OAAO,CAC/B+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUD,KAAKC,QAAUlF,EAAE,iBAE/BiF,KAAKC,QAAUA,EACfD,KAAKE,QAAUA,EACfF,KAAKV,QAAUA,EACfU,KAAKJ,UAAW,EAEhBI,KAAKQ,aACLR,KAAKG,aACLH,KAAKO,qBAEDL,EAAQwD,MAAUxD,EAAQ0C,UAAiC,YAArB1C,EAAQ0C,UAC9C3C,EAAQuH,OAAO,2BAA8BtH,EAAQwD,KAAO,aAGvC,YAArBxD,EAAQ2C,UACR5C,EAAQuH,OAAO,SAAWxH,KAAKE,QAAQsD,KAAO,WAGlDvD,EAAQuB,KAAK,CACTC,KAAMtC,GACNsI,SAAUzH,QAIlBgB,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,MAI1BmL,GAAyB7H,GAAKC,OAAO,CACrC+B,KAAM,SAAS3B,EAASZ,GACpB,IAEUgC,EAFNrB,EAAUD,KAAKC,QAAUlF,EAAE,kDAC3BuJ,EAAQpE,EAAQ2F,YAGpB7F,KAAKE,QAAUnF,EAAE+E,OAAO,GAAII,EAAS,CAAEgC,WAAW,IAClDlC,KAAKV,QAAUA,EACfU,KAAKJ,UAAW,EAChB0B,GAAoBpB,EAAQI,IAAMJ,EAAQE,KAAOtB,GAEjDkB,KAAK+G,WAAa,IAAIQ,GAAiBxM,EAAE+E,OAAO,CAAEoD,SAAS,GAAQhD,EAAS,CAAEgC,WAAW,KACzFlC,KAAK+G,WAAW9G,QAAQ0E,SAAS1E,GAEjC,IAAK,IAAIuE,EAAI,EAAGA,EAAIF,EAAMG,OAAQD,IACvB,IAAIT,GAAehJ,EAAE+E,OAAO,CAAEwC,OAAQpC,EAAQoC,OAAQb,KAAM3D,EAAQwD,iBAAkBA,EAAkB4B,SAAS,GAAQoB,EAAME,GAAI,CAAE/B,MAAOvC,EAAQuC,QAAUzC,KAAKV,SACrKW,QAAQ0E,SAAS1E,GAG1BD,KAAKG,aACLH,KAAKD,kBAELC,KAAK+G,WAAWE,MAAO,GAEK,IAAxBjH,KAAKE,QAAQgB,QACblB,KAAKkB,OAAOlB,KAAKE,QAAQgB,QAG7BjB,EAAQuB,KAAK,CACTC,KAAMzD,EACNqJ,eAAgBrH,QAIxBkB,OAAQ,SAASC,GACb,IAAI+F,EAAWlH,KAAKC,QAAQkH,IAAInH,KAAKC,QAAQsB,KAAKnC,GAAMxD,IAEpDuF,IAAcnG,IACdmG,GAAY,GAGhB+F,EAAS9F,YAAYhF,GAAiB+E,GACtC+F,EAASlI,KAAK9B,GAAgBiE,GAE9BnB,KAAKE,QAAQgB,OAASC,GAG1BH,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,MAI9BtB,EAAMqE,QAAQ0H,oBAAsBU,GACpCzM,EAAMqE,QAAQI,kBAAkB1B,EAAgBoJ,GAAuBM,IAEvE,IAAIC,GAAmB9H,GAAKC,OAAO,CAC/B+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUD,KAAKC,QAAUlF,EAAE,qBAE/BiF,KAAKC,QAAUA,EACfD,KAAKE,QAAUA,EACfF,KAAKV,QAAUA,EAEfU,KAAKQ,aACLR,KAAKK,YACLL,KAAKG,aACLH,KAAKD,kBAELE,EAAQU,SAAS1E,GACjBgE,EAAQjB,KAAKnB,EAAMI,GAEnBgC,EAAQuB,KAAK,CACTC,KAAMxD,EACN2J,UAAW5H,UAKnB6H,GAAoBhI,GAAKC,OAAO,CAChC+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUD,KAAKC,QAAUlF,EAAE,mBAE/BiF,KAAKC,QAAUA,EACfD,KAAKE,QAAUA,EACfF,KAAKV,QAAUA,EACfU,KAAKJ,UAAW,EAEhBI,KAAKQ,aACLR,KAAKG,aACLH,KAAKO,oBAELN,EAAQU,SAAS1E,GACjBgE,EAAQjB,KAAKnB,EAAMI,GAEnBgC,EAAQuB,KAAK,CACTC,KAAMxD,EACN2J,UAAW5H,QAInBgB,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,MAI9BtB,EAAMqE,QAAQI,kBAAkB,YAAaiI,GAAkBE,IAE/D,IAAIC,GAAgBjI,GAAKC,OAAO,CAC5B+B,KAAM,SAAS3B,EAASZ,GACpB,IAAIW,EAAUD,KAAKC,QAAUlF,EAAE,qBAE/BiF,KAAKC,QAAUA,EACfD,KAAKE,QAAUA,EACfF,KAAKV,QAAUA,EAEfW,EAAQU,SAASzE,GAEjB+D,EAAQuB,KAAK,CACTC,KAAM/D,IAEVsC,KAAKD,qBAIb9E,EAAMqE,QAAQI,kBAAkBhC,EAAQoK,IAExC,IAAIC,GAAelI,GAAKC,OAAO,CAC3B+B,KAAM,SAASwD,EAAUnF,EAASZ,GAC9B,IAAIW,EAAU3E,EAAW+J,GAAYA,EAASnF,GAAWmF,EAKrDpF,EAHEA,aAAmB+H,OAGX/H,EAAQgE,KAAK,gEAAgEC,SAF7EnJ,EAAE,gEAAgE0I,KAAKxD,GAKrFD,KAAKC,QAAUA,EACfD,KAAKE,QAAUA,EACfF,KAAKE,QAAQuB,KAAOvB,EAAQuB,MAAQpD,EACpC2B,KAAKV,QAAUA,EAEfU,KAAKQ,aACLR,KAAKG,aACLH,KAAKK,YACLL,KAAKD,kBAEDG,EAAQY,QACRd,KAAKe,OAGTd,EAAQuB,KAAK,CACTC,KAAMpD,EACNgH,SAAUrF,UAKtB/E,EAAMqE,QAAQyI,aAAeA,GAE7B,IAAIE,GAAuBpI,GAAKC,OAAO,CACnC+B,KAAM,SAASwD,EAAUnF,EAASZ,GAC9B,IAAIW,EAAU3E,EAAW+J,GAAYtK,EAAEsK,EAASnF,IAAYnF,EAAEsK,GAK1DpF,EAHEA,aAAmB+H,OAGX/H,EAAQgE,KAAK,aAAaC,SAF1BnJ,EAAE,aAAa0I,KAAKxD,GAKlCD,KAAKC,QAAUA,EACfD,KAAKE,QAAUA,EACfF,KAAKE,QAAQuB,KAAOpD,EACpB2B,KAAKV,QAAUA,EACfU,KAAKJ,UAAW,EAEhBI,KAAKQ,aACLR,KAAKG,aACLH,KAAKO,oBACLP,KAAKD,kBAELE,EAAQuB,KAAK,CACTC,KAAMpD,EACNgH,SAAUrF,QAIlBgB,eAAgB,WACZhB,KAAKC,QAAQU,SAASpE,MAM9B,SAAS2L,GAAaC,GACbA,EAAE7B,OAAO8B,GAAG,qBACbD,EAAE7B,OAAOlF,YAAYjF,EAA0B,SAAVgM,EAAE1G,MAY/C,SAAS4G,GAAaF,GACdpN,EAAEoN,EAAE7B,QAAQnD,QAAQ,cAAcsB,QAClC0D,EAAE5B,iBAIV,SAAS+B,GAAqBrI,EAASsI,GACnC,IAAIC,EAAaD,IAAQpK,EAAOpD,EAAEsI,GAAGoF,KAAO1N,EAAEsI,GAAGqF,KAC7CC,EAASJ,IAAQpK,EAAOpD,EAAEsI,GAAG0B,MAAQhK,EAAEsI,GAAG2B,KAC1C4D,EAAYJ,EAAWlF,KAAKrD,GAEhC,OAAK2I,EAAUnE,QAAUxE,EAAQmI,GAAGhJ,GAAM5C,GAC/ByD,EAGP2I,EAAUR,GAAG3J,MAAqBmK,EAAUnE,OACrCmE,EAGPA,EAAUrH,KAAK9C,IAAiBgG,OACzBkE,EAAOrF,KAAKsF,EAAUrH,KAAK9C,KAG/B6J,GAAqBM,EAAWL,GAvC3CtN,EAAMqE,QAAQ2I,qBAAuBA,GA0CrC,IAAIY,GAAQ1N,EAAM2E,OAAO,CACrB+B,KAAM,SAASlC,GACXK,KAAKL,KAAOA,EACZK,KAAKuE,QAAU,IAGnB4C,IAAK,SAASrD,GACV9D,KAAKuE,QAAQvE,KAAKuE,QAAQE,QAAUX,GAGxC7C,OAAQ,SAAS6C,GACb,IAAI8C,EAAQ7L,EAAE+N,QAAQhF,EAAQ9D,KAAKuE,SACnCvE,KAAKuE,QAAQwE,OAAOnC,EAAO,IAG/B5D,OAAQ,SAASc,GAEb,IADA,IACSU,EAAI,EAAGA,EAAIxE,KAAKuE,QAAQE,OAAQD,IAC/BxE,KAAKuE,QAAQC,GAEfxB,QAAO,GAGfc,EAAOd,QAAO,GACVc,EAAOzC,QACPyC,EAAOzC,OAAO2B,QAAO,MAK7BgG,GAAU3N,EAAOyE,OAAO,CACxB+B,KAAM,SAAS5B,EAASC,GACpB,IAAIuF,EAAOzF,KA2CX,GA1CA3E,EAAOgI,GAAGxB,KAAKyB,KAAKmC,EAAMxF,EAASC,GAEnCA,EAAUuF,EAAKvF,SACfD,EAAUwF,EAAKK,QAAUL,EAAKxF,SAEtBU,SAASsI,sBACjBhJ,EAAQjB,KAAKnB,EAAM,WAEnBmC,KAAKI,IAAMnF,EAAMyJ,OACjB1E,KAAKkJ,OAASjO,EAAMkO,QAAQC,MAAMnJ,GAClCD,KAAKqJ,QAAU,GACfpJ,EAAQjB,KAAKD,GAAgBiB,KAAKI,KAElCqF,EAAK6D,SAAsC,kBAAnBpJ,EAAQoC,OAAwBpC,EAAQoC,OAASmD,EAAKxF,QAAQkD,QAAQ,YAAY,GAC1GsC,EAAK8D,UAAY9D,EAAK6D,SAAW,CAAEE,KAAM,CAAEC,QAAS,SAAa,GAE7DhE,EAAK6D,WACLrJ,EAAQU,SAAS,aACjBhF,EAAU,YACVG,EAAe,iBACfK,EAAiB,kBACjBC,EAAiB,qBAGjB8D,EAAQwB,WACR+D,EAAKiE,kBACLzJ,EAAQU,SAzsCA,uBA2sCR8E,EAAKkE,mBAAqB,IAAI1O,EAAM2O,WAAWnE,EAAKxF,QAAS,CACzD4J,UAAW,EACXC,gBAAgB,EAChBhF,OAAQ1F,GAAM5C,EACduN,IAAKtE,EAAKuE,gBAAgBjE,KAAKN,KAGnCA,EAAKwE,eAAiBhP,EAAMiP,UAAS,WACjCzE,EAAK0E,aAGT1E,EAAK9D,MAAQ,CAAE1B,QAASlF,EAAE,KAG1BmF,EAAQoE,OAASpE,EAAQoE,MAAMG,OAAQ,CACvC,IAAK,IAAID,EAAI,EAAGA,EAAItE,EAAQoE,MAAMG,OAAQD,IACtCiB,EAAK0B,IAAIjH,EAAQoE,MAAME,IAGvBtE,EAAQwB,WACR+D,EAAK2E,QAAQ3E,EAAKxF,QAAQoK,cAIlC5E,EAAK6E,WAAa,IAAIrP,EAAM2O,WAAWW,SAASC,gBAAiB,CAC7DX,UAAW,EACXC,gBAAgB,EAChBhF,OACI,IAAM/F,GAAiB,IAAM0G,EAAKrF,IAAM,OAASzE,EAAU0D,GAA3D,KACMN,GAAiB,IAAM0G,EAAKrF,IAAM,MAAQ5D,EAAkB6C,GADlE,KAEMN,GAAiB,IAAM0G,EAAKrF,IAAM,MAAQxD,EAAqByC,GAFrE,KAGMN,GAAiB,IAAM0G,EAAKrF,IAAM,MAAQvD,EAAgBwC,GAHhE,KAIMN,GAAiB,IAAM0G,EAAKrF,IAAM,MAAQpE,EACpD+N,IAAKtE,EAAKO,aAAaD,KAAKN,GAC5BgF,MAAOvC,GACPwC,QAASxC,KAGbzC,EAAKxF,QAAQ0K,GAAGvN,EAAQ1B,EAAI,aAAc2M,IACrCsC,GAAGlN,EAAU/B,EAAI+J,EAAKmF,SAAS7E,KAAKN,IACpCkF,GAAG,UAAYjP,EAAI+J,EAAKoF,SAAS9E,KAAKN,IACtCkF,GAAG,WAAajP,EAAI+J,EAAKqF,UAAU/E,KAAKN,IAEzCA,EAAKvF,QAAQwB,WACb+D,EAAK9D,MAAM1B,QAAQ0K,GAAGvN,EAAQ1B,EAAI,IAAgB2M,IAGlDnI,EAAQwB,YACR+D,EAAKjG,eAAemF,SAASc,EAAKK,SAClC9F,KAAK+K,yBAGTtF,EAAKuF,YAEL/P,EAAMgQ,OAAOxF,IAGjByF,OAAQ,CACJ9N,EACAC,EACAC,EACAC,EACAmB,GACAC,IAGJuB,QAAS,CACLP,KAAM,UACN2E,MAAO,GACP5C,WAAW,EACXY,OAAQ,KACR6I,eAAe,GAGnB3I,WAAY,SAASsB,EAAQsH,GACzB,IAAI7I,EASJ,OAJIA,EAHCvC,KAAKqJ,QAAQ+B,GAGNpL,KAAKqJ,QAAQ+B,GAFbpL,KAAKqJ,QAAQ+B,GAAa,IAAIvC,IAKpC1B,IAAIrD,GACHvB,GAGXuE,QAAS,WACL,IAAIrB,EAAOzF,KAEXyF,EAAK4F,sBACL5F,EAAK6F,yBAEL7F,EAAKxF,QAAQsL,IAAI7P,EAAI,cAErB+J,EAAK6E,WAAWxD,UAEZrB,EAAKvF,QAAQwB,YACbzG,EAAMuQ,aAAa/F,EAAKwE,gBACxBxE,EAAKkE,mBAAmB7C,UACxBrB,EAAK9D,MAAM1B,QAAQsL,IAAI7P,EAAI,cAC3B+J,EAAK9D,MAAMmF,WAGfzL,EAAOgI,GAAGyD,QAAQxD,KAAKmC,IAG3B4F,oBAAqB,WACjB,IAEI5E,EAFAhB,EAAOzF,KACeyF,EAAKxF,QAAQsB,KAAKnC,GAAMrD,GAI9B4K,MAAK,SAAS8E,EAAKxL,IACnCwG,EAAOhB,EAAKiG,SAASzL,KAETwG,EAAKhF,OAAS1D,IACtB0I,EAAOA,EAAKnH,SAGZmH,GAAQA,EAAKf,aAAee,EAAKf,YAAYoB,UAC7CL,EAAKf,YAAYoB,UACjB/L,EAAEkF,GAASgB,cAKvBqK,uBAAwB,WACpB,IAEI7E,EAFAhB,EAAOzF,KACWyF,EAAKxF,QAAQsB,KAAKnC,GAAMpD,GAI1B2K,MAAK,SAAS8E,EAAKxL,IACnCwG,EAAOhB,EAAKiG,SAASzL,KAETwG,EAAKhF,OAASzD,IACtByI,EAAOA,EAAKnH,SAGZmH,GAAQA,EAAKY,gBAAkBZ,EAAKY,eAAeP,UACnDL,EAAKY,eAAeP,UACpB/L,EAAEkF,GAASgB,cAKvBkG,IAAK,SAASjH,GACV,IAEIyL,EAGAC,EAAcC,EALdC,EAAYvM,GAAWW,EAAQuB,MAC/B4D,EAAWnF,EAAQmF,SACbI,EAAOzF,KACb+L,EAActG,EAAK6D,SAAWpK,GAAU,SACxC8M,EAAmB9L,EAAQ8L,iBAU/B,GAPAjR,EAAE+E,OAAOI,EAAS,CACdE,IAAKnF,EAAMyJ,OACX6E,UAAW9D,EAAK8D,UAChBjH,OAAQmD,EAAK6D,SACb2C,QAASxG,EAAKrF,MAGdF,EAAQ2F,YACR,IAAK,IAAIrB,EAAI,EAAGA,EAAItE,EAAQ2F,YAAYpB,OAAQD,IAC5CzJ,EAAE+E,OAAOI,EAAQ2F,YAAYrB,GAAI,CAC7BpE,IAAKnF,EAAMyJ,SAKlBW,IAAa2G,GAAqB9L,EAAQuB,OAAS/D,EACpDwC,EAAQN,SAAWhB,GACXsB,EAAQN,WAChBM,EAAQN,SAAWf,IAInBqB,EAAQN,WAAahB,IAAkB6G,EAAKvF,QAAQwB,YAChDsK,EACCJ,EAAe,IAAI3D,GAAqB+D,EAAkB9L,EAASuF,GAC7DqG,IACPF,EAAe,IAAIE,EAAUlM,SAASM,EAASuF,IAClCxF,QAAQU,SAASoL,GAG9BH,IACI1L,EAAQN,WAAaf,IACrB+M,EAAa5K,iBAGjB4K,EAAa3L,QAAQ0E,SAASc,EAAK9D,MAAMuK,WACzCzG,EAAK0G,QAAQ,WAAW,WACpB,MAAO,CAAEjF,SAAU0E,EAAa3L,QAAQmM,YA90C1C,WAo1CNlM,EAAQN,WACJyF,GAEAwG,GADAF,EAAO,IAAI5D,GAAa1C,EAAUnF,EAASuF,IACnBxF,QAAQsB,KAAKjD,iBAEhC0B,KAAKE,QAAQiL,eAAiBU,EAAiBpH,OAAS,IACzDkH,EAAK1L,QAAQjB,KAAKZ,EAAU,GAC5ByN,EAAiB7M,KAAKZ,GAAW,KAE9B0N,IACPH,EAAO,IAAIG,EAAUxM,QAAQY,EAASuF,IAGtCkG,IACAA,EAAK1L,QAAQ0E,SAASc,EAAKxF,SAE3BwF,EAAK0G,QAAQ,WAAW,WACpB,MAAO,CAAEjF,SAAUyE,EAAK1L,QAAQmM,aAMhDV,SAAU,SAAS9C,GACf,IAAI3I,EACAoM,EACAC,EAEA7K,EADA8K,EAAcvM,KAAKE,QAAQwB,UAkC/B,OA9BAzB,EAAUD,KAAKC,QAAQsB,KAAKqH,IAEfnE,SACTxE,EAAUlF,EAAE,4BAA8BwG,KAAKqH,IAGnDnH,EAAOxB,EAAQwE,OAASxE,EAAQuB,KAAK,QAAUtC,IAC/CmN,EAAcpM,EAAQuB,KAAKC,KAER8K,EAEXD,EAAeD,EAAYhL,OACxBkL,IAEP9K,GADAxB,EAAUD,KAAK2B,MAAM1B,QAAQsB,KAAKqH,IACnBnE,OAASxE,EAAQuB,KAAK,QAAUtC,GAC/CoN,EAAerM,EAAQuB,KAAKC,GAExBA,IAAStC,KAETsC,EAAO,iBACP6K,GAFArM,EAAUA,EAAQiE,OAAO9E,GAAMpD,IAERwF,KAAKC,IAG5B6K,GAAgBA,EAAarF,MAAQxF,IAAStC,KAE9CsC,EAAO,cACP6K,GAFArM,EAAUA,EAAQiE,OAAO9E,GAAMrD,IAERyF,KAAKC,KAI7B,CACHA,KAAMA,EACNnC,QAAS+M,EACTzM,SAAU0M,IAIlBrL,OAAQ,SAAS2H,GACb,IAAInC,EAAOzG,KAAK0L,SAAS9C,GAErBnC,EAAKnH,SAAWmH,EAAKnH,QAAQ2B,SAC7BwF,EAAK7G,UAAY6G,EAAK7G,SAASqB,SAEnCjB,KAAKmK,QAAO,IAGhBpJ,KAAM,SAAS6H,GACX,IACI4D,EADA/F,EAAOzG,KAAK0L,SAAS9C,GAGrBnC,EAAKnH,UACDmH,EAAKnH,QAAQY,QAAQuB,OAAS3D,GAAU2I,EAAKnH,QAAQY,QAAQgD,SAC7DsJ,EAAsB/F,EAAKnH,QAAQ2D,iBAEnCwD,EAAKnH,QAAQyB,OAETyL,GACAA,EAAoB5H,WAEhB6B,EAAKnH,QAAQY,QAAQY,QAC7B2F,EAAKnH,QAAQyB,QAIjB0F,EAAK7G,WACD6G,EAAK7G,SAASM,QAAQuB,OAAS3D,GAAU2I,EAAK7G,SAASM,QAAQgD,SAC/DsJ,EAAsB/F,EAAK7G,SAASqD,iBAEpCwD,EAAK7G,SAASmB,OAEVyL,GACAA,EAAoB5H,WAEhB6B,EAAK7G,SAASM,QAAQY,QAC9B2F,EAAK7G,SAASmB,QAItBf,KAAKmK,QAAO,IAGhBvJ,KAAM,SAASgI,GACX,IACI4D,EADA/F,EAAOzG,KAAK0L,SAAS9C,GAGrBnC,EAAKnH,UACDmH,EAAKnH,QAAQY,QAAQuB,OAAS3D,GAAU2I,EAAKnH,QAAQY,QAAQgD,SAC7DsJ,EAAsB/F,EAAKnH,QAAQ2D,iBACnCwD,EAAKnH,QAAQsB,OAET4L,GACAA,EAAoB5H,WAEjB6B,EAAKnH,QAAQY,QAAQY,QAC5B2F,EAAKnH,QAAQsB,QAIjB6F,EAAK7G,WACD6G,EAAK7G,SAASM,QAAQuB,OAAS3D,GAAU2I,EAAK7G,SAASM,QAAQgD,SAC/DsJ,EAAsB/F,EAAK7G,SAASqD,iBAEpCwD,EAAKnH,QAAQsB,OAET4L,GACAA,EAAoB5H,WAEjB6B,EAAK7G,SAASM,QAAQY,QAC7B2F,EAAK7G,SAASgB,QAItBZ,KAAKmK,QAAO,IAGhBjJ,OAAQ,SAASjB,EAASiB,GACtB,IAAIuF,EAAOzG,KAAK0L,SAASzL,QAEJ,IAAViB,IACPA,GAAS,GAGTuF,EAAKnH,SAAWmH,EAAKnH,QAAQ4B,OAAOA,EAAQuF,EAAKxG,SACjDwG,EAAK7G,UAAY6G,EAAK7G,SAASsB,OAAOA,IAG9CuL,qBAAsB,SAASrB,GAC3B,OAAOpL,KAAKC,QAAQsB,KAAKnC,gCAAwCgM,EAAY,MAAMtG,OAAO1F,GAAMjD,IAGpGgG,OAAQ,SAAS2B,EAAQ4I,GACrB,IACIjG,EADU1L,EAAE+I,GACGtC,KAAK1D,GAEpB2I,EAAKvG,QAAQgC,YACTwK,IAAY1R,IACZ0R,GAAU,GAGdjG,EAAKtE,OAAOuK,GAAS,KAI7BhD,gBAAiB,WACb,IApdiBzJ,EAodbwF,EAAOzF,KACPP,EAAoBF,GAAWE,kBAC/B2J,EAAQ3D,EAAKyD,OACbyD,EAAsBvD,EAAQ,OAAS,QAE3C3D,EAAKjG,eAAiBzE,EAAEwE,GAAWC,gBAAgBmB,SAAShF,GAE5D8J,EAAKxF,QAAQuH,OAAO/B,EAAKjG,gBAErBiG,EAAK6D,UACL7D,EAAKjG,eAAegI,OAAO,yCAC3B/H,GA9dRQ,EAAUlF,EADWkF,EA+duBR,IA5d7BmN,SAAS,kBAAoB3M,EAAQkD,QAAQ,qBAAuBlD,EAAQU,SAAS,4BAClFsD,KAAK,uFAAuFC,SAC5FD,KAAK,gDAAgDC,UA4d/DuB,EAAKjG,eAAegI,OAAO,kDAG/B/B,EAAK9D,MAAQ,IAAI1G,EAAMG,GAAGyR,MAAMpN,EAAmB,CAC/CqN,OAAQ,UAAYH,EACpBI,SAAU,OAASJ,EACnBK,OAAQvH,EAAKjG,eACb4J,MAAOA,EACPG,UAAW9D,EAAK8D,UAChB5E,SAAUc,EAAK6D,SAAWvO,EAAE0K,EAAK6D,UAAUzE,SAAS,YAAc,KAClEoI,kBAAkB,EAClBzD,KAAM,SAASrB,GACX,IAAIrC,EAAU7K,EAAMgJ,KAAKwB,EAAK9D,MAAM1B,SAC/BU,SA7kDF,sBA+kDE8E,EAAK6D,SAGN7D,EAAK9D,MAAMuK,UAAUgB,IAAI,aAAeC,WAAWpS,EAAE,uBAAuBqS,eAAiB,GAAM,MAFnGtH,EAAQoH,IAAI,eAAgB9D,GAAS,EAAI,KAAO5N,EAAWsK,GAAWA,EAAQuH,SAAW,EAAI,IAK7F5H,EAAKY,QAAQ3H,KACbyJ,EAAE5B,kBAGV+G,SAAU,WACNtN,KAAKC,QAAQsB,KAAK9C,IAAiBsG,QAAQsB,QAAQ7I,IAEvD+P,MAAO,SAASpF,GACR1C,EAAKY,QAAQ1H,KACbwJ,EAAE5B,iBAGNvG,KAAKC,QAAQoG,QAAQ7I,MAI7BiI,EAAK9D,MAAM1B,QAAQ0K,GAAGlN,EAAU/B,EAAI0D,GAAMzD,GAAS,SAASwM,GACxD,IAAI7B,EAASvL,EAAEoN,EAAE7B,QACbkH,EAAKlH,EAAOpC,SACZuJ,EAAgBD,EAAGpF,GAAGhJ,GAAMtD,IAAiB0R,EAAGpF,GAAGhJ,GAAMrD,GAG7DoM,EAAE5B,iBAEE4B,EAAEuF,UAAYnS,EAAKoS,KAAOxF,EAAEuF,UAAYnS,EAAKqS,KAAQzF,EAAE0F,QAAU1F,EAAEuF,UAAYnS,EAAKuS,IACpFrI,EAAKuE,kBACLvE,EAAKjG,eAAe6G,QAAQ7I,IACrB2K,EAAEuF,UAAYnS,EAAKwS,KAE1BzF,IADWmF,GAAkBA,GAAiBnH,EAAO8B,GAAG,gBAAoBqF,IAAkBnH,EAAOmC,OAAOL,GAAG3J,IAAoB+O,EAAKlH,EAC1GnI,GAAMkI,QAAQ7I,GACrC2K,EAAEuF,UAAYnS,EAAKuS,GAE1BxF,IADWmF,GAAkBA,GAAiBnH,EAAO8B,GAAG,iBAAqBqF,IAAkBnH,EAAOoC,OAAON,GAAG3J,IAAoB+O,EAAKlH,EAnlDlJ,QAolD6CD,QAAQ7I,GACpC2K,EAAEuF,UAAYnS,EAAKyS,UAAY7F,EAAEuF,UAAYnS,EAAK0S,OAAWlT,EAAEoN,EAAE7B,QAAQ8B,GAAGhJ,GAAMhD,GAGnF+L,EAAEuF,UAAYnS,EAAK2S,KAC1BV,EAAGtJ,SAAS3C,KAAK9C,IAAiBsG,QAAQsB,QAAQ7I,GAC3C2K,EAAEuF,UAAYnS,EAAK4S,KAC1BX,EAAGtJ,SAAS3C,KAAK9C,IAAiBuG,OAAOqB,QAAQ7I,IALjDiI,EAAK6E,WAAWjE,QAnmD1B,MAmmDuC,CAAEC,OAAQvL,EAAEoN,EAAE7B,UAC3Cb,EAAKjG,eAAe6G,QAAQ7I,OAQhCiI,EAAK6D,SACL7D,EAAK9D,MAAMuK,UAAYzG,EAAK9D,MAAM1B,QAAQsB,KAAKnC,GAAM3C,GAErDgJ,EAAK9D,MAAMuK,UAAYzG,EAAK9D,MAAM1B,QAGtCwF,EAAK9D,MAAMuK,UAAUlN,KAAKD,GAAgBiB,KAAKI,MAGnD2K,sBAAuB,WACnB,IACIqD,EAAapO,KAAKkJ,OAAS,eAAiB,iBAE5ClJ,KAAKE,QAAQoC,OACQtC,KAAK2B,MAAM1B,QAAQsB,KAAKnC,GAAM3C,GAAoBoI,SAAS,sCAAkDJ,OAAS,EAEtHzE,KAAK2B,MAAM1B,QAAQ4E,SAAS,sCAAkDJ,OAAS,IAI5GzE,KAAKR,eAAe0N,IAAI,CACpBmB,WAAY,UACZhB,MAAOnO,KAEXc,KAAK8F,QAAQoH,IAAIkB,EAAYpO,KAAKR,eAAehE,YAAW,MAE5DwE,KAAKR,eAAe0N,IAAI,CACpBmB,WAAY9P,GACZ8O,MAAO,QAEXrN,KAAK8F,QAAQoH,IAAIkB,EAAYlP,MAIrC8G,aAAc,SAASmC,GACnB,IAEI1B,EAAM6H,EAASC,EAAWC,EAC1BC,EAHAhJ,EAAOzF,KACPsG,EAASvL,EAAEoN,EAAE7B,QAIkC,IAA/CA,EAAOnD,QAAQ/D,mBAAqBqF,QACpC0D,EAAE5B,iBAGFD,EAAOsG,SAAS5Q,IAAgBsK,EAAOsG,SAASpQ,GAChDiJ,EAAKiJ,eAAepI,GAEbA,EAAOsG,SAAShQ,GACvB6I,EAAKiJ,eAAepI,EAAOoC,QAEpBpC,EAAOsG,SAAS/P,IACvB4R,EAAoBnI,EAAO/E,KAAKjD,iBAAuCxB,IAEjD2H,OAAS,GAC3BgB,EAAKiJ,eAAeD,EAAkB1J,UAMzCuB,EAAO9E,KAAKzD,KACbuI,EAASvL,EAAEoN,EAAE7B,QAAQnD,QAAQ/D,GAAMzD,EAAU0D,GAAQD,GAnsDrD,cAmsDsEqG,EAAKxF,WAG/EwG,EAAOH,EAAO9E,KAAK1D,MAENwI,EAAOsG,SAvsDhB,gBAwsDAnH,EAAKiJ,eAAepI,IAGnBG,GAAQhB,EAAK9D,QAEd8E,GADAH,EAASvL,EAAEoN,EAAE7B,QAAQnD,QAAQ/D,GAAMxD,EAAiB6J,EAAK9D,MAAMuK,YACjDhI,OAAO,MAAM1C,KAAK1D,IAG/B2I,GAASA,EAAKvG,QAAQgB,SAIvBuF,EAAKvG,QAAQgC,WACboM,EAAUhT,EAAWmL,EAAK9D,eAAiB8D,EAAK9D,cAAgB,KAEhE8D,EAAKtE,QAAQsE,EAAKvG,QAAQkC,UAAU,GACpCmM,EAAY,CAAEjI,OAAQA,EAAQ/D,MAAOkE,EAAKvG,QAAQqC,MAAOmK,QAASjG,EAAKvG,QAAQkC,SAAU9B,GAAImG,EAAKvG,QAAQI,GAAImG,KAAMA,GAEhH6H,GAAWA,EAAQhL,KAAKmC,EAAM8I,GAClC9I,EAAKY,QAAQhJ,EAAQkR,KAErBD,EAAUhT,EAAWmL,EAAK/D,cAAgB+D,EAAK/D,aAAe,KAC9D6L,EAAY,CAAEI,OAAQlJ,EAAMa,OAAQA,EAAQhG,GAAImG,EAAKvG,QAAQI,GAAImG,KAAMA,GAEnE6H,GAAWA,EAAQhL,KAAKmC,EAAM8I,GAClC9I,EAAKY,QAAQjJ,EAAOmR,IAGpB9H,EAAKvG,QAAQmC,MACToE,EAAKvG,QAAQM,YAAciG,EAAKvG,QAAQM,WAAW8F,SACnDkI,EAAY/H,EAAKvG,QAAQM,WAAW8F,QAExCpL,OAAOsO,KAAK/C,EAAKvG,QAAQmC,IAAKmM,GAAa,UAG3ClI,EAAOsG,SAAShR,IAChB6J,EAAK9D,MAAM4L,WAInBzC,UAAW,SAAS3C,GAChBnI,KAAK8F,QAAQvE,KAAKnC,GAAMzD,EAAUyD,GAAMnC,GAAQ4D,YAAY5D,IAGhE4N,SAAU,SAAS1C,GACf,IAAI7B,EAASvL,EAAEoN,EAAE7B,QAEbA,EAAOnD,QAAQ/D,GAAMzD,GAAS8I,OAAS,GACvC6B,EAAOnD,QAAQ/D,GAAMzD,GAASgF,SAAS1D,IAI/C2N,SAAU,SAASzC,GACf,IAKInD,EAAMyD,EAAMmG,EAAgBC,EAAaC,EALzCxI,EAASvL,EAAEoN,EAAE7B,QACboH,EAAUvF,EAAEuF,QACZpJ,EAAQtE,KAAK+O,YACbC,EAAYhP,KAAKkJ,QAAU,EAAI,EAC/B+F,EAAe3I,EAAOnD,QAAQ/D,mBAGlC,GAAI+I,EAAE0F,QAAUH,IAAYnS,EAAKwS,KACNhT,EAAEwP,SAAS2E,eAAe9G,GAAGhJ,GAAM5C,IAGtDwD,KAAKgK,uBAMb,GAAKhK,KAAKE,QAAQiL,eAAiBuC,IAAYnS,EAAK0S,QAAS3H,EAAOsG,SAAS/P,GAWtE,IAAKmD,KAAKE,QAAQiL,eAAiBuC,IAAYnS,EAAKoS,KAAOsB,EAAaxK,OAAS,EAAjF,CAIH,GAHAoK,EAAcI,EAAa1N,KAAK,eAChCqN,EAAiBK,EAAa1N,KAAK9C,2CAAuE3B,GAEtG+R,EAAYpK,OAAS,IACrBqK,EAAiB7T,EAAM6T,eAAeD,IAElB,CAChB,GAAIC,EAAenN,OAASmN,EAAenN,MAAMwN,UAC7C,OAEAF,EAAajQ,KAAKZ,EAAU,GAC5B6Q,EAAa5I,QAAQ7I,GACrByR,EAAa1N,KAAK9C,IAAiBO,KAAKZ,GAAW,GAK3DwQ,EAAenK,OAAS,IACxBwK,EAAajQ,KAAKZ,EAAU,GAC5B6Q,EAAa5I,QAAQ7I,GACrBoR,EAAe5P,KAAKZ,GAAW,SAIhC,GAAKsP,IAAYnS,EAAKyS,UAAYN,IAAYnS,EAAK0S,OAAW3H,EAAO8B,GAAG9J,yBAS/E,GAAIoP,IAAYnS,EAAK2S,KAAM,CACvB,GAAI5H,EAAO8B,GAAGhJ,GAAMtC,IAAiBwJ,EAAO8B,GAAG9J,GAC3C,OAGJ0B,KAAK0O,eAAepK,EAAMS,SAC1BT,EAAMS,QAAQsB,QAAQ7I,GACtB2K,EAAE5B,sBACC,GAAImH,IAAYnS,EAAK4S,IAAK,CAC7B,GAAI7H,EAAO8B,GAAGhJ,GAAMtC,IAAiBwJ,EAAO8B,GAAG9J,GAC3C,OAKiB,KAFrB0G,EAAOV,EAAMU,QAEJqI,UACLrI,EAAOV,EAAM8K,GAAG9K,EAAMG,OAAS,IAGnCzE,KAAK0O,eAAe1J,GACpBA,EAAKqB,QAAQ7I,GACb2K,EAAE5B,sBACMvG,KAAKE,QAAQiL,eACrBuC,IAAYnS,EAAK8T,OAChB/I,EAAO8B,GAAG9J,kDAA0FvB,KACrGiD,KAAKsP,gBAAgBnH,EAAE7B,OAAQ,EAAI0I,GAM3BhP,KAAKE,QAAQiL,eACrBuC,IAAYnS,EAAKgU,MAChBjJ,EAAO8B,GAAG9J,mDAAkGvB,KAC7GiD,KAAKsP,gBAAgBnH,EAAE7B,QAAS,EAAI0I,KAChCvG,EAAO1N,EAAEiF,KAAKsP,gBAAgBnH,EAAE7B,QAAS,EAAI0I,IAC7ChP,KAAK0O,eAAejG,GACpBA,EAAKpC,QAAQ7I,GAEb2K,EAAE5B,mBAbFkC,EAAO1N,EAAEiF,KAAKsP,gBAAgBnH,EAAE7B,OAAQ,EAAI0I,IAC5ChP,KAAK0O,eAAejG,GACpBA,EAAKpC,QAAQ7I,GAEb2K,EAAE5B,uBAtCFmH,IAAYnS,EAAKyS,WACjB7F,EAAE5B,iBACFvG,KAAKsK,WAAWjE,QA5xD1B,MA4xDuC,CAAEC,OAAQA,UAtC3CsI,EAAiBtI,EAAO/E,KAAK9C,2CAAuE3B,IAEjF2H,OAAS,IACxB6B,EAAOtH,KAAKZ,GAAW,GAEvBwQ,EAAe5P,KAAKZ,EAAU,GAC9BwQ,EAAe7J,QAAQsB,QAAQ7I,KAiF3C8R,gBAAiB,SAAS7I,EAAMuI,GAC5B,IAAI1K,EAAQtE,KAAK+O,YACbS,GAAmC,IAAvBlL,EAAMsC,MAAMH,GAAenC,EAAMsC,MAAMH,EAAKgJ,eAAiBnL,EAAMsC,MAAMH,GACrFiJ,EAAgBpL,EAAMkL,EAAYR,GAUtC,OARKU,IAEGA,GADe,IAAfV,EACgB1K,EAAMU,OAENV,EAAMS,SAIvB2K,GAGXX,UAAW,WACP,OAAO/O,KAAK8F,QAAQvE,KAAK9C,gEAA0GqG,QAAO,WACtI,IAAI6K,EAAU5U,EAAEiF,MAEhB,OAAI2P,EAAQ/C,SAAS,gBAEV+C,EAAQ/C,SAASpQ,IAAoBmT,EAAQzC,IAAI,gBAAkB3O,QAEnEoR,EAAQ/C,SAAS/P,IAAgH,IAA9F8S,EAAQpO,KAAK,oCAAsEkD,aAErHkL,EAAQ/C,SAAS/P,IAAkB8S,EAAQxM,QAAQ/D,mBAAqBqF,OAAS,MAElFkL,EAAQ/C,SAAS5P,KAAiB2S,EAAQ/C,SAAShQ,WAQtEgT,QAAS,SAASzH,GACd,IAAIzC,EAAc3K,EAAEoN,EAAE7B,QAAQnD,QAAQ/D,GAAMrD,GAAcyF,KAAK,eAE/D2G,EAAE5B,iBAEGb,EAAYxF,QAAQgB,QAIzBwE,EAAYvD,UAGhB6H,gBAAiB,WACbhK,KAAK2B,MAAMQ,UAGf0N,QAAS,SAAS1H,GACd,IAAI2H,EAAiB3H,EAAEkF,MAElBrN,KAAKE,QAAQwB,YAIlB1B,KAAK2B,MAAM4L,QAEXvN,KAAKoK,QAAQ0F,GACb9P,KAAK+P,SAASD,GAEd9P,KAAKgQ,gBAELhQ,KAAK+K,0BAGTkF,eAAgB,WACZ,IAAIC,EAAgB,EAChBC,EAAMC,SAASpQ,KAAKC,QAAQiN,IAAI,OAAQ,KAAO,EAMnD,OAJAlN,KAAKC,QAAQ4E,SAAS,2BAA4C8B,MAAK,WACnEuJ,GAAiB1U,EAAWT,EAAEiF,OAAO,GAAQmQ,KAG1CE,KAAKC,KAAKJ,IAGrB9F,QAAS,SAAS0F,GACd,IAAIS,EACAC,EACAtB,EAEJ,GAAIY,EAAiB9P,KAAKiQ,iBAGtB,IAAK,IAAIzL,GAFTgM,EAAkBxQ,KAAKC,QAAQ4E,SAAS,8DAEXJ,OAAS,EAAGD,GAAK,IAC1C+L,EAAiBC,EAAgBpB,GAAG5K,KAEhCsL,EAAiB9P,KAAKiQ,mBAHmBzL,KAMzC0K,EAAgBqB,EAAehP,KAAK,iBAElBkD,OAAS,IACvByK,EAAclQ,KAAKZ,GAAW,GAC9B4B,KAAKC,QAAQ4E,SAASzF,GAAM5C,GAAiBwC,KAAKZ,EAAU,IAGhE4B,KAAKyQ,UAAUF,IAM/BR,SAAU,SAASD,GACf,IAAIS,EACAG,EAEJ,GAAIZ,EAAiB9P,KAAKiQ,iBAAkB,CACxCS,EAAiB1Q,KAAKC,QAAQ4E,SAASzF,kCAEvC,IAAK,IAAIoF,EAAI,EAAGA,EAAIkM,EAAejM,SAC/B8L,EAAiBG,EAAetB,GAAG5K,KAC/BsL,EAAiB9P,KAAKiQ,mBAAqBjQ,KAAK2Q,UAAUJ,EAAgBT,IAFvCtL,QASnDiM,UAAW,SAAShK,GAChBA,EAAK9F,SAAStE,GAEV2D,KAAK2B,OACL3B,KAAK2B,MAAMuK,UACN3K,KAAK,iBAAmBkF,EAAKjF,KA35DxC,OA25DoD,MACzCX,YAAYtE,IAIzBoU,UAAW,SAASlK,EAAMqJ,GACtB,IAAIK,EAAMC,SAASpQ,KAAKC,QAAQiN,IAAI,OAAQ,KAAO,EAKnDzG,EAAK5F,YAAYxE,GACjB,IAAIuU,EAAiBpV,EAAWiL,GAAM,GAAQ0J,EAG9C,OAFA1J,EAAK9F,SAAStE,MAEVoK,EAAKhC,QAAUqL,EAAiB9P,KAAKiQ,iBAAmBW,KACxDnK,EAAK5F,YAAYxE,IAEkB,IAA/B2D,KAAKE,QAAQiL,eACb1E,EAAKlF,KAAK9C,IAAiBO,KAAKZ,GAAW,GAG3C4B,KAAK2B,OACL3B,KAAK2B,MAAMuK,UACN3K,KAAK,iBAAmBkF,EAAKjF,KAn7D5C,OAm7DwD,MACzCb,SAASpE,IAGX,IAMfyT,cAAe,WACX,IAAIa,EAAgB7Q,KAAK2B,MAAMuK,UAAUrH,WACrCiM,EAAe9Q,KAAKC,QAAQ4E,SAAS,4BACrCkM,EAAuBF,EAAc/L,OAAO,4BAC5CkM,EAAsBF,EAAahM,OAAO,YAE9C+L,EAAc1J,IAAI2J,GAAcjQ,YAAYnE,2BAAgCC,GAC5EoU,EAAqBhM,QAAQoC,IAAI6J,EAAoBjM,SAASpE,SAASjE,GACvEqU,EAAqB/L,OAAOmC,IAAI6J,EAAoBhM,QAAQrE,SAAShE,IAGzE+R,eAAgB,SAASuC,IACc,IAA/BjR,KAAKE,QAAQiL,gBACbnL,KAAK8F,QAAQvE,KAAK9C,IAAiBO,KAAKZ,GAAW,GACnD6S,EAAQjS,KAAKZ,EAAU,KAI/B4M,UAAW,WACP,IAAIkG,EAAiBlR,KAAK8F,QAAQvE,KAAK9C,wCACnC0S,EAAiBD,EAAenM,SAED,IAA/B/E,KAAKE,QAAQiL,gBACb+F,EAAelS,KAAKZ,GAAW,GAC/B+S,EAAenS,KAAKZ,EAAU,OAK9CnD,EAAMG,GAAGgW,OAAOpI,IAhkEpB,CAikEG9N,OAAOD,MAAM+M","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.userevents', 'kendo.popup', 'kendo.html.button', 'kendo.splitbutton', 'kendo.dropdownbutton'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"toolbar\",\n name: \"ToolBar\",\n category: \"web\",\n description: \"The ToolBar widget displays one or more command buttons divided into groups.\",\n depends: [ \"core\", \"html.button\", \"splitbutton\", \"dropdownbutton\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Class = kendo.Class,\n ui = kendo.ui,\n Widget = ui.Widget,\n isFunction = kendo.isFunction,\n keys = kendo.keys,\n outerWidth = kendo._outerWidth,\n ns = \".kendoToolBar\",\n TOOLBAR = \"k-toolbar\",\n KBUTTON = \"k-button\",\n OVERFLOW_BUTTON = \"k-overflow-button\",\n TOGGLE_BUTTON = \"k-toggle-button\",\n BUTTON_GROUP = \"k-button-group\",\n SPLIT_BUTTON = \"k-split-button\",\n MENU_BUTTON = \"k-menu-button\",\n KSEPARATOR = \"k-separator\",\n SPACER_CLASS = \"k-spacer\",\n POPUP = \"k-popup\",\n RESIZABLE_TOOLBAR = \"k-toolbar-resizable\",\n STATE_SELECTED = \"k-selected\",\n STATE_DISABLED = \"k-disabled\",\n STATE_HIDDEN = \"k-hidden\",\n FORCE_HIDDEN = \"k-force-hidden\",\n GROUP_START = \"k-group-start\",\n GROUP_END = \"k-group-end\",\n MENU_LINK = \"k-menu-link\",\n MENU_ITEM = \"k-menu-item\",\n OVERFLOW_GROUP = \"k-overflow-group\",\n OVERFLOW_HIDDEN = \"k-overflow-hidden\",\n OVERFLOW_ANCHOR = \"k-overflow-anchor\",\n OVERFLOW_CONTAINER = \"k-overflow-container\",\n OVERFLOW_WRAPPER = \"k-overflow-wrapper\",\n FIRST_TOOLBAR_VISIBLE = \"k-toolbar-first-visible\",\n LAST_TOOLBAR_VISIBLE = \"k-toolbar-last-visible\",\n SPLIT_BUTTON_ARROW = \"k-split-button-arrow\",\n TEMPLATE_ITEM = \"k-toolbar-item\",\n DROPDOWNLIST = \"k-dropdownlist\",\n COLORPICKER = \"k-colorpicker\",\n INPUT_BUTTON = \"k-input-button\",\n KFOCUS = \"k-focus\",\n\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_PRESSED = \"aria-pressed\",\n ARIA_LEBEL = \"aria-label\",\n\n CLICK = \"click\",\n TOGGLE = \"toggle\",\n OPEN = \"open\",\n CLOSE = \"close\",\n FOCUS = \"focus\",\n KEYDOWN = \"keydown\",\n TAP = \"tap\",\n\n SPACER = \"spacer\",\n BOTH = \"both\",\n PRIMARY = \"primary\",\n HREF = \"href\",\n ROLE = \"role\",\n BUTTON = \"button\",\n SPLITBUTTON = \"splitButton\",\n DROPDOWNBUTTON = \"dropDownButton\",\n SEPARATOR = \"separator\",\n OVERFLOW = \"overflow\",\n NEXT = \"next\",\n PREV = \"prev\",\n TABINDEX = \"tabindex\",\n TEMPLATE = \"template\",\n INPUT = \"input\",\n SELECT = \"select\",\n CHECKBOX = \"checkbox\",\n HIDDEN = \"hidden\",\n GROUP = \"group\",\n\n KENDO_FOCUSABLE = \":kendoFocusable\",\n\n OVERFLOW_OPEN = \"overflowOpen\",\n OVERFLOW_CLOSE = \"overflowClose\",\n OVERFLOW_NEVER = \"never\",\n OVERFLOW_AUTO = \"auto\",\n OVERFLOW_ALWAYS = \"always\",\n\n OPTION_LIST_SUFFIX = \"_optionlist\",\n\n KENDO_UID_ATTR = kendo.attr(\"uid\"),\n\n POPUP_ITEM_TEMPLATE = '
  • ',\n\n MENU_LINK_SPAN = '' +\n '#:text#' +\n '',\n\n MENU_LINK_A = '' +\n '#:text#' +\n '',\n\n EMPTY = \" \",\n NOTHING = \"\",\n TEXT_ITEM = \"textItem\",\n DOT = \".\",\n COMMA = \",\",\n ID = \"id\",\n UID = \"uid\";\n\n kendo.toolbar = {};\n\n var components = {\n overflowAnchor: '
    ',\n overflowContainer: ''\n };\n\n kendo.toolbar.registerComponent = function(name, toolbar, overflow) {\n components[name] = {\n toolbar: toolbar,\n overflow: overflow\n };\n };\n\n var Item = kendo.Class.extend({\n addOverflowAttr: function() {\n this.element.attr(kendo.attr(OVERFLOW), this.options.overflow || OVERFLOW_AUTO);\n },\n\n addUidAttr: function() {\n this.element.attr(KENDO_UID_ATTR, this.options.uid);\n },\n\n addIdAttr: function() {\n if (this.options.id) {\n this.element.attr(ID, this.options.id);\n }\n },\n\n addOverflowIdAttr: function() {\n if (this.options.id) {\n this.element.attr(ID, this.options.id + \"_overflow\");\n }\n },\n\n attributes: function() {\n var attributes = this.options.attributes,\n classes;\n\n if (attributes) {\n if (attributes.class) {\n classes = attributes.class;\n\n this.element.addClass(classes);\n\n delete attributes.class;\n }\n\n this.element.attr(attributes);\n\n attributes.class = classes;\n }\n },\n\n show: function() {\n this.element.removeClass(STATE_HIDDEN);\n this.element.removeClass(FORCE_HIDDEN);\n this.options.hidden = false;\n },\n\n hide: function() {\n this.element.addClass(STATE_HIDDEN);\n this.element.addClass(FORCE_HIDDEN);\n\n if (this.overflow && this.overflowHidden) {\n this.overflowHidden();\n }\n this.options.hidden = true;\n },\n\n remove: function() {\n this.element.remove();\n },\n\n enable: function(isEnabled) {\n if (isEnabled === undefined$1) {\n isEnabled = true;\n }\n this.element.toggleClass(STATE_DISABLED, !isEnabled);\n this.element.attr(ARIA_DISABLED, !isEnabled);\n\n this.options.enable = isEnabled;\n },\n\n twin: function() {\n var uid = this.element.attr(KENDO_UID_ATTR);\n if (this.overflow && this.options.splitContainerId) {\n return $(\"#\" + this.options.splitContainerId)\n .find(\"[\" + KENDO_UID_ATTR + \"='\" + uid + \"']\")\n .data(this.options.type);\n } else if (this.overflow) {\n return this.toolbar\n .element\n .find(\"[\" + KENDO_UID_ATTR + \"='\" + uid + \"']\")\n .data(this.options.type);\n } else if (this.toolbar.options.resizable) {\n return this.toolbar\n .popup.element\n .find(\"[\" + KENDO_UID_ATTR + \"='\" + uid + \"']\")\n .data(this.options.type);\n }\n }\n });\n\n kendo.toolbar.Item = Item;\n\n var BareItem = Item.extend({\n init: function(options, toolbar) {\n this.options = $.extend({}, this.options, options);\n this.toolbar = toolbar;\n }\n });\n\n kendo.toolbar.BareItem = BareItem;\n\n var Button = Item.extend({\n init: function(options, toolbar) {\n var element = options.useButtonTag ? $('') : $('');\n\n this.element = element;\n this.options = $.extend({}, this.options, options);\n this.toolbar = toolbar;\n\n this.attributes();\n\n if (options.primary) {\n this.options.themeColor = PRIMARY;\n }\n\n if (options.togglable) {\n element.addClass(TOGGLE_BUTTON);\n this.toggle(options.selected);\n }\n\n if (options.url !== undefined$1 && !options.useButtonTag) {\n element.attr(HREF, options.url);\n if (options.mobile) {\n element.attr(kendo.attr(ROLE), BUTTON);\n }\n }\n\n if (options.group) {\n element.attr(kendo.attr(GROUP), options.group);\n this.group = this.toolbar.addToGroup(this, options.group);\n }\n\n if (!options.togglable && options.click && isFunction(options.click)) {\n this.clickHandler = options.click;\n }\n\n if (options.togglable && options.toggle && isFunction(options.toggle)) {\n this.toggleHandler = options.toggle;\n }\n },\n\n options: {\n showIcon: BOTH,\n showText: BOTH\n },\n\n toggle: function(state, propagate) {\n state = !!state;\n\n if (this.group && state) {\n this.group.select(this);\n } else if (!this.group) {\n this.select(state);\n }\n\n if (propagate && this.twin()) {\n this.twin().toggle(state);\n }\n },\n\n getParentGroup: function() {\n if (this.options.isChild) {\n return this.element.closest(DOT + BUTTON_GROUP).data(\"buttonGroup\");\n }\n }\n });\n\n kendo.toolbar.Button = Button;\n\n var ToolBarButton = Button.extend({\n init: function(options, toolbar) {\n Button.fn.init.call(this, options, toolbar);\n\n var element = this.element;\n options = this.options;\n\n element.addClass(KBUTTON);\n\n this.addIdAttr();\n\n if (options.align) {\n element.addClass(\"k-align-\" + options.align);\n }\n\n if (!!options.text && (options.showText == \"toolbar\" || options.showText == BOTH)) {\n if (options.mobile) {\n element.html('' + options.text + \"\");\n } else {\n element.html(options.text);\n }\n } else if (!!options.text) {\n element.attr(ARIA_LEBEL, options.text);\n }\n\n if (options.icon || options.spriteCssClass || options.imageUrl) {\n if (options.showIcon !== \"toolbar\" && options.showIcon !== BOTH) {\n options.icon = null;\n options.spriteCssClass = null;\n options.imageUrl = null;\n }\n }\n\n kendo.html.renderButton(element, options);\n\n this.addUidAttr();\n this.addOverflowAttr();\n this.enable(options.enable);\n\n if (options.hidden) {\n this.hide();\n }\n\n this.element.data({\n type: BUTTON,\n button: this\n });\n },\n\n select: function(selected) {\n if (selected === undefined$1) {\n selected = false;\n }\n\n if (this.options.togglable) {\n this.element.attr(ARIA_PRESSED, selected);\n }\n\n this.element.toggleClass(STATE_SELECTED, selected);\n this.options.selected = selected;\n }\n });\n\n kendo.toolbar.ToolBarButton = ToolBarButton;\n\n var OverflowButton = Button.extend({\n init: function(options, toolbar) {\n this.overflow = true;\n\n Button.fn.init.call(this, $.extend({}, options), toolbar);\n\n var element = this.element;\n options = this.options;\n\n if (!!options.text && (options.showText == OVERFLOW || options.showText == BOTH)) {\n if (options.mobile) {\n element.html('' + options.text + \"\");\n } else {\n element.html(options.text);\n }\n } else if (!!options.text) {\n element.attr(ARIA_LEBEL, options.text);\n }\n\n if (options.icon || options.spriteCssClass || options.imageUrl) {\n if (options.showIcon !== OVERFLOW && options.showIcon !== BOTH) {\n options.icon = null;\n options.spriteCssClass = null;\n options.imageUrl = null;\n }\n }\n\n kendo.html.renderButton(element, options);\n\n if (!options.isChild) {\n this._wrap();\n }\n\n this.addOverflowIdAttr();\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.enable(options.enable);\n\n element.addClass(OVERFLOW_BUTTON + EMPTY + KBUTTON);\n\n if (options.hidden) {\n this.hide();\n }\n\n if (options.togglable) {\n this.toggle(options.selected);\n }\n\n this.element.data({\n type: BUTTON,\n button: this\n });\n },\n\n _wrap: function() {\n this.element = this.element.wrap(POPUP_ITEM_TEMPLATE).parent();\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n },\n\n select: function(selected) {\n if (selected === undefined$1) {\n selected = false;\n }\n\n if (this.options.isChild) {\n this.element.toggleClass(STATE_SELECTED, selected);\n } else {\n this.element.find(DOT + KBUTTON).toggleClass(STATE_SELECTED, selected);\n }\n this.options.selected = selected;\n }\n });\n\n kendo.toolbar.OverflowButton = OverflowButton;\n kendo.toolbar.registerComponent(BUTTON, ToolBarButton, OverflowButton);\n\n var ButtonGroup = Item.extend({\n createButtons: function(buttonConstructor) {\n var options = this.options;\n var items = options.buttons || [];\n var item;\n\n for (var i = 0; i < items.length; i++) {\n if (!items[i].uid) {\n items[i].uid = kendo.guid();\n }\n item = new buttonConstructor($.extend({ mobile: options.mobile, isChild: true, type: BUTTON }, items[i]), this.toolbar);\n item.element.appendTo(this.element);\n }\n },\n\n refresh: function() {\n this.element.children().filter(\":not('.\" + STATE_HIDDEN + \"')\").first().addClass(GROUP_START);\n this.element.children().filter(\":not('.\" + STATE_HIDDEN + \"')\").last().addClass(GROUP_END);\n }\n });\n\n kendo.toolbar.ButtonGroup = ButtonGroup;\n\n var ToolBarButtonGroup = ButtonGroup.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
    ');\n this.options = options;\n this.toolbar = toolbar;\n\n this.addIdAttr();\n\n if (options.align) {\n element.addClass(\"k-align-\" + options.align);\n }\n\n this.createButtons(ToolBarButton);\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.refresh();\n\n element.addClass(BUTTON_GROUP);\n\n if (options.hidden) {\n this.hide();\n }\n\n this.element.data({\n type: \"buttonGroup\",\n buttonGroup: this\n });\n }\n });\n\n kendo.toolbar.ToolBarButtonGroup = ToolBarButtonGroup;\n\n var OverflowButtonGroup = ButtonGroup.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
  • ');\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n\n this.addOverflowIdAttr();\n\n this.createButtons(OverflowButton);\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.refresh();\n\n element.addClass((options.mobile ? NOTHING : BUTTON_GROUP) + EMPTY + OVERFLOW_GROUP);\n\n this.element.data({\n type: \"buttonGroup\",\n buttonGroup: this\n });\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n\n kendo.toolbar.OverflowButtonGroup = OverflowButtonGroup;\n kendo.toolbar.registerComponent(\"buttonGroup\", ToolBarButtonGroup, OverflowButtonGroup);\n\n var ToolBarMenuButton = ToolBarButton.extend({\n init: function(options, toolbar) {\n var element, img, span;\n\n options = this.options = $.extend({}, this.options, options);\n\n if (options.url !== undefined$1) {\n element = $(kendo.template(MENU_LINK_A)({\n href: options.url,\n text: options.text\n }));\n } else {\n element = $(kendo.template(MENU_LINK_SPAN)({\n text: options.text\n }));\n }\n\n this.element = element;\n this.toolbar = toolbar;\n\n if (options.click && isFunction(options.click)) {\n this.clickHandler = options.click;\n }\n\n if (options.togglable && options.toggle && isFunction(options.toggle)) {\n this.toggleHandler = options.toggle;\n }\n\n if (options.imageUrl) {\n img = $('\"icon\"').prependTo(element);\n img.attr(\"src\", options.imageUrl);\n } else if (options.icon) {\n span = $('').prependTo(element);\n span.attr(\"class\", \"k-icon k-i-\" + options.icon);\n } else if (options.spriteCssClass) {\n span = $('').prependTo(element);\n span.addClass(options.spriteCssClass);\n }\n\n this.addIdAttr();\n this.addUidAttr();\n this.addOverflowAttr();\n this.attributes();\n this.enable(options.enable);\n\n if (options.group) {\n element.attr(kendo.attr(GROUP), options.group);\n this.group = this.toolbar.addToGroup(this, options.group);\n }\n\n if (options.hidden) {\n this.hide();\n }\n\n this.element.data({\n type: BUTTON,\n button: this\n });\n }\n });\n\n kendo.toolbar.ToolBarMenuButton = ToolBarMenuButton;\n\n var ToolBarSplitButton = Item.extend({\n init: function(options, toolbar) {\n var that = this;\n\n that.options = $.extend({\n id: options.id || options.uid,\n enable: true\n }, options, {\n togglable: false // disable togglable for splitbutton\n });\n\n if (options.primary) {\n that.options.themeColor = PRIMARY;\n }\n\n if (options.showIcon === OVERFLOW) {\n that.options.icon = null;\n }\n\n if (options.showText === OVERFLOW) {\n that.options.text = \"\";\n }\n\n that.toolbar = toolbar;\n\n that.splitButton = new ui.SplitButton($(\"\"),\n $.extend({}, that.options, {\n items: that._extend(options.menuButtons),\n }), toolbar.options);\n that.element = that.splitButton.wrapper;\n\n that.splitButton.bind(CLICK, toolbar._buttonClick.bind(toolbar));\n that.splitButton.bind(CLOSE, that._close.bind(that));\n that.splitButton.bind(OPEN, that._open.bind(that));\n\n that.splitButton.element.data({\n type: SPLITBUTTON,\n button: that,\n splitButton: that\n });\n\n that.splitButton.wrapper.data({\n type: SPLITBUTTON,\n button: that,\n splitButton: that\n });\n\n that.addOverflowAttr();\n that.addUidAttr();\n that.attributes();\n that.addMenuAttributes();\n\n if (that.options.enable === false) {\n that.enable(this.options.enable);\n }\n\n if (that.options.hidden) {\n that.hide();\n }\n },\n _open: function(ev) {\n var that = this;\n var isDefaultPrevented = that.toolbar.trigger(OPEN, { target: that.element });\n if (isDefaultPrevented) {\n ev.preventDefault();\n }\n },\n _close: function(ev) {\n var that = this;\n var isDefaultPrevented = that.toolbar.trigger(CLOSE, { target: that.element });\n if (isDefaultPrevented) {\n ev.preventDefault();\n }\n that.splitButton.element.trigger(FOCUS);\n },\n _extend: function(items) {\n var that = this;\n return items.map(function(item) {\n var itemInstance = new BareItem(item, that.toolbar);\n return $.extend({}, item, {\n togglable: false,\n data: function() {\n return {\n type: BUTTON,\n button: itemInstance,\n splitButton: that\n };\n }\n });\n });\n },\n addMenuAttributes: function() {\n var that = this,\n items = that.splitButton.items(),\n itemInstance;\n\n items.each(function(index, item) {\n item = $(item);\n itemInstance = item.data(BUTTON);\n itemInstance.element = item;\n itemInstance.options = $.extend({\n type: BUTTON,\n enable: true\n }, itemInstance.options);\n\n itemInstance.addOverflowAttr();\n itemInstance.addUidAttr();\n });\n },\n remove: function() {\n var elmToRemove = this.splitButton.wrapper;\n this.splitButton.destroy();\n elmToRemove.remove();\n },\n enable: function(enable, item) {\n this.splitButton.enable(enable, item, true);\n\n if (this.twin()) {\n this.twin().enable(enable);\n }\n },\n attributes: function() {\n var that = this,\n mainButton = that.splitButton.element,\n attributes = this.options.attributes,\n classes;\n\n if (attributes) {\n if (attributes.class) {\n classes = attributes.class;\n\n mainButton.addClass(classes);\n\n delete attributes.class;\n }\n\n mainButton.attr(attributes);\n\n attributes.class = classes;\n }\n },\n });\n\n kendo.toolbar.ToolBarSplitButton = ToolBarSplitButton;\n\n var OverflowSplitButton = Item.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
  • '),\n items = options.menuButtons,\n item, splitContainerId;\n\n this.options = $.extend({}, options, { togglable: false });\n this.toolbar = toolbar;\n this.overflow = true;\n splitContainerId = (options.id || options.uid) + OPTION_LIST_SUFFIX;\n\n this.mainButton = new OverflowButton($.extend({ isChild: true }, options, { togglable: false }));\n this.mainButton.element.appendTo(element);\n\n for (var i = 0; i < items.length; i++) {\n item = new OverflowButton($.extend({ mobile: options.mobile, type: BUTTON, splitContainerId: splitContainerId, isChild: true }, items[i], { click: options.click }), this.toolbar);\n item.element.appendTo(element);\n }\n\n this.addUidAttr();\n this.addOverflowAttr();\n\n this.mainButton.main = true;\n\n if (this.options.enable === false) {\n this.enable(this.options.enable);\n }\n\n element.data({\n type: SPLITBUTTON,\n splitButton: this\n });\n },\n\n enable: function(isEnabled) {\n var elements = this.element.add(this.element.find(DOT + OVERFLOW_BUTTON));\n\n if (isEnabled === undefined$1) {\n isEnabled = true;\n }\n\n elements.toggleClass(STATE_DISABLED, !isEnabled);\n elements.attr(ARIA_DISABLED, !isEnabled);\n\n this.options.enable = isEnabled;\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n\n kendo.toolbar.OverflowSplitButton = OverflowSplitButton;\n kendo.toolbar.registerComponent(SPLITBUTTON, ToolBarSplitButton, OverflowSplitButton);\n\n var ToolBarDropDownButton = Item.extend({\n init: function(options, toolbar) {\n var that = this;\n\n that.options = $.extend({\n id: options.id || options.uid,\n enable: true\n }, options, {\n togglable: false // disable togglable for dropdownbutton\n });\n\n if (options.primary) {\n that.options.themeColor = PRIMARY;\n }\n\n if (options.showIcon === OVERFLOW) {\n that.options.icon = null;\n }\n\n if (options.showText === OVERFLOW) {\n that.options.text = \"\";\n }\n\n that.toolbar = toolbar;\n\n that.dropDownButton = new ui.DropDownButton($(\"\"),\n $.extend({}, that.options, {\n items: that._extend(options.menuButtons)\n }), toolbar.options);\n that.element = that.dropDownButton.element;\n\n that.dropDownButton.bind(CLICK, toolbar._buttonClick.bind(toolbar));\n that.dropDownButton.bind(CLOSE, that._close.bind(that));\n that.dropDownButton.bind(OPEN, that._open.bind(that));\n\n that.dropDownButton.element.data({\n type: DROPDOWNBUTTON,\n button: that,\n dropDownButton: that\n });\n\n that.addOverflowAttr();\n that.addUidAttr();\n that.attributes();\n that.addMenuAttributes();\n\n if (that.options.enable === false) {\n that.enable(this.options.enable);\n }\n\n if (that.options.hidden) {\n that.hide();\n }\n },\n _open: function(ev) {\n var that = this;\n var isDefaultPrevented = that.toolbar.trigger(OPEN, { target: that.element });\n if (isDefaultPrevented) {\n ev.preventDefault();\n }\n },\n _close: function(ev) {\n var that = this;\n var isDefaultPrevented = that.toolbar.trigger(CLOSE, { target: that.element });\n if (isDefaultPrevented) {\n ev.preventDefault();\n }\n that.dropDownButton.element.trigger(FOCUS);\n },\n _extend: function(items) {\n var that = this;\n return items.map(function(item) {\n var itemInstance = new BareItem(item, that.toolbar);\n return $.extend({}, item, {\n data: function() {\n return {\n type: BUTTON,\n button: itemInstance,\n dropDownButton: that\n };\n }\n });\n });\n },\n addMenuAttributes: function() {\n var that = this,\n items = that.dropDownButton.items(),\n itemInstance;\n\n items.each(function(index, item) {\n item = $(item);\n itemInstance = item.data(BUTTON);\n itemInstance.element = item;\n itemInstance.options = $.extend({\n type: BUTTON,\n enable: true\n }, itemInstance.options);\n\n itemInstance.addOverflowAttr();\n itemInstance.addUidAttr();\n });\n },\n remove: function() {\n var elmToRemove = this.dropDownButton.element;\n this.dropDownButton.destroy();\n elmToRemove.remove();\n },\n enable: function(enable, item) {\n this.dropDownButton.enable(enable, item, true);\n\n if (this.twin()) {\n this.twin().enable(enable);\n }\n },\n attributes: function() {\n var that = this,\n mainButton = that.element,\n attributes = this.options.attributes,\n classes;\n\n if (attributes) {\n if (attributes.class) {\n classes = attributes.class;\n\n mainButton.addClass(classes);\n\n delete attributes.class;\n }\n\n mainButton.attr(attributes);\n\n attributes.class = classes;\n }\n },\n });\n\n kendo.toolbar.ToolBarSplitButton = ToolBarSplitButton;\n\n var OverflowTextItem = Item.extend({\n init: function(options, toolbar) {\n var element = this.element = $('');\n\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n\n if (options.icon && (!options.showIcon || options.showIcon !== \"toolbar\")) {\n element.append(\"\");\n }\n\n if (options.showText !== \"toolbar\") {\n element.append(\"\" + this.options.text + \"\");\n }\n\n element.data({\n type: TEXT_ITEM,\n textItem: this\n });\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n\n var OverflowDropDownButton = Item.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
  • '),\n items = options.menuButtons,\n item, splitContainerId;\n\n this.options = $.extend({}, options, { togglable: false });\n this.toolbar = toolbar;\n this.overflow = true;\n splitContainerId = (options.id || options.uid) + OPTION_LIST_SUFFIX;\n\n this.mainButton = new OverflowTextItem($.extend({ isChild: true }, options, { togglable: false }));\n this.mainButton.element.appendTo(element);\n\n for (var i = 0; i < items.length; i++) {\n item = new OverflowButton($.extend({ mobile: options.mobile, type: BUTTON, splitContainerId: splitContainerId, isChild: true }, items[i], { click: options.click }), this.toolbar);\n item.element.appendTo(element);\n }\n\n this.addUidAttr();\n this.addOverflowAttr();\n\n this.mainButton.main = true;\n\n if (this.options.enable === false) {\n this.enable(this.options.enable);\n }\n\n element.data({\n type: DROPDOWNBUTTON,\n dropDownButton: this\n });\n },\n\n enable: function(isEnabled) {\n var elements = this.element.add(this.element.find(DOT + OVERFLOW_BUTTON));\n\n if (isEnabled === undefined$1) {\n isEnabled = true;\n }\n\n elements.toggleClass(STATE_DISABLED, !isEnabled);\n elements.attr(ARIA_DISABLED, !isEnabled);\n\n this.options.enable = isEnabled;\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n\n kendo.toolbar.OverflowSplitButton = OverflowDropDownButton;\n kendo.toolbar.registerComponent(DROPDOWNBUTTON, ToolBarDropDownButton, OverflowDropDownButton);\n\n var ToolBarSeparator = Item.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
     
    ');\n\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n\n this.attributes();\n this.addIdAttr();\n this.addUidAttr();\n this.addOverflowAttr();\n\n element.addClass(KSEPARATOR);\n element.attr(ROLE, SEPARATOR);\n\n element.data({\n type: SEPARATOR,\n separator: this\n });\n }\n });\n\n var OverflowSeparator = Item.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
  •  
  • ');\n\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n\n element.addClass(KSEPARATOR);\n element.attr(ROLE, SEPARATOR);\n\n element.data({\n type: SEPARATOR,\n separator: this\n });\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n\n kendo.toolbar.registerComponent(\"separator\", ToolBarSeparator, OverflowSeparator);\n\n var ToolBarSpacer = Item.extend({\n init: function(options, toolbar) {\n var element = this.element = $('
     
    ');\n\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n\n element.addClass(SPACER_CLASS);\n\n element.data({\n type: SPACER\n });\n this.addOverflowAttr();\n }\n });\n\n kendo.toolbar.registerComponent(SPACER, ToolBarSpacer);\n\n var TemplateItem = Item.extend({\n init: function(template, options, toolbar) {\n var element = isFunction(template) ? template(options) : template;\n\n if (!(element instanceof jQuery)) {\n element = $(\"
    \").html(element);\n } else {\n element = element.wrap(\"
    \").parent();\n }\n\n this.element = element;\n this.options = options;\n this.options.type = options.type || TEMPLATE;\n this.toolbar = toolbar;\n\n this.attributes();\n this.addUidAttr();\n this.addIdAttr();\n this.addOverflowAttr();\n\n if (options.hidden) {\n this.hide();\n }\n\n element.data({\n type: TEMPLATE,\n template: this\n });\n }\n });\n\n kendo.toolbar.TemplateItem = TemplateItem;\n\n var OverflowTemplateItem = Item.extend({\n init: function(template, options, toolbar) {\n var element = isFunction(template) ? $(template(options)) : $(template);\n\n if (!(element instanceof jQuery)) {\n element = $(\"
  • \").html(element);\n } else {\n element = element.wrap(\"
  • \").parent();\n }\n\n this.element = element;\n this.options = options;\n this.options.type = TEMPLATE;\n this.toolbar = toolbar;\n this.overflow = true;\n\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n this.addOverflowAttr();\n\n element.data({\n type: TEMPLATE,\n template: this\n });\n },\n\n overflowHidden: function() {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n\n kendo.toolbar.OverflowTemplateItem = OverflowTemplateItem;\n\n function toggleActive(e) {\n if (!e.target.is(\".k-toggle-button\")) {\n e.target.toggleClass(STATE_SELECTED, e.type == \"press\");\n }\n }\n\n function actionSheetWrap(element) {\n element = $(element);\n\n return element.hasClass(\"km-actionsheet\") ? element.closest(\".km-popup-wrapper\") : element.addClass(\"km-widget km-actionsheet\")\n .wrap('
    ').parent()\n .wrap('
    ').parent();\n }\n\n function preventClick(e) {\n if ($(e.target).closest(\"a.k-button\").length) {\n e.preventDefault();\n }\n }\n\n function findFocusableSibling(element, dir) {\n var getSibling = dir === NEXT ? $.fn.next : $.fn.prev;\n var getter = dir === NEXT ? $.fn.first : $.fn.last;\n var candidate = getSibling.call(element);\n\n if (!candidate.length && element.is(DOT + OVERFLOW_ANCHOR)) {\n return element;\n }\n\n if (candidate.is(KENDO_FOCUSABLE) || !candidate.length) {\n return candidate;\n }\n\n if (candidate.find(KENDO_FOCUSABLE).length) {\n return getter.call(candidate.find(KENDO_FOCUSABLE));\n }\n\n return findFocusableSibling(candidate, dir);\n }\n\n var Group = Class.extend({\n init: function(name) {\n this.name = name;\n this.buttons = [];\n },\n\n add: function(button) {\n this.buttons[this.buttons.length] = button;\n },\n\n remove: function(button) {\n var index = $.inArray(button, this.buttons);\n this.buttons.splice(index, 1);\n },\n\n select: function(button) {\n var tmp;\n for (var i = 0; i < this.buttons.length; i ++) {\n tmp = this.buttons[i];\n\n tmp.select(false);\n }\n\n button.select(true);\n if (button.twin()) {\n button.twin().select(true);\n }\n }\n });\n\n var ToolBar = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n options = that.options;\n element = that.wrapper = that.element;\n\n element.addClass(TOOLBAR + \" k-widget\");\n element.attr(ROLE, \"toolbar\");\n\n this.uid = kendo.guid();\n this._isRtl = kendo.support.isRtl(element);\n this._groups = {};\n element.attr(KENDO_UID_ATTR, this.uid);\n\n that.isMobile = (typeof options.mobile === \"boolean\") ? options.mobile : that.element.closest(\".km-root\")[0];\n that.animation = that.isMobile ? { open: { effects: \"fade\" } } : {};\n\n if (that.isMobile) {\n element.addClass(\"km-widget\");\n KBUTTON = \"km-button\";\n BUTTON_GROUP = \"km-buttongroup\";\n STATE_SELECTED = \"km-state-active\";\n STATE_DISABLED = \"km-state-disabled\";\n }\n\n if (options.resizable) {\n that._renderOverflow();\n element.addClass(RESIZABLE_TOOLBAR);\n\n that.overflowUserEvents = new kendo.UserEvents(that.element, {\n threshold: 5,\n allowSelection: true,\n filter: DOT + OVERFLOW_ANCHOR,\n tap: that._toggleOverflow.bind(that)\n });\n\n that._resizeHandler = kendo.onResize(function() {\n that.resize();\n });\n } else {\n that.popup = { element: $([]) };\n }\n\n if (options.items && options.items.length) {\n for (var i = 0; i < options.items.length; i++) {\n that.add(options.items[i]);\n }\n\n if (options.resizable) {\n that._shrink(that.element.innerWidth());\n }\n }\n\n that.userEvents = new kendo.UserEvents(document.documentElement, {\n threshold: 5,\n allowSelection: true,\n filter:\n \"[\" + KENDO_UID_ATTR + \"=\" + that.uid + \"] a.\" + KBUTTON + COMMA + EMPTY +\n \"[\" + KENDO_UID_ATTR + \"=\" + that.uid + \"] .\" + OVERFLOW_ANCHOR + COMMA + EMPTY +\n \"[\" + KENDO_UID_ATTR + \"=\" + that.uid + \"] .\" + SPLIT_BUTTON_ARROW + COMMA + EMPTY +\n \"[\" + KENDO_UID_ATTR + \"=\" + that.uid + \"] .\" + TEMPLATE_ITEM + COMMA + EMPTY +\n \"[\" + KENDO_UID_ATTR + \"=\" + that.uid + \"] .\" + MENU_BUTTON,\n tap: that._buttonClick.bind(that),\n press: toggleActive,\n release: toggleActive\n });\n\n that.element.on(CLICK + ns, \"a.k-button\", preventClick)\n .on(KEYDOWN + ns, that._keydown.bind(that))\n .on(\"focusin\" + ns, that._focusIn.bind(that))\n .on(\"focusout\" + ns, that._focusOut.bind(that));\n\n if (that.options.resizable) {\n that.popup.element.on(CLICK + ns, + \"a.k-button\", preventClick);\n }\n\n if (options.resizable) {\n that.overflowAnchor.appendTo(that.wrapper);\n this._toggleOverflowAnchor();\n }\n\n that._tabIndex();\n\n kendo.notify(that);\n },\n\n events: [\n CLICK,\n TOGGLE,\n OPEN,\n CLOSE,\n OVERFLOW_OPEN,\n OVERFLOW_CLOSE\n ],\n\n options: {\n name: \"ToolBar\",\n items: [],\n resizable: true,\n mobile: null,\n navigateOnTab: false\n },\n\n addToGroup: function(button, groupName) {\n var group;\n\n if (!this._groups[groupName]) {\n group = this._groups[groupName] = new Group();\n } else {\n group = this._groups[groupName];\n }\n\n group.add(button);\n return group;\n },\n\n destroy: function() {\n var that = this;\n\n that.destroySplitButtons();\n that.destroyDropDownButtons();\n\n that.element.off(ns, \"a.k-button\");\n\n that.userEvents.destroy();\n\n if (that.options.resizable) {\n kendo.unbindResize(that._resizeHandler);\n that.overflowUserEvents.destroy();\n that.popup.element.off(ns, \"a.k-button\");\n that.popup.destroy();\n }\n\n Widget.fn.destroy.call(that);\n },\n\n destroySplitButtons: function() {\n var that = this,\n splitButtonWrappers = that.element.find(DOT + SPLIT_BUTTON),\n item;\n\n\n splitButtonWrappers.each(function(idx, element) {\n item = that._getItem(element);\n\n if (item && item.type === SPLITBUTTON) {\n item = item.toolbar;\n }\n\n if (item && item.splitButton && item.splitButton.destroy) {\n item.splitButton.destroy();\n $(element).remove();\n }\n });\n },\n\n destroyDropDownButtons: function() {\n var that = this,\n dropDownButtons = that.element.find(DOT + MENU_BUTTON),\n item;\n\n\n dropDownButtons.each(function(idx, element) {\n item = that._getItem(element);\n\n if (item && item.type === DROPDOWNBUTTON) {\n item = item.toolbar;\n }\n\n if (item && item.dropDownButton && item.dropDownButton.destroy) {\n item.dropDownButton.destroy();\n $(element).remove();\n }\n });\n },\n\n add: function(options) {\n var component = components[options.type],\n template = options.template,\n tool, that = this,\n itemClasses = that.isMobile ? NOTHING : \"k-item\",\n overflowTemplate = options.overflowTemplate,\n overflowTool, inputsInTemplate;\n\n $.extend(options, {\n uid: kendo.guid(),\n animation: that.animation,\n mobile: that.isMobile,\n rootUid: that.uid\n });\n\n if (options.menuButtons) {\n for (var i = 0; i < options.menuButtons.length; i++) {\n $.extend(options.menuButtons[i], {\n uid: kendo.guid()\n });\n }\n }\n\n if ((template && !overflowTemplate) || options.type === SPACER) {\n options.overflow = OVERFLOW_NEVER;\n } else if (!options.overflow) {\n options.overflow = OVERFLOW_AUTO;\n }\n\n //add the command in the overflow popup\n if (options.overflow !== OVERFLOW_NEVER && that.options.resizable) {\n if (overflowTemplate) { //template command\n overflowTool = new OverflowTemplateItem(overflowTemplate, options, that);\n } else if (component) { //build-in command\n overflowTool = new component.overflow(options, that);\n overflowTool.element.addClass(itemClasses);\n }\n\n if (overflowTool) {\n if (options.overflow === OVERFLOW_AUTO) {\n overflowTool.overflowHidden();\n }\n\n overflowTool.element.appendTo(that.popup.container);\n that.angular(\"compile\", function() {\n return { elements: overflowTool.element.get() };\n });\n }\n }\n\n //add the command in the toolbar container\n if (options.overflow !== OVERFLOW_ALWAYS) {\n if (template) { //template command\n tool = new TemplateItem(template, options, that);\n inputsInTemplate = tool.element.find(INPUT + COMMA + SELECT);\n\n if (!this.options.navigateOnTab && inputsInTemplate.length > 0) {\n tool.element.attr(TABINDEX, 0);\n inputsInTemplate.attr(TABINDEX, -1);\n }\n } else if (component) { //build-in command\n tool = new component.toolbar(options, that);\n }\n\n if (tool) {\n tool.element.appendTo(that.element);\n\n that.angular(\"compile\", function() {\n return { elements: tool.element.get() };\n });\n }\n }\n },\n\n _getItem: function(candidate) {\n var element,\n toolbarItem,\n overflowItem,\n isResizable = this.options.resizable,\n type;\n\n //find toolbar item\n element = this.element.find(candidate);\n\n if (!element.length) {\n element = $(\"[data-role=\\\"buttonmenu\\\"]\").find(candidate);\n }\n\n type = element.length ? element.data(\"type\") : NOTHING;\n toolbarItem = element.data(type);\n\n if (toolbarItem && isResizable) {\n\n overflowItem = toolbarItem.twin();\n } else if (isResizable) { //find overflow item\n element = this.popup.element.find(candidate);\n type = element.length ? element.data(\"type\") : NOTHING;\n overflowItem = element.data(type);\n\n if (type === TEXT_ITEM) {\n element = element.parent(DOT + MENU_BUTTON);\n type = \"dropDownButton\";\n overflowItem = element.data(type);\n }\n\n if (overflowItem && overflowItem.main && type !== TEXT_ITEM) {\n element = element.parent(DOT + SPLIT_BUTTON);\n type = \"splitButton\";\n overflowItem = element.data(type);\n }\n }\n\n return {\n type: type,\n toolbar: toolbarItem,\n overflow: overflowItem\n };\n },\n\n remove: function(candidate) {\n var item = this._getItem(candidate);\n\n if (item.toolbar) { item.toolbar.remove(); }\n if (item.overflow) { item.overflow.remove(); }\n\n this.resize(true);\n },\n\n hide: function(candidate) {\n var item = this._getItem(candidate);\n var buttonGroupInstance;\n\n if (item.toolbar) {\n if (item.toolbar.options.type === BUTTON && item.toolbar.options.isChild) {\n buttonGroupInstance = item.toolbar.getParentGroup();\n\n item.toolbar.hide();\n\n if (buttonGroupInstance) {\n buttonGroupInstance.refresh();\n }\n } else if (!item.toolbar.options.hidden) {\n item.toolbar.hide();\n }\n }\n\n if (item.overflow) {\n if (item.overflow.options.type === BUTTON && item.overflow.options.isChild) {\n buttonGroupInstance = item.overflow.getParentGroup();\n\n item.overflow.hide();\n\n if (buttonGroupInstance) {\n buttonGroupInstance.refresh();\n }\n } else if (!item.overflow.options.hidden) {\n item.overflow.hide();\n }\n }\n\n this.resize(true);\n },\n\n show: function(candidate) {\n var item = this._getItem(candidate);\n var buttonGroupInstance;\n\n if (item.toolbar) {\n if (item.toolbar.options.type === BUTTON && item.toolbar.options.isChild) {\n buttonGroupInstance = item.toolbar.getParentGroup();\n item.toolbar.show();\n\n if (buttonGroupInstance) {\n buttonGroupInstance.refresh();\n }\n } else if (item.toolbar.options.hidden) {\n item.toolbar.show();\n }\n }\n\n if (item.overflow) {\n if (item.overflow.options.type === BUTTON && item.overflow.options.isChild) {\n buttonGroupInstance = item.overflow.getParentGroup();\n\n item.toolbar.show();\n\n if (buttonGroupInstance) {\n buttonGroupInstance.refresh();\n }\n } else if (item.overflow.options.hidden) {\n item.overflow.show();\n }\n }\n\n this.resize(true);\n },\n\n enable: function(element, enable) {\n var item = this._getItem(element);\n\n if (typeof enable == \"undefined\") {\n enable = true;\n }\n\n if (item.toolbar) { item.toolbar.enable(enable, item.element); }\n if (item.overflow) { item.overflow.enable(enable); }\n },\n\n getSelectedFromGroup: function(groupName) {\n return this.element.find(DOT + TOGGLE_BUTTON + \"[data-group='\" + groupName + \"']\").filter(DOT + STATE_SELECTED);\n },\n\n toggle: function(button, checked) {\n var element = $(button),\n item = element.data(BUTTON);\n\n if (item.options.togglable) {\n if (checked === undefined$1) {\n checked = true;\n }\n\n item.toggle(checked, true);\n }\n },\n\n _renderOverflow: function() {\n var that = this,\n overflowContainer = components.overflowContainer,\n isRtl = that._isRtl,\n horizontalDirection = isRtl ? \"left\" : \"right\";\n\n that.overflowAnchor = $(components.overflowAnchor).addClass(KBUTTON);\n\n that.element.append(that.overflowAnchor);\n\n if (that.isMobile) {\n that.overflowAnchor.append('');\n overflowContainer = actionSheetWrap(overflowContainer);\n } else {\n that.overflowAnchor.append('');\n }\n\n that.popup = new kendo.ui.Popup(overflowContainer, {\n origin: \"bottom \" + horizontalDirection,\n position: \"top \" + horizontalDirection,\n anchor: that.overflowAnchor,\n isRtl: isRtl,\n animation: that.animation,\n appendTo: that.isMobile ? $(that.isMobile).children(\".km-pane\") : null,\n copyAnchorStyles: false,\n open: function(e) {\n var wrapper = kendo.wrap(that.popup.element)\n .addClass(OVERFLOW_WRAPPER);\n\n if (!that.isMobile) {\n wrapper.css(\"margin-left\", (isRtl ? -1 : 1) * ((outerWidth(wrapper) - wrapper.width()) / 2 + 1));\n } else {\n that.popup.container.css(\"max-height\", (parseFloat($(\".km-content:visible\").innerHeight()) - 15) + \"px\");\n }\n\n if (that.trigger(OVERFLOW_OPEN)) {\n e.preventDefault();\n }\n },\n activate: function() {\n this.element.find(KENDO_FOCUSABLE).first().trigger(FOCUS);\n },\n close: function(e) {\n if (that.trigger(OVERFLOW_CLOSE)) {\n e.preventDefault();\n }\n\n this.element.trigger(FOCUS);\n }\n });\n\n that.popup.element.on(KEYDOWN + ns, DOT + KBUTTON, function(e) {\n var target = $(e.target),\n li = target.parent(),\n isComplexTool = li.is(DOT + BUTTON_GROUP) || li.is(DOT + SPLIT_BUTTON),\n element;\n\n e.preventDefault();\n\n if (e.keyCode === keys.ESC || e.keyCode === keys.TAB || (e.altKey && e.keyCode === keys.UP)) {\n that._toggleOverflow();\n that.overflowAnchor.trigger(FOCUS);\n } else if (e.keyCode === keys.DOWN) {\n element = !isComplexTool || (isComplexTool && target.is(\":last-child\")) || (isComplexTool && !target.next().is(KENDO_FOCUSABLE)) ? li : target;\n findFocusableSibling(element, NEXT).trigger(FOCUS);\n } else if (e.keyCode === keys.UP) {\n element = !isComplexTool || (isComplexTool && target.is(\":first-child\")) || (isComplexTool && !target.prev().is(KENDO_FOCUSABLE)) ? li : target;\n findFocusableSibling(element, PREV).trigger(FOCUS);\n } else if ((e.keyCode === keys.SPACEBAR || e.keyCode === keys.ENTER) && !$(e.target).is(DOT + STATE_DISABLED)) {\n that.userEvents.trigger(TAP, { target: $(e.target) });\n that.overflowAnchor.trigger(FOCUS);\n } else if (e.keyCode === keys.HOME) {\n li.parent().find(KENDO_FOCUSABLE).first().trigger(FOCUS);\n } else if (e.keyCode === keys.END) {\n li.parent().find(KENDO_FOCUSABLE).last().trigger(FOCUS);\n }\n });\n\n if (that.isMobile) {\n that.popup.container = that.popup.element.find(DOT + OVERFLOW_CONTAINER);\n } else {\n that.popup.container = that.popup.element;\n }\n\n that.popup.container.attr(KENDO_UID_ATTR, this.uid);\n },\n\n _toggleOverflowAnchor: function() {\n var hasVisibleChildren = false;\n var paddingEnd = this._isRtl ? \"padding-left\" : \"padding-right\";\n\n if (this.options.mobile) {\n hasVisibleChildren = this.popup.element.find(DOT + OVERFLOW_CONTAINER).children(\":not(.\" + OVERFLOW_HIDDEN + \", .\" + POPUP + \")\").length > 0;\n } else {\n hasVisibleChildren = this.popup.element.children(\":not(.\" + OVERFLOW_HIDDEN + \", .\" + POPUP + \")\").length > 0;\n }\n\n if (hasVisibleChildren) {\n this.overflowAnchor.css({\n visibility: \"visible\",\n width: NOTHING\n });\n this.wrapper.css(paddingEnd, this.overflowAnchor.outerWidth(true));\n } else {\n this.overflowAnchor.css({\n visibility: HIDDEN,\n width: \"1px\"\n });\n this.wrapper.css(paddingEnd, NOTHING);\n }\n },\n\n _buttonClick: function(e) {\n var that = this,\n target = $(e.target),\n item, handler, eventData, urlTarget,\n templateFocusable;\n\n if (target.closest(DOT + TEMPLATE_ITEM).length === 0) {\n e.preventDefault();\n }\n\n if (target.hasClass(MENU_BUTTON) || target.hasClass(OVERFLOW_ANCHOR)) {\n that._resetTabIndex(target);\n return;\n } else if (target.hasClass(SPLIT_BUTTON_ARROW)) {\n that._resetTabIndex(target.prev());\n return;\n } else if (target.hasClass(TEMPLATE_ITEM)) {\n templateFocusable = target.find(INPUT + COMMA + SELECT + COMMA + DOT + DROPDOWNLIST);\n\n if (templateFocusable.length > 0) {\n that._resetTabIndex(templateFocusable.first());\n }\n\n return;\n }\n\n if (!target.data(SPLITBUTTON)) {\n target = $(e.target).closest(DOT + KBUTTON + COMMA + DOT + MENU_LINK, that.element);\n }\n\n item = target.data(BUTTON);\n\n if (item && !target.hasClass(MENU_ITEM)) {\n that._resetTabIndex(target);\n }\n\n if (!item && that.popup) {\n target = $(e.target).closest(DOT + OVERFLOW_BUTTON, that.popup.container);\n item = target.parent(\"li\").data(BUTTON);\n }\n\n if (!item || !item.options.enable) {\n return;\n }\n\n if (item.options.togglable) {\n handler = isFunction(item.toggleHandler) ? item.toggleHandler : null;\n\n item.toggle(!item.options.selected, true);\n eventData = { target: target, group: item.options.group, checked: item.options.selected, id: item.options.id, item: item };\n\n if (handler) { handler.call(that, eventData); }\n that.trigger(TOGGLE, eventData);\n } else {\n handler = isFunction(item.clickHandler) ? item.clickHandler : null;\n eventData = { sender: that, target: target, id: item.options.id, item: item };\n\n if (handler) { handler.call(that, eventData); }\n that.trigger(CLICK, eventData);\n }\n\n if (item.options.url) {\n if (item.options.attributes && item.options.attributes.target) {\n urlTarget = item.options.attributes.target;\n }\n window.open(item.options.url, urlTarget || \"_self\");\n }\n\n if (target.hasClass(OVERFLOW_BUTTON)) {\n that.popup.close();\n }\n },\n\n _focusOut: function(e) {\n this.wrapper.find(DOT + KBUTTON + DOT + KFOCUS).removeClass(KFOCUS);\n },\n\n _focusIn: function(e) {\n var target = $(e.target);\n\n if (target.closest(DOT + KBUTTON).length > 0) {\n target.closest(DOT + KBUTTON).addClass(KFOCUS);\n }\n },\n\n _keydown: function(e) {\n var target = $(e.target),\n keyCode = e.keyCode,\n items = this._getItems(),\n direction = this._isRtl ? -1 : 1,\n templateItem = target.closest(DOT + TEMPLATE_ITEM),\n last, next, innerFocusable, innerWidget, widgetInstance;\n\n if (e.altKey && keyCode === keys.DOWN) {\n var isOverflowAnchor = $(document.activeElement).is(DOT + OVERFLOW_ANCHOR);\n\n if (isOverflowAnchor) {\n this._toggleOverflow();\n }\n\n return;\n }\n\n if (!this.options.navigateOnTab && keyCode === keys.ENTER && target.hasClass(TEMPLATE_ITEM)) {\n innerFocusable = target.find(KENDO_FOCUSABLE + \":not('\" + DOT + INPUT_BUTTON + \"')\" + COMMA + DOT + DROPDOWNLIST);\n\n if (innerFocusable.length > 0) {\n target.attr(TABINDEX, -1);\n\n innerFocusable.attr(TABINDEX, 0);\n innerFocusable.first().trigger(FOCUS);\n }\n\n return;\n } else if (!this.options.navigateOnTab && keyCode === keys.ESC && templateItem.length > 0) {\n innerWidget = templateItem.find(\"[data-role]\");\n innerFocusable = templateItem.find(KENDO_FOCUSABLE + \":not('\" + DOT + INPUT_BUTTON + \"')\" + COMMA + DOT + DROPDOWNLIST);\n\n if (innerWidget.length > 0) {\n widgetInstance = kendo.widgetInstance(innerWidget);\n\n if (widgetInstance) {\n if (widgetInstance.popup && widgetInstance.popup.visible()) {\n return;\n } else {\n templateItem.attr(TABINDEX, 0);\n templateItem.trigger(FOCUS);\n templateItem.find(KENDO_FOCUSABLE).attr(TABINDEX, -1);\n }\n }\n }\n\n if (innerFocusable.length > 0) {\n templateItem.attr(TABINDEX, 0);\n templateItem.trigger(FOCUS);\n innerFocusable.attr(TABINDEX, -1);\n }\n\n return;\n } else if ((keyCode === keys.SPACEBAR || keyCode === keys.ENTER) && !target.is(INPUT + COMMA + CHECKBOX + COMMA + BUTTON)) {\n if (keyCode === keys.SPACEBAR) {\n e.preventDefault(); //prevent spacebar to scroll the page down\n this.userEvents.trigger(TAP, { target: target });\n }\n\n return;\n }\n\n if (keyCode === keys.HOME) {\n if (target.is(DOT + DROPDOWNLIST) || target.is(INPUT)) {\n return;\n }\n\n this._resetTabIndex(items.first());\n items.first().trigger(FOCUS);\n e.preventDefault();\n } else if (keyCode === keys.END) {\n if (target.is(DOT + DROPDOWNLIST) || target.is(INPUT)) {\n return;\n }\n\n last = items.last();\n\n if (last.width() === 0) {\n last = items.eq(items.length - 2);\n }\n\n this._resetTabIndex(last);\n last.trigger(FOCUS);\n e.preventDefault();\n } else if (!this.options.navigateOnTab &&\n keyCode === keys.RIGHT &&\n !target.is(INPUT + \":not([type=file])\" + COMMA + SELECT + COMMA + DOT + DROPDOWNLIST + COMMA + DOT + COLORPICKER) &&\n this._getNextElement(e.target, 1 * direction)) {\n next = $(this._getNextElement(e.target, 1 * direction));\n this._resetTabIndex(next);\n next.trigger(FOCUS);\n\n e.preventDefault();\n } else if (!this.options.navigateOnTab &&\n keyCode === keys.LEFT &&\n !target.is(INPUT + \":not([type=file])\" + COMMA + SELECT + COMMA + EMPTY + DOT + DROPDOWNLIST + COMMA + DOT + COLORPICKER) &&\n this._getNextElement(e.target, -1 * direction)) {\n next = $(this._getNextElement(e.target, -1 * direction));\n this._resetTabIndex(next);\n next.trigger(FOCUS);\n\n e.preventDefault();\n }\n },\n\n _getNextElement: function(item, direction) {\n var items = this._getItems(),\n itemIndex = items.index(item) === -1 ? items.index(item.parentElement) : items.index(item),\n focusableItem = items[itemIndex + direction];\n\n if (!focusableItem) {\n if (direction === -1) {\n focusableItem = items.last();\n } else {\n focusableItem = items.first();\n }\n }\n\n return focusableItem;\n },\n\n _getItems: function() {\n return this.wrapper.find(KENDO_FOCUSABLE + COMMA + DOT + TEMPLATE_ITEM + COMMA + DOT + OVERFLOW_ANCHOR + COMMA + DOT + \"k-switch\").filter(function() {\n var current = $(this);\n\n if (current.hasClass(\"k-hidden\")) {\n return false;\n } else if (current.hasClass(OVERFLOW_ANCHOR) && current.css(\"visibility\") === HIDDEN) {\n return false;\n } else if (current.hasClass(TEMPLATE_ITEM) && current.find(\"input:visible\" + COMMA + DOT + \"k-picker\" + COMMA + DOT + \"k-input\").length === 0) {\n return false;\n } else if (!current.hasClass(TEMPLATE_ITEM) && current.closest(DOT + TEMPLATE_ITEM).length > 0) {\n return false;\n } else if (current.hasClass(INPUT_BUTTON) || current.hasClass(SPLIT_BUTTON_ARROW)) {\n return false;\n }\n\n return true;\n });\n },\n\n _toggle: function(e) {\n var splitButton = $(e.target).closest(DOT + SPLIT_BUTTON).data(\"splitButton\");\n\n e.preventDefault();\n\n if (!splitButton.options.enable) {\n return;\n }\n\n splitButton.toggle();\n },\n\n _toggleOverflow: function() {\n this.popup.toggle();\n },\n\n _resize: function(e) {\n var containerWidth = e.width;\n\n if (!this.options.resizable) {\n return;\n }\n\n this.popup.close();\n\n this._shrink(containerWidth);\n this._stretch(containerWidth);\n\n this._markVisibles();\n\n this._toggleOverflowAnchor();\n },\n\n _childrenWidth: function() {\n var childrenWidth = 0;\n var gap = parseInt(this.element.css('gap'), 10) || 0;\n\n this.element.children(\":visible:not(\" + DOT + SPACER_CLASS + \")\").each(function() {\n childrenWidth += outerWidth($(this), true) + gap;\n });\n\n return Math.ceil(childrenWidth);\n },\n\n _shrink: function(containerWidth) {\n var commandElement,\n visibleCommands,\n activeElement;\n\n if (containerWidth < this._childrenWidth()) {\n visibleCommands = this.element.children(\":visible:not([data-overflow='never'], .\" + OVERFLOW_ANCHOR + \")\");\n\n for (var i = visibleCommands.length - 1; i >= 0; i--) {\n commandElement = visibleCommands.eq(i);\n\n if (containerWidth > this._childrenWidth()) {\n break;\n } else {\n activeElement = commandElement.find(\"[tabindex=0]\");\n\n if (activeElement.length > 0) {\n activeElement.attr(TABINDEX, -1);\n this.element.children(DOT + OVERFLOW_ANCHOR).attr(TABINDEX, 0);\n }\n\n this._hideItem(commandElement);\n }\n }\n }\n },\n\n _stretch: function(containerWidth) {\n var commandElement,\n hiddenCommands;\n\n if (containerWidth > this._childrenWidth()) {\n hiddenCommands = this.element.children(DOT + STATE_HIDDEN + \":not(\" + DOT + FORCE_HIDDEN + \")\");\n\n for (var i = 0; i < hiddenCommands.length; i++) {\n commandElement = hiddenCommands.eq(i);\n if (containerWidth < this._childrenWidth() || !this._showItem(commandElement, containerWidth)) {\n break;\n }\n }\n }\n },\n\n _hideItem: function(item) {\n item.addClass(STATE_HIDDEN);\n\n if (this.popup) {\n this.popup.container\n .find(\">li[data-uid='\" + item.data(UID) + \"']\")\n .removeClass(OVERFLOW_HIDDEN);\n }\n },\n\n _showItem: function(item, containerWidth) {\n var gap = parseInt(this.element.css('gap'), 10) || 0;\n // From jquery.outerWidth docs:\n // > jQuery will attempt to temporarily show and then re-hide an element\n // > in order to measure its dimensions, but this is unreliable\n // Thus we show and hide the item\n item.removeClass(STATE_HIDDEN);\n var itemOuterWidth = outerWidth(item, true) + gap;\n item.addClass(STATE_HIDDEN);\n\n if (item.length && containerWidth > this._childrenWidth() + itemOuterWidth) {\n item.removeClass(STATE_HIDDEN);\n\n if (this.options.navigateOnTab !== true) {\n item.find(KENDO_FOCUSABLE).attr(TABINDEX, -1);\n }\n\n if (this.popup) {\n this.popup.container\n .find(\">li[data-uid='\" + item.data(UID) + \"']\")\n .addClass(OVERFLOW_HIDDEN);\n }\n\n return true;\n }\n\n return false;\n },\n\n _markVisibles: function() {\n var overflowItems = this.popup.container.children(),\n toolbarItems = this.element.children(\":not(\" + DOT + OVERFLOW_ANCHOR + \")\"),\n visibleOverflowItems = overflowItems.filter(\":not(\" + DOT + OVERFLOW_HIDDEN + \")\"),\n visibleToolbarItems = toolbarItems.filter(\":visible\");\n\n overflowItems.add(toolbarItems).removeClass(FIRST_TOOLBAR_VISIBLE + EMPTY + LAST_TOOLBAR_VISIBLE);\n visibleOverflowItems.first().add(visibleToolbarItems.first()).addClass(FIRST_TOOLBAR_VISIBLE);\n visibleOverflowItems.last().add(visibleToolbarItems.last()).addClass(LAST_TOOLBAR_VISIBLE);\n },\n\n _resetTabIndex: function(toFocus) {\n if (this.options.navigateOnTab !== true) {\n this.wrapper.find(KENDO_FOCUSABLE).attr(TABINDEX, -1);\n toFocus.attr(TABINDEX, 0);\n }\n },\n\n _tabIndex: function() {\n var focusableItems = this.wrapper.find(KENDO_FOCUSABLE + \":not('[tabindex=-1]')\"),\n firstFocusable = focusableItems.first();\n\n if (this.options.navigateOnTab !== true) {\n focusableItems.attr(TABINDEX, -1);\n firstFocusable.attr(TABINDEX, 0);\n }\n }\n });\n\n kendo.ui.plugin(ToolBar);\n })(window.kendo.jQuery);\n\n}));\n"]}