{"version":3,"file":"tag.min.js","sources":["https:\/\/elearning.unipd.it\/cur\/lib\/amd\/src\/tag.js"],"sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\n\/**\n * AJAX helper for the tag management page.\n *\n * @module core\/tag\n * @copyright 2015 Marina Glancy\n * @license http:\/\/www.gnu.org\/copyleft\/gpl.html GNU GPL v3 or later\n * @since 3.0\n *\/\ndefine([\n 'jquery',\n 'core\/ajax',\n 'core\/templates',\n 'core\/notification',\n 'core\/str',\n 'core\/modal_factory',\n 'core\/modal_events',\n 'core\/pending',\n], function(\n $,\n ajax,\n templates,\n notification,\n str,\n ModalFactory,\n ModalEvents,\n Pending\n) {\n return \/** @alias module:core\/tag *\/ {\n\n \/**\n * Initialises tag index page.\n *\n * @method initTagindexPage\n *\/\n initTagindexPage: function() {\n \/\/ Click handler for changing tag type.\n $('body').delegate('.tagarea[data-ta] a[data-quickload=1]', 'click', function(e) {\n var pendingPromise = new Pending('core\/tag:initTagindexPage');\n\n e.preventDefault();\n var target = $(this);\n var query = target[0].search.replace(\/^\\?\/, '');\n var tagarea = target.closest('.tagarea[data-ta]');\n var args = query.split('&').reduce(function(s, c) {\n var t = c.split('=');\n s[t[0]] = decodeURIComponent(t[1]);\n return s;\n }, {});\n\n ajax.call([{\n methodname: 'core_tag_get_tagindex',\n args: {tagindex: args}\n }])[0]\n .then(function(data) {\n return templates.render('core_tag\/index', data);\n })\n .then(function(html, js) {\n templates.replaceNode(tagarea, html, js);\n return;\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n },\n\n \/**\n * Initialises tag management page.\n *\n * @method initManagePage\n *\/\n initManagePage: function() {\n \/\/ Set cell 'time modified' to 'now' when any of the element is updated in this row.\n $('body').on('updated', '[data-inplaceeditable]', function(e) {\n var pendingPromise = new Pending('core\/tag:initManagePage');\n\n str.get_strings([\n {\n key: 'selecttag',\n component: 'core_tag',\n },\n {\n key: 'now',\n component: 'core',\n },\n ])\n .then(function(result) {\n $('label[for=\"tagselect' + e.ajaxreturn.itemid + '\"]').html(result[0]);\n $(e.target).closest('tr').find('td.col-timemodified').html(result[1]);\n\n return;\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n\n if (e.ajaxreturn.itemtype === 'tagflag') {\n var row = $(e.target).closest('tr');\n if (e.ajaxreturn.value === '0') {\n row.removeClass('table-warning');\n } else {\n row.addClass('table-warning');\n }\n }\n });\n\n \/\/ Confirmation for single tag delete link.\n $('.tag-management-table').delegate('a.tagdelete', 'click', function(e) {\n var pendingPromise = new Pending('core\/tag:tagdelete');\n\n e.preventDefault();\n var href = $(this).attr('href');\n str.get_strings([\n {key: 'delete', component: 'core'},\n {key: 'confirmdeletetag', component: 'tag'},\n {key: 'yes', component: 'core'},\n {key: 'no', component: 'core'},\n ])\n .then(function(s) {\n return notification.confirm(s[0], s[1], s[2], s[3], function() {\n window.location.href = href;\n });\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n\n \/\/ Confirmation for bulk tag delete button.\n $(\"#tag-management-delete\").click(function(e) {\n var form = $(this).closest('form').get(0);\n\n var cnt = $(form).find(\"input[type=checkbox]:checked\").length;\n if (!cnt) {\n return;\n }\n\n var pendingPromise = new Pending('core\/tag:tag-management-delete');\n var tempElement = $(\"\").attr('name', this.name);\n e.preventDefault();\n str.get_strings([\n {key: 'delete', component: 'core'},\n {key: 'confirmdeletetags', component: 'tag'},\n {key: 'yes', component: 'core'},\n {key: 'no', component: 'core'},\n ])\n .then(function(s) {\n return notification.confirm(s[0], s[1], s[2], s[3], function() {\n tempElement.appendTo(form);\n form.submit();\n });\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n\n \/\/ Confirmation for bulk tag combine button.\n $(\"#tag-management-combine\").click(function(e) {\n var pendingPromise = new Pending('core\/tag:tag-management-combine');\n\n e.preventDefault();\n var form = $(this).closest('form').get(0);\n var tags = $(form).find(\"input[type=checkbox]:checked\");\n\n if (tags.length <= 1) {\n str.get_strings([\n {key: 'combineselected', component: 'tag'},\n {key: 'selectmultipletags', component: 'tag'},\n {key: 'ok'},\n ])\n .then(function(s) {\n return notification.alert(s[0], s[1], s[2]);\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n\n return;\n }\n\n var tempElement = $(\"\").attr('name', this.name);\n var saveButtonText = '';\n var tagOptions = [];\n tags.each(function() {\n var tagid = $(this).val(),\n tagname = $('.inplaceeditable[data-itemtype=tagname][data-itemid=' + tagid + ']').attr('data-value');\n tagOptions.push({\n id: tagid,\n name: tagname\n });\n });\n\n str.get_strings([\n {key: 'combineselected', component: 'tag'},\n {key: 'continue', component: 'core'}\n ])\n .then(function(langStrings) {\n var modalTitle = langStrings[0];\n saveButtonText = langStrings[1];\n var templateContext = {\n tags: tagOptions\n };\n return ModalFactory.create({\n title: modalTitle,\n body: templates.render('core_tag\/combine_tags', templateContext),\n type: ModalFactory.types.SAVE_CANCEL\n });\n })\n .then(function(modal) {\n modal.setSaveButtonText(saveButtonText);\n\n return modal;\n })\n .then(function(modal) {\n\n \/\/ Handle save event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n e.preventDefault();\n\n \/\/ Append this temp element in the form in the tags list, not the form in the modal. Confusing, right?!?\n tempElement.appendTo(form);\n \/\/ Get the selected tag from the modal.\n var maintag = $('input[name=maintag]:checked', '#combinetags_form').val();\n \/\/ Append this in the tags list form.\n $(\"\").attr('name', 'maintag').attr('value', maintag).appendTo(form);\n \/\/ Submit the tags list form.\n form.submit();\n });\n\n \/\/ Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n \/\/ Destroy when hidden.\n modal.destroy();\n });\n\n modal.show();\n \/\/ Tick the first option.\n $('#combinetags_form input[type=radio]').first().focus().prop('checked', true);\n\n return;\n\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n\n \/\/ When user changes tag name to some name that already exists suggest to combine the tags.\n $('body').on('updatefailed', '[data-inplaceeditable][data-itemtype=tagname]', function(e) {\n var exception = e.exception; \/\/ The exception object returned by the callback.\n var newvalue = e.newvalue; \/\/ The value that user tried to udpated the element to.\n var tagid = $(e.target).attr('data-itemid');\n if (exception.errorcode === 'namesalreadybeeingused') {\n var pendingPromise = new Pending('core\/tag:updatefailed');\n\n e.preventDefault(); \/\/ This will prevent default error dialogue.\n str.get_strings([\n {key: 'confirm', component: 'core'},\n {key: 'nameuseddocombine', component: 'tag'},\n {key: 'yes', component: 'core'},\n {key: 'cancel', component: 'core'},\n ])\n .then(function(s) {\n return notification.confirm(s[0], s[1], s[2], s[3], function() {\n window.location.href = window.location.href + \"&newname=\" + encodeURIComponent(newvalue) +\n \"&tagid=\" + encodeURIComponent(tagid) +\n '&action=renamecombine&sesskey=' + M.cfg.sesskey;\n });\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n }\n });\n\n \/\/ Form for adding standard tags.\n $('body').on('click', 'a[data-action=addstandardtag]', function(e) {\n var pendingPromise = new Pending('core\/tag:addstandardtag');\n e.preventDefault();\n\n return ModalFactory.create({\n title: str.get_string('addotags', 'tag'),\n body: templates.render('core_tag\/add_tags', {\n actionurl: window.location.href,\n sesskey: M.cfg.sesskey\n }),\n type: ModalFactory.types.SAVE_CANCEL\n })\n .then(function(modal) {\n modal.setSaveButtonText(str.get_string('continue', 'core'));\n\n \/\/ Handle save event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n var tagsInput = $(e.currentTarget).find('#id_tagslist');\n var name = tagsInput.val().trim();\n\n \/\/ Set the text field's value to the trimmed value.\n tagsInput.val(name);\n\n \/\/ Add submit event listener to the form.\n var tagsForm = $('#addtags_form');\n tagsForm.on('submit', function(e) {\n \/\/ Validate the form.\n var form = $('#addtags_form');\n if (form[0].checkValidity() === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n form.addClass('was-validated');\n\n \/\/ BS2 compatibility.\n $('[data-region=\"tagslistinput\"]').addClass('error');\n var errorMessage = $('#id_tagslist_error_message');\n errorMessage.removeAttr('hidden');\n errorMessage.addClass('help-block');\n });\n\n \/\/ Try to submit the form.\n tagsForm.submit();\n\n return false;\n });\n\n \/\/ Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n \/\/ Destroy when hidden.\n modal.destroy();\n });\n\n modal.show();\n\n return;\n\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n },\n\n \/**\n * Initialises tag collection management page.\n *\n * @method initManageCollectionsPage\n *\/\n initManageCollectionsPage: function() {\n $('body').on('updated', '[data-inplaceeditable]', function(e) {\n var pendingPromise = new Pending('core\/tag:initManageCollectionsPage-updated');\n\n var ajaxreturn = e.ajaxreturn,\n areaid, collid, isenabled;\n if (ajaxreturn.component === 'core_tag' && ajaxreturn.itemtype === 'tagareaenable') {\n areaid = $(this).attr('data-itemid');\n $(\".tag-collections-table ul[data-collectionid] li[data-areaid=\" + areaid + \"]\").hide();\n isenabled = ajaxreturn.value;\n if (isenabled === '1') {\n $(this).closest('tr').removeClass('dimmed_text');\n collid = $(this).closest('tr').find('[data-itemtype=\"tagareacollection\"]').attr(\"data-value\");\n $(\".tag-collections-table ul[data-collectionid=\" + collid + \"] li[data-areaid=\" + areaid + \"]\").show();\n } else {\n $(this).closest('tr').addClass('dimmed_text');\n }\n }\n if (ajaxreturn.component === 'core_tag' && ajaxreturn.itemtype === 'tagareacollection') {\n areaid = $(this).attr('data-itemid');\n $(\".tag-collections-table ul[data-collectionid] li[data-areaid=\" + areaid + \"]\").hide();\n collid = $(this).attr('data-value');\n isenabled = $(this).closest('tr').find('[data-itemtype=\"tagareaenable\"]').attr(\"data-value\");\n if (isenabled === \"1\") {\n $(\".tag-collections-table ul[data-collectionid=\" + collid + \"] li[data-areaid=\" + areaid + \"]\").show();\n }\n }\n\n pendingPromise.resolve();\n });\n\n $('body').on('click', '.addtagcoll > a', function(e) {\n var pendingPromise = new Pending('core\/tag:initManageCollectionsPage-addtagcoll');\n\n e.preventDefault();\n var keys = [\n {\n key: 'addtagcoll',\n component: 'tag'\n },\n {\n key: 'create',\n component: 'core'\n }\n ];\n\n var href = $(this).attr('data-url');\n var saveButtonText = '';\n str.get_strings(keys)\n .then(function(langStrings) {\n var modalTitle = langStrings[0];\n saveButtonText = langStrings[1];\n var templateContext = {\n actionurl: href,\n sesskey: M.cfg.sesskey\n };\n return ModalFactory.create({\n title: modalTitle,\n body: templates.render('core_tag\/add_tag_collection', templateContext),\n type: ModalFactory.types.SAVE_CANCEL\n });\n })\n .then(function(modal) {\n modal.setSaveButtonText(saveButtonText);\n\n \/\/ Handle save event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n var collectionInput = $(e.currentTarget).find('#addtagcoll_name');\n var name = collectionInput.val().trim();\n \/\/ Set the text field's value to the trimmed value.\n collectionInput.val(name);\n\n \/\/ Add submit event listener to the form.\n var form = $('#addtagcoll_form');\n form.on('submit', function(e) {\n \/\/ Validate the form.\n if (form[0].checkValidity() === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n form.addClass('was-validated');\n\n \/\/ BS2 compatibility.\n $('[data-region=\"addtagcoll_nameinput\"]').addClass('error');\n var errorMessage = $('#id_addtagcoll_name_error_message');\n errorMessage.removeAttr('hidden');\n errorMessage.addClass('help-block');\n });\n\n \/\/ Try to submit the form.\n form.submit();\n\n return false;\n });\n\n \/\/ Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n \/\/ Destroy when hidden.\n modal.destroy();\n });\n\n modal.show();\n\n return modal;\n\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n\n $('body').on('click', '.tag-collections-table .action_delete', function(e) {\n var pendingPromise = new Pending('core\/tag:initManageCollectionsPage-action_delete');\n\n e.preventDefault();\n var href = $(this).attr('data-url') + '&sesskey=' + M.cfg.sesskey;\n str.get_strings([\n {key: 'delete'},\n {key: 'suredeletecoll', component: 'tag', param: $(this).attr('data-collname')},\n {key: 'yes'},\n {key: 'no'},\n ])\n .then(function(s) {\n return notification.confirm(s[0], s[1], s[2], s[3], function() {\n window.location.href = href;\n });\n })\n .always(pendingPromise.resolve)\n .catch(notification.exception);\n });\n }\n };\n});\n"],"names":["define","$","ajax","templates","notification","str","ModalFactory","ModalEvents","Pending","initTagindexPage","delegate","e","pendingPromise","preventDefault","target","this","query","search","replace","tagarea","closest","args","split","reduce","s","c","t","decodeURIComponent","call","methodname","tagindex","then","data","render","html","js","replaceNode","always","resolve","catch","exception","initManagePage","on","get_strings","key","component","result","ajaxreturn","itemid","find","itemtype","row","value","removeClass","addClass","href","attr","confirm","window","location","click","form","get","length","tempElement","name","appendTo","submit","tags","alert","saveButtonText","tagOptions","each","tagid","val","tagname","push","id","langStrings","modalTitle","templateContext","create","title","body","type","types","SAVE_CANCEL","modal","setSaveButtonText","getRoot","save","maintag","hidden","destroy","show","first","focus","prop","newvalue","errorcode","encodeURIComponent","M","cfg","sesskey","get_string","actionurl","tagsInput","currentTarget","trim","tagsForm","checkValidity","stopPropagation","errorMessage","removeAttr","initManageCollectionsPage","areaid","collid","hide","collectionInput","param"],"mappings":"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\/C,GAAGnC,YAAYmF,MAAM,SAAS\/E,GAC1CA,EAAEE,iBAGFmD,YAAYE,SAASL,UAEjB8B,QAAU1F,EAAE,8BAA+B,qBAAqByE,MAEpEzE,EAAE,0BAA0BuD,KAAK,OAAQ,WAAWA,KAAK,QAASmC,SAASzB,SAASL,MAEpFA,KAAKM,YAIToB,MAAME,UAAU\/C,GAAGnC,YAAYqF,QAAQ,WAEnCL,MAAMM,aAGVN,MAAMO,OAEN7F,EAAE,uCAAuC8F,QAAQC,QAAQC,KAAK,WAAW,MAK5E5D,OAAOzB,eAAe0B,SACtBC,MAAMnC,aAAaoC,eAIxBvC,EAAE,QAAQyC,GAAG,eAAgB,iDAAiD,SAAS\/B,OAC\/E6B,UAAY7B,EAAE6B,UACd0D,SAAWvF,EAAEuF,SACbzB,MAAQxE,EAAEU,EAAEG,QAAQ0C,KAAK,kBACD,2BAAxBhB,UAAU2D,UAAwC,KAC9CvF,eAAiB,IAAIJ,QAAQ,yBAEjCG,EAAEE,iBACFR,IAAIsC,YAAY,CACZ,CAACC,IAAK,UAAWC,UAAW,QAC5B,CAACD,IAAK,oBAAqBC,UAAW,OACtC,CAACD,IAAK,MAAOC,UAAW,QACxB,CAACD,IAAK,SAAUC,UAAW,UAE9Bd,MAAK,SAASP,UACJpB,aAAaqD,QAAQjC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAI,WAChDkC,OAAOC,SAASJ,KAAOG,OAAOC,SAASJ,KAAO,YAAc6C,mBAAmBF,UAC3E,UAAYE,mBAAmB3B,OAC\/B,iCAAmC4B,EAAEC,IAAIC,cAGpDlE,OAAOzB,eAAe0B,SACtBC,MAAMnC,aAAaoC,eAK5BvC,EAAE,QAAQyC,GAAG,QAAS,iCAAiC,SAAS\/B,OACxDC,eAAiB,IAAIJ,QAAQ,kCACjCG,EAAEE,iBAEKP,aAAa2E,OAAO,CACvBC,MAAO7E,IAAImG,WAAW,WAAY,OAClCrB,KAAMhF,UAAU8B,OAAO,oBAAqB,CACxCwE,UAAW\/C,OAAOC,SAASJ,KAC3BgD,QAASF,EAAEC,IAAIC,UAEnBnB,KAAM9E,aAAa+E,MAAMC,cAE5BvD,MAAK,SAASwD,OACXA,MAAMC,kBAAkBnF,IAAImG,WAAW,WAAY,SAGnDjB,MAAME,UAAU\/C,GAAGnC,YAAYmF,MAAM,SAAS\/E,OACtC+F,UAAYzG,EAAEU,EAAEgG,eAAe1D,KAAK,gBACpCgB,KAAOyC,UAAUhC,MAAMkC,OAG3BF,UAAUhC,IAAIT,UAGV4C,SAAW5G,EAAE,wBACjB4G,SAASnE,GAAG,UAAU,SAAS\/B,OAEvBkD,KAAO5D,EAAE,kBACmB,IAA5B4D,KAAK,GAAGiD,kBACRnG,EAAEE,iBACFF,EAAEoG,mBAENlD,KAAKP,SAAS,iBAGdrD,EAAE,iCAAiCqD,SAAS,aACxC0D,aAAe\/G,EAAE,8BACrB+G,aAAaC,WAAW,UACxBD,aAAa1D,SAAS,iBAI1BuD,SAAS1C,UAEF,KAIXoB,MAAME,UAAU\/C,GAAGnC,YAAYqF,QAAQ,WAEnCL,MAAMM,aAGVN,MAAMO,UAKTzD,OAAOzB,eAAe0B,SACtBC,MAAMnC,aAAaoC,eAS5B0E,0BAA2B,WACvBjH,EAAE,QAAQyC,GAAG,UAAW,0BAA0B,SAAS\/B,OAInDwG,OAAQC,OAHRxG,eAAiB,IAAIJ,QAAQ,8CAE7BuC,WAAapC,EAAEoC,WAEU,aAAzBA,WAAWF,WAAoD,kBAAxBE,WAAWG,WAClDiE,OAASlH,EAAEc,MAAMyC,KAAK,eACtBvD,EAAE,+DAAiEkH,OAAS,KAAKE,OAE\/D,MADNtE,WAAWK,OAEnBnD,EAAEc,MAAMK,QAAQ,MAAMiC,YAAY,eAClC+D,OAASnH,EAAEc,MAAMK,QAAQ,MAAM6B,KAAK,uCAAuCO,KAAK,cAChFvD,EAAE,+CAAiDmH,OAAS,oBAAsBD,OAAS,KAAKrB,QAEhG7F,EAAEc,MAAMK,QAAQ,MAAMkC,SAAS,gBAGV,aAAzBP,WAAWF,WAAoD,sBAAxBE,WAAWG,WAClDiE,OAASlH,EAAEc,MAAMyC,KAAK,eACtBvD,EAAE,+DAAiEkH,OAAS,KAAKE,OACjFD,OAASnH,EAAEc,MAAMyC,KAAK,cAEJ,MADNvD,EAAEc,MAAMK,QAAQ,MAAM6B,KAAK,mCAAmCO,KAAK,eAE3EvD,EAAE,+CAAiDmH,OAAS,oBAAsBD,OAAS,KAAKrB,QAIxGlF,eAAe0B,aAGnBrC,EAAE,QAAQyC,GAAG,QAAS,mBAAmB,SAAS\/B,OAC1CC,eAAiB,IAAIJ,QAAQ,iDAEjCG,EAAEE,qBAYE0C,KAAOtD,EAAEc,MAAMyC,KAAK,YACpBc,eAAiB,GACrBjE,IAAIsC,YAbO,CACP,CACIC,IAAK,aACLC,UAAW,OAEf,CACID,IAAK,SACLC,UAAW,UAOlBd,MAAK,SAAS+C,iBACPC,WAAaD,YAAY,GAC7BR,eAAiBQ,YAAY,OACzBE,gBAAkB,CAClByB,UAAWlD,KACXgD,QAASF,EAAEC,IAAIC,gBAEZjG,aAAa2E,OAAO,CACvBC,MAAOH,WACPI,KAAMhF,UAAU8B,OAAO,8BAA+B+C,iBACtDI,KAAM9E,aAAa+E,MAAMC,iBAGhCvD,MAAK,SAASwD,cACXA,MAAMC,kBAAkBlB,gBAGxBiB,MAAME,UAAU\/C,GAAGnC,YAAYmF,MAAM,SAAS\/E,OACtC2G,gBAAkBrH,EAAEU,EAAEgG,eAAe1D,KAAK,oBAC1CgB,KAAOqD,gBAAgB5C,MAAMkC,OAEjCU,gBAAgB5C,IAAIT,UAGhBJ,KAAO5D,EAAE,2BACb4D,KAAKnB,GAAG,UAAU,SAAS\/B,IAES,IAA5BkD,KAAK,GAAGiD,kBACRnG,EAAEE,iBACFF,EAAEoG,mBAENlD,KAAKP,SAAS,iBAGdrD,EAAE,wCAAwCqD,SAAS,aAC\/C0D,aAAe\/G,EAAE,qCACrB+G,aAAaC,WAAW,UACxBD,aAAa1D,SAAS,iBAI1BO,KAAKM,UAEE,KAIXoB,MAAME,UAAU\/C,GAAGnC,YAAYqF,QAAQ,WAEnCL,MAAMM,aAGVN,MAAMO,OAECP,SAGVlD,OAAOzB,eAAe0B,SACtBC,MAAMnC,aAAaoC,cAGxBvC,EAAE,QAAQyC,GAAG,QAAS,yCAAyC,SAAS\/B,OAChEC,eAAiB,IAAIJ,QAAQ,oDAEjCG,EAAEE,qBACE0C,KAAOtD,EAAEc,MAAMyC,KAAK,YAAc,YAAc6C,EAAEC,IAAIC,QAC1DlG,IAAIsC,YAAY,CACZ,CAACC,IAAK,UACN,CAACA,IAAK,iBAAkBC,UAAW,MAAO0E,MAAOtH,EAAEc,MAAMyC,KAAK,kBAC9D,CAACZ,IAAK,OACN,CAACA,IAAK,QAETb,MAAK,SAASP,UACJpB,aAAaqD,QAAQjC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAI,WAChDkC,OAAOC,SAASJ,KAAOA,WAG9BlB,OAAOzB,eAAe0B,SACtBC,MAAMnC,aAAaoC"}