Help
RSS
API
Feed
Maltego
Contact
Domain > basecaledonia.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2022-12-06
104.21.32.237
(
ClassC
)
2025-04-08
104.21.48.1
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Tue, 08 Apr 2025 17:27:08 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveCache-Control: max-age3600Expires: Tue, 08 Apr 2025 18:27:08 GMTLocation: https://basecaledonia.com/Report-To: {endpoints:{url:https:\/\/a.nel.cloudflare.com\/report\/v4?sPcW3b3L28xToxcrWxyXsSZ2vntrTQ%2BWctew9O5OPCf7hRvj1%2B2dLi8tpoBCRR1Wx0eTJhMPgfN8tt2D308%2BSbtulQHHWK6DAYXEhicZidCWzP5N1deNquRR8lhqzEnbmdb37nQ%3D%3D},group:cf-nel,max_age:604800}NEL: {success_fraction:0,report_to:cf-nel,max_age:604800}Server: cloudflareCF-RAY: 92d379464d00fef8-PDXalt-svc: h3:443; ma86400server-timing: cfL4;desc?protoTCP&rtt5984&min_rtt5984&rtt_var2992&sent1&recv3&lost0&retrans0&sent_bytes0&recv_bytes56&delivery_rate0&cwnd249&unsent_bytes0&cid0000000000000000&ts0&x0 html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>cloudflare/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Tue, 08 Apr 2025 17:27:08 GMTContent-Type: text/htmlContent-Length: 575387Connection: keep-aliveAccess-Control-Expose-Headers: Evo-TokenCache-Control: no-transform, no-store, no-cache, private, max-age0Expires: 0Pragma: no-cacheX-Robots-Tag: noindex, nofollowCf-Cache-Status: DYNAMICServer: cloudflareCF-RAY: 92d37946afac70b9-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html>head> meta charsetutf-8 /> meta http-equivX-UA-Compatible contentIEEdge /> meta namerobots contentnoindex /> link relicon hrefdata:image/ico;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8XQAAfV0AAHxeAACAYwAAgWMAAIFkAACBZQAAgmUAAIJmAACDZwAAg2gAAIRoAACEaQAAhWkAAIRpAQCFaQEAhWoAAIZqAACFawAAhmsAAIZsAACGbQAAiG0AAItzAACMdAAAjHUAAI96AACQegAAkHsAAJF8AACUgQAAlYIAAJaCAACWgwAAlIMBAJaDAQCWhAAAlYQCAJaFAACXhQAAmIcAAJmHAACZiAAAmYkAAJiHCACYiAcAmooAAJuKAACYiQcAmosAAJuLAACbjAAAnIwAAJyNAACdjgAAoJMAAJ6PEACglAAAnZARAKGVAACekBMAnZAVAKWZIQCmmiIAp5sjALGcHgCynRwAqJwkALKfIQCynyMAs7BAALSwQAC0sUEAtbFBALWxQgC1skMAt7RFALe1RwDFtzwAxLc9ALm3TwC6uFAAurlNALu5TQC6ukwAu7pNALy8UAC8vFEAubxUALe8VQC3vFYAtrxYALy9UwC8vlIAu75UAL+/VADAv1QAwL9VAL/AVACwvmEArr9jAK2/ZgCsv2gAqsRyAKnEdACnxXUApsV4AJnFiACZxYkAmMaIAJjGiQCWxo4Al8eMAJbHjQCVx44AlseOAJPIkQCUyJEAkciTAJLIlgCSyZcAO9C5ADzQuQA80boAM9LAADLSwQA10sAAM9LBAC3TxAAu08QALNPFAC/TxAAw08UAMdPFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJCQkJCAUODRIaHhAJCQkKCQUAERwiUSw2MTQLCgkQChcgOTQ6YFJNJi4zGAkJHzQzLihCeGVOVkorLiQECRsxLio/Z2xwdVpcQyg3AgkTNidHXXp8fX2EemlEMhUJDS1LV1iEg4CAgX5udz0dCAxQU09vfYCCgoB/cWZhJQUFH19jc32AgoKAf3ZOVFEPCB04eGt8gYCAgYVbVkwsDQkVMkFoeYV/f357XkgnNhMJAjcpPl5ZdHJtakAqLjEcCQQkLipGV05keEUoLjI1HwkJGDMuJ0lVYjwvOycZDBAJCgs0MTYwUCMdFgEDCQoJCQkQIRwUDA4GBwkJCQkJCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA> style>@charset UTF-8;html,body,body div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,figure,footer,header,hgroup,menu,nav,section,time,mark,audio,video,details,summary{margin:0;padding:0;border:0;outline:0;-moz-outline:0;font-size:100%;vertical-align:baseline;background:transparent}article,aside,figure,footer,header,hgroup,nav,section,details,summary{display:block}img,object,embed{max-width:100%}html{overflow-y:scroll}ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:;content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}del{text-decoration:line-through}abbrtitle,dfntitle{border-bottom:1px dotted #000;cursor:help}table{border-collapse:collapse;border-spacing:0}th{font-weight:bold;vertical-align:bottom}td{font-weight:normal;vertical-align:top}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}pre{white-space:pre;white-space:pre-wrap;white-space:pre-line;word-wrap:break-word}inputtyperadio{vertical-align:baseline}inputtypecheckbox{vertical-align:baseline}.ie7 inputtypecheckbox{vertical-align:baseline}.ie6 input{vertical-align:text-bottom}select,input,textarea{font:100% sans-serif}table{font-size:inherit;font:100% sans-serif}small{font-size:85%}strong{font-weight:bold}td,td img{vertical-align:top}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-0.5em}sub{bottom:-0.25em}pre,code,kbd,samp{font-family:monospace,sans-serif}.clickable,label,inputtypebutton,inputtypesubmit,inputtypefile,button{cursor:default}button,input,select,textarea{margin:0}button{width:auto;overflow:visible}.ie7 img{-ms-interpolation-mode:bicubic}.ie6 html{filter:expression(document.execCommand(BackgroundImageCache,false,true))}.clearfix:before,.clearfix:after{content:\0020;display:block;height:0;overflow:hidden}.clearfix:after{clear:both}.clearfix{zoom:1}@font-face{font-family:Open Sans;src:url(data:application/x-font-woff;charsetutf-8;base64,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) format(woff);font-weight:700;font-style:normal}@font-face{font-family:Open Sans;src:url(data:application/x-font-woff;charsetutf-8;base64,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) format(woff);font-weight:400;font-style:normal}@font-face{font-family:fontello;src:url(data:application/octet-stream;base64,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) format(woff),url(data:application/octet-stream;base64,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) format(truetype);font-weight:normal;font-style:normal}.emb_icon_1x1_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAARUlEQVR4AWNhoBCgGDBqwP8zJOgzgRvwH1nYl+ELUdr34/ACUPvnQRGIZ/D5nY7ROGrAqAGjBpgMZS/sp8wAk9F0QB4AALxoCY1CXbdpAAAAAElFTkSuQmCC)}.emb_icon_1x2_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wwICxExIaoNfwAAAGtJREFUWMNjYBgFo2CAASM2wf///5+hiWWMjCboYix41DtS0W4eBgaGzdgkWPC49jO1bP///z9OOaaBTgMsRPrgDLXifNCFwKgDRh3AQq3UPLxDYLQcGHXAaDkwrMuBwRsFtGqYjoJRMOgAAEWYFWTZ5SiQAAAAAElFTkSuQmCC)}.emb_icon_2x1_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAS0lEQVRYw+3WwQkAIAhAURdwgPZfp52sDUywTPgfvD/0ogjRj5nZvDFRwNijiRMGaPZW+wK8m57cHAAAAAAAAOgN4B+oAtQ9pUQvW01+MKsLibTgAAAAAElFTkSuQmCC)}.emb_icon_2x2_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAATElEQVR4AWNkoBCgGDBqwP8zJOgzgRvwHyF4hsGX4QtR2vfjMsCR4TNRBpyhsQFnkP2KzqePAaMGEAaj6WA0HQxuA8gtVMkDowYgAADv63EG4u1+KwAAAABJRU5ErkJggg)}.emb_icon_3x2_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAATElEQVRYw2NgGAWjYDCC////n6EFJtUBkkDMS0VMsgN4qR2qQ9cB2OKSWLFRB4w6YHg4YLQcGE0Dow4YdcBoOTBQDhi4RukoGAX0BACt39XE26ak/QAAAABJRU5ErkJggg)}.emb_icon_3x3_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAASklEQVR4AWNhoBCgGDBqwP8zJOgzgRvwH1nYl+ELUdr34/ACUPvnQRGIZ2D+xMYaIQnJBBdr4ANxNBBHA3GoeGE/ZQaYjNZM5AEA3MwTLRF6pegAAAAASUVORK5CYII)}.emb_icon_accept_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcklEQVR42u2QQQ2AQAwEMYCNc4MNdCAAA2cAGxjAU1mSJn3ug2QvgZ1kv51JJ2PML4iIGVtHyg/swrZh8txiueVS+ZtDO9a08jrW88iJNfnbH2nKK0IgpxECOY8QyHkEkQsiiFwQQeSiiJLrIyA3xnyJG8eFi7KZkVN+AAAAAElFTkSuQmCC)}.emb_icon_back_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAwAQMAAAAxRijgAAAABlBMVEX///////9VfPVsAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffCwsRFiZcHEsnAAAASElEQVQI12NgIAh+MDAwfoBg5gcMDOwHIJi/gYFBHigtB8R2QFwDxBUI5SClyBgkBpIDq6mB6gHpBZkBMgtkJvMBJMUwDXgBAC7oFeymoTuKAAAAAElFTkSuQmCC)}.emb_icon_cams_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAgklEQVRYw2NgGAWjYBSMgsEK/v//PwWI95OA9wFxBrUsZwTiM2TggwPtgENo5nAD8VSQOBAz0dUBQHYyEJ9AkuOlhwNOArELEO/CIkcXB+DDow4YGQ4AJUIDIN40UA5AzoZhQHxswBwANYcNiDuAeA/IzKFTFA94ZTQKRsEoGAX0BACTvt5+4D6i/AAAAABJRU5ErkJggg)}.emb_icon_cancel_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVR42u2WsQ3AIAwEmcbbMDMLZCfjgoIuSq54F3+SS+tPAmyGMaY1mTmrVlX86I3TO4nAqno+SZzwu5cIxIsE6GESPJxL8HAuwcO5BAznEjCcS4BwgYDkCPSXUP8M9YNIPorly0i+jvUfEmNMZzZPdSUPwLltmgAAAABJRU5ErkJggg)}.emb_icon_check_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wocDCw2gFLzjwAAAjdJREFUSMfdVT1oU1EUPvfliW1KLNLYvGgJ1nQQQUiJP3UQBDc7tw5FEKS6uWii6ODgYEyr6Kbo4A+i4KBLh25u6hCHQKEVbTVGioYobRIl754fhyTwjHnxBTtIz3jfOd/5znfu+y7Auo34TK7jXOtBdiz4cO6g85tyK8iMRjw1auRZj+ePAfGUZl6qap0unxh+BgBgrMW01qO5I8x8XouEtMgIixyFOy9DAABmq1EzoxHPEln3s3sYVIJYdmlmQMS3CPwEJg98+a1BJ7I0Ilf4GlWmP0EihzQzaKQVZpnavbX/eaaeYzZr6TUW8wu9pt9KMsg4EgMiCglP25PxuxlHntEsUTP78nIl0KqB2RNOijJOamLQRMDMN+3Z91ea69sumUlOdQW7Uz8r1SHn+cfvpdMiKlkDZ0Die/4fq9fix0foDyJu4IQ4BmpDQgyJss8IFkrVq1sCG998Kq5OiFJnkNmss59RClODQ9F8y0nd+Rs7GSSqiUELjIuSvvy30iwJTKBwRBMDMr1ipOlYxFpwQ3FtUK7at0yfL4ACZ5FZEfNhUrAXQTbVZMEPxHg9Fgm/aCez6w56e7oK89nchSriZVsj2jW9G+AryJyKDYSf/u22tV1yfF8U+wPdl2yyL2rEYl1zYaL08EDotpfr7MkqtvdtTmvic5pokQlv4HIl7fV/UZ04aWbp834Q4118R7jYzvhaTuDFHuKD2167gbsRVP9qdk72zvo1fw+cNR0v+b95Mtdn/ALiv1nMs3bPqQAAAABJRU5ErkJggg)}.emb_icon_cust_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA0klEQVR42u2UQQ1DIRBEv4E18AVgAAPfAAIwgIEaQEANYKAGEFADeKJ7mDZcCOnC9tAwybsQkpll2T22trYkqrVeTGQSiMz1C+MThqVDYk4tc2KeMOqCO6QQoKl8TFptbpjyJWZlAC8I4FcGCIIA4a8CuPaDDXjgntMaQT+alnYUtdrgOiHj5/k19DYAd6xkiynJOI/a69g1Zi1Z3nf5crLAaJsR/kAGNxgTsDjLIDC0stIs2AOZMdOVt+bCEDT96yeJM9WXRZC092kR5tja2uroBdSwlm50O0UgAAAAAElFTkSuQmCC)}.emb_icon_delete_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAsUlEQVR42u2WwQ3DIAxFs0DWYIHOwQAs4DkYoAt4DgZgAe9EjeRDFSlqID/04i+9EyCeZIO8eTyjaa0FhU7YVwiwIifQSoHXF+kfAmGJQK+rXfBWiiI/KLY3KTtCoCoySUUIyB1gNZ+EkW8/KVlhoxzqzka2vQHZiBFwBtIHfBHpQAVGcIEnBCrgE1r+F7ALuABSgCYECCmQJgQSeirKA5fnxyZkmwGjQgdiX9s8nsF8ADlCWTwEujE9AAAAAElFTkSuQmCC)}.emb_icon_down_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffCwISJzuGCdGfAAABOUlEQVRIx+1Ty0rDUBSckwcU3LnU/+gDSZsPcVukpdUPqFaxGkXxG1y4UAqp/kHbSFLd+wEiqIgSsCD4aHJchNakTWyq28zqnsOZmXvmcoF/ggCgvsyb+JiROUfHgrY1IK+q76A2o3Prs7hnA6JX1tp3Ii+REJfO52Kl8QyMBE6QNmQRuWE9BRdc3X7wjiOCxdlrEZSBNNVdH6xp98PK52h+qT0IrBBFc0HQ3bL2+NMKXLnrLJjzTGo0nU/fSgcv/ubYzjeu0cmLVAgPnpvvxaPXYDMkNKOdJ6iTe3CTV/b7493Q1I1OQSAFAQ1uUalhT85GPFvmUmLkSPIlv7r7FDYZIWCx2gMo6z0q61z1Jx9DAOg66SvZZQUCnbmVcPdfBQDLSZmLKb7tlw/tP3/WDWldRoIECRLEwjfxu2SMiL90/AAAAABJRU5ErkJggg)}.emb_icon_edit_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEXRSTlMAzIBNWQ0aM7+zJqZAZnOZjIldE6AAAACcSURBVHhexdJLrgUhCABRSwT8tPbb/2pf0mNhemt61JBg+Vleq2QuAK+G3vhawQndYhuAFtzvDPcO1Ks/bR4Qj16wRW8Cs95nqFu9U4Vh3W4OXXTRDtPvDoj2bszQQR48c7ouyxxayZ0nd+Tic+Rux/VNvGzYNpIVDkD0xBsE4J2Rlz++bARufNEs/YNLStQA6ixhzmhakuQpP+0ff20D3+GNGR0AAAAASUVORK5CYII)}.emb_icon_eye_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAx0lEQVR4Ac3QIUtDcQDF0fs3DWc3iIJh3SgoGGV+i6FB3AdYMRlMJgURTILBKFjEZFjRZhYRk0XBYDC8cYQx34vW/fLhhpsprKROJ72sZzFVXnKXi3zWSMa1cpS9JOe5Tjs72cx3BjmdKBGzhmBXdMwrLsGxiAm6Aq+KPn6sWgL0/1DbCNyLGzAQFXhslg7Ah5auL8+WrYCRboOKM3CiiJgzRGVbGhTR844H+w694cmaiEiRula2spGF8U+3GUaan/5vJtOHfgEu8LAObqF7bwAAAABJRU5ErkJggg)}.emb_icon_over_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAARUlEQVRYw2NgGAWjYBSQCf7//5+GBUvR0wFnsGDjUQeMKAfMxILVRrPnaCIcdcCIcoAxFsw7Wh2PJsJRB4xWx6NgFJAKAGDQhLHUPB1UAAAAAElFTkSuQmCC)}.emb_icon_play_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABFElEQVR42u1XbQ3DIBCdAQxUAAZmoAYQgIHqqIAawMAMTEAN4IkdCZcsl9EHu2ykSUnen8LjHvcFvV3jlCOldCd4wlLg87d/GN0IEWATYtSGJ0IQBlw2IsQ5ITBkrta4Jexlw5U3RILL2li4VmW8YP6CP7/xbbfbBVl9iK5wcMy1ycSe4JxoznaOeWX+0SuMc6KJx5lcc5mohqk1pMyBi9FCUfN7aUSm9WCt7ndAgMSTOQc8B8NAkx4tAl0wECw4nD8SsBAiDBHGSjAV7vJ7AewJLEAfApwLOAT6JJTVgJNQX4agH6Ay1Dci0BFBI9K14p3gFK246zKaP8wZxWU09joe+iAZ+iQb+igd9iwf82NyjTOOF6mZwVcNhOvcAAAAAElFTkSuQmCC)}.emb_icon_pause_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA60lEQVR42u1XwQ3DIAzsAlmAAVjAC7AAA7AAczBAF+g0XSA7pa5kJOsURW6htSLF0n2CDx/YgHO77JS2bRsxCqMKCoP+EfTOWI8gPjQzcGA8IEBmEIjLWqBwwmjwyHjKhI0RjILbmyPcOBRckL7gJ8WPn287kscXYU+HyjlNqKHUa8JKoJ5z+L4wSENzAAtwm3lBqpLDnjANNbYCCFPaT5BBADgOCsCFWbc//0BA3htDpwJOMwQgvxwJqH3imQLAr7oLcE+BexG6H0P/i8j/KrY/RmnmY+T+HLs2JK4tmWtT6taW+/yYXHZGewHsLEtMC9hXTgAAAABJRU5ErkJggg)}.emb_icon_snap_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzUlEQVR42u2V0Q2EIBBEbYAGKMAGtgEaoIBrwAZswAJsYKuhAXri5oOPCcndmZyLxjDJSzQY9iUs6zQyMnLLlFI8EMLT2gr0A+tZAgvIRKQ15bUGPVNgB6/KDhLIfyJHijsQa9HM9BKQAxspCGCuRKA9BBKIzbdC79FaIFCPpEZsIQkTAW1vSAtJqIVAAO7HbUh1j2Ah4A82qAD/OAE+gnzVEWyXNmF7Db8UD9aDSGhkS8VR8dRjFG/UE64+b0ajuP/PaAZqxDyNjIzcLW+od5RU2w8GcwAAAABJRU5ErkJggg)}.emb_icon_ar_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABUklEQVR42u2XMUoDQRSGNdUErFLYWnmAICwIHiGCXY6QkBzAO8QiGjyFks5Siz1GOotAmrVWMGT8i1fIz7xhmeXpFDPwNTt/hi/73u7MHnnvs6IIFaEiRDhQgZFQAWcnpEssQeP10YAH4KyFpuDLtxySnVkJPfn08dxeKF1mD2q5a0NhItf2qVJty8TjDQwivxlIhsesq5AL9MxdIHcCzgLXF4Gecl2ElnxnlNwGHJS5V1pj1UWooZ7RyrQDXisf9VSTKuTon9WciQgxNa3VTxGqaJFpJPspmStlfkJrXaYIjWiRi0h2K5kDuA3MD2mtGwsh5vFX9gUcx4SsSsaMwbfk30FPK5llUzPn4EPKd6o1tfVjz/RERnnsjV6MjO2LUd86FlreYOsw31znOR0/1jkd0NY5HWHnf3HIv29xyF8B91+fQddCBfrlQ7EIFaGchX4ApmgRaQhMXmMAAAAASUVORK5CYII)}.emb_icon_up_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffCwISJzloB7CzAAABDUlEQVRIx+3TQUrDQBQG4P+fmXRipQdx5aZgqzUpuBC8iCtdFJSYZKbQ9gYeSBJLo4In0jhuilBq0wTEVf7lm+GDmfce0KZNmzb/E7Mwi+obcvfRrbhMOWUQfh0vX11jYKJ7KSwF4AKf/aIoGwGx1hEjdgCAggMPo5fnsjZwLXqGEfyfguKQ4ih/dzWBK8sU3kZJcXSIPKsFpHNhIbbKguNzlT/tBeyUdtfHMgiRZRXAnbyYwbKi624cqpN85X4FJt1ujISiamwInCn234qPLSDyDx4Y0ds3mxQ87XBYLD83AKNVgnvoWvMtMZAiWOUlAKi1axE3WBENQ4lk/SjA3MCihGtAEBKz+eMf7Os3ynw7J/QtQBoAAAAASUVORK5CYII)}.emb_logo_24{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wsLEDA5EwivwQAABBRJREFUOMuFlMlzlFUUxX/vvW/sIZ1OkwAh0YBKUiEgWHEBaKGxCheK5YqVG1f+GS5Y+4fIxioHqhRKLSwH1IIIERLGSiATiZ0evu5v/p6LpNPKeFe33uK8e8859wg+OcN29RVwLYKIZkizjRAYCiXRmueV0W3jlB4XKXFMKj1YiiBizSuR1f/xSDJMhVKgnweUpuQdgmir91PCaOrYK3sGyl9fubvhh3ghXkAzwA8xFYb6L5BicmqrtU3KebLOh0k2PrxjeGepFcQTw32NZlhvB/Tm2VliTx85BylIUtoRGqTcBhKUXGxzC0XTX7SPjw75UQKEcVap7BovpXPzDQxBkqEkOYv+HoYqFB0MaXT3KrjbcxaFfvfw3no70tBI3ZfstUPuXLknCJ0j3166Qc7q0hqnSIltys5TQtHZHE0G0ftHR2vtqJE6Q1btdPnPg+5irOXDOHc4v/jhiQkjSv7Hs4Aw7gBZnaX88IPj46ueGnMWPtrx86izGGogNUSsRLzfud8KOX3iQAnR9YShaAQGgBCUbOKUVvzW5Ng+c3mssPRmz6ftrPKIxq6s3Qo/u+bvPXVs/4Vr8yvVFqbCVDR9o0tQGE1NDHy8e3olytXSvJ/1Blnpcb+8bFUvtcZkO3x7/MXZB+tXbi8DSCm3OCs4g5WSWxlai12NEE93cDOzDzjLGrww2ru79+SRfaw3MZUEkKLkWFMHh2XiTbeHTJE+4xQyxLi72MwcIEqygf5iGYEUEiGK5cKp1/bVWxEwH/eprimfUALhZ9aovQqUXOvc9L2NtTpaS7RuKrWy1rBMCfTI4Kq/xyB7xlCplgedpVgWf7u5XPWCTfkkUUqlcOGve7cWqwXHAm5HA46Mn4aiQUBOxfnWwp2ldVoRpgIMsoycheDqwvpKo33y0Ij2/dmw/53SxuMorqz3Ku968MJ39bHzl2cp2KxuoBRaGxRd4hTAVA+94Mtf5947OnrVG/mhcaaR5Db106DI8iq8GfRPt0ZKbnb+9xkKFqaiEWyKLCk6JB2ZhGjA2R9nynY0GwwKgQYpsrwKb0cDn2+8Phfs3lXU3/xyHdfayqVwiwSJYz4SValtfvHT35ebuwYs3ya94Q+erU7ej8oFGZbz9rlLNyOzc+rNgE5v0I4wFQWHLCPOyDQCXPviHzfcV4dl77CReD0qAPK2+f3MfC3JkB3Dev52Ziom3mC9yYMqDZ84Q0ryNobEUHeWG0HQHhushHFqKnFvdWNuqdoNRlOxXNs+XcXkFEpiKjSEMbUWD6pUPcIUUzZSvVBrHhoZqDf9izML3eQDLIP59W1c41GFlcS1APwAzydJa+iv7q7VJfQVcS2SlDhFQytEySeF/+POkwLLAOpeQKZZ97ZyoujgmATxphU361+lGNzT+pnmwAAAAABJRU5ErkJggg)}.icon_spin{background-image:url(data:image/gif;base64,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)}@charset UTF-8;html{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;outline:0 none;overflow:-moz-scrollbars-none}body{font-family:Open Sans;background-color:#000;overflow:hidden;-moz-min-width:720px;-ms-min-width:720px;-o-min-width:720px;-webkit-min-width:720px;min-width:720px;width:100%;outline:0 none;min-height:400px;height:100%}.icon{width:24px;height:24px;display:inline-block;background-repeat:no-repeat;background-position:center center;padding-left:3px;padding-right:3px}.spinner{background-repeat:no-repeat;background-position:center center;width:128px;height:128px;margin:auto;color:#fff;text-align:center}.seek_btn{font-size:9pt;display:inline-block;margin:2px;padding-left:8px;padding-right:8px;color:#fff;vertical-align:middle}.ycenter{position:relative;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.xcenter{position:relative;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}#aside{position:absolute;top:43px;bottom:0;left:0;margin-bottom:2px;overflow:hidden}#content{overflow:hidden;position:absolute;top:41px;right:0;bottom:0;margin:2px}.header{position:fixed;top:0;left:0;right:0;-webkit-min-width:720px;-moz-min-width:720px;-ms-min-width:720px;-o-min-width:720px;min-width:720px;margin:0;border-top:solid 1px #102C42;border-bottom:solid 2px #003039;background:-moz-linear-gradient(#10496b,#083442);background:-webkit-linear-gradient(#10496b,#083442);background:linear-gradient(#10496b,#083442);height:40px;color:#fff;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d;z-index:9999}.header2{border-top:solid 1px #102C42;border-bottom:solid 2px #003039;background:-moz-linear-gradient(#10496b,#083442);background:-webkit-linear-gradient(#10496b,#083442);background:linear-gradient(#10496b,#083442);height:40px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}::-webkit-scrollbar{display:none}div table{width:100%;height:100%}div table tr td{border:solid 1px #555}img{pointer-events:none}video{pointer-events:none}a{color:#fff;text-decoration:none!important}a:link{color:#fff;text-decoration:none!important}a:visited{color:#fff;text-decoration:none!important}a:hover{color:#fff;text-decoration:none!important}ul li{margin-left:5px;margin-right:5px;margin-top:2px;margin-bottom:2px}.inline{display:inline-block}.linkblock{-webkit-transition:background-color .1s ease;-moz-transition:background-color .1s ease;-ms-transition:background-color .1s ease;-o-transition:background-color .1s ease;transition:background-color .1s ease;-ms-border-radius:2px;border-radius:2px}.linkblock:hover{background-color:#33819e}.linkblock2{-webkit-transition:background-color .1s ease;-moz-transition:background-color .1s ease;-ms-transition:background-color .1s ease;-o-transition:background-color .1s ease;transition:background-color .1s ease;border:1px solid #000;-webkit-box-shadow:0 0 0 1px #33819e inset;-ms-box-shadow:0 0 0 1px #33819e inset;box-shadow:0 0 0 1px #33819e inset;-ms-border-radius:2px;border-radius:2px}.linkblock2:hover{background-color:#33819e}.cell_active{background-color:#222;border-color:#33b5e5 /*!important;*/}.cell{position:absolute;-ms-border-radius:2px;border-radius:2px;border-width:1px;border-style:solid;border-color:#333}.video_header{color:#fff;background-color:rgba(255,255,255,0.1);font-size:9pt;height:38px;position:absolute;top:0;left:0}.video_footer{color:#fff;background-color:rgba(255,255,255,0.1);font-size:9pt;height:38px;position:absolute;bottom:0;left:0}.video_info_overlay{height:28px;-ms-text-shadow:1px 1px 1px #000;text-shadow:1px 1px 1px #000}.common_container{background-color:#000;color:#fff;height:28px;margin-left:10px;margin-right:10px;margin-top:2px;margin-bottom:2px}.button_panel{margin-top:2px;display:flex;height:32px}.button_panel_button{border-left:1px solid #555;border-bottom:1px solid #555;flex-basis:100%;text-align:center;-ms-border-radius:3px;border-radius:3px;padding-top:.20em}.button_panel_idle{border-top:3px solid #555}.button_panel_selected{border-top:3px solid #33b5e5}.btn_sel{height:3px;background-color:#33b5e5}.btn_unsel{height:3px;background-color:#000}.button{height:24px;padding-left:5px;padding-right:5px;margin-top:-2px;border:1px solid #000;-webkit-box-shadow:0 0 0 1px #33819e inset;-ms-box-shadow:0 0 0 1px #33819e inset;box-shadow:0 0 0 1px #33819e inset;-ms-text-shadow:1px 1px 1px #000;text-shadow:1px 1px 1px #000;-ms-border-radius:2px;border-radius:2px}.button2{height:24px;padding-left:5px;padding-right:5px;margin-top:-2px;border:1px solid #000;-webkit-box-shadow:0 0 0 1px #555 inset;-ms-box-shadow:0 0 0 1px #555 inset;box-shadow:0 0 0 1px #555 inset;-ms-text-shadow:1px 1px 1px #000;text-shadow:1px 1px 1px #000;-ms-border-radius:2px;border-radius:2px}.menupanel{width:300px;color:#fff;height:100%;overflow-x:hidden;overflow-y:scroll}.menu_layout{background-color:#000;background-color:rgba(0,0,0,0.75);width:200px;height:248px;position:fixed;top:38px;right:10px;border:1px solid #33b5e5;padding-top:10px}.menu_common{border:1px solid #33b5e5;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:-2px 2px 10px #33819e;-ms-box-shadow:-2px 2px 10px #33819e;box-shadow:-2px 2px 10px #33819e}input{background-color:#000;color:#fff;border:1px solid #555;padding:2px;margin:2px;width:156px}#devices_box div input{float:right}.border_t{border-top:solid 1px #555}.border_r{border-right:solid 1px #555}.dial{cursor:crosshair}.tip{z-index:99}.timeline{width:4096px}.tl_container{background-color:rgba(0,0,0,0.25);overflow:hidden;font-size:0;height:15px;border:1px solid #33819e;margin:10px}.tl_block{display:inline-block;height:15px}.message{color:#fff;position:absolute;width:500px;height:200px;margin:-100px 0 0 -250px;top:40%;left:50%;border:2px solid #33b5e5;text-align:center;-ms-border-radius:5px;border-radius:5px} /style> title>/title>/head>body idbody> div idmain_window styledisplay: none> div classheader styledisplay: flex; justify-content: space-between> div idhead_left styleheight: 40px; margin-left: 10px;> div idmainlogo classmainlogo ycenter icon emb_logo_24> /div> a href# onclickToggleLayout();> div classinline ycenter doc_title>/div> /a> /div> div idhead_center styleheight: 40px; margin-left: 10px; margin-right: 10px;>/div> div idhead_right styleheight: 40px; margin-right: 10px;> a href# onclickGetAppConfig().LayoutManager.GetByName(1_1); GetAppConfig().CurrentLayoutName 1_1; SwitchToLive(); ForceLayoutUpdate();> div classycenter icon linkblock emb_icon_1x1_24> /div> /a> a href# onclickGetAppConfig().LayoutManager.GetByName(1_2); GetAppConfig().CurrentLayoutName 1_2; SwitchToLive(); ForceLayoutUpdate();> div classycenter icon linkblock emb_icon_1x2_24> /div> /a> a href# onclickGetAppConfig().LayoutManager.GetByName(2_1); GetAppConfig().CurrentLayoutName 2_1; SwitchToLive(); ForceLayoutUpdate();> div classycenter icon linkblock emb_icon_2x1_24> /div> /a> a href# onclickGetAppConfig().LayoutManager.GetByName(2_2); GetAppConfig().CurrentLayoutName 2_2; SwitchToLive(); ForceLayoutUpdate();> div classycenter icon linkblock emb_icon_2x2_24> /div> /a> a href# onclickToggleLayoutMenu();> div classycenter icon linkblock emb_icon_cust_24> /div> /a> /div> /div> aside idaside> div classbutton_panel stylecolor: #fff;> div classbutton_panel_button button_panel_selected linkblock idbtn_devices stylewidth: 50%>Cameras/div> div classbutton_panel_button button_panel_idle linkblock idbtn_setup>Setup/div> /div> br /> div classmenupanel iddevices_box>/div> br /> /aside> div idcontent stylecolor: #fff;>/div> /div> div idlogin classmessage styledisplay: flex; flex-direction: column> div classheader2 styledisplay: flex; justify-content: space-between> div styleheight: 40px; margin-left: 10px;> div classmainlogo ycenter icon emb_logo_24> /div> div idlogin_title classinline ycenter doc_title>/div> /div> /div> form idlogin_form styledisplay: none;> div stylemargin-top: 20px;> div stylewidth: 300px; margin: 0 auto;> div classinline stylewidth: 30%; text-align: right;> label>Username:/label> /div> div classinline> input stylewidth: 150px; idlogin_user typetext nameuser> /div> /div> /div> div> div stylewidth: 300px; margin: 0 auto;> div classinline stylewidth: 30%; text-align: right;> label>Password:/label> /div> div classinline> input stylewidth: 150px; idlogin_pass typepassword namepw onkeypressif (event.keyCode 13) fn();>br/> /div> /div> /div> div stylemargin-top: 2px;> div stylewidth: 300px; margin: 0 auto;> div classinline stylewidth: 30%; text-align: right;> label>/label> /div> div classinline> a onclickfn()> div classbutton2 linkblock stylewidth: 140px>Login/div> /a> /div> /div> /div> div idlogin_error stylemargin-top: 2px; color: #dc143c; display: none> /div> /form> noscript> Javascript is required to run this application /noscript> /div> div styledisplay: none idpub_key>-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD0x3COkw3N0mOoxoWbj26bq642ZhW6806LFN+pHU4yXQ6dAaEuDE2QizmUmBT81XFI4exTOREMeSFfTtW3QCp7CHag5FP+i+n7wJ6hdLIEPumQNNuqvQ6HH39Q3ahIUmvJT2ilbNYcoRISJbPGCxevF6woeq61EncrH2VmGuvJwIDAQAB-----END PUBLIC KEY----- /div> script typetext/javascript> // 3rd pt/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */!function(e,t){use strict;objecttypeof module&&objecttypeof module.exports?module.exportse.document?t(e,!0):function(e){if(!e.document)throw new Error(jQuery requires a window with a document);return t(e)}:t(e)}(undefined!typeof window?window:this,function(C,e){use strict;var t,EC.document,rObject.getPrototypeOf,st.slice,gt.concat,ut.push,it.indexOf,n{},on.toString,vn.hasOwnProperty,av.toString,la.call(Object),y{},mfunction(e){returnfunctiontypeof e&&number!typeof e.nodeType},xfunction(e){return null!e&&ee.window},c{type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o(nn||E).createElement(script);if(o.texte,t)for(r in c)(itr||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return nulle?e+:objecttypeof e||functiontypeof e?no.call(e)||object:typeof e}var f3.4.1,kfunction(e,t){return new k.fn.init(e,t)},p/^\s\uFEFF\xA0+|\s\uFEFF\xA0+$/g;function d(e){var t!!e&&lengthin e&&e.length,nw(e);return!m(e)&&!x(e)&&(arrayn||0t||numbertypeof t&&0t&&t-1 in e)}k.fnk.prototype{jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return nulle?s.call(this):e0?thise+this.length:thise},pushStack:function(e){var tk.merge(this.constructor(),e);return t.prevObjectthis,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var tthis.length,n+e+(e0?t:0);return this.pushStack(0n&&nt?thisn:)},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extendk.fn.extendfunction(){var e,t,n,r,i,o,aarguments0||{},s1,uarguments.length,l!1;for(booleantypeof a&&(la,aargumentss||{},s++),objecttypeof a||m(a)||(a{}),su&&(athis,s--);su;s++)if(null!(eargumentss))for(t in e)ret,__proto__!t&&a!r&&(l&&r&&(k.isPlainObject(r)||(iArray.isArray(r)))?(nat,oi&&!Array.isArray(n)?:i||k.isPlainObject(n)?n:{},i!1,atk.extend(l,o,r)):void 0!r&&(atr));return a},k.extend({expando:jQuery+(f+Math.random()).replace(/\D/g,),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||object Object!o.call(e))&&(!(tr(e))||functiontypeof(nv.call(t,constructor)&&t.constructor)&&a.call(n)l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r0;if(d(e)){for(ne.length;rn;r++)if(!1t.call(er,r,er))break}else for(r in e)if(!1t.call(er,r,er))break;return e},trim:function(e){return nulle?:(e+).replace(p,)},makeArray:function(e,t){var nt||;return null!e&&(d(Object(e))?k.merge(n,stringtypeof e?e:e):u.call(n,e)),n},inArray:function(e,t,n){return nullt?-1:i.call(t,e,n)},merge:function(e,t){for(var n+t.length,r0,ie.length;rn;r++)ei++tr;return e.lengthi,e},grep:function(e,t,n){for(var r,i0,oe.length,a!n;io;i++)!t(ei,i)!a&&r.push(ei);return r},map:function(e,t,n){var r,i,o0,a;if(d(e))for(re.length;or;o++)null!(it(eo,o,n))&&a.push(i);else for(o in e)null!(it(eo,o,n))&&a.push(i);return g.apply(,a)},guid:1,support:y}),functiontypeof Symbol&&(k.fnSymbol.iteratortSymbol.iterator),k.each(Boolean Number String Function Array Date RegExp Object Error Symbol.split( ),function(e,t){nobject +t+t.toLowerCase()});var hfunction(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,ksizzle+1*new Date,mn.document,S0,r0,pue(),xue(),Nue(),Aue(),Dfunction(e,t){return et&&(l!0),0},j{}.hasOwnProperty,t,qt.pop,Lt.push,Ht.push,Ot.slice,Pfunction(e,t){for(var n0,re.length;nr;n++)if(ent)return n;return-1},Rchecked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped,M\\x20\\t\\r\\n\\f,I(?:\\\\.|\\w-|^\0-\\xa0)+,W\\+M+*(+I+)(?:+M+*(*^$|!~?)+M+*(?:((?:\\\\.|^\\\\)*)|\((?:\\\\.|^\\\\\)*)\|(+I+))|)+M+*\\,$:(+I+)(?:\\(((((?:\\\\.|^\\\\)*)|\((?:\\\\.|^\\\\\)*)\)|((?:\\\\.|^\\\\()\\|+W+)*)|.*)\\)|),Fnew RegExp(M++,g),Bnew RegExp(^+M++|((?:^|^\\\\)(?:\\\\.)*)+M++$,g),_new RegExp(^+M+*,+M+*),znew RegExp(^+M+*(>+~|+M+)+M+*),Unew RegExp(M+|>),Xnew RegExp($),Vnew RegExp(^+I+$),G{ID:new RegExp(^#(+I+)),CLASS:new RegExp(^\\.(+I+)),TAG:new RegExp(^(+I+|*)),ATTR:new RegExp(^+W),PSEUDO:new RegExp(^+$),CHILD:new RegExp(^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(+M+*(even|odd|((+-|)(\\d*)n|)+M+*(?:(+-|)+M+*(\\d+)|))+M+*\\)|),i),bool:new RegExp(^(?:+R+)$,i),needsContext:new RegExp(^+M+*>+~|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(+M+*((?:-\\d)?\\d*)+M+*\\)|)(?^-|$),i)},Y/HTML$/i,Q/^(?:input|select|textarea|button)$/i,J/^h\d$/i,K/^^{+\{\s*\native \w/,Z/^(?:#(\w-+)|(\w+)|\.(\w-+))$/,ee/+~/,tenew RegExp(\\\\(\\da-f{1,6}+M+?|(+M+)|.),ig),nefunction(e,t,n){var r0x+t-65536;return r!r||n?t:r0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re/(\0-\x1f\x7f|^-?\d)|^-$|^\0-\x1f\x7f-\uFFFF\w-/g,iefunction(e,t){return t?\0e?\ufffd:e.slice(0,-1)+\\+e.charCodeAt(e.length-1).toString(16)+ :\\+e},oefunction(){T()},aebe(function(e){return!0e.disabled&&fieldsete.nodeName.toLowerCase()},{dir:parentNode,next:legend});try{H.apply(tO.call(m.childNodes),m.childNodes),tm.childNodes.length.nodeType}catch(e){H{apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var ne.length,r0;while(en++tr++);e.lengthn-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,fe&&e.ownerDocument,pe?e.nodeType:9;if(nn||,string!typeof t||!t||1!p&&9!p&&11!p)return n;if(!r&&((e?e.ownerDocument||e:m)!C&&T(e),ee||C,E)){if(11!p&&(uZ.exec(t)))if(iu1){if(9p){if(!(ae.getElementById(i)))return n;if(a.idi)return n.push(a),n}else if(f&&(af.getElementById(i))&&y(e,a)&&a.idi)return n.push(a),n}else{if(u2)return H.apply(n,e.getElementsByTagName(t)),n;if((iu3)&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!At+ &&(!v||!v.test(t))&&(1!p||object!e.nodeName.toLowerCase())){if(ct,fe,1p&&U.test(t)){(se.getAttribute(id))?ss.replace(re,ie):e.setAttribute(id,sk),o(lh(t)).length;while(o--)lo#+s+ +xe(lo);cl.join(,),fee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{sk&&e.removeAttribute(id)}}}return g(t.replace(B,$1),e,n,r)}function ue(){var r;return function e(t,n){return r.push(t+ )>b.cacheLength&&delete er.shift(),et+ n}}function le(e){return ek!0,e}function ce(e){var tC.createElement(fieldset);try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),tnull}}function fe(e,t){var ne.split(|),rn.length;while(r--)b.attrHandlenrt}function pe(e,t){var nt&&e,rn&&1e.nodeType&&1t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(nn.nextSibling)if(nt)return-1;return e?1:-1}function de(t){return function(e){returninpute.nodeName.toLowerCase()&&e.typet}}function he(n){return function(e){var te.nodeName.toLowerCase();return(inputt||buttont)&&e.typen}}function ge(t){return function(e){returnformin e?e.parentNode&&!1e.disabled?labelin e?labelin e.parentNode?e.parentNode.disabledt:e.disabledt:e.isDisabledt||e.isDisabled!!t&&ae(e)t:e.disabledt:labelin e&&e.disabledt}}function ve(a){return le(function(o){return o+o,le(function(e,t){var n,ra(,e.length,o),ir.length;while(i--)enri&&(en!(tnen))})})}function ye(e){return e&&undefined!typeof e.getElementsByTagName&&e}for(e in dse.support{},ise.isXMLfunction(e){var te.namespaceURI,n(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||HTML)},Tse.setDocumentfunction(e){var t,n,re?e.ownerDocument||e:m;return r!C&&9r.nodeType&&r.documentElement&&(a(Cr).documentElement,E!i(C),m!C&&(nC.defaultView)&&n.top!n&&(n.addEventListener?n.addEventListener(unload,oe,!1):n.attachEvent&&n.attachEvent(onunload,oe)),d.attributesce(function(e){return e.classNamei,!e.getAttribute(className)}),d.getElementsByTagNamece(function(e){return e.appendChild(C.createComment()),!e.getElementsByTagName(*).length}),d.getElementsByClassNameK.test(C.getElementsByClassName),d.getByIdce(function(e){return a.appendChild(e).idk,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.IDfunction(e){var te.replace(te,ne);return function(e){return e.getAttribute(id)t}},b.find.IDfunction(e,t){if(undefined!typeof t.getElementById&&E){var nt.getElementById(e);return n?n:}}):(b.filter.IDfunction(e){var ne.replace(te,ne);return function(e){var tundefined!typeof e.getAttributeNode&&e.getAttributeNode(id);return t&&t.valuen}},b.find.IDfunction(e,t){if(undefined!typeof t.getElementById&&E){var n,r,i,ot.getElementById(e);if(o){if((no.getAttributeNode(id))&&n.valuee)returno;it.getElementsByName(e),r0;while(oir++)if((no.getAttributeNode(id))&&n.valuee)returno}return}}),b.find.TAGd.getElementsByTagName?function(e,t){returnundefined!typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r,i0,ot.getElementsByTagName(e);if(*e){while(noi++)1n.nodeType&&r.push(n);return r}return o},b.find.CLASSd.getElementsByClassName&&function(e,t){if(undefined!typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s,v,(d.qsaK.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTMLa id+k+>/a>select id+k+-\r\\ msallowcapture>option selected>/option>/select>,e.querySelectorAll(msallowcapture^).length&&v.push(*^$+M+*(?:|\\)),e.querySelectorAll(selected).length||v.push(\\+M+*(?:value|+R+)),e.querySelectorAll(id~+k+-).length||v.push(~),e.querySelectorAll(:checked).length||v.push(:checked),e.querySelectorAll(a#+k++*).length||v.push(.#.++~)}),ce(function(e){e.innerHTMLa href disableddisabled>/a>select disableddisabled>option/>/select>;var tC.createElement(input);t.setAttribute(type,hidden),e.appendChild(t).setAttribute(name,D),e.querySelectorAll(named).length&&v.push(name+M+**^$|!~?),2!e.querySelectorAll(:enabled).length&&v.push(:enabled,:disabled),a.appendChild(e).disabled!0,2!e.querySelectorAll(:disabled).length&&v.push(:enabled,:disabled),e.querySelectorAll(*,:x),v.push(,.*:)})),(d.matchesSelectorK.test(ca.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatchc.call(e,*),c.call(e,s!:x),s.push(!,$)}),vv.length&&new RegExp(v.join(|)),ss.length&&new RegExp(s.join(|)),tK.test(a.compareDocumentPosition),yt||K.test(a.contains)?function(e,t){var n9e.nodeType?e.documentElement:e,rt&&t.parentNode;return er||!(!r||1!r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(tt.parentNode)if(te)return!0;return!1},Dt?function(e,t){if(et)return l!0,0;var n!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n(e.ownerDocument||e)(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)n?eC||e.ownerDocumentm&&y(m,e)?-1:tC||t.ownerDocumentm&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(et)return l!0,0;var n,r0,ie.parentNode,ot.parentNode,ae,st;if(!i||!o)return eC?-1:tC?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(io)return pe(e,t);ne;while(nn.parentNode)a.unshift(n);nt;while(nn.parentNode)s.unshift(n);while(arsr)r++;return r?pe(ar,sr):arm?-1:srm?1:0}),C},se.matchesfunction(e,t){return se(e,null,null,t)},se.matchesSelectorfunction(e,t){if((e.ownerDocument||e)!C&&T(e),d.matchesSelector&&E&&!At+ &&(!s||!s.test(t))&&(!v||!v.test(t)))try{var nc.call(e,t);if(n||d.disconnectedMatch||e.document&&11!e.document.nodeType)return n}catch(e){A(t,!0)}return 0se(t,C,null,e).length},se.containsfunction(e,t){return(e.ownerDocument||e)!C&&T(e),y(e,t)},se.attrfunction(e,t){(e.ownerDocument||e)!C&&T(e);var nb.attrHandlet.toLowerCase(),rn&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!r?r:d.attributes||!E?e.getAttribute(t):(re.getAttributeNode(t))&&r.specified?r.value:null},se.escapefunction(e){return(e+).replace(re,ie)},se.errorfunction(e){throw new Error(Syntax error, unrecognized expression: +e)},se.uniqueSortfunction(e){var t,n,r0,i0;if(l!d.detectDuplicates,u!d.sortStable&&e.slice(0),e.sort(D),l){while(tei++)tei&&(rn.push(i));while(r--)e.splice(nr,1)}return unull,e},ose.getTextfunction(e){var t,n,r0,ie.nodeType;if(i){if(1i||9i||11i){if(stringtypeof e.textContent)return e.textContent;for(ee.firstChild;e;ee.nextSibling)n+o(e)}else if(3i||4i)return e.nodeValue}else while(ter++)n+o(t);return n},(bse.selectors{cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{>:{dir:parentNode,first:!0}, :{dir:parentNode},+:{dir:previousSibling,first:!0},~:{dir:previousSibling}},preFilter:{ATTR:function(e){return e1e1.replace(te,ne),e3(e3||e4||e5||).replace(te,ne),~e2&&(e3 +e3+ ),e.slice(0,4)},CHILD:function(e){return e1e1.toLowerCase(),nthe1.slice(0,3)?(e3||se.error(e0),e4+(e4?e5+(e6||1):2*(evene3||odde3)),e5+(e7+e8||odde3)):e3&&se.error(e0),e},PSEUDO:function(e){var t,n!e6&&e2;return G.CHILD.test(e0)?null:(e3?e2e4||e5||:n&&X.test(n)&&(th(n,!0))&&(tn.indexOf(),n.length-t)-n.length)&&(e0e0.slice(0,t),e2n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var te.replace(te,ne).toLowerCase();return*e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()t}},CLASS:function(e){var tpe+ ;return t||(tnew RegExp((^|+M+)+e+(+M+|$)))&&p(e,function(e){return t.test(stringtypeof e.className&&e.className||undefined!typeof e.getAttribute&&e.getAttribute(class)||)})},ATTR:function(n,r,i){return function(e){var tse.attr(e,n);return nullt?!r:!r||(t+,r?ti:!r?t!i:^r?i&&0t.indexOf(i):*r?i&&-1t.indexOf(i):$r?i&&t.slice(-i.length)i:~r?-1( +t.replace(F, )+ ).indexOf(i):|r&&(ti||t.slice(0,i.length+1)i+-))}},CHILD:function(h,e,t,g,v){var ynth!h.slice(0,3),mlast!h.slice(-4),xof-typee;return 1g&&0v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,ly!m?nextSibling:previousSibling,ce.parentNode,fx&&e.nodeName.toLowerCase(),p!n&&!x,d!1;if(c){if(y){while(l){ae;while(aal)if(x?a.nodeName.toLowerCase()f:1a.nodeType)return!1;ulonlyh&&!u&&nextSibling}return!0}if(um?c.firstChild:c.lastChild,m&&p){d(s(r(i(o(ac)k||(ak{}))a.uniqueID||(oa.uniqueID{}))h||)0S&&r1)&&r2,as&&c.childNodess;while(a++s&&a&&al||(ds0)||u.pop())if(1a.nodeType&&++d&&ae){ihS,s,d;break}}else if(p&&(ds(r(i(o(ae)k||(ak{}))a.uniqueID||(oa.uniqueID{}))h||)0S&&r1),!1d)while(a++s&&a&&al||(ds0)||u.pop())if((x?a.nodeName.toLowerCase()f:1a.nodeType)&&++d&&(p&&((i(oak||(ak{}))a.uniqueID||(oa.uniqueID{}))hS,d),ae))break;return(d-v)g||d%g0&&0d/g}}},PSEUDO:function(e,o){var t,ab.pseudose||b.setFilterse.toLowerCase()||se.error(unsupported pseudo: +e);return ak?a(o):1a.length?(te,e,,o,b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,ra(e,o),ir.length;while(i--)enP(e,ri)!(tnri)}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r,i,sf(e.replace(B,$1));return sk?le(function(e,t,n,r){var i,os(e,null,r,),ae.length;while(a--)(ioa)&&(ea!(tai))}):function(e,t,n){return r0e,s(r,null,n,i),r0null,!i.pop()}}),has:le(function(t){return function(e){return 0se(t,e).length}}),contains:le(function(t){return tt.replace(te,ne),function(e){return-1(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||)||se.error(unsupported lang: +n),nn.replace(te,ne).toLowerCase(),function(e){var t;do{if(tE?e.lang:e.getAttribute(xml:lang)||e.getAttribute(lang))return(tt.toLowerCase())n||0t.indexOf(n+-)}while((ee.parentNode)&&1e.nodeType);return!1}}),target:function(e){var tn.location&&n.location.hash;return t&&t.slice(1)e.id},root:function(e){return ea},focus:function(e){return eC.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var te.nodeName.toLowerCase();returninputt&&!!e.checked||optiont&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0e.selected},empty:function(e){for(ee.firstChild;e;ee.nextSibling)if(e.nodeType6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var te.nodeName.toLowerCase();returninputt&&buttone.type||buttont},text:function(e){var t;returninpute.nodeName.toLowerCase()&&texte.type&&(null(te.getAttribute(type))||textt.toLowerCase())},first:ve(function(){return0}),last:ve(function(e,t){returnt-1}),eq:ve(function(e,t,n){returnn0?n+t:n}),even:ve(function(e,t){for(var n0;nt;n+2)e.push(n);return e}),odd:ve(function(e,t){for(var n1;nt;n+2)e.push(n);return e}),lt:ve(function(e,t,n){for(var rn0?n+t:tn?t:n;0--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var rn0?n+t:n;++rt;)e.push(r);return e})}}).pseudos.nthb.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudosede(e);for(e in{submit:!0,reset:!0})b.pseudosehe(e);function me(){}function xe(e){for(var t0,ne.length,r;tn;t++)r+et.value;return r}function be(s,e,t){var ue.dir,le.next,cl||u,ft&&parentNodec,pr++;return e.first?function(e,t,n){while(eeu)if(1e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,aS,p;if(n){while(eeu)if((1e.nodeType||f)&&s(e,t,n))return!0}else while(eeu)if(1e.nodeType||f)if(i(oek||(ek{}))e.uniqueID||(oe.uniqueID{}),l&&le.nodeName.toLowerCase())eeu||e;else{if((ric)&&r0S&&r1p)return a2r2;if((ica)2s(e,t,n))return!0}return!1}}function we(i){return 1i.length?function(e,t,n){var ri.length;while(r--)if(!ir(e,t,n))return!1;return!0}:i0}function Te(e,t,n,r,i){for(var o,a,s0,ue.length,lnull!t;su;s++)(oes)&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!vk&&(vCe(v)),y&&!yk&&(yCe(y,e)),le(function(e,t,n,r){var i,o,a,s,u,lt.length,ce||function(e,t,n){for(var r0,it.length;ri;r++)se(e,tr,n);return n}(h||*,n.nodeType?n:n,),f!d||!e&&h?c:Te(c,s,d,n,r),pg?y||(e?d:l||v)?:t:f;if(g&&g(f,p,n,r),v){iTe(p,u),v(i,,n,r),oi.length;while(o--)(aio)&&(puo!(fuoa))}if(e){if(y||d){if(y){i,op.length;while(o--)(apo)&&i.push(foa);y(null,p,i,r)}op.length;while(o--)(apo)&&-1(iy?P(e,a):so)&&(ei!(tia))}}else pTe(pt?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,re.length,ob.relativee0.type,ao||b.relative ,so?1:0,ube(function(e){return ei},a,!0),lbe(function(e){return-1P(i,e)},a,!0),cfunction(e,t,n){var r!o&&(n||t!w)||((it).nodeType?u(e,t,n):l(e,t,n));return inull,r};sr;s++)if(tb.relativees.type)cbe(we(c),t);else{if((tb.filteres.type.apply(null,es.matches))k){for(n++s;nr;n++)if(b.relativeen.type)break;return Ce(1s&&we(c),1s&&xe(e.slice(0,s-1).concat({value: es-2.type?*:})).replace(B,$1),t,sn&&Ee(e.slice(s,n)),nr&&Ee(ee.slice(n)),nr&&xe(e))}c.push(t)}return we(c)}return me.prototypeb.filtersb.pseudos,b.setFiltersnew me,hse.tokenizefunction(e,t){var n,r,i,o,a,s,u,lxe+ ;if(l)return t?0:l.slice(0);ae,s,ub.preFilter;while(a){for(o in n&&!(r_.exec(a))||(r&&(aa.slice(r0.length)||a),s.push(i)),n!1,(rz.exec(a))&&(nr.shift(),i.push({value:n,type:r0.replace(B, )}),aa.slice(n.length)),b.filter)!(rGo.exec(a))||uo&&!(ruo(r))||(nr.shift(),i.push({value:n,type:o,matches:r}),aa.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},fse.compilefunction(e,t){var n,v,y,m,x,r,i,o,aNe+ ;if(!a){t||(th(e)),nt.length;while(n--)(aEe(tn))k?i.push(a):o.push(a);(aN(e,(vo,m0(yi).length,x0v.length,rfunction(e,t,n,r,i){var o,a,s,u0,l0,ce&&,f,pw,de||x&&b.find.TAG(*,i),hS+nullp?1:Math.random()||.1,gd.length;for(i&&(wtC||t||i);l!g&&null!(odl);l++){if(x&&o){a0,t||o.ownerDocumentC||(T(o),n!E);while(sva++)if(s(o,t||C,n)){r.push(o);break}i&&(Sh)}m&&((o!s&&o)&&u--,e&&c.push(o))}if(u+l,m&&l!u){a0;while(sya++)s(c,f,t,n);if(e){if(0u)while(l--)cl||fl||(flq.call(r));fTe(f)}H.apply(r,f),i&&!e&&0f.length&&1u+y.length&&se.uniqueSort(r)}return i&&(Sh,wp),c},m?le(r):r))).selectore}return a},gse.selectfunction(e,t,n,r){var i,o,a,s,u,lfunctiontypeof e&&e,c!r&&h(el.selector||e);if(nn||,1c.length){if(2(oc0c0.slice(0)).length&&ID(ao0).type&&9t.nodeType&&E&&b.relativeo1.type){if(!(t(b.find.ID(a.matches0.replace(te,ne),t)||)0))return n;l&&(tt.parentNode),ee.slice(o.shift().value.length)}iG.needsContext.test(e)?0:o.length;while(i--){if(aoi,b.relativesa.type)break;if((ub.finds)&&(ru(a.matches0.replace(te,ne),ee.test(o0.type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(er.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStablek.split().sort(D).join()k,d.detectDuplicates!!l,T(),d.sortDetachedce(function(e){return 1&e.compareDocumentPosition(C.createElement(fieldset))}),ce(function(e){return e.innerHTMLa href#>/a>,#e.firstChild.getAttribute(href)})||fe(type|href|height|width,function(e,t,n){if(!n)return e.getAttribute(t,typet.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTMLinput/>,e.firstChild.setAttribute(value,),e.firstChild.getAttribute(value)})||fe(value,function(e,t,n){if(!n&&inpute.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return nulle.getAttribute(disabled)})||fe(R,function(e,t,n){var r;if(!n)return!0et?t.toLowerCase():(re.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.findh,k.exprh.selectors,k.expr:k.expr.pseudos,k.uniqueSortk.uniqueh.uniqueSort,k.texth.getText,k.isXMLDoch.isXML,k.containsh.contains,k.escapeSelectorh.escape;var Tfunction(e,t,n){var r,ivoid 0!n;while((eet)&&9!e.nodeType)if(1e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},Sfunction(e,t){for(var n;e;ee.nextSibling)1e.nodeType&&e!t&&n.push(e);return n},Nk.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()t.toLowerCase()}var D/^(a-z^\/\0>:\x20\t\r\n\f*)\x20\t\r\n\f*\/?>(?:\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!r}):n.nodeType?k.grep(e,function(e){return en!r}):string!typeof n?k.grep(e,function(e){return-1i.call(n,e)!r}):k.filter(n,e,r)}k.filterfunction(e,t,n){var rt0;return n&&(e:not(+e+)),1t.length&&1r.nodeType?k.find.matchesSelector(r,e)?r::k.find.matches(e,k.grep(t,function(e){return 1e.nodeType}))},k.fn.extend({find:function(e){var t,n,rthis.length,ithis;if(string!typeof e)return this.pushStack(k(e).filter(function(){for(t0;tr;t++)if(k.contains(it,this))return!0}));for(nthis.pushStack(),t0;tr;t++)k.find(e,it,n);return 1r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||,!1))},not:function(e){return this.pushStack(j(this,e||,!0))},is:function(e){return!!j(this,stringtypeof e&&N.test(e)?k(e):e||,!1).length}});var q,L/^(?:\s*(\w\W+>)^>*|#(\w-+))$/;(k.fn.initfunction(e,t,n){var r,i;if(!e)return this;if(nn||q,stringtypeof e){if(!(re0&&>ee.length-1&&3e.length?null,e,null:L.exec(e))||!r1&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r1){if(tt instanceof k?t0:t,k.merge(this,k.parseHTML(r1,t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r1)&&k.isPlainObject(t))for(r in t)m(thisr)?thisr(tr):this.attr(r,tr);return this}return(iE.getElementById(r2))&&(this0i,this.length1),this}return e.nodeType?(this0e,this.length1,this):m(e)?void 0!n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototypek.fn,qk(E);var H/^(?:parents|prev(?:Until|All))/,O{children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((eet)&&1!e.nodeType);return e}k.fn.extend({has:function(e){var tk(e,this),nt.length;return this.filter(function(){for(var e0;en;e++)if(k.contains(this,te))return!0})},closest:function(e,t){var n,r0,ithis.length,o,astring!typeof e&&k(e);if(!N.test(e))for(;ri;r++)for(nthisr;n&&n!t;nn.parentNode)if(n.nodeType11&&(a?-1a.index(n):1n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1o.length?k.uniqueSort(o):o)},index:function(e){return e?stringtypeof e?i.call(k(e),this0):i.call(this,e.jquery?e0:e):this0&&this0.parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(nulle?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var te.parentNode;return t&&11!t.nodeType?t:null},parents:function(e){return T(e,parentNode)},parentsUntil:function(e,t,n){return T(e,parentNode,n)},next:function(e){return P(e,nextSibling)},prev:function(e){return P(e,previousSibling)},nextAll:function(e){return T(e,nextSibling)},prevAll:function(e){return T(e,previousSibling)},nextUntil:function(e,t,n){return T(e,nextSibling,n)},prevUntil:function(e,t,n){return T(e,previousSibling,n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){returnundefined!typeof e.contentDocument?e.contentDocument:(A(e,template)&&(ee.content||e),k.merge(,e.childNodes))}},function(r,i){k.fnrfunction(e,t){var nk.map(this,i,e);returnUntil!r.slice(-5)&&(te),t&&stringtypeof t&&(nk.filter(t,n)),1this.length&&(Or||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R/^\x20\t\r\n\f+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(ie.promise)?i.call(e).done(t).fail(n):e&&m(ie.then)?i.call(e,t,n):t.apply(void 0,e.slice(r))}catch(e){n.apply(void 0,e)}}k.Callbacksfunction(r){var e,n;rstringtypeof r?(er,n{},k.each(e.match(R)||,function(e,t){nt!0}),n):k.extend({},r);var i,t,o,a,s,u,l-1,cfunction(){for(aa||r.once,oi!0;u.length;l-1){tu.shift();while(++ls.length)!1sl.apply(t0,t1)&&r.stopOnFalse&&(ls.length,t!1)}r.memory||(t!1),i!1,a&&(st?:)},f{add:function(){return s&&(t&&!i&&(ls.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&string!w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1(nk.inArray(t,s,n)))s.splice(n,1),nl&&l--}),this},has:function(e){return e?-1k.inArray(e,s):0s.length},empty:function(){return s&&(s),this},disable:function(){return au,st,this},disabled:function(){return!s},lock:function(){return au,t||i||(st),this},locked:function(){return!!a},fireWith:function(e,t){return a||(te,(tt||).slice?t.slice():t,u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var onotify,progress,k.Callbacks(memory),k.Callbacks(memory),2,resolve,done,k.Callbacks(once memory),k.Callbacks(once memory),0,resolved,reject,fail,k.Callbacks(once memory),k.Callbacks(once memory),1,rejected,ipending,a{state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var iarguments;return k.Deferred(function(r){k.each(o,function(e,t){var nm(it4)&&it4;st1(function(){var en&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):rt0+With(this,n?e:arguments)})}),inull}).promise()},then:function(t,n,r){var u0;function l(i,o,a,s){return function(){var nthis,rarguments,efunction(){var e,t;if(!(iu)){if((ea.apply(n,r))o.promise())throw new TypeError(Thenable self-resolution);te&&(objecttypeof e||functiontypeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!M&&(nvoid 0,re),(s||o.resolveWith)(n,r))}},ts?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),ui+1&&(a!I&&(nvoid 0,re),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTracek.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o03.add(l(0,e,m(r)?r:M,e.notifyWith)),o13.add(l(0,e,m(t)?t:M)),o23.add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!e?k.extend(e,a):a}},s{};return k.each(o,function(e,t){var nt2,rt5;at1n.add,r&&n.add(function(){ir},o3-e2.disable,o3-e3.disable,o02.lock,o03.lock),n.add(t3.fire),st0function(){return st0+With(thiss?void 0:this,arguments),this},st0+Withn.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var narguments.length,tn,rArray(t),is.call(arguments),ok.Deferred(),afunction(t){return function(e){rtthis,it1arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n1&&(W(e,o.done(a(t)).resolve,o.reject,!n),pendingo.state()||m(it&&it.then)))return o.then();while(t--)W(it,a(t),o.reject);return o.promise()}});var $/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHookfunction(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn(jQuery.Deferred exception: +e.message,e.stack,t)},k.readyExceptionfunction(e){C.setTimeout(function(){throw e})};var Fk.Deferred();function B(){E.removeEventListener(DOMContentLoaded,B),C.removeEventListener(load,B),k.ready()}k.fn.readyfunction(e){return F.then(e)catch(function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0e?--k.readyWait:k.isReady)||(k.isReady!0)!e&&0--k.readyWait||F.resolveWith(E,k)}}),k.ready.thenF.then,completeE.readyState||loading!E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener(DOMContentLoaded,B),C.addEventListener(load,B));var _function(e,t,n,r,i,o,a){var s0,ue.length,lnulln;if(objectw(n))for(s in i!0,n)_(e,t,s,ns,!0,o,a);else if(void 0!r&&(i!0,m(r)||(a!0),l&&(a?(t.call(e,r),tnull):(lt,tfunction(e,t,n){return l.call(k(e),n)})),t))for(;su;s++)t(es,n,a?r:r.call(es,s,t(es,n)));return i?e:l?t.call(e):u?t(e0,n):o},z/^-ms-/,U/-(a-z)/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,ms-).replace(U,X)}var Gfunction(e){return 1e.nodeType||9e.nodeType||!+e.nodeType};function Y(){this.expandok.expando+Y.uid++}Y.uid1,Y.prototype{cache:function(e){var tethis.expando;return t||(t{},G(e)&&(e.nodeType?ethis.expandot:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,ithis.cache(e);if(stringtypeof t)iV(t)n;else for(r in t)iV(r)tr;return i},get:function(e,t){return void 0t?this.cache(e):ethis.expando&ðis.expandoV(t)},access:function(e,t,n){return void 0t||t&&stringtypeof t&&void 0n?this.get(e,t):(this.set(e,t,n),void 0!n?n:t)},remove:function(e,t){var n,rethis.expando;if(void 0!r){if(void 0!t){n(tArray.isArray(t)?t.map(V):(tV(t))in r?t:t.match(R)||).length;while(n--)delete rtn}(void 0t||k.isEmptyObject(r))&&(e.nodeType?ethis.expandovoid 0:delete ethis.expando)}},hasData:function(e){var tethis.expando;return void 0!t&&!k.isEmptyObject(t)}};var Qnew Y,Jnew Y,K/^(?:\{\w\W*\}|\\w\W*\)$/,Z/A-Z/g;function ee(e,t,n){var r,i;if(void 0n&&1e.nodeType)if(rdata-+t.replace(Z,-$&).toLowerCase(),stringtypeof(ne.getAttribute(r))){try{ntrue(in)||false!i&&(nulli?null:i+i+?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else nvoid 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,othis0,ao&&o.attributes;if(void 0n){if(this.length&&(iJ.get(o),1o.nodeType&&!Q.get(o,hasDataAttrs))){ta.length;while(t--)at&&0(rat.name).indexOf(data-)&&(rV(r.slice(5)),ee(o,r,ir));Q.set(o,hasDataAttrs,!0)}return i}returnobjecttypeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0e)return void 0!(tJ.get(o,n))?t:void 0!(tee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t(t||fx)+queue,rQ.get(e,t),n&&(!r||Array.isArray(n)?rQ.access(e,t,k.makeArray(n)):r.push(n)),r||},dequeue:function(e,t){tt||fx;var nk.queue(e,t),rn.length,in.shift(),ok._queueHooks(e,t);inprogressi&&(in.shift(),r--),i&&(fxt&&n.unshift(inprogress),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var nt+queueHooks;return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks(once memory).add(function(){Q.remove(e,t+queue,n)})})}}),k.fn.extend({queue:function(t,n){var e2;returnstring!typeof t&&(nt,tfx,e--),arguments.lengthe?k.queue(this0,t):void 0n?this:this.each(function(){var ek.queue(this,t,n);k._queueHooks(this,t),fxt&&inprogress!e0&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||fx,)},promise:function(e,t){var n,r1,ik.Deferred(),othis,athis.length,sfunction(){--r||i.resolveWith(o,o)};string!typeof e&&(te,evoid 0),ee||fx;while(a--)(nQ.get(oa,e+queueHooks))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te/+-?(?:\d*\.|)\d+(?:eE+-?\d+|)/.source,nenew RegExp(^(?:(+-)|)(+te+)(a-z%*)$,i),reTop,Right,Bottom,Left,ieE.documentElement,oefunction(e){return k.contains(e.ownerDocument,e)},ae{composed:!0};ie.getRootNode&&(oefunction(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)e.ownerDocument});var sefunction(e,t){returnnone(et||e).style.display||e.style.display&&oe(e)&&nonek.css(e,display)},uefunction(e,t,n,r){var i,o,a{};for(o in t)aoe.styleo,e.styleoto;for(o in in.apply(e,r||),t)e.styleoao;return i};function le(e,t,n,r){var i,o,a20,sr?function(){return r.cur()}:function(){return k.css(e,t,)},us(),ln&&n3||(k.cssNumbert?:px),ce.nodeType&&(k.cssNumbert||px!l&&+u)&&ne.exec(k.css(e,t));if(c&&c3!l){u/2,ll||c3,c+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(os()/u||.5))0&&(a0),c/o;c*2,k.style(e,t,c+l),nn||}return n&&(c+c||+u||0,in1?c+(n1+1)*n2:+n2,r&&(r.unitl,r.startc,r.endi)),i}var ce{};function fe(e,t){for(var n,r,i,o,a,s,u,l,c0,fe.length;cf;c++)(rec).style&&(nr.style.display,t?(nonen&&(lcQ.get(r,display)||null,lc||(r.style.display)),r.style.display&&se(r)&&(lc(uaovoid 0,a(ir).ownerDocument,si.nodeName,(uces)||(oa.body.appendChild(a.createElement(s)),uk.css(o,display),o.parentNode.removeChild(o),noneu&&(ublock),cesu)))):none!n&&(lcnone,Q.set(r,display,n)));for(c0;cf;c++)null!lc&&(ec.style.displaylc);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){returnbooleantypeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe/^(?:checkbox|radio)$/i,de/(a-z^\/\0>\x20\t\r\n\f*)/i,he/^$|^module$|\/(?:java|ecma)script/i,ge{option:1,select multiplemultiple>,/select>,thead:1,table>,/table>,col:2,table>colgroup>,/colgroup>/table>,tr:2,table>tbody>,/tbody>/table>,td:3,table>tbody>tr>,/tr>/tbody>/table>,_default:0,,};function ve(e,t){var n;return nundefined!typeof e.getElementsByTagName?e.getElementsByTagName(t||*):undefined!typeof e.querySelectorAll?e.querySelectorAll(t||*):,void 0t||t&&A(e,t)?k.merge(e,n):n}function ye(e,t){for(var n0,re.length;nr;n++)Q.set(en,globalEval,!t||Q.get(tn,globalEval))}ge.optgroupge.option,ge.tbodyge.tfootge.colgroupge.captionge.thead,ge.thge.td;var me,xe,be/|?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,ft.createDocumentFragment(),p,d0,he.length;dh;d++)if((oed)||0o)if(objectw(o))k.merge(p,o.nodeType?o:o);else if(be.test(o)){aa||f.appendChild(t.createElement(div)),s(de.exec(o)||,)1.toLowerCase(),uges||ge._default,a.innerHTMLu1+k.htmlPrefilter(o)+u2,cu0;while(c--)aa.lastChild;k.merge(p,a.childNodes),(af.firstChild).textContent}else p.push(t.createTextNode(o));f.textContent,d0;while(opd++)if(r&&-1k.inArray(o,r))i&&i.push(o);else if(loe(o),ave(f.appendChild(o),script),l&&ye(a),n){c0;while(oac++)he.test(o.type||)&&n.push(o)}return f}meE.createDocumentFragment().appendChild(E.createElement(div)),(xeE.createElement(input)).setAttribute(type,radio),xe.setAttribute(checked,checked),xe.setAttribute(name,t),me.appendChild(xe),y.checkCloneme.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTMLtextarea>x/textarea>,y.noCloneChecked!!me.cloneNode(!0).lastChild.defaultValue;var Te/^key/,Ce/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee/^(^.*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return efunction(){try{return E.activeElement}catch(e){}}()(focust)}function Ae(e,t,n,r,i,o){var a,s;if(objecttypeof t){for(s instring!typeof n&&(rr||n,nvoid 0),t)Ae(e,s,n,r,ts,o);return e}if(nullr&&nulli?(in,rnvoid 0):nulli&&(stringtypeof n?(ir,rvoid 0):(ir,rn,nvoid 0)),!1i)iSe;else if(!i)return e;return 1o&&(ai,(ifunction(e){return k().off(e),a.apply(this,arguments)}).guida.guid||(a.guidk.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,rQ.get(this,i);if(1&e.isTrigger&&thisi){if(r.length)(k.event.speciali||{}).delegateType&&e.stopPropagation();else if(rs.call(arguments),Q.set(this,i,r),to(this,i),thisi(),r!(nQ.get(this,i))||t?Q.set(this,i,!1):n{},r!n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r0,k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0Q.get(e,i)&&k.event.add(e,i,ke)}k.event{global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,vQ.get(t);if(v){n.handler&&(n(on).handler,io.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guidk.guid++),(uv.events)||(uv.events{}),(av.handle)||(av.handlefunction(e){returnundefined!typeof k&&k.event.triggered!e.type?k.event.dispatch.apply(t,arguments):void 0}),l(e(e||).match(R)||).length;while(l--)dg(sEe.exec(el)||)1,h(s2||).split(.).sort(),d&&(fk.event.speciald||{},d(i?f.delegateType:f.bindType)||d,fk.event.speciald||{},ck.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(.)},o),(pud)||((pud).delegateCount0,f.setup&&!1!f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guidn.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.globald!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,vQ.hasData(e)&&Q.get(e);if(v&&(uv.events)){l(t(t||).match(R)||).length;while(l--)if(dg(sEe.exec(tl)||)1,h(s2||).split(.).sort(),d){fk.event.speciald||{},pud(r?f.delegateType:f.bindType)||d||,ss2&&new RegExp((^|\\.)+h.join(\\.(?:.*\\.|))+(\\.|$)),aop.length;while(o--)cpo,!i&&g!c.origType||n&&n.guid!c.guid||s&&!s.test(c.namespace)||r&&r!c.selector&&(**!r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete ud)}else for(d in u)k.event.remove(e,d+tl,n,r,!0);k.isEmptyObject(u)&&Q.remove(e,handle events)}},dispatch:function(e){var t,n,r,i,o,a,sk.event.fix(e),unew Array(arguments.length),l(Q.get(this,events)||{})s.type||,ck.event.specials.type||{};for(u0s,t1;targuments.length;t++)utargumentst;if(s.delegateTargetthis,!c.preDispatch||!1!c.preDispatch.call(this,s)){ak.event.handlers.call(this,s,l),t0;while((iat++)&&!s.isPropagationStopped()){s.currentTargeti.elem,n0;while((oi.handlersn++)&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObjo,s.datao.data,void 0!(r((k.event.specialo.origType||{}).handle||o.handler).apply(i.elem,u))&&!1(s.resultr)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s,ut.delegateCount,le.target;if(u&&l.nodeType&&!(clicke.type&&1e.button))for(;l!this;ll.parentNode||this)if(1l.nodeType&&(click!e.type||!0!l.disabled)){for(o,a{},n0;nu;n++)void 0ai(rtn).selector+ &&(air.needsContext?-1k(i,this).index(l):k.find(i,this,null,l).length),ai&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return lthis,ut.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEventt},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return ek.expando?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var tthis||e;return pe.test(t.type)&&t.click&&A(t,input)&&De(t,click,ke),!1},trigger:function(e){var tthis||e;return pe.test(t.type)&&t.click&&A(t,input)&&De(t,click),!0},_default:function(e){var te.target;return pe.test(t.type)&&t.click&&A(t,input)&&Q.get(t,click)||A(t,a)}},beforeunload:{postDispatch:function(e){void 0!e.result&&e.originalEvent&&(e.originalEvent.returnValuee.result)}}}},k.removeEventfunction(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Eventfunction(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvente,this.typee.type,this.isDefaultPreventede.defaultPrevented||void 0e.defaultPrevented&&!1e.returnValue?ke:Se,this.targete.target&&3e.target.nodeType?e.target.parentNode:e.target,this.currentTargete.currentTarget,this.relatedTargete.relatedTarget):this.typee,t&&k.extend(this,t),this.timeStampe&&e.timeStamp||Date.now(),thisk.expando!0},k.Event.prototype{constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var ethis.originalEvent;this.isDefaultPreventedke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var ethis.originalEvent;this.isPropagationStoppedke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var ethis.originalEvent;this.isImmediatePropagationStoppedke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var te.button;return nulle.which&&Te.test(e.type)?null!e.charCode?e.charCode:e.keyCode:!e.which&&void 0!t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:focusin,blur:focusout},function(e,t){k.event.speciale{setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:mouseover,mouseleave:mouseout,pointerenter:pointerover,pointerleave:pointerout},function(e,i){k.event.speciale{delegateType:i,bindType:i,handle:function(e){var t,ne.relatedTarget,re.handleObj;return n&&(nthis||k.contains(this,n))||(e.typer.origType,tr.handler.apply(this,arguments),e.typei),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return re.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+.+r.namespace:r.origType,r.selector,r.handler),this;if(objecttypeof e){for(i in e)this.off(i,t,ei);return this}return!1!t&&function!typeof t||(nt,tvoid 0),!1n&&(nSe),this.each(function(){k.event.remove(this,e,n,t)})}});var je/(?!area|br|col|embed|hr|img|input|link|meta|param)((a-z^\/\0>\x20\t\r\n\f*)^>*)\/>/gi,qe/script|style|link/i,Le/checked\s*(?:^|\s*.checked.)/i,He/^\s*!(?:\CDATA\|--)|(?:\\|--)>\s*$/g;function Oe(e,t){return A(e,table)&&A(11!t.nodeType?t:t.firstChild,tr)&&k(e).children(tbody)0||e}function Pe(e){return e.type(null!e.getAttribute(type))+/+e.type,e}function Re(e){returntrue/(e.type||).slice(0,5)?e.typee.type.slice(5):e.removeAttribute(type),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1t.nodeType){if(Q.hasData(e)&&(oQ.access(e),aQ.set(t,o),lo.events))for(i in delete a.handle,a.events{},l)for(n0,rli.length;nr;n++)k.event.add(t,i,lin);J.hasData(e)&&(sJ.access(e),uk.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){rg.apply(,r);var e,t,a,s,u,l,c0,fn.length,pf-1,dr0,hm(d);if(h||1f&&stringtypeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var tn.eq(e);h&&(r0d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t(ewe(r,n0.ownerDocument,!1,n,o)).firstChild,1e.childNodes.length&&(et),t||o)){for(s(ak.map(ve(e,script),Pe)).length;cf;c++)ue,c!p&&(uk.clone(u,!0,!0),s&&k.merge(a,ve(u,script))),i.call(nc,u,c);if(s)for(laa.length-1.ownerDocument,k.map(a,Re),c0;cs;c++)uac,he.test(u.type||)&&!Q.access(u,globalEval)&&k.contains(l,u)&&(u.src&&module!(u.type||).toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute(nonce)}):b(u.textContent.replace(He,),u,l))}return n}function We(e,t,n){for(var r,it?k.filter(t,e):e,o0;null!(rio);o++)n||1!r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,script)),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,$1>/$2>)},clone:function(e,t,n){var r,i,o,a,s,u,l,ce.cloneNode(!0),foe(e);if(!(y.noCloneChecked||1!e.nodeType&&11!e.nodeType||k.isXMLDoc(e)))for(ave(c),r0,i(ove(e)).length;ri;r++)sor,uar,void 0,input(lu.nodeName.toLowerCase())&&pe.test(s.type)?u.checkeds.checked:input!l&&textarea!l||(u.defaultValues.defaultValue);if(t)if(n)for(oo||ve(e),aa||ve(c),r0,io.length;ri;r++)Me(or,ar);else Me(e,c);return 0(ave(c,script)).length&&ye(a,!f&&ve(e,script)),c},cleanData:function(e){for(var t,n,r,ik.event.special,o0;void 0!(neo);o++)if(G(n)){if(tnQ.expando){if(t.events)for(r in t.events)ir?k.event.remove(n,r):k.removeEvent(n,r,t.handle);nQ.expandovoid 0}nJ.expando&&(nJ.expandovoid 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0e?k.text(this):this.empty().each(function(){1!this.nodeType&&11!this.nodeType&&9!this.nodeType||(this.textContente)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!this.nodeType&&11!this.nodeType&&9!this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1this.nodeType||11this.nodeType||9this.nodeType){var tOe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t0;null!(ethist);t++)1e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent);return this},clone:function(e,t){return enull!e&&e,tnullt?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var tthis0||{},n0,rthis.length;if(void 0e&&1t.nodeType)return t.innerHTML;if(stringtypeof e&&!qe.test(e)&&!ge(de.exec(e)||,)1.toLowerCase()){ek.htmlPrefilter(e);try{for(;nr;n++)1(tthisn||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTMLe);t0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n;return Ie(this,arguments,function(e){var tthis.parentNode;k.inArray(this,n)0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:append,prependTo:prepend,insertBefore:before,insertAfter:after,replaceAll:replaceWith},function(e,a){k.fnefunction(e){for(var t,n,rk(e),ir.length-1,o0;oi;o++)toi?this:this.clone(!0),k(ro)a(t),u.apply(n,t.get());return this.pushStack(n)}});var $enew RegExp(^(+te+)(?!px)a-z%+$,i),Fefunction(e){var te.ownerDocument.defaultView;return t&&t.opener||(tC),t.getComputedStyle(e)},Benew RegExp(re.join(|),i);function _e(e,t,n){var r,i,o,a,se.style;return(nn||Fe(e))&&(!(an.getPropertyValue(t)||nt)||oe(e)||(ak.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(rs.width,is.minWidth,os.maxWidth,s.minWidths.maxWidths.widtha,an.width,s.widthr,s.minWidthi,s.maxWidtho)),void 0!a?a+:a}function ze(e,t){return{get:function(){if(!e())return(this.gett).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssTextposition:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0,u.style.cssTextposition:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%,ie.appendChild(s).appendChild(u);var eC.getComputedStyle(u);n1%!e.top,a12t(e.marginLeft),u.style.right60%,o36t(e.right),r36t(e.width),u.style.positionabsolute,i12t(u.offsetWidth/3),ie.removeChild(s),unull}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,sE.createElement(div),uE.createElement(div);u.style&&(u.style.backgroundClipcontent-box,u.cloneNode(!0).style.backgroundClip,y.clearCloneStylecontent-boxu.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var UeWebkit,Moz,ms,XeE.createElement(div).style,Ve{};function Ge(e){var tk.cssPropse||Vee;return t||(e in Xe?e:Veefunction(e){var te0.toUpperCase()+e.slice(1),nUe.length;while(n--)if((eUen+t)in Xe)return e}(e)||e)}var Ye/^(none|table(?!-cea).+)/,Qe/^--/,Je{position:absolute,visibility:hidden,display:block},Ke{letterSpacing:0,fontWeight:400};function Ze(e,t,n){var rne.exec(t);return r?Math.max(0,r2-(n||0))+(r3||px):t}function et(e,t,n,r,i,o){var awidtht?1:0,s0,u0;if(n(r?border:content))return 0;for(;a4;a+2)marginn&&(u+k.css(e,n+rea,!0,i)),r?(contentn&&(u-k.css(e,padding+rea,!0,i)),margin!n&&(u-k.css(e,border+rea+Width,!0,i))):(u+k.css(e,padding+rea,!0,i),padding!n?u+k.css(e,border+rea+Width,!0,i):s+k.css(e,border+rea+Width,!0,i));return!r&&0o&&(u+Math.max(0,Math.ceil(eoffset+t0.toUpperCase()+t.slice(1)-o-u-s-.5))||0),u}function tt(e,t,n){var rFe(e),i(!y.boxSizingReliable()||n)&&border-boxk.css(e,boxSizing,!1,r),oi,a_e(e,t,r),soffset+t0.toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;aauto}return(!y.boxSizingReliable()&&i||autoa||!parseFloat(a)&&inlinek.css(e,display,!1,r))&&e.getClientRects().length&&(iborder-boxk.css(e,boxSizing,!1,r),(os in e)&&(aes)),(aparseFloat(a)||0)+et(e,t,n||(i?border:content),o,r,a)+px}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n_e(e,opacity);returnn?1:n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!e.nodeType&&8!e.nodeType&&e.style){var i,o,a,sV(t),uQe.test(t),le.style;if(u||(tGe(s)),ak.cssHookst||k.cssHookss,void 0n)return a&&getin a&&void 0!(ia.get(e,!1,r))?i:lt;string(otypeof n)&&(ine.exec(n))&&i1&&(nle(e,t,i),onumber),null!n&&nn&&(number!o||u||(n+i&&i3||(k.cssNumbers?:px)),y.clearCloneStyle||!n||0!t.indexOf(background)||(ltinherit),a&&setin a&&void 0(na.set(e,n,r))||(u?l.setProperty(t,n):ltn))}},css:function(e,t,n,r){var i,o,a,sV(t);return Qe.test(t)||(tGe(s)),(ak.cssHookst||k.cssHookss)&&getin a&&(ia.get(e,!0,n)),void 0i&&(i_e(e,t,r)),normali&&t in Ke&&(iKet),n||n?(oparseFloat(i),!0n||isFinite(o)?o||0:i):i}}),k.each(height,width,function(e,u){k.cssHooksu{get:function(e,t,n){if(t)return!Ye.test(k.css(e,display))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,iFe(e),o!y.scrollboxSize()&&absolutei.position,a(o||n)&&border-boxk.css(e,boxSizing,!1,i),sn?et(e,u,n,a,i):0;return a&&o&&(s-Math.ceil(eoffset+u0.toUpperCase()+u.slice(1)-parseFloat(iu)-et(e,u,border,!1,i)-.5)),s&&(rne.exec(t))&&px!(r3||px)&&(e.styleut,tk.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeftze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,marginLeft))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+px}),k.each({margin:,padding:,border:Width},function(i,o){k.cssHooksi+o{expand:function(e){for(var t0,n{},rstringtypeof e?e.split( ):e;t4;t++)ni+ret+ort||rt-2||r0;return n}},margin!i&&(k.cssHooksi+o.setZe)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o{},a0;if(Array.isArray(t)){for(rFe(e),it.length;ai;a++)otak.css(e,ta,!1,r);return o}return void 0!n?k.style(e,t,n):k.css(e,t)},e,t,1arguments.length)}}),((k.Tweennt).prototype{constructor:nt,init:function(e,t,n,r,i,o){this.eleme,this.propn,this.easingi||k.easing._default,this.optionst,this.startthis.nowthis.cur(),this.endr,this.unito||(k.cssNumbern?:px)},cur:function(){var ent.propHooksthis.prop;return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,nnt.propHooksthis.prop;return this.options.duration?this.postk.easingthis.easing(e,this.options.duration*e,0,1,this.options.duration):this.poste,this.now(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototypent.prototype,(nt.propHooks{_default:{get:function(e){var t;return 1!e.elem.nodeType||null!e.eleme.prop&&nulle.elem.stylee.prop?e.eleme.prop:(tk.css(e.elem,e.prop,))&&auto!t?t:0},set:function(e){k.fx.stepe.prop?k.fx.stepe.prop(e):1!e.elem.nodeType||!k.cssHookse.prop&&nulle.elem.styleGe(e.prop)?e.eleme.prope.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTopnt.propHooks.scrollLeft{set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.eleme.prope.now)}},k.easing{linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:swing},k.fxnt.prototype.init,k.fx.step{};var rt,it,ot,at,st/^(?:toggle|show|hide)$/,ut/queueHooks$/;function lt(){it&&(!1E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rtvoid 0}),rtDate.now()}function ft(e,t){var n,r0,i{height:e};for(tt?1:0;r4;r+2-t)imargin+(nrer)ipadding+ne;return t&&(i.opacityi.widthe),i}function pt(e,t,n){for(var r,i(dt.tweenerst||).concat(dt.tweeners*),o0,ai.length;oa;o++)if(rio.call(n,t,e))return r}function dt(o,e,t){var n,a,r0,idt.prefilters.length,sk.Deferred().always(function(){delete u.elem}),ufunction(){if(a)return!1;for(var ert||ct(),tMath.max(0,l.startTime+l.duration-e),n1-(t/l.duration||0),r0,il.tweens.length;ri;r++)l.tweensr.run(n);return s.notifyWith(o,l,n,t),n1&&i?t:(i||s.notifyWith(o,l,1,0),s.resolveWith(o,l),!1)},ls.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:,createTween:function(e,t){var nk.Tween(o,l.opts,e,t,l.opts.specialEasinge||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t0,ne?l.tweens.length:0;if(a)return this;for(a!0;tn;t++)l.tweenst.run(1);return e?(s.notifyWith(o,l,1,0),s.resolveWith(o,l,e)):s.rejectWith(o,l,e),this}}),cl.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(itrV(n),oen,Array.isArray(o)&&(io1,oeno0),n!r&&(ero,delete en),(ak.cssHooksr)&&expandin a)for(n in oa.expand(o),delete er,o)n in e||(enon,tni);else tri}(c,l.opts.specialEasing);ri;r++)if(ndt.prefiltersr.call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stopn.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animationk.extend(dt,{tweeners:{*:function(e,t){var nthis.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}},tweener:function(e,t){m(e)?(te,e*):ee.match(R);for(var n,r0,ie.length;ri;r++)ner,dt.tweenersndt.tweenersn||,dt.tweenersn.unshift(t)},prefilters:function(e,t,n){var r,i,o,a,s,u,l,c,fwidthin t||heightin t,pthis,d{},he.style,ge.nodeType&&se(e),vQ.get(e,fxshow);for(r in n.queue||(null(ak._queueHooks(e,fx)).unqueued&&(a.unqueued0,sa.empty.fire,a.empty.firefunction(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,fx).length||a.empty.fire()})})),t)if(itr,st.test(i)){if(delete tr,oo||togglei,i(g?hide:show)){if(show!i||!v||void 0vr)continue;g!0}drv&&vr||k.style(e,r)}if((u!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1e.nodeType&&(n.overflowh.overflow,h.overflowX,h.overflowY,null(lv&&v.display)&&(lQ.get(e,display)),none(ck.css(e,display))&&(l?cl:(fe(e,!0),le.style.display||l,ck.css(e,display),fe(e))),(inlinec||inline-blockc&&null!l)&&nonek.css(e,float)&&(u||(p.done(function(){h.displayl}),nulll&&(ch.display,lnonec?:c)),h.displayinline-block)),n.overflow&&(h.overflowhidden,p.always(function(){h.overflown.overflow0,h.overflowXn.overflow1,h.overflowYn.overflow2})),u!1,d)u||(v?hiddenin v&&(gv.hidden):vQ.access(e,fxshow,{display:l}),o&&(v.hidden!g),g&&fe(e,!0),p.done(function(){for(r in g||fe(e),Q.remove(e,fxshow),d)k.style(e,r,dr)})),upt(g?vr:0,r,p),r in v||(vru.start,g&&(u.endu.start,u.start0))},prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speedfunction(e,t,n){var re&&objecttypeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration0:number!typeof r.duration&&(r.duration in k.fx.speeds?r.durationk.fx.speedsr.duration:r.durationk.fx.speeds._default),null!r.queue&&!0!r.queue||(r.queuefx),r.oldr.complete,r.completefunction(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css(opacity,0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var ik.isEmptyObject(t),ok.speed(e,n,r),afunction(){var edt(this,k.extend({},t),o);(i||Q.get(this,finish))&&e.stop(!0)};return a.finisha,i||!1o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var afunction(e){var te.stop;delete e.stop,t(o)};returnstring!typeof i&&(oe,ei,ivoid 0),e&&!1!i&&this.queue(i||fx,),this.each(function(){var e!0,tnull!i&&i+queueHooks,nk.timers,rQ.get(this);if(t)rt&&rt.stop&&a(rt);else for(t in r)rt&&rt.stop&&ut.test(t)&&a(rt);for(tn.length;t--;)nt.elem!this||null!i&&nt.queue!i||(nt.anim.stop(o),e!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!a&&(aa||fx),this.each(function(){var e,tQ.get(this),nta+queue,rta+queueHooks,ik.timers,on?n.length:0;for(t.finish!0,k.queue(this,a,),r&&r.stop&&r.stop.call(this,!0),ei.length;e--;)ie.elemthis&&ie.queuea&&(ie.anim.stop(!0),i.splice(e,1));for(e0;eo;e++)ne&&ne.finish&&ne.finish.call(this);delete t.finish})}}),k.each(toggle,show,hide,function(e,r){var ik.fnr;k.fnrfunction(e,t,n){return nulle||booleantypeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft(show),slideUp:ft(hide),slideToggle:ft(toggle),fadeIn:{opacity:show},fadeOut:{opacity:hide},fadeToggle:{opacity:toggle}},function(e,r){k.fnefunction(e,t,n){return this.animate(r,e,t,n)}}),k.timers,k.fx.tickfunction(){var e,t0,nk.timers;for(rtDate.now();tn.length;t++)(ent)()||nt!e||n.splice(t--,1);n.length||k.fx.stop(),rtvoid 0},k.fx.timerfunction(e){k.timers.push(e),k.fx.start()},k.fx.interval13,k.fx.startfunction(){it||(it!0,lt())},k.fx.stopfunction(){itnull},k.fx.speeds{slow:600,fast:200,_default:400},k.fn.delayfunction(r,e){return rk.fx&&k.fx.speedsr||r,ee||fx,this.queue(e,function(e,t){var nC.setTimeout(e,r);t.stopfunction(){C.clearTimeout(n)}})},otE.createElement(input),atE.createElement(select).appendChild(E.createElement(option)),ot.typecheckbox,y.checkOn!ot.value,y.optSelectedat.selected,(otE.createElement(input)).valuet,ot.typeradio,y.radioValuetot.value;var ht,gtk.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,oe.nodeType;if(3!o&&8!o&&2!o)returnundefinedtypeof e.getAttribute?k.prop(e,t,n):(1o&&k.isXMLDoc(e)||(ik.attrHookst.toLowerCase()||(k.expr.match.bool.test(t)?ht:void 0)),void 0!n?nulln?void k.removeAttr(e,t):i&&setin i&&void 0!(ri.set(e,n,t))?r:(e.setAttribute(t,n+),n):i&&getin i&&null!(ri.get(e,t))?r:null(rk.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&radiot&&A(e,input)){var ne.value;return e.setAttribute(type,t),n&&(e.valuen),t}}}},removeAttr:function(e,t){var n,r0,it&&t.match(R);if(i&&1e.nodeType)while(nir++)e.removeAttribute(n)}}),ht{set:function(e,t,n){return!1t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var agtt||k.find.attr;gttfunction(e,t,n){var r,i,ot.toLowerCase();return n||(igto,gtor,rnull!a(e,t,n)?o:null,gtoi),r}});var vt/^(?:input|select|textarea|button)$/i,yt/^(?:a|area)$/i;function mt(e){return(e.match(R)||).join( )}function xt(e){return e.getAttribute&&e.getAttribute(class)||}function bt(e){return Array.isArray(e)?e:stringtypeof e&&e.match(R)||}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1arguments.length)},removeProp:function(e){return this.each(function(){delete thisk.propFixe||e})}}),k.extend({prop:function(e,t,n){var r,i,oe.nodeType;if(3!o&&8!o&&2!o)return 1o&&k.isXMLDoc(e)||(tk.propFixt||t,ik.propHookst),void 0!n?i&&setin i&&void 0!(ri.set(e,n,t))?r:etn:i&&getin i&&null!(ri.get(e,t))?r:et},propHooks:{tabIndex:{get:function(e){var tk.find.attr(e,tabindex);return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:htmlFor,class:className}}),y.optSelected||(k.propHooks.selected{get:function(e){var te.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var te.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(tabIndex,readOnly,maxLength,cellSpacing,cellPadding,rowSpan,colSpan,useMap,frameBorder,contentEditable,function(){k.propFixthis.toLowerCase()this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((ebt(t)).length)while(nthisu++)if(ixt(n),r1n.nodeType&& +mt(i)+ ){a0;while(oea++)r.indexOf( +o+ )0&&(r+o+ );i!(smt(r))&&n.setAttribute(class,s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr(class,);if((ebt(t)).length)while(nthisu++)if(ixt(n),r1n.nodeType&& +mt(i)+ ){a0;while(oea++)while(-1r.indexOf( +o+ ))rr.replace( +o+ , );i!(smt(r))&&n.setAttribute(class,s)}return this},toggleClass:function(i,t){var otypeof i,astringo||Array.isArray(i);returnbooleantypeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t0,nk(this),rbt(i);while(ert++)n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!i&&boolean!o||((ext(this))&&Q.set(this,__className__,e),this.setAttribute&&this.setAttribute(class,e||!1i?:Q.get(this,__className__)||))})},hasClass:function(e){var t,n,r0;t +e+ ;while(nthisr++)if(1n.nodeType&&-1( +mt(xt(n))+ ).indexOf(t))return!0;return!1}});var wt/\r/g;k.fn.extend({val:function(n){var r,e,i,tthis0;return arguments.length?(im(n),this.each(function(e){var t;1this.nodeType&&(null(ti?n.call(this,e,k(this).val()):n)?t:numbertypeof t?t+:Array.isArray(t)&&(tk.map(t,function(e){return nulle?:e+})),(rk.valHooksthis.type||k.valHooksthis.nodeName.toLowerCase())&&setin r&&void 0!r.set(this,t,value)||(this.valuet))})):t?(rk.valHookst.type||k.valHookst.nodeName.toLowerCase())&&getin r&&void 0!(er.get(t,value))?e:stringtypeof(et.value)?e.replace(wt,):nulle?:e:void 0}}),k.extend({valHooks:{option:{get:function(e){var tk.find.attr(e,value);return null!t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,ie.options,oe.selectedIndex,aselect-onee.type,sa?null:,ua?o+1:i.length;for(ro0?u:a?o:0;ru;r++)if(((nir).selected||ro)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,optgroup))){if(tk(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,ie.options,ok.makeArray(t),ai.length;while(a--)((ria).selected-1k.inArray(k.valHooks.option.get(r),o))&&(n!0);return n||(e.selectedIndex-1),o}}}}),k.each(radio,checkbox,function(){k.valHooksthis{set:function(e,t){if(Array.isArray(t))return e.checked-1k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooksthis.getfunction(e){return nulle.getAttribute(value)?on:e.value})}),y.focusinonfocusinin C;var Tt/^(?:focusinfocus|focusoutblur)$/,Ctfunction(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,pn||E,dv.call(e,type)?e.type:e,hv.call(e,namespace)?e.namespace.split(.):;if(ofann||E,3!n.nodeType&&8!n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1d.indexOf(.)&&(d(hd.split(.)).shift(),h.sort()),ud.indexOf(:)0&&on+d,(eek.expando?e:new k.Event(d,objecttypeof e&&e)).isTriggerr?2:3,e.namespaceh.join(.),e.rnamespacee.namespace?new RegExp((^|\\.)+h.join(\\.(?:.*\\.|))+(\\.|$)):null,e.resultvoid 0,e.target||(e.targetn),tnullt?e:k.makeArray(t,e),ck.event.speciald||{},r||!c.trigger||!1!c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(sc.delegateType||d,Tt.test(s+d)||(oo.parentNode);o;oo.parentNode)p.push(o),ao;a(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i0;while((opi++)&&!e.isPropagationStopped())fo,e.type1i?s:c.bindType||d,(l(Q.get(o,events)||{})e.type&&Q.get(o,handle))&&l.apply(o,t),(lu&&ou)&&l.apply&&G(o)&&(e.resultl.apply(o,t),!1e.result&&e.preventDefault());return e.typed,r||e.isDefaultPrevented()||c._default&&!1!c._default.apply(p.pop(),t)||!G(n)||u&&m(nd)&&!x(n)&&((anu)&&(nunull),k.event.triggeredd,e.isPropagationStopped()&&f.addEventListener(d,Ct),nd(),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggeredvoid 0,a&&(nua)),e.result}},simulate:function(e,t,n){var rk.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var nthis0;if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:focusin,blur:focusout},function(n,r){var ifunction(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.specialr{setup:function(){var ethis.ownerDocument||this,tQ.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var ethis.ownerDocument||this,tQ.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var EtC.location,ktDate.now(),St/\?/;k.parseXMLfunction(e){var t;if(!e||string!typeof e)return null;try{t(new C.DOMParser).parseFromString(e,text/xml)}catch(e){tvoid 0}return t&&!t.getElementsByTagName(parsererror).length||k.error(Invalid XML: +e),t};var Nt/\\$/,At/\r?\n/g,Dt/^(?:submit|button|image|reset|file)$/i,jt/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n++(objecttypeof t&&null!t?e:)+,t,r,i)});else if(r||object!w(e))i(n,e);else for(t in e)qt(n++t+,et,r,i)}k.paramfunction(e,t){var n,r,ifunction(e,t){var nm(t)?t():t;rr.lengthencodeURIComponent(e)++encodeURIComponent(nulln?:n)};if(nulle)return;if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,en,t,i);return r.join(&)},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var ek.prop(this,elements);return e?k.makeArray(e):this}).filter(function(){var ethis.type;return this.name&&!k(this).is(:disabled)&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var nk(this).val();return nulln?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,\r\n)}}):{name:t.name,value:n.replace(At,\r\n)}}).get()}});var Lt/%20/g,Ht/#.*$/,Ot/(?&)_^&*/,Pt/^(.*?): \t*(^\r\n*)$/gm,Rt/^(?:GET|HEAD)$/,Mt/^\/\//,It{},Wt{},$t*/.concat(*),FtE.createElement(a);function Bt(o){return function(e,t){string!typeof e&&(te,e*);var n,r0,ie.toLowerCase().match(R)||;if(m(t))while(nir++)+n0?(nn.slice(1)||*,(onon||).unshift(t)):(onon||).push(t)}}function _t(t,i,o,a){var s{},utWt;function l(e){var r;return se!0,k.each(te||,function(e,t){var nt(i,o,a);returnstring!typeof n||u||sn?u?!(rn):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes0)||!s*&&l(*)}function zt(e,t){var n,r,ik.ajaxSettings.flatOptions||{};for(n in t)void 0!tn&&((in?e:r||(r{}))ntn);return r&&k.extend(!0,e,r),e}Ft.hrefEt.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:GET,isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:application/x-www-form-urlencoded; charsetUTF-8,accepts:{*:$t,text:text/plain,html:text/html,xml:application/xml, text/xml,json:application/json, text/javascript},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:responseXML,text:responseText,json:responseJSON},converters:{* text:String,text html:!0,text json:JSON.parse,text xml:k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){objecttypeof e&&(te,evoid 0),tt||{};var c,f,p,n,d,r,h,g,i,o,vk.ajaxSetup({},t),yv.context||v,mv.context&&(y.nodeType||y.jquery)?k(y):k.event,xk.Deferred(),bk.Callbacks(once memory),wv.statusCode||{},a{},s{},ucanceled,T{readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n{};while(tPt.exec(p))nt1.toLowerCase()+ (nt1.toLowerCase()+ ||).concat(t2)}tne.toLowerCase()+ }return nullt?null:t.join(, )},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return nullh&&(ese.toLowerCase()se.toLowerCase()||e,aet),this},overrideMimeType:function(e){return nullh&&(v.mimeTypee),this},statusCode:function(e){var t;if(e)if(h)T.always(eT.status);else for(t in e)wtwt,et;return this},abort:function(e){var te||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url((e||v.url||Et.href)+).replace(Mt,Et.protocol+//),v.typet.method||t.type||v.method||v.type,v.dataTypes(v.dataType||*).toLowerCase().match(R)||,nullv.crossDomain){rE.createElement(a);try{r.hrefv.url,r.hrefr.href,v.crossDomainFt.protocol+//+Ft.host!r.protocol+//+r.host}catch(e){v.crossDomain!0}}if(v.data&&v.processData&&string!typeof v.data&&(v.datak.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(gk.event&&v.global)&&0k.active++&&k.event.trigger(ajaxStart),v.typev.type.toUpperCase(),v.hasContent!Rt.test(v.type),fv.url.replace(Ht,),v.hasContent?v.data&&v.processData&&0(v.contentType||).indexOf(application/x-www-form-urlencoded)&&(v.datav.data.replace(Lt,+)):(ov.url.slice(f.length),v.data&&(v.processData||stringtypeof v.data)&&(f+(St.test(f)?&:?)+v.data,delete v.data),!1v.cache&&(ff.replace(Ot,$1),o(St.test(f)?&:?)+_+kt+++o),v.urlf+o),v.ifModified&&(k.lastModifiedf&&T.setRequestHeader(If-Modified-Since,k.lastModifiedf),k.etagf&&T.setRequestHeader(If-None-Match,k.etagf)),(v.data&&v.hasContent&&!1!v.contentType||t.contentType)&&T.setRequestHeader(Content-Type,v.contentType),T.setRequestHeader(Accept,v.dataTypes0&&v.acceptsv.dataTypes0?v.acceptsv.dataTypes0+(*!v.dataTypes0?, +$t+; q0.01:):v.accepts*),v.headers)T.setRequestHeader(i,v.headersi);if(v.beforeSend&&(!1v.beforeSend.call(y,T,v)||h))return T.abort();if(uabort,b.add(v.complete),T.done(v.success),T.fail(v.error),c_t(Wt,v,t,T)){if(T.readyState1,g&&m.trigger(ajaxSend,T,v),h)return T;v.async&&0v.timeout&&(dC.setTimeout(function(){T.abort(timeout)},v.timeout));try{h!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,No Transport);function l(e,t,n,r){var i,o,a,s,u,lt;h||(h!0,d&&C.clearTimeout(d),cvoid 0,pr||,T.readyState0e?4:0,i200e&&e300||304e,n&&(sfunction(e,t,n){var r,i,o,a,se.contents,ue.dataTypes;while(*u0)u.shift(),void 0r&&(re.mimeType||t.getResponseHeader(Content-Type));if(r)for(i in s)if(si&&si.test(r)){u.unshift(i);break}if(u0in n)ou0;else{for(i in n){if(!u0||e.convertersi+ +u0){oi;break}a||(ai)}oo||a}if(o)return o!u0&&u.unshift(o),no}(v,T,n)),sfunction(e,t,n,r){var i,o,a,s,u,l{},ce.dataTypes.slice();if(c1)for(a in e.converters)la.toLowerCase()e.convertersa;oc.shift();while(o)if(e.responseFieldso&&(ne.responseFieldsot),!u&&r&&e.dataFilter&&(te.dataFilter(t,e.dataType)),uo,oc.shift())if(*o)ou;else if(*!u&&u!o){if(!(alu+ +o||l* +o))for(i in l)if((si.split( ))1o&&(alu+ +s0||l* +s0)){!0a?ali:!0!li&&(os0,c.unshift(s1));break}if(!0!a)if(a&ðrows)ta(t);else try{ta(t)}catch(e){return{state:parsererror,error:a?e:No conversion from +u+ to +o}}}return{state:success,data:t}}(v,s,T,i),i?(v.ifModified&&((uT.getResponseHeader(Last-Modified))&&(k.lastModifiedfu),(uT.getResponseHeader(etag))&&(k.etagfu)),204e||HEADv.type?lnocontent:304e?lnotmodified:(ls.state,os.data,i!(as.error))):(al,!e&&l||(lerror,e0&&(e0))),T.statuse,T.statusText(t||l)+,i?x.resolveWith(y,o,l,T):x.rejectWith(y,T,l,a),T.statusCode(w),wvoid 0,g&&m.trigger(i?ajaxSuccess:ajaxError,T,v,i?o:a),b.fireWith(y,T,l),g&&(m.trigger(ajaxComplete,T,v),--k.active||k.event.trigger(ajaxStop)))}return T},getJSON:function(e,t,n){return k.get(e,t,n,json)},getScript:function(e,t){return k.get(e,void 0,t,script)}}),k.each(get,post,function(e,i){kifunction(e,t,n,r){return m(t)&&(rr||n,nt,tvoid 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrlfunction(e,t){return k.ajax({url:e,type:GET,dataType:script,cache:!0,async:!1,global:!1,converters:{text script:function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this0&&(m(e)&&(ee.call(this0)),tk(e,this0.ownerDocument).eq(0).clone(!0),this0.parentNode&&t.insertBefore(this0),t.map(function(){var ethis;while(e.firstElementChild)ee.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var ek(this),te.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var nm(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(body).each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hiddenfunction(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visiblefunction(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhrfunction(){try{return new C.XMLHttpRequest}catch(e){}};var Ut{0:200,1223:204},Xtk.ajaxSettings.xhr();y.cors!!Xt&&withCredentialsin Xt,y.ajaxXt!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,ri.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)rni.xhrFieldsn;for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||eX-Requested-With||(eX-Requested-WithXMLHttpRequest),e)r.setRequestHeader(n,en);ofunction(e){return function(){o&&(oar.onloadr.onerrorr.onabortr.ontimeoutr.onreadystatechangenull,aborte?r.abort():errore?number!typeof r.status?t(0,error):t(r.status,r.statusText):t(Utr.status||r.status,r.statusText,text!(r.responseType||text)||string!typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onloado(),ar.onerrorr.ontimeouto(error),void 0!r.onabort?r.onaborta:r.onreadystatechangefunction(){4r.readyState&&C.setTimeout(function(){o&&a()})},oo(abort);try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script!1)}),k.ajaxSetup({accepts:{script:text/javascript, application/javascript, application/ecmascript, application/x-ecmascript},contents:{script:/\b(?:java|ecma)script\b/},converters:{text script:function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter(script,function(e){void 0e.cache&&(e.cache!1),e.crossDomain&&(e.typeGET)}),k.ajaxTransport(script,function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){rk(script>).attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(load error,ifunction(e){r.remove(),inull,e&&t(errore.type?404:200,e.type)}),E.head.appendChild(r0)},abort:function(){i&&i()}}});var Vt,Gt,Yt/()\?(?&|$)|\?\?/;k.ajaxSetup({jsonp:callback,jsonpCallback:function(){var eGt.pop()||k.expando+_+kt++;return thise!0,e}}),k.ajaxPrefilter(json jsonp,function(e,t,n){var r,i,o,a!1!e.jsonp&&(Yt.test(e.url)?url:stringtypeof e.data&&0(e.contentType||).indexOf(application/x-www-form-urlencoded)&&Yt.test(e.data)&&data);if(a||jsonpe.dataTypes0)return re.jsonpCallbackm(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?eaea.replace(Yt,$1+r):!1!e.jsonp&&(e.url+(St.test(e.url)?&:?)+e.jsonp++r),e.convertersscript jsonfunction(){return o||k.error(r+ was not called),o0},e.dataTypes0json,iCr,Crfunction(){oarguments},n.always(function(){void 0i?k(C).removeProp(r):Cri,er&&(e.jsonpCallbackt.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o0),oivoid 0}),script}),y.createHTMLDocument((VtE.implementation.createHTMLDocument().body).innerHTMLform>/form>form>/form>,2Vt.childNodes.length),k.parseHTMLfunction(e,t,n){returnstring!typeof e?:(booleantypeof t&&(nt,t!1),t||(y.createHTMLDocument?((r(tE.implementation.createHTMLDocument()).createElement(base)).hrefE.location.href,t.head.appendChild(r)):tE),o!n&&,(iD.exec(e))?t.createElement(i1):(iwe(e,t,o),o&&o.length&&k(o).remove(),k.merge(,i.childNodes)));var r,i,o},k.fn.loadfunction(e,t,n){var r,i,o,athis,se.indexOf( );return-1s&&(rmt(e.slice(s)),ee.slice(0,s)),m(t)?(nt,tvoid 0):t&&objecttypeof t&&(iPOST),0a.length&&k.ajax({url:e,type:i||GET,dataType:html,data:t}).done(function(e){oarguments,a.html(r?k(div>).append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||e.responseText,t,e)})}),this},k.each(ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend,function(e,t){k.fntfunction(e){return this.on(t,e)}}),k.expr.pseudos.animatedfunction(t){return k.grep(k.timers,function(e){return te.elem}).length},k.offset{setOffset:function(e,t,n){var r,i,o,a,s,u,lk.css(e,position),ck(e),f{};staticl&&(e.style.positionrelative),sc.offset(),ok.css(e,top),uk.css(e,left),(absolutel||fixedl)&&-1(o+u).indexOf(auto)?(a(rc.position()).top,ir.left):(aparseFloat(o)||0,iparseFloat(u)||0),m(t)&&(tt.call(e,n,k.extend({},s))),null!t.top&&(f.topt.top-s.top+a),null!t.left&&(f.leftt.left-s.left+i),usingin t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,rthis0;return r?r.getClientRects().length?(er.getBoundingClientRect(),nr.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this0){var e,t,n,rthis0,i{top:0,left:0};if(fixedk.css(r,position))tr.getBoundingClientRect();else{tthis.offset(),nr.ownerDocument,er.offsetParent||n.documentElement;while(e&&(en.body||en.documentElement)&&statick.css(e,position))ee.parentNode;e&&e!r&&1e.nodeType&&((ik(e).offset()).top+k.css(e,borderTopWidth,!0),i.left+k.css(e,borderLeftWidth,!0))}return{top:t.top-i.top-k.css(r,marginTop,!0),left:t.left-i.left-k.css(r,marginLeft,!0)}}},offsetParent:function(){return this.map(function(){var ethis.offsetParent;while(e&&statick.css(e,position))ee.offsetParent;return e||ie})}}),k.each({scrollLeft:pageXOffset,scrollTop:pageYOffset},function(t,i){var opageYOffseti;k.fntfunction(e){return _(this,function(e,t,n){var r;if(x(e)?re:9e.nodeType&&(re.defaultView),void 0n)return r?ri:et;r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):etn},t,e,arguments.length)}}),k.each(top,left,function(e,n){k.cssHooksnze(y.pixelPosition,function(e,t){if(t)return t_e(e,n),$e.test(t)?k(e).position()n+px:t})}),k.each({Height:height,Width:width},function(a,s){k.each({padding:inner+a,content:s,:outer+a},function(r,o){k.fnofunction(e,t){var narguments.length&&(r||boolean!typeof e),ir||(!0e||!0t?margin:border);return _(this,function(e,t,n){var r;return x(e)?0o.indexOf(outer)?einner+a:e.document.documentElementclient+a:9e.nodeType?(re.documentElement,Math.max(e.bodyscroll+a,rscroll+a,e.bodyoffset+a,roffset+a,rclient+a)):void 0n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each(blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu.split( ),function(e,n){k.fnnfunction(e,t){return 0arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1arguments.length?this.off(e,**):this.off(t,e||**,n)}}),k.proxyfunction(e,t){var n,r,i;if(stringtypeof t&&(net,te,en),m(e))return rs.call(arguments,2),(ifunction(){return e.apply(t||this,r.concat(s.call(arguments)))}).guide.guide.guid||k.guid++,i},k.holdReadyfunction(e){e?k.readyWait++:k.ready(!0)},k.isArrayArray.isArray,k.parseJSONJSON.parse,k.nodeNameA,k.isFunctionm,k.isWindowx,k.camelCaseV,k.typew,k.nowDate.now,k.isNumericfunction(e){var tk.type(e);return(numbert||stringt)&&!isNaN(e-parseFloat(e))},functiontypeof define&&define.amd&&define(jquery,,function(){return k});var QtC.jQuery,JtC.$;return k.noConflictfunction(e){return C.$k&&(C.$Jt),e&&C.jQueryk&&(C.jQueryQt),k},e||(C.jQueryC.$k),k});(function (global, factory) {typeof exports object && typeof module ! undefined ? factory(exports) :typeof define function && define.amd ? define(exports, factory) :(factory((global.JSEncrypt {})));}(this, (function (exports) { use strict;var BI_RM 0123456789abcdefghijklmnopqrstuvwxyz;function int2char(n) {return BI_RM.charAt(n);}function op_and(x, y) {return x & y;}function op_or(x, y) {return x | y;}function op_xor(x, y) {return x ^ y;}function op_andnot(x, y) {return x & ~y;}function lbit(x) {if (x 0) {return -1;}var r 0;if ((x & 0xffff) 0) {x >> 16;r + 16;}if ((x & 0xff) 0) {x >> 8;r + 8;}if ((x & 0xf) 0) {x >> 4;r + 4;}if ((x & 3) 0) {x >> 2;r + 2;}if ((x & 1) 0) {++r;}return r;}function cbit(x) {var r 0;while (x ! 0) {x & x - 1;++r;}return r;}var b64map ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/;var b64pad ;function hex2b64(h) {var i;var c;var ret ;for (i 0; i + 3 h.length; i + 3) {c parseInt(h.substring(i, i + 3), 16);ret + b64map.charAt(c >> 6) + b64map.charAt(c & 63);}if (i + 1 h.length) {c parseInt(h.substring(i, i + 1), 16);ret + b64map.charAt(c 2);}else if (i + 2 h.length) {c parseInt(h.substring(i, i + 2), 16);ret + b64map.charAt(c >> 2) + b64map.charAt((c & 3) 4);}while ((ret.length & 3) > 0) {ret + b64pad;}return ret;}function b64tohex(s) {var ret ;var i;var k 0; // b64 state, 0-3var slop 0;for (i 0; i s.length; ++i) {if (s.charAt(i) b64pad) {break;}var v b64map.indexOf(s.charAt(i));if (v 0) {continue;}if (k 0) {ret + int2char(v >> 2);slop v & 3;k 1;}else if (k 1) {ret + int2char((slop 2) | (v >> 4));slop v & 0xf;k 2;}else if (k 2) {ret + int2char(slop);ret + int2char(v >> 2);slop v & 3;k 3;}else {ret + int2char((slop 2) | (v >> 4));ret + int2char(v & 0xf);k 0;}}if (k 1) {ret + int2char(slop 2);}return ret;}/*! *****************************************************************************Copyright (c) Microsoft Corporation. All rights reserved.Licensed under the Apache License, Version 2.0 (the License); you may not usethis file except in compliance with the License. You may obtain a copy of theLicense at http://www.apache.org/licenses/LICENSE-2.0THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIEDWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,MERCHANTABLITY OR NON-INFRINGEMENT.See the Apache Version 2.0 License for specific language governing permissionsand limitations under the License.***************************************************************************** *//* global Reflect, Promise */var extendStatics function(d, b) {extendStatics Object.setPrototypeOf ||({ __proto__: } instanceof Array && function (d, b) { d.__proto__ b; }) ||function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) dp bp; };return extendStatics(d, b);};function __extends(d, b) {extendStatics(d, b);function __() { this.constructor d; }d.prototype b null ? Object.create(b) : (__.prototype b.prototype, new __());}/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */var decoder;var Hex {decode: function (a) {var i;if (decoder undefined) {var hex 0123456789ABCDEF;var ignore \f\n\r\t\u00A0\u2028\u2029;decoder {};for (i 0; i 16; ++i) {decoderhex.charAt(i) i;}hex hex.toLowerCase();for (i 10; i 16; ++i) {decoderhex.charAt(i) i;}for (i 0; i ignore.length; ++i) {decoderignore.charAt(i) -1;}}var out ;var bits 0;var char_count 0;for (i 0; i a.length; ++i) {var c a.charAt(i);if (c ) {break;}c decoderc;if (c -1) {continue;}if (c undefined) {throw new Error(Illegal character at offset + i);}bits | c;if (++char_count > 2) {outout.length bits;bits 0;char_count 0;}else {bits 4;}}if (char_count) {throw new Error(Hex encoding incomplete: 4 bits missing);}return out;}};/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */var decoder$1;var Base64 {decode: function (a) {var i;if (decoder$1 undefined) {var b64 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/;var ignore \f\n\r\t\u00A0\u2028\u2029;decoder$1 Object.create(null);for (i 0; i 64; ++i) {decoder$1b64.charAt(i) i;}for (i 0; i ignore.length; ++i) {decoder$1ignore.charAt(i) -1;}}var out ;var bits 0;var char_count 0;for (i 0; i a.length; ++i) {var c a.charAt(i);if (c ) {break;}c decoder$1c;if (c -1) {continue;}if (c undefined) {throw new Error(Illegal character at offset + i);}bits | c;if (++char_count > 4) {outout.length (bits >> 16);outout.length (bits >> 8) & 0xFF;outout.length bits & 0xFF;bits 0;char_count 0;}else {bits 6;}}switch (char_count) {case 1:throw new Error(Base64 encoding incomplete: at least 2 bits missing);case 2:outout.length (bits >> 10);break;case 3:outout.length (bits >> 16);outout.length (bits >> 8) & 0xFF;break;}return out;},re: /-----BEGIN ^-+-----(A-Za-z0-9+\/\s+)-----END ^-+-----|begin-base64^\n+\n(A-Za-z0-9+\/\s+)/,unarmor: function (a) {var m Base64.re.exec(a);if (m) {if (m1) {a m1;}else if (m2) {a m2;}else {throw new Error(RegExp out of sync);}}return Base64.decode(a);}};/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */var max 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256var Int10 /** @class */ (function () {function Int10(value) {this.buf +value || 0;}Int10.prototype.mulAdd function (m, c) {var b this.buf;var l b.length;var i;var t;for (i 0; i l; ++i) {t bi * m + c;if (t max) {c 0;}else {c 0 | (t / max);t - c * max;}bi t;}if (c > 0) {bi c;}};Int10.prototype.sub function (c) {var b this.buf;var l b.length;var i;var t;for (i 0; i l; ++i) {t bi - c;if (t 0) {t + max;c 1;}else {c 0;}bi t;}while (bb.length - 1 0) {b.pop();}};Int10.prototype.toString function (base) {if ((base || 10) ! 10) {throw new Error(only base 10 is supported);}var b this.buf;var s bb.length - 1.toString();for (var i b.length - 2; i > 0; --i) {s + (max + bi).toString().substring(1);}return s;};Int10.prototype.valueOf function () {var b this.buf;var v 0;for (var i b.length - 1; i > 0; --i) {v v * max + bi;}return v;};Int10.prototype.simplify function () {var b this.buf;return (b.length 1) ? b0 : this;};return Int10;}());var ellipsis \u2026;var reTimeS /^(\d\d)(01-9|10-2)(01-9|12\d|301)(01\d|20-3)(?:(0-5\d)(?:(0-5\d)(?:.,(\d{1,3}))?)?)?(Z|-+(?:0\d|10-2)(0-5\d)?)?$/;var reTimeL /^(\d\d\d\d)(01-9|10-2)(01-9|12\d|301)(01\d|20-3)(?:(0-5\d)(?:(0-5\d)(?:.,(\d{1,3}))?)?)?(Z|-+(?:0\d|10-2)(0-5\d)?)?$/;function stringCut(str, len) {if (str.length > len) {str str.substring(0, len) + ellipsis;}return str;}var Stream /** @class */ (function () {function Stream(enc, pos) {this.hexDigits 0123456789ABCDEF;if (enc instanceof Stream) {this.enc enc.enc;this.pos enc.pos;}else {this.enc enc;this.pos pos;}}Stream.prototype.get function (pos) {if (pos undefined) {pos this.pos++;}if (pos > this.enc.length) {throw new Error(Requesting byte offset + pos + on a stream of length + this.enc.length);}return (string typeof this.enc) ? this.enc.charCodeAt(pos) : this.encpos;};Stream.prototype.hexByte function (b) {return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);};Stream.prototype.hexDump function (start, end, raw) {var s ;for (var i start; i end; ++i) {s + this.hexByte(this.get(i));if (raw ! true) {switch (i & 0xF) {case 0x7:s + ;break;case 0xF:s + \n;break;default:s + ;}}}return s;};Stream.prototype.isASCII function (start, end) {for (var i start; i end; ++i) {var c this.get(i);if (c 32 || c > 176) {return false;}}return true;};Stream.prototype.parseStringISO function (start, end) {var s ;for (var i start; i end; ++i) {s + String.fromCharCode(this.get(i));}return s;};Stream.prototype.parseStringUTF function (start, end) {var s ;for (var i start; i end;) {var c this.get(i++);if (c 128) {s + String.fromCharCode(c);}else if ((c > 191) && (c 224)) {s + String.fromCharCode(((c & 0x1F) 6) | (this.get(i++) & 0x3F));}else {s + String.fromCharCode(((c & 0x0F) 12) | ((this.get(i++) & 0x3F) 6) | (this.get(i++) & 0x3F));}}return s;};Stream.prototype.parseStringBMP function (start, end) {var str ;var hi;var lo;for (var i start; i end;) {hi this.get(i++);lo this.get(i++);str + String.fromCharCode((hi 8) | lo);}return str;};Stream.prototype.parseTime function (start, end, shortYear) {var s this.parseStringISO(start, end);var m (shortYear ? reTimeS : reTimeL).exec(s);if (!m) {return Unrecognized time: + s;}if (shortYear) {m1 +m1;m1 + (+m1 70) ? 2000 : 1900;}s m1 + - + m2 + - + m3 + + m4;if (m5) {s + : + m5;if (m6) {s + : + m6;if (m7) {s + . + m7;}}}if (m8) {s + UTC;if (m8 ! Z) {s + m8;if (m9) {s + : + m9;}}}return s;};Stream.prototype.parseInteger function (start, end) {var v this.get(start);var neg (v > 127);var pad neg ? 255 : 0;var len;var s ;while (v pad && ++start end) {v this.get(start);}len end - start;if (len 0) {return neg ? -1 : 0;}if (len > 4) {s v;len 3;while (((+s ^ pad) & 0x80) 0) {s +s 1;--len;}s ( + len + bit)\n;}if (neg) {v v - 256;}var n new Int10(v);for (var i start + 1; i end; ++i) {n.mulAdd(256, this.get(i));}return s + n.toString();};Stream.prototype.parseBitString function (start, end, maxLength) {var unusedBit this.get(start);var lenBit ((end - start - 1) 3) - unusedBit;var intro ( + lenBit + bit)\n;var s ;for (var i start + 1; i end; ++i) {var b this.get(i);var skip (i end - 1) ? unusedBit : 0;for (var j 7; j > skip; --j) {s + (b >> j) & 1 ? 1 : 0;}if (s.length > maxLength) {return intro + stringCut(s, maxLength);}}return intro + s;};Stream.prototype.parseOctetString function (start, end, maxLength) {if (this.isASCII(start, end)) {return stringCut(this.parseStringISO(start, end), maxLength);}var len end - start;var s ( + len + byte)\n;maxLength / 2; // we work in bytesif (len > maxLength) {end start + maxLength;}for (var i start; i end; ++i) {s + this.hexByte(this.get(i));}if (len > maxLength) {s + ellipsis;}return s;};Stream.prototype.parseOID function (start, end, maxLength) {var s ;var n new Int10();var bits 0;for (var i start; i end; ++i) {var v this.get(i);n.mulAdd(128, v & 0x7F);bits + 7;if (!(v & 0x80)) { // finishedif (s ) {n n.simplify();if (n instanceof Int10) {n.sub(80);s 2. + n.toString();}else {var m n 80 ? n 40 ? 0 : 1 : 2;s m + . + (n - m * 40);}}else {s + . + n.toString();}if (s.length > maxLength) {return stringCut(s, maxLength);}n new Int10();bits 0;}}if (bits > 0) {s + .incomplete;}return s;};return Stream;}());var ASN1 /** @class */ (function () {function ASN1(stream, header, length, tag, sub) {if (!(tag instanceof ASN1Tag)) {throw new Error(Invalid tag value.);}this.stream stream;this.header header;this.length length;this.tag tag;this.sub sub;}ASN1.prototype.typeName function () {switch (this.tag.tagClass) {case 0: // universalswitch (this.tag.tagNumber) {case 0x00:return EOC;case 0x01:return BOOLEAN;case 0x02:return INTEGER;case 0x03:return BIT_STRING;case 0x04:return OCTET_STRING;case 0x05:return NULL;case 0x06:return OBJECT_IDENTIFIER;case 0x07:return ObjectDescriptor;case 0x08:return EXTERNAL;case 0x09:return REAL;case 0x0A:return ENUMERATED;case 0x0B:return EMBEDDED_PDV;case 0x0C:return UTF8String;case 0x10:return SEQUENCE;case 0x11:return SET;case 0x12:return NumericString;case 0x13:return PrintableString; // ASCII subsetcase 0x14:return TeletexString; // aka T61Stringcase 0x15:return VideotexString;case 0x16:return IA5String; // ASCIIcase 0x17:return UTCTime;case 0x18:return GeneralizedTime;case 0x19:return GraphicString;case 0x1A:return VisibleString; // ASCII subsetcase 0x1B:return GeneralString;case 0x1C:return UniversalString;case 0x1E:return BMPString;}return Universal_ + this.tag.tagNumber.toString();case 1:return Application_ + this.tag.tagNumber.toString();case 2:return + this.tag.tagNumber.toString() + ; // Contextcase 3:return Private_ + this.tag.tagNumber.toString();}};ASN1.prototype.content function (maxLength) {if (this.tag undefined) {return null;}if (maxLength undefined) {maxLength Infinity;}var content this.posContent();var len Math.abs(this.length);if (!this.tag.isUniversal()) {if (this.sub ! null) {return ( + this.sub.length + elem);}return this.stream.parseOctetString(content, content + len, maxLength);}switch (this.tag.tagNumber) {case 0x01: // BOOLEANreturn (this.stream.get(content) 0) ? false : true;case 0x02: // INTEGERreturn this.stream.parseInteger(content, content + len);case 0x03: // BIT_STRINGreturn this.sub ? ( + this.sub.length + elem) :this.stream.parseBitString(content, content + len, maxLength);case 0x04: // OCTET_STRINGreturn this.sub ? ( + this.sub.length + elem) :this.stream.parseOctetString(content, content + len, maxLength);case 0x06: // OBJECT_IDENTIFIERreturn this.stream.parseOID(content, content + len, maxLength);case 0x10: // SEQUENCEcase 0x11: // SETif (this.sub ! null) {return ( + this.sub.length + elem);}else {return (no elem);}case 0x0C: // UTF8Stringreturn stringCut(this.stream.parseStringUTF(content, content + len), maxLength);case 0x12: // NumericStringcase 0x13: // PrintableStringcase 0x14: // TeletexStringcase 0x15: // VideotexStringcase 0x16: // IA5Stringcase 0x1A: // VisibleStringreturn stringCut(this.stream.parseStringISO(content, content + len), maxLength);case 0x1E: // BMPStringreturn stringCut(this.stream.parseStringBMP(content, content + len), maxLength);case 0x17: // UTCTimecase 0x18: // GeneralizedTimereturn this.stream.parseTime(content, content + len, (this.tag.tagNumber 0x17));}return null;};ASN1.prototype.toString function () {return this.typeName() + @ + this.stream.pos + header: + this.header + ,length: + this.length + ,sub: + ((this.sub null) ? null : this.sub.length) + ;};ASN1.prototype.toPrettyString function (indent) {if (indent undefined) {indent ;}var s indent + this.typeName() + @ + this.stream.pos;if (this.length > 0) {s + +;}s + this.length;if (this.tag.tagConstructed) {s + (constructed);}else if ((this.tag.isUniversal() && ((this.tag.tagNumber 0x03) || (this.tag.tagNumber 0x04))) && (this.sub ! null)) {s + (encapsulates);}s + \n;if (this.sub ! null) {indent + ;for (var i 0, max this.sub.length; i max; ++i) {s + this.subi.toPrettyString(indent);}}return s;};ASN1.prototype.posStart function () {return this.stream.pos;};ASN1.prototype.posContent function () {return this.stream.pos + this.header;};ASN1.prototype.posEnd function () {return this.stream.pos + this.header + Math.abs(this.length);};ASN1.prototype.toHexString function () {return this.stream.hexDump(this.posStart(), this.posEnd(), true);};ASN1.decodeLength function (stream) {var buf stream.get();var len buf & 0x7F;if (len buf) {return len;}if (len > 6) {throw new Error(Length over 48 bits not supported at position + (stream.pos - 1));}if (len 0) {return null;} // undefinedbuf 0;for (var i 0; i len; ++i) {buf (buf * 256) + stream.get();}return buf;};/*** Retrieve the hexadecimal value (as a string) of the current ASN.1 element* @returns {string}* @public*/ASN1.prototype.getHexStringValue function () {var hexString this.toHexString();var offset this.header * 2;var length this.length * 2;return hexString.substr(offset, length);};ASN1.decode function (str) {var stream;if (!(str instanceof Stream)) {stream new Stream(str, 0);}else {stream str;}var streamStart new Stream(stream);var tag new ASN1Tag(stream);var len ASN1.decodeLength(stream);var start stream.pos;var header start - streamStart.pos;var sub null;var getSub function () {var ret ;if (len ! null) {var end start + len;while (stream.pos end) {retret.length ASN1.decode(stream);}if (stream.pos ! end) {throw new Error(Content size is not correct for container starting at offset + start);}}else {try {for (;;) {var s ASN1.decode(stream);if (s.tag.isEOC()) {break;}retret.length s;}len start - stream.pos; // undefined lengths are represented as negative values}catch (e) {throw new Error(Exception while decoding undefined length content: + e);}}return ret;};if (tag.tagConstructed) {sub getSub();}else if (tag.isUniversal() && ((tag.tagNumber 0x03) || (tag.tagNumber 0x04))) {try {if (tag.tagNumber 0x03) {if (stream.get() ! 0) {throw new Error(BIT STRINGs with unused bits cannot encapsulate.);}}sub getSub();for (var i 0; i sub.length; ++i) {if (subi.tag.isEOC()) {throw new Error(EOC is not supposed to be actual content.);}}}catch (e) {sub null;}}if (sub null) {if (len null) {throw new Error(We cant skip over an invalid tag with undefined length at offset + start);}stream.pos start + Math.abs(len);}return new ASN1(streamStart, header, len, tag, sub);};return ASN1;}());var ASN1Tag /** @class */ (function () {function ASN1Tag(stream) {var buf stream.get();this.tagClass buf >> 6;this.tagConstructed ((buf & 0x20) ! 0);this.tagNumber buf & 0x1F;if (this.tagNumber 0x1F) { // long tagvar n new Int10();do {buf stream.get();n.mulAdd(128, buf & 0x7F);} while (buf & 0x80);this.tagNumber n.simplify();}}ASN1Tag.prototype.isUniversal function () {return this.tagClass 0x00;};ASN1Tag.prototype.isEOC function () {return this.tagClass 0x00 && this.tagNumber 0x00;};return ASN1Tag;}());var dbits;var canary 0xdeadbeefcafe;var j_lm ((canary & 0xffffff) 0xefcafe);var lowprimes 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997;var lplim (1 26) / lowprimeslowprimes.length - 1;var BigInteger /** @class */ (function () {function BigInteger(a, b, c) {if (a ! null) {if (number typeof a) {this.fromNumber(a, b, c);}else if (b null && string ! typeof a) {this.fromString(a, 256);}else {this.fromString(a, b);}}}BigInteger.prototype.toString function (b) {if (this.s 0) {return - + this.negate().toString(b);}var k;if (b 16) {k 4;}else if (b 8) {k 3;}else if (b 2) {k 1;}else if (b 32) {k 5;}else if (b 4) {k 2;}else {return this.toRadix(b);}var km (1 k) - 1;var d;var m false;var r ;var i this.t;var p this.DB - (i * this.DB) % k;if (i-- > 0) {if (p this.DB && (d thisi >> p) > 0) {m true;r int2char(d);}while (i > 0) {if (p k) {d (thisi & ((1 p) - 1)) (k - p);d | this--i >> (p + this.DB - k);}else {d (thisi >> (p - k)) & km;if (p 0) {p + this.DB;--i;}}if (d > 0) {m true;}if (m) {r + int2char(d);}}}return m ? r : 0;};BigInteger.prototype.negate function () {var r nbi();BigInteger.ZERO.subTo(this, r);return r;};BigInteger.prototype.abs function () {return (this.s 0) ? this.negate() : this;};BigInteger.prototype.compareTo function (a) {var r this.s - a.s;if (r ! 0) {return r;}var i this.t;r i - a.t;if (r ! 0) {return (this.s 0) ? -r : r;}while (--i > 0) {if ((r thisi - ai) ! 0) {return r;}}return 0;};BigInteger.prototype.bitLength function () {if (this.t 0) {return 0;}return this.DB * (this.t - 1) + nbits(thisthis.t - 1 ^ (this.s & this.DM));};BigInteger.prototype.mod function (a) {var r nbi();this.abs().divRemTo(a, null, r);if (this.s 0 && r.compareTo(BigInteger.ZERO) > 0) {a.subTo(r, r);}return r;};BigInteger.prototype.modPowInt function (e, m) {var z;if (e 256 || m.isEven()) {z new Classic(m);}else {z new Montgomery(m);}return this.exp(e, z);};BigInteger.prototype.clone function () {var r nbi();this.copyTo(r);return r;};BigInteger.prototype.intValue function () {if (this.s 0) {if (this.t 1) {return this0 - this.DV;}else if (this.t 0) {return -1;}}else if (this.t 1) {return this0;}else if (this.t 0) {return 0;}return ((this1 & ((1 (32 - this.DB)) - 1)) this.DB) | this0;};BigInteger.prototype.byteValue function () {return (this.t 0) ? this.s : (this0 24) >> 24;};BigInteger.prototype.shortValue function () {return (this.t 0) ? this.s : (this0 16) >> 16;};BigInteger.prototype.signum function () {if (this.s 0) {return -1;}else if (this.t 0 || (this.t 1 && this0 0)) {return 0;}else {return 1;}};BigInteger.prototype.toByteArray function () {var i this.t;var r ;r0 this.s;var p this.DB - (i * this.DB) % 8;var d;var k 0;if (i-- > 0) {if (p this.DB && (d thisi >> p) ! (this.s & this.DM) >> p) {rk++ d | (this.s (this.DB - p));}while (i > 0) {if (p 8) {d (thisi & ((1 p) - 1)) (8 - p);d | this--i >> (p + this.DB - 8);}else {d (thisi >> (p - 8)) & 0xff;if (p 0) {p + this.DB;--i;}}if ((d & 0x80) ! 0) {d | -256;}if (k 0 && (this.s & 0x80) ! (d & 0x80)) {++k;}if (k > 0 || d ! this.s) {rk++ d;}}}return r;};BigInteger.prototype.equals function (a) {return (this.compareTo(a) 0);};BigInteger.prototype.min function (a) {return (this.compareTo(a) 0) ? this : a;};BigInteger.prototype.max function (a) {return (this.compareTo(a) > 0) ? this : a;};BigInteger.prototype.and function (a) {var r nbi();this.bitwiseTo(a, op_and, r);return r;};BigInteger.prototype.or function (a) {var r nbi();this.bitwiseTo(a, op_or, r);return r;};BigInteger.prototype.xor function (a) {var r nbi();this.bitwiseTo(a, op_xor, r);return r;};BigInteger.prototype.andNot function (a) {var r nbi();this.bitwiseTo(a, op_andnot, r);return r;};BigInteger.prototype.not function () {var r nbi();for (var i 0; i this.t; ++i) {ri this.DM & ~thisi;}r.t this.t;r.s ~this.s;return r;};BigInteger.prototype.shiftLeft function (n) {var r nbi();if (n 0) {this.rShiftTo(-n, r);}else {this.lShiftTo(n, r);}return r;};BigInteger.prototype.shiftRight function (n) {var r nbi();if (n 0) {this.lShiftTo(-n, r);}else {this.rShiftTo(n, r);}return r;};BigInteger.prototype.getLowestSetBit function () {for (var i 0; i this.t; ++i) {if (thisi ! 0) {return i * this.DB + lbit(thisi);}}if (this.s 0) {return this.t * this.DB;}return -1;};BigInteger.prototype.bitCount function () {var r 0;var x this.s & this.DM;for (var i 0; i this.t; ++i) {r + cbit(thisi ^ x);}return r;};BigInteger.prototype.testBit function (n) {var j Math.floor(n / this.DB);if (j > this.t) {return (this.s ! 0);}return ((thisj & (1 (n % this.DB))) ! 0);};BigInteger.prototype.setBit function (n) {return this.changeBit(n, op_or);};BigInteger.prototype.clearBit function (n) {return this.changeBit(n, op_andnot);};BigInteger.prototype.flipBit function (n) {return this.changeBit(n, op_xor);};BigInteger.prototype.add function (a) {var r nbi();this.addTo(a, r);return r;};BigInteger.prototype.subtract function (a) {var r nbi();this.subTo(a, r);return r;};BigInteger.prototype.multiply function (a) {var r nbi();this.multiplyTo(a, r);return r;};BigInteger.prototype.divide function (a) {var r nbi();this.divRemTo(a, r, null);return r;};BigInteger.prototype.remainder function (a) {var r nbi();this.divRemTo(a, null, r);return r;};BigInteger.prototype.divideAndRemainder function (a) {var q nbi();var r nbi();this.divRemTo(a, q, r);return q, r;};BigInteger.prototype.modPow function (e, m) {var i e.bitLength();var k;var r nbv(1);var z;if (i 0) {return r;}else if (i 18) {k 1;}else if (i 48) {k 3;}else if (i 144) {k 4;}else if (i 768) {k 5;}else {k 6;}if (i 8) {z new Classic(m);}else if (m.isEven()) {z new Barrett(m);}else {z new Montgomery(m);}var g ;var n 3;var k1 k - 1;var km (1 k) - 1;g1 z.convert(this);if (k > 1) {var g2 nbi();z.sqrTo(g1, g2);while (n km) {gn nbi();z.mulTo(g2, gn - 2, gn);n + 2;}}var j e.t - 1;var w;var is1 true;var r2 nbi();var t;i nbits(ej) - 1;while (j > 0) {if (i > k1) {w (ej >> (i - k1)) & km;}else {w (ej & ((1 (i + 1)) - 1)) (k1 - i);if (j > 0) {w | ej - 1 >> (this.DB + i - k1);}}n k;while ((w & 1) 0) {w >> 1;--n;}if ((i - n) 0) {i + this.DB;--j;}if (is1) { // ret 1, dont bother squaring or multiplying itgw.copyTo(r);is1 false;}else {while (n > 1) {z.sqrTo(r, r2);z.sqrTo(r2, r);n - 2;}if (n > 0) {z.sqrTo(r, r2);}else {t r;r r2;r2 t;}z.mulTo(r2, gw, r);}while (j > 0 && (ej & (1 i)) 0) {z.sqrTo(r, r2);t r;r r2;r2 t;if (--i 0) {i this.DB - 1;--j;}}}return z.revert(r);};BigInteger.prototype.modInverse function (m) {var ac m.isEven();if ((this.isEven() && ac) || m.signum() 0) {return BigInteger.ZERO;}var u m.clone();var v this.clone();var a nbv(1);var b nbv(0);var c nbv(0);var d nbv(1);while (u.signum() ! 0) {while (u.isEven()) {u.rShiftTo(1, u);if (ac) {if (!a.isEven() || !b.isEven()) {a.addTo(this, a);b.subTo(m, b);}a.rShiftTo(1, a);}else if (!b.isEven()) {b.subTo(m, b);}b.rShiftTo(1, b);}while (v.isEven()) {v.rShiftTo(1, v);if (ac) {if (!c.isEven() || !d.isEven()) {c.addTo(this, c);d.subTo(m, d);}c.rShiftTo(1, c);}else if (!d.isEven()) {d.subTo(m, d);}d.rShiftTo(1, d);}if (u.compareTo(v) > 0) {u.subTo(v, u);if (ac) {a.subTo(c, a);}b.subTo(d, b);}else {v.subTo(u, v);if (ac) {c.subTo(a, c);}d.subTo(b, d);}}if (v.compareTo(BigInteger.ONE) ! 0) {return BigInteger.ZERO;}if (d.compareTo(m) > 0) {return d.subtract(m);}if (d.signum() 0) {d.addTo(m, d);}else {return d;}if (d.signum() 0) {return d.add(m);}else {return d;}};BigInteger.prototype.pow function (e) {return this.exp(e, new NullExp());};BigInteger.prototype.gcd function (a) {var x (this.s 0) ? this.negate() : this.clone();var y (a.s 0) ? a.negate() : a.clone();if (x.compareTo(y) 0) {var t x;x y;y t;}var i x.getLowestSetBit();var g y.getLowestSetBit();if (g 0) {return x;}if (i g) {g i;}if (g > 0) {x.rShiftTo(g, x);y.rShiftTo(g, y);}while (x.signum() > 0) {if ((i x.getLowestSetBit()) > 0) {x.rShiftTo(i, x);}if ((i y.getLowestSetBit()) > 0) {y.rShiftTo(i, y);}if (x.compareTo(y) > 0) {x.subTo(y, x);x.rShiftTo(1, x);}else {y.subTo(x, y);y.rShiftTo(1, y);}}if (g > 0) {y.lShiftTo(g, y);}return y;};BigInteger.prototype.isProbablePrime function (t) {var i;var x this.abs();if (x.t 1 && x0 lowprimeslowprimes.length - 1) {for (i 0; i lowprimes.length; ++i) {if (x0 lowprimesi) {return true;}}return false;}if (x.isEven()) {return false;}i 1;while (i lowprimes.length) {var m lowprimesi;var j i + 1;while (j lowprimes.length && m lplim) {m * lowprimesj++;}m x.modInt(m);while (i j) {if (m % lowprimesi++ 0) {return false;}}}return x.millerRabin(t);};BigInteger.prototype.copyTo function (r) {for (var i this.t - 1; i > 0; --i) {ri thisi;}r.t this.t;r.s this.s;};BigInteger.prototype.fromInt function (x) {this.t 1;this.s (x 0) ? -1 : 0;if (x > 0) {this0 x;}else if (x -1) {this0 x + this.DV;}else {this.t 0;}};BigInteger.prototype.fromString function (s, b) {var k;if (b 16) {k 4;}else if (b 8) {k 3;}else if (b 256) {k 8;/* byte array */}else if (b 2) {k 1;}else if (b 32) {k 5;}else if (b 4) {k 2;}else {this.fromRadix(s, b);return;}this.t 0;this.s 0;var i s.length;var mi false;var sh 0;while (--i > 0) {var x (k 8) ? (+si) & 0xff : intAt(s, i);if (x 0) {if (s.charAt(i) -) {mi true;}continue;}mi false;if (sh 0) {thisthis.t++ x;}else if (sh + k > this.DB) {thisthis.t - 1 | (x & ((1 (this.DB - sh)) - 1)) sh;thisthis.t++ (x >> (this.DB - sh));}else {thisthis.t - 1 | x sh;}sh + k;if (sh > this.DB) {sh - this.DB;}}if (k 8 && ((+s0) & 0x80) ! 0) {this.s -1;if (sh > 0) {thisthis.t - 1 | ((1 (this.DB - sh)) - 1) sh;}}this.clamp();if (mi) {BigInteger.ZERO.subTo(this, this);}};BigInteger.prototype.clamp function () {var c this.s & this.DM;while (this.t > 0 && thisthis.t - 1 c) {--this.t;}};BigInteger.prototype.dlShiftTo function (n, r) {var i;for (i this.t - 1; i > 0; --i) {ri + n thisi;}for (i n - 1; i > 0; --i) {ri 0;}r.t this.t + n;r.s this.s;};BigInteger.prototype.drShiftTo function (n, r) {for (var i n; i this.t; ++i) {ri - n thisi;}r.t Math.max(this.t - n, 0);r.s this.s;};BigInteger.prototype.lShiftTo function (n, r) {var bs n % this.DB;var cbs this.DB - bs;var bm (1 cbs) - 1;var ds Math.floor(n / this.DB);var c (this.s bs) & this.DM;for (var i this.t - 1; i > 0; --i) {ri + ds + 1 (thisi >> cbs) | c;c (thisi & bm) bs;}for (var i ds - 1; i > 0; --i) {ri 0;}rds c;r.t this.t + ds + 1;r.s this.s;r.clamp();};BigInteger.prototype.rShiftTo function (n, r) {r.s this.s;var ds Math.floor(n / this.DB);if (ds > this.t) {r.t 0;return;}var bs n % this.DB;var cbs this.DB - bs;var bm (1 bs) - 1;r0 thisds >> bs;for (var i ds + 1; i this.t; ++i) {ri - ds - 1 | (thisi & bm) cbs;ri - ds thisi >> bs;}if (bs > 0) {rthis.t - ds - 1 | (this.s & bm) cbs;}r.t this.t - ds;r.clamp();};BigInteger.prototype.subTo function (a, r) {var i 0;var c 0;var m Math.min(a.t, this.t);while (i m) {c + thisi - ai;ri++ c & this.DM;c >> this.DB;}if (a.t this.t) {c - a.s;while (i this.t) {c + thisi;ri++ c & this.DM;c >> this.DB;}c + this.s;}else {c + this.s;while (i a.t) {c - ai;ri++ c & this.DM;c >> this.DB;}c - a.s;}r.s (c 0) ? -1 : 0;if (c -1) {ri++ this.DV + c;}else if (c > 0) {ri++ c;}r.t i;r.clamp();};BigInteger.prototype.multiplyTo function (a, r) {var x this.abs();var y a.abs();var i x.t;r.t i + y.t;while (--i > 0) {ri 0;}for (i 0; i y.t; ++i) {ri + x.t x.am(0, yi, r, i, 0, x.t);}r.s 0;r.clamp();if (this.s ! a.s) {BigInteger.ZERO.subTo(r, r);}};BigInteger.prototype.squareTo function (r) {var x this.abs();var i r.t 2 * x.t;while (--i > 0) {ri 0;}for (i 0; i x.t - 1; ++i) {var c x.am(i, xi, r, 2 * i, 0, 1);if ((ri + x.t + x.am(i + 1, 2 * xi, r, 2 * i + 1, c, x.t - i - 1)) > x.DV) {ri + x.t - x.DV;ri + x.t + 1 1;}}if (r.t > 0) {rr.t - 1 + x.am(i, xi, r, 2 * i, 0, 1);}r.s 0;r.clamp();};BigInteger.prototype.divRemTo function (m, q, r) {var pm m.abs();if (pm.t 0) {return;}var pt this.abs();if (pt.t pm.t) {if (q ! null) {q.fromInt(0);}if (r ! null) {this.copyTo(r);}return;}if (r null) {r nbi();}var y nbi();var ts this.s;var ms m.s;var nsh this.DB - nbits(pmpm.t - 1); // normalize modulusif (nsh > 0) {pm.lShiftTo(nsh, y);pt.lShiftTo(nsh, r);}else {pm.copyTo(y);pt.copyTo(r);}var ys y.t;var y0 yys - 1;if (y0 0) {return;}var yt y0 * (1 this.F1) + ((ys > 1) ? yys - 2 >> this.F2 : 0);var d1 this.FV / yt;var d2 (1 this.F1) / yt;var e 1 this.F2;var i r.t;var j i - ys;var t (q null) ? nbi() : q;y.dlShiftTo(j, t);if (r.compareTo(t) > 0) {rr.t++ 1;r.subTo(t, r);}BigInteger.ONE.dlShiftTo(ys, t);t.subTo(y, y); // negative y so we can replace sub with am laterwhile (y.t ys) {yy.t++ 0;}while (--j > 0) {var qd (r--i y0) ? this.DM : Math.floor(ri * d1 + (ri - 1 + e) * d2);if ((ri + y.am(0, qd, r, j, 0, ys)) qd) { // Try it outy.dlShiftTo(j, t);r.subTo(t, r);while (ri --qd) {r.subTo(t, r);}}}if (q ! null) {r.drShiftTo(ys, q);if (ts ! ms) {BigInteger.ZERO.subTo(q, q);}}r.t ys;r.clamp();if (nsh > 0) {r.rShiftTo(nsh, r);} // Denormalize remainderif (ts 0) {BigInteger.ZERO.subTo(r, r);}};BigInteger.prototype.invDigit function () {if (this.t 1) {return 0;}var x this0;if ((x & 1) 0) {return 0;}var y x & 3; // y 1/x mod 2^2y (y * (2 - (x & 0xf) * y)) & 0xf; // y 1/x mod 2^4y (y * (2 - (x & 0xff) * y)) & 0xff; // y 1/x mod 2^8y (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y 1/x mod 2^16y (y * (2 - x * y % this.DV)) % this.DV; // y 1/x mod 2^dbitsreturn (y > 0) ? this.DV - y : -y;};BigInteger.prototype.isEven function () {return ((this.t > 0) ? (this0 & 1) : this.s) 0;};BigInteger.prototype.exp function (e, z) {if (e > 0xffffffff || e 1) {return BigInteger.ONE;}var r nbi();var r2 nbi();var g z.convert(this);var i nbits(e) - 1;g.copyTo(r);while (--i > 0) {z.sqrTo(r, r2);if ((e & (1 i)) > 0) {z.mulTo(r2, g, r);}else {var t r;r r2;r2 t;}}return z.revert(r);};BigInteger.prototype.chunkSize function (r) {return Math.floor(Math.LN2 * this.DB / Math.log(r));};BigInteger.prototype.toRadix function (b) {if (b null) {b 10;}if (this.signum() 0 || b 2 || b > 36) {return 0;}var cs this.chunkSize(b);var a Math.pow(b, cs);var d nbv(a);var y nbi();var z nbi();var r ;this.divRemTo(d, y, z);while (y.signum() > 0) {r (a + z.intValue()).toString(b).substr(1) + r;y.divRemTo(d, y, z);}return z.intValue().toString(b) + r;};BigInteger.prototype.fromRadix function (s, b) {this.fromInt(0);if (b null) {b 10;}var cs this.chunkSize(b);var d Math.pow(b, cs);var mi false;var j 0;var w 0;for (var i 0; i s.length; ++i) {var x intAt(s, i);if (x 0) {if (s.charAt(i) - && this.signum() 0) {mi true;}continue;}w b * w + x;if (++j > cs) {this.dMultiply(d);this.dAddOffset(w, 0);j 0;w 0;}}if (j > 0) {this.dMultiply(Math.pow(b, j));this.dAddOffset(w, 0);}if (mi) {BigInteger.ZERO.subTo(this, this);}};BigInteger.prototype.fromNumber function (a, b, c) {if (number typeof b) {if (a 2) {this.fromInt(1);}else {this.fromNumber(a, c);if (!this.testBit(a - 1)) {this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this);}if (this.isEven()) {this.dAddOffset(1, 0);} // force oddwhile (!this.isProbablePrime(b)) {this.dAddOffset(2, 0);if (this.bitLength() > a) {this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);}}}}else {var x ;var t a & 7;x.length (a >> 3) + 1;b.nextBytes(x);if (t > 0) {x0 & ((1 t) - 1);}else {x0 0;}this.fromString(x, 256);}};BigInteger.prototype.bitwiseTo function (a, op, r) {var i;var f;var m Math.min(a.t, this.t);for (i 0; i m; ++i) {ri op(thisi, ai);}if (a.t this.t) {f a.s & this.DM;for (i m; i this.t; ++i) {ri op(thisi, f);}r.t this.t;}else {f this.s & this.DM;for (i m; i a.t; ++i) {ri op(f, ai);}r.t a.t;}r.s op(this.s, a.s);r.clamp();};BigInteger.prototype.changeBit function (n, op) {var r BigInteger.ONE.shiftLeft(n);this.bitwiseTo(r, op, r);return r;};BigInteger.prototype.addTo function (a, r) {var i 0;var c 0;var m Math.min(a.t, this.t);while (i m) {c + thisi + ai;ri++ c & this.DM;c >> this.DB;}if (a.t this.t) {c + a.s;while (i this.t) {c + thisi;ri++ c & this.DM;c >> this.DB;}c + this.s;}else {c + this.s;while (i a.t) {c + ai;ri++ c & this.DM;c >> this.DB;}c + a.s;}r.s (c 0) ? -1 : 0;if (c > 0) {ri++ c;}else if (c -1) {ri++ this.DV + c;}r.t i;r.clamp();};BigInteger.prototype.dMultiply function (n) {thisthis.t this.am(0, n - 1, this, 0, 0, this.t);++this.t;this.clamp();};BigInteger.prototype.dAddOffset function (n, w) {if (n 0) {return;}while (this.t w) {thisthis.t++ 0;}thisw + n;while (thisw > this.DV) {thisw - this.DV;if (++w > this.t) {thisthis.t++ 0;}++thisw;}};BigInteger.prototype.multiplyLowerTo function (a, n, r) {var i Math.min(this.t + a.t, n);r.s 0; // assumes a,this > 0r.t i;while (i > 0) {r--i 0;}for (var j r.t - this.t; i j; ++i) {ri + this.t this.am(0, ai, r, i, 0, this.t);}for (var j Math.min(a.t, n); i j; ++i) {this.am(0, ai, r, i, 0, n - i);}r.clamp();};BigInteger.prototype.multiplyUpperTo function (a, n, r) {--n;var i r.t this.t + a.t - n;r.s 0; // assumes a,this > 0while (--i > 0) {ri 0;}for (i Math.max(n - this.t, 0); i a.t; ++i) {rthis.t + i - n this.am(n - i, ai, r, 0, 0, this.t + i - n);}r.clamp();r.drShiftTo(1, r);};BigInteger.prototype.modInt function (n) {if (n 0) {return 0;}var d this.DV % n;var r (this.s 0) ? n - 1 : 0;if (this.t > 0) {if (d 0) {r this0 % n;}else {for (var i this.t - 1; i > 0; --i) {r (d * r + thisi) % n;}}}return r;};BigInteger.prototype.millerRabin function (t) {var n1 this.subtract(BigInteger.ONE);var k n1.getLowestSetBit();if (k 0) {return false;}var r n1.shiftRight(k);t (t + 1) >> 1;if (t > lowprimes.length) {t lowprimes.length;}var a nbi();for (var i 0; i t; ++i) {a.fromInt(lowprimesMath.floor(Math.random() * lowprimes.length));var y a.modPow(r, this);if (y.compareTo(BigInteger.ONE) ! 0 && y.compareTo(n1) ! 0) {var j 1;while (j++ k && y.compareTo(n1) ! 0) {y y.modPowInt(2, this);if (y.compareTo(BigInteger.ONE) 0) {return false;}}if (y.compareTo(n1) ! 0) {return false;}}}return true;};BigInteger.prototype.square function () {var r nbi();this.squareTo(r);return r;};BigInteger.prototype.gcda function (a, callback) {var x (this.s 0) ? this.negate() : this.clone();var y (a.s 0) ? a.negate() : a.clone();if (x.compareTo(y) 0) {var t x;x y;y t;}var i x.getLowestSetBit();var g y.getLowestSetBit();if (g 0) {callback(x);return;}if (i g) {g i;}if (g > 0) {x.rShiftTo(g, x);y.rShiftTo(g, y);}var gcda1 function () {if ((i x.getLowestSetBit()) > 0) {x.rShiftTo(i, x);}if ((i y.getLowestSetBit()) > 0) {y.rShiftTo(i, y);}if (x.compareTo(y) > 0) {x.subTo(y, x);x.rShiftTo(1, x);}else {y.subTo(x, y);y.rShiftTo(1, y);}if (!(x.signum() > 0)) {if (g > 0) {y.lShiftTo(g, y);}setTimeout(function () { callback(y); }, 0); // escape}else {setTimeout(gcda1, 0);}};setTimeout(gcda1, 10);};BigInteger.prototype.fromNumberAsync function (a, b, c, callback) {if (number typeof b) {if (a 2) {this.fromInt(1);}else {this.fromNumber(a, c);if (!this.testBit(a - 1)) {this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this);}if (this.isEven()) {this.dAddOffset(1, 0);}var bnp_1 this;var bnpfn1_1 function () {bnp_1.dAddOffset(2, 0);if (bnp_1.bitLength() > a) {bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);}if (bnp_1.isProbablePrime(b)) {setTimeout(function () { callback(); }, 0); // escape}else {setTimeout(bnpfn1_1, 0);}};setTimeout(bnpfn1_1, 0);}}else {var x ;var t a & 7;x.length (a >> 3) + 1;b.nextBytes(x);if (t > 0) {x0 & ((1 t) - 1);}else {x0 0;}this.fromString(x, 256);}};return BigInteger;}());var NullExp /** @class */ (function () {function NullExp() {}NullExp.prototype.convert function (x) {return x;};NullExp.prototype.revert function (x) {return x;};NullExp.prototype.mulTo function (x, y, r) {x.multiplyTo(y, r);};NullExp.prototype.sqrTo function (x, r) {x.squareTo(r);};return NullExp;}());var Classic /** @class */ (function () {function Classic(m) {this.m m;}Classic.prototype.convert function (x) {if (x.s 0 || x.compareTo(this.m) > 0) {return x.mod(this.m);}else {return x;}};Classic.prototype.revert function (x) {return x;};Classic.prototype.reduce function (x) {x.divRemTo(this.m, null, x);};Classic.prototype.mulTo function (x, y, r) {x.multiplyTo(y, r);this.reduce(r);};Classic.prototype.sqrTo function (x, r) {x.squareTo(r);this.reduce(r);};return Classic;}());var Montgomery /** @class */ (function () {function Montgomery(m) {this.m m;this.mp m.invDigit();this.mpl this.mp & 0x7fff;this.mph this.mp >> 15;this.um (1 (m.DB - 15)) - 1;this.mt2 2 * m.t;}Montgomery.prototype.convert function (x) {var r nbi();x.abs().dlShiftTo(this.m.t, r);r.divRemTo(this.m, null, r);if (x.s 0 && r.compareTo(BigInteger.ZERO) > 0) {this.m.subTo(r, r);}return r;};Montgomery.prototype.revert function (x) {var r nbi();x.copyTo(r);this.reduce(r);return r;};Montgomery.prototype.reduce function (x) {while (x.t this.mt2) {xx.t++ 0;}for (var i 0; i this.m.t; ++i) {var j xi & 0x7fff;var u0 (j * this.mpl + (((j * this.mph + (xi >> 15) * this.mpl) & this.um) 15)) & x.DM;j i + this.m.t;xj + this.m.am(0, u0, x, i, 0, this.m.t);while (xj > x.DV) {xj - x.DV;x++j++;}}x.clamp();x.drShiftTo(this.m.t, x);if (x.compareTo(this.m) > 0) {x.subTo(this.m, x);}};Montgomery.prototype.mulTo function (x, y, r) {x.multiplyTo(y, r);this.reduce(r);};Montgomery.prototype.sqrTo function (x, r) {x.squareTo(r);this.reduce(r);};return Montgomery;}());var Barrett /** @class */ (function () {function Barrett(m) {this.m m;this.r2 nbi();this.q3 nbi();BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);this.mu this.r2.divide(m);}Barrett.prototype.convert function (x) {if (x.s 0 || x.t > 2 * this.m.t) {return x.mod(this.m);}else if (x.compareTo(this.m) 0) {return x;}else {var r nbi();x.copyTo(r);this.reduce(r);return r;}};Barrett.prototype.revert function (x) {return x;};Barrett.prototype.reduce function (x) {x.drShiftTo(this.m.t - 1, this.r2);if (x.t > this.m.t + 1) {x.t this.m.t + 1;x.clamp();}this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);while (x.compareTo(this.r2) 0) {x.dAddOffset(1, this.m.t + 1);}x.subTo(this.r2, x);while (x.compareTo(this.m) > 0) {x.subTo(this.m, x);}};Barrett.prototype.mulTo function (x, y, r) {x.multiplyTo(y, r);this.reduce(r);};Barrett.prototype.sqrTo function (x, r) {x.squareTo(r);this.reduce(r);};return Barrett;}());function nbi() { return new BigInteger(null); }function parseBigInt(str, r) {return new BigInteger(str, r);}function am1(i, x, w, j, c, n) {while (--n > 0) {var v x * thisi++ + wj + c;c Math.floor(v / 0x4000000);wj++ v & 0x3ffffff;}return c;}function am2(i, x, w, j, c, n) {var xl x & 0x7fff;var xh x >> 15;while (--n > 0) {var l thisi & 0x7fff;var h thisi++ >> 15;var m xh * l + h * xl;l xl * l + ((m & 0x7fff) 15) + wj + (c & 0x3fffffff);c (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);wj++ l & 0x3fffffff;}return c;}function am3(i, x, w, j, c, n) {var xl x & 0x3fff;var xh x >> 14;while (--n > 0) {var l thisi & 0x3fff;var h thisi++ >> 14;var m xh * l + h * xl;l xl * l + ((m & 0x3fff) 14) + wj + c;c (l >> 28) + (m >> 14) + xh * h;wj++ l & 0xfffffff;}return c;}if (j_lm && (navigator.appName Microsoft Internet Explorer)) {BigInteger.prototype.am am2;dbits 30;}else if (j_lm && (navigator.appName ! Netscape)) {BigInteger.prototype.am am1;dbits 26;}else { // Mozilla/Netscape seems to prefer am3BigInteger.prototype.am am3;dbits 28;}BigInteger.prototype.DB dbits;BigInteger.prototype.DM ((1 dbits) - 1);BigInteger.prototype.DV (1 dbits);var BI_FP 52;BigInteger.prototype.FV Math.pow(2, BI_FP);BigInteger.prototype.F1 BI_FP - dbits;BigInteger.prototype.F2 2 * dbits - BI_FP;var BI_RC ;var rr;var vv;rr 0.charCodeAt(0);for (vv 0; vv 9; ++vv) {BI_RCrr++ vv;}rr a.charCodeAt(0);for (vv 10; vv 36; ++vv) {BI_RCrr++ vv;}rr A.charCodeAt(0);for (vv 10; vv 36; ++vv) {BI_RCrr++ vv;}function intAt(s, i) {var c BI_RCs.charCodeAt(i);return (c null) ? -1 : c;}function nbv(i) {var r nbi();r.fromInt(i);return r;}function nbits(x) {var r 1;var t;if ((t x >>> 16) ! 0) {x t;r + 16;}if ((t x >> 8) ! 0) {x t;r + 8;}if ((t x >> 4) ! 0) {x t;r + 4;}if ((t x >> 2) ! 0) {x t;r + 2;}if ((t x >> 1) ! 0) {x t;r + 1;}return r;}BigInteger.ZERO nbv(0);BigInteger.ONE nbv(1);var Arcfour /** @class */ (function () {function Arcfour() {this.i 0;this.j 0;this.S ;}Arcfour.prototype.init function (key) {var i;var j;var t;for (i 0; i 256; ++i) {this.Si i;}j 0;for (i 0; i 256; ++i) {j (j + this.Si + keyi % key.length) & 255;t this.Si;this.Si this.Sj;this.Sj t;}this.i 0;this.j 0;};Arcfour.prototype.next function () {var t;this.i (this.i + 1) & 255;this.j (this.j + this.Sthis.i) & 255;t this.Sthis.i;this.Sthis.i this.Sthis.j;this.Sthis.j t;return this.S(t + this.Sthis.i) & 255;};return Arcfour;}());function prng_newstate() {return new Arcfour();}var rng_psize 256;var rng_state;var rng_pool null;var rng_pptr;if (rng_pool null) {rng_pool ;rng_pptr 0;var t void 0;if (window.crypto && window.crypto.getRandomValues) {var z new Uint32Array(256);window.crypto.getRandomValues(z);for (t 0; t z.length; ++t) {rng_poolrng_pptr++ zt & 255;}}var onMouseMoveListener_1 function (ev) {this.count this.count || 0;if (this.count > 256 || rng_pptr > rng_psize) {if (window.removeEventListener) {window.removeEventListener(mousemove, onMouseMoveListener_1, false);}else if (window.detachEvent) {window.detachEvent(onmousemove, onMouseMoveListener_1);}return;}try {var mouseCoordinates ev.x + ev.y;rng_poolrng_pptr++ mouseCoordinates & 255;this.count + 1;}catch (e) {}};if (window.addEventListener) {window.addEventListener(mousemove, onMouseMoveListener_1, false);}else if (window.attachEvent) {window.attachEvent(onmousemove, onMouseMoveListener_1);}}function rng_get_byte() {if (rng_state null) {rng_state prng_newstate();while (rng_pptr rng_psize) {var random Math.floor(65536 * Math.random());rng_poolrng_pptr++ random & 255;}rng_state.init(rng_pool);for (rng_pptr 0; rng_pptr rng_pool.length; ++rng_pptr) {rng_poolrng_pptr 0;}rng_pptr 0;}return rng_state.next();}var SecureRandom /** @class */ (function () {function SecureRandom() {}SecureRandom.prototype.nextBytes function (ba) {for (var i 0; i ba.length; ++i) {bai rng_get_byte();}};return SecureRandom;}());function pkcs1pad1(s, n) {if (n s.length + 22) {console.error(Message too long for RSA);return null;}var len n - s.length - 6;var filler ;for (var f 0; f len; f + 2) {filler + ff;}var m 0001 + filler + 00 + s;return parseBigInt(m, 16);}function pkcs1pad2(s, n) {if (n s.length + 11) { // TODO: fix for utf-8console.error(Message too long for RSA);return null;}var ba ;var i s.length - 1;while (i > 0 && n > 0) {var c s.charCodeAt(i--);if (c 128) { // encode using utf-8ba--n c;}else if ((c > 127) && (c 2048)) {ba--n (c & 63) | 128;ba--n (c >> 6) | 192;}else {ba--n (c & 63) | 128;ba--n ((c >> 6) & 63) | 128;ba--n (c >> 12) | 224;}}ba--n 0;var rng new SecureRandom();var x ;while (n > 2) { // random non-zero padx0 0;while (x0 0) {rng.nextBytes(x);}ba--n x0;}ba--n 2;ba--n 0;return new BigInteger(ba);}var RSAKey /** @class */ (function () {function RSAKey() {this.n null;this.e 0;this.d null;this.p null;this.q null;this.dmp1 null;this.dmq1 null;this.coeff null;}RSAKey.prototype.doPublic function (x) {return x.modPowInt(this.e, this.n);};RSAKey.prototype.doPrivate function (x) {if (this.p null || this.q null) {return x.modPow(this.d, this.n);}var xp x.mod(this.p).modPow(this.dmp1, this.p);var xq x.mod(this.q).modPow(this.dmq1, this.q);while (xp.compareTo(xq) 0) {xp xp.add(this.p);}return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);};RSAKey.prototype.setPublic function (N, E) {if (N ! null && E ! null && N.length > 0 && E.length > 0) {this.n parseBigInt(N, 16);this.e parseInt(E, 16);}else {console.error(Invalid RSA public key);}};RSAKey.prototype.encrypt function (text) {var m pkcs1pad2(text, (this.n.bitLength() + 7) >> 3);if (m null) {return null;}var c this.doPublic(m);if (c null) {return null;}var h c.toString(16);if ((h.length & 1) 0) {return h;}else {return 0 + h;}};RSAKey.prototype.setPrivate function (N, E, D) {if (N ! null && E ! null && N.length > 0 && E.length > 0) {this.n parseBigInt(N, 16);this.e parseInt(E, 16);this.d parseBigInt(D, 16);}else {console.error(Invalid RSA private key);}};RSAKey.prototype.setPrivateEx function (N, E, D, P, Q, DP, DQ, C) {if (N ! null && E ! null && N.length > 0 && E.length > 0) {this.n parseBigInt(N, 16);this.e parseInt(E, 16);this.d parseBigInt(D, 16);this.p parseBigInt(P, 16);this.q parseBigInt(Q, 16);this.dmp1 parseBigInt(DP, 16);this.dmq1 parseBigInt(DQ, 16);this.coeff parseBigInt(C, 16);}else {console.error(Invalid RSA private key);}};RSAKey.prototype.generate function (B, E) {var rng new SecureRandom();var qs B >> 1;this.e parseInt(E, 16);var ee new BigInteger(E, 16);for (;;) {for (;;) {this.p new BigInteger(B - qs, 1, rng);if (this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) 0 && this.p.isProbablePrime(10)) {break;}}for (;;) {this.q new BigInteger(qs, 1, rng);if (this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) 0 && this.q.isProbablePrime(10)) {break;}}if (this.p.compareTo(this.q) 0) {var t this.p;this.p this.q;this.q t;}var p1 this.p.subtract(BigInteger.ONE);var q1 this.q.subtract(BigInteger.ONE);var phi p1.multiply(q1);if (phi.gcd(ee).compareTo(BigInteger.ONE) 0) {this.n this.p.multiply(this.q);this.d ee.modInverse(phi);this.dmp1 this.d.mod(p1);this.dmq1 this.d.mod(q1);this.coeff this.q.modInverse(this.p);break;}}};RSAKey.prototype.decrypt function (ctext) {var c parseBigInt(ctext, 16);var m this.doPrivate(c);if (m null) {return null;}return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);};RSAKey.prototype.generateAsync function (B, E, callback) {var rng new SecureRandom();var qs B >> 1;this.e parseInt(E, 16);var ee new BigInteger(E, 16);var rsa this;var loop1 function () {var loop4 function () {if (rsa.p.compareTo(rsa.q) 0) {var t rsa.p;rsa.p rsa.q;rsa.q t;}var p1 rsa.p.subtract(BigInteger.ONE);var q1 rsa.q.subtract(BigInteger.ONE);var phi p1.multiply(q1);if (phi.gcd(ee).compareTo(BigInteger.ONE) 0) {rsa.n rsa.p.multiply(rsa.q);rsa.d ee.modInverse(phi);rsa.dmp1 rsa.d.mod(p1);rsa.dmq1 rsa.d.mod(q1);rsa.coeff rsa.q.modInverse(rsa.p);setTimeout(function () { callback(); }, 0); // escape}else {setTimeout(loop1, 0);}};var loop3 function () {rsa.q nbi();rsa.q.fromNumberAsync(qs, 1, rng, function () {rsa.q.subtract(BigInteger.ONE).gcda(ee, function (r) {if (r.compareTo(BigInteger.ONE) 0 && rsa.q.isProbablePrime(10)) {setTimeout(loop4, 0);}else {setTimeout(loop3, 0);}});});};var loop2 function () {rsa.p nbi();rsa.p.fromNumberAsync(B - qs, 1, rng, function () {rsa.p.subtract(BigInteger.ONE).gcda(ee, function (r) {if (r.compareTo(BigInteger.ONE) 0 && rsa.p.isProbablePrime(10)) {setTimeout(loop3, 0);}else {setTimeout(loop2, 0);}});});};setTimeout(loop2, 0);};setTimeout(loop1, 0);};RSAKey.prototype.sign function (text, digestMethod, digestName) {var header getDigestHeader(digestName);var digest header + digestMethod(text).toString();var m pkcs1pad1(digest, this.n.bitLength() / 4);if (m null) {return null;}var c this.doPrivate(m);if (c null) {return null;}var h c.toString(16);if ((h.length & 1) 0) {return h;}else {return 0 + h;}};RSAKey.prototype.verify function (text, signature, digestMethod) {var c parseBigInt(signature, 16);var m this.doPublic(c);if (m null) {return null;}var unpadded m.toString(16).replace(/^1f+00/, );var digest removeDigestHeader(unpadded);return digest digestMethod(text).toString();};return RSAKey;}());function pkcs1unpad2(d, n) {var b d.toByteArray();var i 0;while (i b.length && bi 0) {++i;}if (b.length - i ! n - 1 || bi ! 2) {return null;}++i;while (bi ! 0) {if (++i > b.length) {return null;}}var ret ;while (++i b.length) {var c bi & 255;if (c 128) { // utf-8 decoderet + String.fromCharCode(c);}else if ((c > 191) && (c 224)) {ret + String.fromCharCode(((c & 31) 6) | (bi + 1 & 63));++i;}else {ret + String.fromCharCode(((c & 15) 12) | ((bi + 1 & 63) 6) | (bi + 2 & 63));i + 2;}}return ret;}var DIGEST_HEADERS {md2: 3020300c06082a864886f70d020205000410,md5: 3020300c06082a864886f70d020505000410,sha1: 3021300906052b0e03021a05000414,sha224: 302d300d06096086480165030402040500041c,sha256: 3031300d060960864801650304020105000420,sha384: 3041300d060960864801650304020205000430,sha512: 3051300d060960864801650304020305000440,ripemd160: 3021300906052b2403020105000414,};function getDigestHeader(name) {return DIGEST_HEADERSname || ;}function removeDigestHeader(str) {for (var name_1 in DIGEST_HEADERS) {if (DIGEST_HEADERS.hasOwnProperty(name_1)) {var header DIGEST_HEADERSname_1;var len header.length;if (str.substr(0, len) header) {return str.substr(len);}}}return str;}/*!Copyright (c) 2011, Yahoo! Inc. All rights reserved.Code licensed under the BSD License:http://developer.yahoo.com/yui/license.htmlversion: 2.9.0*/var YAHOO {};YAHOO.lang {/*** Utility to set up the prototype, constructor and superclass properties to* support an inheritance strategy that can chain constructors and methods.* Static members will not be inherited.** @method extend* @static* @param {Function} subc the object to modify* @param {Function} superc the object to inherit* @param {Object} overrides additional properties/methods to add to the* subclass prototype. These will override the* matching items obtained from the superclass* if present.*/extend: function(subc, superc, overrides) {if (! superc || ! subc) {throw new Error(YAHOO.lang.extend failed, please check that +all dependencies are included.);}var F function() {};F.prototype superc.prototype;subc.prototype new F();subc.prototype.constructor subc;subc.superclass superc.prototype;if (superc.prototype.constructor Object.prototype.constructor) {superc.prototype.constructor superc;}if (overrides) {var i;for (i in overrides) {subc.prototypei overridesi;}/** IE will not enumerate native functions in a derived object even if the* function was overridden. This is a workaround for specific functions* we care about on the Object prototype.* @property _IEEnumFix* @param {Function} r the object to receive the augmentation* @param {Function} s the object that supplies the properties to augment* @static* @private*/var _IEEnumFix function() {},ADD toString, valueOf;try {if (/MSIE/.test(navigator.userAgent)) {_IEEnumFix function(r, s) {for (i 0; i ADD.length; i i + 1) {var fname ADDi, f sfname;if (typeof f function && f ! Object.prototypefname) {rfname f;}}};}} catch (ex) {} _IEEnumFix(subc.prototype, overrides);}}};/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license*//*** @fileOverview* @name asn1-1.0.js* @author Kenji Urushima kenji.urushima@gmail.com* @version asn1 1.0.13 (2017-Jun-02)* @since jsrsasign 2.1* @license a hrefhttps://kjur.github.io/jsrsasign/license/>MIT License/a>*//*** kjurs class library name space* p>* This name space provides following name spaces:* ul>* li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder/li>* li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL/li>* li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature* class and utilities/li>* /ul>* /p>* NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.* @name KJUR* @namespace kjurs class library name space*/var KJUR {};/*** kjurs ASN.1 class library name space* p>* This is ITU-T X.690 ASN.1 DER encoder class library and* class structure and methods is very similar to* org.bouncycastle.asn1 package of* well known BouncyCaslte Cryptography Library.* h4>PROVIDING ASN.1 PRIMITIVES/h4>* Here are ASN.1 DER primitive classes.* ul>* li>0x01 {@link KJUR.asn1.DERBoolean}/li>* li>0x02 {@link KJUR.asn1.DERInteger}/li>* li>0x03 {@link KJUR.asn1.DERBitString}/li>* li>0x04 {@link KJUR.asn1.DEROctetString}/li>* li>0x05 {@link KJUR.asn1.DERNull}/li>* li>0x06 {@link KJUR.asn1.DERObjectIdentifier}/li>* li>0x0a {@link KJUR.asn1.DEREnumerated}/li>* li>0x0c {@link KJUR.asn1.DERUTF8String}/li>* li>0x12 {@link KJUR.asn1.DERNumericString}/li>* li>0x13 {@link KJUR.asn1.DERPrintableString}/li>* li>0x14 {@link KJUR.asn1.DERTeletexString}/li>* li>0x16 {@link KJUR.asn1.DERIA5String}/li>* li>0x17 {@link KJUR.asn1.DERUTCTime}/li>* li>0x18 {@link KJUR.asn1.DERGeneralizedTime}/li>* li>0x30 {@link KJUR.asn1.DERSequence}/li>* li>0x31 {@link KJUR.asn1.DERSet}/li>* /ul>* h4>OTHER ASN.1 CLASSES/h4>* ul>* li>{@link KJUR.asn1.ASN1Object}/li>* li>{@link KJUR.asn1.DERAbstractString}/li>* li>{@link KJUR.asn1.DERAbstractTime}/li>* li>{@link KJUR.asn1.DERAbstractStructured}/li>* li>{@link KJUR.asn1.DERTaggedObject}/li>* /ul>* h4>SUB NAME SPACES/h4>* ul>* li>{@link KJUR.asn1.cades} - CAdES long term signature format/li>* li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax/li>* li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)/li>* li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format/li>* li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL/li>* /ul>* /p>* NOTE: Please ignore method summary and document of this namespace.* This caused by a bug of jsdoc2.* @name KJUR.asn1* @namespace*/if (typeof KJUR.asn1 undefined || !KJUR.asn1) KJUR.asn1 {};/*** ASN1 utilities class* @name KJUR.asn1.ASN1Util* @class ASN1 utilities class* @since asn1 1.0.2*/KJUR.asn1.ASN1Util new function() {this.integerToByteHex function(i) {var h i.toString(16);if ((h.length % 2) 1) h 0 + h;return h;};this.bigIntToMinTwosComplementsHex function(bigIntegerValue) {var h bigIntegerValue.toString(16);if (h.substr(0, 1) ! -) {if (h.length % 2 1) {h 0 + h;} else {if (! h.match(/^0-7/)) {h 00 + h;}}} else {var hPos h.substr(1);var xorLen hPos.length;if (xorLen % 2 1) {xorLen + 1;} else {if (! h.match(/^0-7/)) {xorLen + 2;}}var hMask ;for (var i 0; i xorLen; i++) {hMask + f;}var biMask new BigInteger(hMask, 16);var biNeg biMask.xor(bigIntegerValue).add(BigInteger.ONE);h biNeg.toString(16).replace(/^-/, );}return h;};/*** get PEM string from hexadecimal data and header string* @name getPEMStringFromHex* @memberOf KJUR.asn1.ASN1Util* @function* @param {String} dataHex hexadecimal string of PEM body* @param {String} pemHeader PEM header string (ex. RSA PRIVATE KEY)* @return {String} PEM formatted string of input data* @description* This method converts a hexadecimal string to a PEM string with* a specified header. Its line break will be CRLF(\r\n).* @example* var pem KJUR.asn1.ASN1Util.getPEMStringFromHex(616161, RSA PRIVATE KEY);* // value of pem will be:* -----BEGIN PRIVATE KEY-----* YWFh* -----END PRIVATE KEY-----*/this.getPEMStringFromHex function(dataHex, pemHeader) {return hextopem(dataHex, pemHeader);};/*** generate ASN1Object specifed by JSON parameters* @name newObject* @memberOf KJUR.asn1.ASN1Util* @function* @param {Array} param JSON parameter to generate ASN1Object* @return {KJUR.asn1.ASN1Object} generated object* @since asn1 1.0.3* @description* generate any ASN1Object specified by JSON param* including ASN.1 primitive or structured.* Generally param can be described as follows:* blockquote>* {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}* /blockquote>* TYPE-OF-ASN1OBJ can be one of following symbols:* ul>* li>bool - DERBoolean/li>* li>int - DERInteger/li>* li>bitstr - DERBitString/li>* li>octstr - DEROctetString/li>* li>null - DERNull/li>* li>oid - DERObjectIdentifier/li>* li>enum - DEREnumerated/li>* li>utf8str - DERUTF8String/li>* li>numstr - DERNumericString/li>* li>prnstr - DERPrintableString/li>* li>telstr - DERTeletexString/li>* li>ia5str - DERIA5String/li>* li>utctime - DERUTCTime/li>* li>gentime - DERGeneralizedTime/li>* li>seq - DERSequence/li>* li>set - DERSet/li>* li>tag - DERTaggedObject/li>* /ul>* @example* newObject({prnstr: aaa});* newObject({seq: {int: 3}, {prnstr: aaa}})* // ASN.1 Tagged Object* newObject({tag: {tag: a1,* explicit: true,* obj: {seq: {int: 3}, {prnstr: aaa}}}});* // more simple representation of ASN.1 Tagged Object* newObject({tag: a1,* true,* {seq: * {int: 3},* {prnstr: aaa}}* });*/this.newObject function(param) {var _KJUR KJUR,_KJUR_asn1 _KJUR.asn1,_DERBoolean _KJUR_asn1.DERBoolean,_DERInteger _KJUR_asn1.DERInteger,_DERBitString _KJUR_asn1.DERBitString,_DEROctetString _KJUR_asn1.DEROctetString,_DERNull _KJUR_asn1.DERNull,_DERObjectIdentifier _KJUR_asn1.DERObjectIdentifier,_DEREnumerated _KJUR_asn1.DEREnumerated,_DERUTF8String _KJUR_asn1.DERUTF8String,_DERNumericString _KJUR_asn1.DERNumericString,_DERPrintableString _KJUR_asn1.DERPrintableString,_DERTeletexString _KJUR_asn1.DERTeletexString,_DERIA5String _KJUR_asn1.DERIA5String,_DERUTCTime _KJUR_asn1.DERUTCTime,_DERGeneralizedTime _KJUR_asn1.DERGeneralizedTime,_DERSequence _KJUR_asn1.DERSequence,_DERSet _KJUR_asn1.DERSet,_DERTaggedObject _KJUR_asn1.DERTaggedObject,_newObject _KJUR_asn1.ASN1Util.newObject;var keys Object.keys(param);if (keys.length ! 1)throw key of param shall be only one.;var key keys0;if (:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:.indexOf(: + key + :) -1)throw undefined key: + key;if (key bool) return new _DERBoolean(paramkey);if (key int) return new _DERInteger(paramkey);if (key bitstr) return new _DERBitString(paramkey);if (key octstr) return new _DEROctetString(paramkey);if (key null) return new _DERNull(paramkey);if (key oid) return new _DERObjectIdentifier(paramkey);if (key enum) return new _DEREnumerated(paramkey);if (key utf8str) return new _DERUTF8String(paramkey);if (key numstr) return new _DERNumericString(paramkey);if (key prnstr) return new _DERPrintableString(paramkey);if (key telstr) return new _DERTeletexString(paramkey);if (key ia5str) return new _DERIA5String(paramkey);if (key utctime) return new _DERUTCTime(paramkey);if (key gentime) return new _DERGeneralizedTime(paramkey);if (key seq) {var paramList paramkey;var a ;for (var i 0; i paramList.length; i++) {var asn1Obj _newObject(paramListi);a.push(asn1Obj);}return new _DERSequence({array: a});}if (key set) {var paramList paramkey;var a ;for (var i 0; i paramList.length; i++) {var asn1Obj _newObject(paramListi);a.push(asn1Obj);}return new _DERSet({array: a});}if (key tag) {var tagParam paramkey;if (Object.prototype.toString.call(tagParam) object Array &&tagParam.length 3) {var obj _newObject(tagParam2);return new _DERTaggedObject({tag: tagParam0,explicit: tagParam1,obj: obj});} else {var newParam {};if (tagParam.explicit ! undefined)newParam.explicit tagParam.explicit;if (tagParam.tag ! undefined)newParam.tag tagParam.tag;if (tagParam.obj undefined)throw obj shall be specified for tag.;newParam.obj _newObject(tagParam.obj);return new _DERTaggedObject(newParam);}}};/*** get encoded hexadecimal string of ASN1Object specifed by JSON parameters* @name jsonToASN1HEX* @memberOf KJUR.asn1.ASN1Util* @function* @param {Array} param JSON parameter to generate ASN1Object* @return hexadecimal string of ASN1Object* @since asn1 1.0.4* @description* As for ASN.1 object representation of JSON object,* please see {@link newObject}.* @example* jsonToASN1HEX({prnstr: aaa});*/this.jsonToASN1HEX function(param) {var asn1Obj this.newObject(param);return asn1Obj.getEncodedHex();};};/*** get dot noted oid number string from hexadecimal value of OID* @name oidHexToInt* @memberOf KJUR.asn1.ASN1Util* @function* @param {String} hex hexadecimal value of object identifier* @return {String} dot noted string of object identifier* @since jsrsasign 4.8.3 asn1 1.0.7* @description* This static method converts from hexadecimal string representation of* ASN.1 value of object identifier to oid number string.* @example* KJUR.asn1.ASN1Util.oidHexToInt(550406) → 2.5.4.6*/KJUR.asn1.ASN1Util.oidHexToInt function(hex) {var s ;var i01 parseInt(hex.substr(0, 2), 16);var i0 Math.floor(i01 / 40);var i1 i01 % 40;var s i0 + . + i1;var binbuf ;for (var i 2; i hex.length; i + 2) {var value parseInt(hex.substr(i, 2), 16);var bin (00000000 + value.toString(2)).slice(- 8);binbuf binbuf + bin.substr(1, 7);if (bin.substr(0, 1) 0) {var bi new BigInteger(binbuf, 2);s s + . + bi.toString(10);binbuf ;}}return s;};/*** get hexadecimal value of object identifier from dot noted oid value* @name oidIntToHex* @memberOf KJUR.asn1.ASN1Util* @function* @param {String} oidString dot noted string of object identifier* @return {String} hexadecimal value of object identifier* @since jsrsasign 4.8.3 asn1 1.0.7* @description* This static method converts from object identifier value string.* to hexadecimal string representation of it.* @example* KJUR.asn1.ASN1Util.oidIntToHex(2.5.4.6) → 550406*/KJUR.asn1.ASN1Util.oidIntToHex function(oidString) {var itox function(i) {var h i.toString(16);if (h.length 1) h 0 + h;return h;};var roidtox function(roid) {var h ;var bi new BigInteger(roid, 10);var b bi.toString(2);var padLen 7 - b.length % 7;if (padLen 7) padLen 0;var bPad ;for (var i 0; i padLen; i++) bPad + 0;b bPad + b;for (var i 0; i b.length - 1; i + 7) {var b8 b.substr(i, 7);if (i ! b.length - 7) b8 1 + b8;h + itox(parseInt(b8, 2));}return h;};if (! oidString.match(/^0-9.+$/)) {throw malformed oid string: + oidString;}var h ;var a oidString.split(.);var i0 parseInt(a0) * 40 + parseInt(a1);h + itox(i0);a.splice(0, 2);for (var i 0; i a.length; i++) {h + roidtox(ai);}return h;};/*** base class for ASN.1 DER encoder object* @name KJUR.asn1.ASN1Object* @class base class for ASN.1 DER encoder object* @property {Boolean} isModified flag whether internal data was changed* @property {String} hTLV hexadecimal string of ASN.1 TLV* @property {String} hT hexadecimal string of ASN.1 TLV tag(T)* @property {String} hL hexadecimal string of ASN.1 TLV length(L)* @property {String} hV hexadecimal string of ASN.1 TLV value(V)* @description*/KJUR.asn1.ASN1Object function() {var hV ;/*** get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)* @name getLengthHexFromValue* @memberOf KJUR.asn1.ASN1Object#* @function* @return {String} hexadecimal string of ASN.1 TLV length(L)*/this.getLengthHexFromValue function() {if (typeof this.hV undefined || this.hV null) {throw this.hV is null or undefined.;}if (this.hV.length % 2 1) {throw value hex must be even length: n + hV.length + ,v + this.hV;}var n this.hV.length / 2;var hN n.toString(16);if (hN.length % 2 1) {hN 0 + hN;}if (n 128) {return hN;} else {var hNlen hN.length / 2;if (hNlen > 15) {throw ASN.1 length too long to represent by 8x: n + n.toString(16);}var head 128 + hNlen;return head.toString(16) + hN;}};/*** get hexadecimal string of ASN.1 TLV bytes* @name getEncodedHex* @memberOf KJUR.asn1.ASN1Object#* @function* @return {String} hexadecimal string of ASN.1 TLV*/this.getEncodedHex function() {if (this.hTLV null || this.isModified) {this.hV this.getFreshValueHex();this.hL this.getLengthHexFromValue();this.hTLV this.hT + this.hL + this.hV;this.isModified false;}return this.hTLV;};/*** get hexadecimal string of ASN.1 TLV value(V) bytes* @name getValueHex* @memberOf KJUR.asn1.ASN1Object#* @function* @return {String} hexadecimal string of ASN.1 TLV value(V) bytes*/this.getValueHex function() {this.getEncodedHex();return this.hV;};this.getFreshValueHex function() {return ;};};/*** base class for ASN.1 DER string classes* @name KJUR.asn1.DERAbstractString* @class base class for ASN.1 DER string classes* @param {Array} params associative array of parameters (ex. {str: aaa})* @property {String} s internal string of value* @extends KJUR.asn1.ASN1Object* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>str - specify initial ASN.1 value(V) by a string/li>* li>hex - specify initial ASN.1 value(V) by a hexadecimal string/li>* /ul>* NOTE: params can be omitted.*/KJUR.asn1.DERAbstractString function(params) {KJUR.asn1.DERAbstractString.superclass.constructor.call(this);/*** get string value of this string object* @name getString* @memberOf KJUR.asn1.DERAbstractString#* @function* @return {String} string value of this string object*/this.getString function() {return this.s;};/*** set value by a string* @name setString* @memberOf KJUR.asn1.DERAbstractString#* @function* @param {String} newS value by a string to set*/this.setString function(newS) {this.hTLV null;this.isModified true;this.s newS;this.hV stohex(this.s);};/*** set value by a hexadecimal string* @name setStringHex* @memberOf KJUR.asn1.DERAbstractString#* @function* @param {String} newHexString value by a hexadecimal string to set*/this.setStringHex function(newHexString) {this.hTLV null;this.isModified true;this.s null;this.hV newHexString;};this.getFreshValueHex function() {return this.hV;};if (typeof params ! undefined) {if (typeof params string) {this.setString(params);} else if (typeof paramsstr ! undefined) {this.setString(paramsstr);} else if (typeof paramshex ! undefined) {this.setStringHex(paramshex);}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);/*** base class for ASN.1 DER Generalized/UTCTime class* @name KJUR.asn1.DERAbstractTime* @class base class for ASN.1 DER Generalized/UTCTime class* @param {Array} params associative array of parameters (ex. {str: 130430235959Z})* @extends KJUR.asn1.ASN1Object* @description* @see KJUR.asn1.ASN1Object - superclass*/KJUR.asn1.DERAbstractTime function(params) {KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);this.localDateToUTC function(d) {utc d.getTime() + (d.getTimezoneOffset() * 60000);var utcDate new Date(utc);return utcDate;};/** format date string by Data object* @name formatDate* @memberOf KJUR.asn1.AbstractTime;* @param {Date} dateObject* @param {string} type utc or gen* @param {boolean} withMillis flag for with millisections or not* @description* withMillis flag is supported from asn1 1.0.6.*/this.formatDate function(dateObject, type, withMillis) {var pad this.zeroPadding;var d this.localDateToUTC(dateObject);var year String(d.getFullYear());if (type utc) year year.substr(2, 2);var month pad(String(d.getMonth() + 1), 2);var day pad(String(d.getDate()), 2);var hour pad(String(d.getHours()), 2);var min pad(String(d.getMinutes()), 2);var sec pad(String(d.getSeconds()), 2);var s year + month + day + hour + min + sec;if (withMillis true) {var millis d.getMilliseconds();if (millis ! 0) {var sMillis pad(String(millis), 3);sMillis sMillis.replace(/0+$/, );s s + . + sMillis;}}return s + Z;};this.zeroPadding function(s, len) {if (s.length > len) return s;return new Array(len - s.length + 1).join(0) + s;};/*** get string value of this string object* @name getString* @memberOf KJUR.asn1.DERAbstractTime#* @function* @return {String} string value of this time object*/this.getString function() {return this.s;};/*** set value by a string* @name setString* @memberOf KJUR.asn1.DERAbstractTime#* @function* @param {String} newS value by a string to set such like 130430235959Z*/this.setString function(newS) {this.hTLV null;this.isModified true;this.s newS;this.hV stohex(newS);};/*** set value by a Date object* @name setByDateValue* @memberOf KJUR.asn1.DERAbstractTime#* @function* @param {Integer} year year of date (ex. 2013)* @param {Integer} month month of date between 1 and 12 (ex. 12)* @param {Integer} day day of month* @param {Integer} hour hours of date* @param {Integer} min minutes of date* @param {Integer} sec seconds of date*/this.setByDateValue function(year, month, day, hour, min, sec) {var dateObject new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));this.setByDate(dateObject);};this.getFreshValueHex function() {return this.hV;};};YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);/*** base class for ASN.1 DER structured class* @name KJUR.asn1.DERAbstractStructured* @class base class for ASN.1 DER structured class* @property {Array} asn1Array internal array of ASN1Object* @extends KJUR.asn1.ASN1Object* @description* @see KJUR.asn1.ASN1Object - superclass*/KJUR.asn1.DERAbstractStructured function(params) {KJUR.asn1.DERAbstractString.superclass.constructor.call(this);/*** set value by array of ASN1Object* @name setByASN1ObjectArray* @memberOf KJUR.asn1.DERAbstractStructured#* @function* @param {array} asn1ObjectArray array of ASN1Object to set*/this.setByASN1ObjectArray function(asn1ObjectArray) {this.hTLV null;this.isModified true;this.asn1Array asn1ObjectArray;};/*** append an ASN1Object to internal array* @name appendASN1Object* @memberOf KJUR.asn1.DERAbstractStructured#* @function* @param {ASN1Object} asn1Object to add*/this.appendASN1Object function(asn1Object) {this.hTLV null;this.isModified true;this.asn1Array.push(asn1Object);};this.asn1Array new Array();if (typeof params ! undefined) {if (typeof paramsarray ! undefined) {this.asn1Array paramsarray;}}};YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER Boolean* @name KJUR.asn1.DERBoolean* @class class for ASN.1 DER Boolean* @extends KJUR.asn1.ASN1Object* @description* @see KJUR.asn1.ASN1Object - superclass*/KJUR.asn1.DERBoolean function() {KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT 01;this.hTLV 0101ff;};YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER Integer* @name KJUR.asn1.DERInteger* @class class for ASN.1 DER Integer* @extends KJUR.asn1.ASN1Object* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>int - specify initial ASN.1 value(V) by integer value/li>* li>bigint - specify initial ASN.1 value(V) by BigInteger object/li>* li>hex - specify initial ASN.1 value(V) by a hexadecimal string/li>* /ul>* NOTE: params can be omitted.*/KJUR.asn1.DERInteger function(params) {KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT 02;/*** set value by Tom Wus BigInteger object* @name setByBigInteger* @memberOf KJUR.asn1.DERInteger#* @function* @param {BigInteger} bigIntegerValue to set*/this.setByBigInteger function(bigIntegerValue) {this.hTLV null;this.isModified true;this.hV KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);};/*** set value by integer value* @name setByInteger* @memberOf KJUR.asn1.DERInteger* @function* @param {Integer} integer value to set*/this.setByInteger function(intValue) {var bi new BigInteger(String(intValue), 10);this.setByBigInteger(bi);};/*** set value by integer value* @name setValueHex* @memberOf KJUR.asn1.DERInteger#* @function* @param {String} hexadecimal string of integer value* @description* br/>* NOTE: Value shall be represented by minimum octet length of* twos complement representation.* @example* new KJUR.asn1.DERInteger(123);* new KJUR.asn1.DERInteger({int: 123});* new KJUR.asn1.DERInteger({hex: 1fad});*/this.setValueHex function(newHexString) {this.hV newHexString;};this.getFreshValueHex function() {return this.hV;};if (typeof params ! undefined) {if (typeof paramsbigint ! undefined) {this.setByBigInteger(paramsbigint);} else if (typeof paramsint ! undefined) {this.setByInteger(paramsint);} else if (typeof params number) {this.setByInteger(params);} else if (typeof paramshex ! undefined) {this.setValueHex(paramshex);}}};YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER encoded BitString primitive* @name KJUR.asn1.DERBitString* @class class for ASN.1 DER encoded BitString primitive* @extends KJUR.asn1.ASN1Object* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>bin - specify binary string (ex. 10111)/li>* li>array - specify array of boolean (ex. true,false,true,true)/li>* li>hex - specify hexadecimal string of ASN.1 value(V) including unused bits/li>* li>obj - specify {@link KJUR.asn1.ASN1Util.newObject}* argument for BitString encapsulates structure./li>* /ul>* NOTE1: params can be omitted.br/>* NOTE2: obj parameter have been supported since* asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).br/>* @example* // default constructor* o new KJUR.asn1.DERBitString();* // initialize with binary string* o new KJUR.asn1.DERBitString({bin: 1011});* // initialize with boolean array* o new KJUR.asn1.DERBitString({array: true,false,true,true});* // initialize with hexadecimal string (04 is unused bits)* o new KJUR.asn1.DEROctetString({hex: 04bac0});* // initialize with ASN1Util.newObject argument for encapsulated* o new KJUR.asn1.DERBitString({obj: {seq: {int: 3}, {prnstr: aaa}}});* // above generates a ASN.1 data like this:* // BIT STRING, encapsulates {* // SEQUENCE {* // INTEGER 3* // PrintableString aaa* // }* // }*/KJUR.asn1.DERBitString function(params) {if (params ! undefined && typeof params.obj ! undefined) {var o KJUR.asn1.ASN1Util.newObject(params.obj);params.hex 00 + o.getEncodedHex();}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT 03;/*** set ASN.1 value(V) by a hexadecimal string including unused bits* @name setHexValueIncludingUnusedBits* @memberOf KJUR.asn1.DERBitString#* @function* @param {String} newHexStringIncludingUnusedBits*/this.setHexValueIncludingUnusedBits function(newHexStringIncludingUnusedBits) {this.hTLV null;this.isModified true;this.hV newHexStringIncludingUnusedBits;};/*** set ASN.1 value(V) by unused bit and hexadecimal string of value* @name setUnusedBitsAndHexValue* @memberOf KJUR.asn1.DERBitString#* @function* @param {Integer} unusedBits* @param {String} hValue*/this.setUnusedBitsAndHexValue function(unusedBits, hValue) {if (unusedBits 0 || 7 unusedBits) {throw unused bits shall be from 0 to 7: u + unusedBits;}var hUnusedBits 0 + unusedBits;this.hTLV null;this.isModified true;this.hV hUnusedBits + hValue;};/*** set ASN.1 DER BitString by binary stringbr/>* @name setByBinaryString* @memberOf KJUR.asn1.DERBitString#* @function* @param {String} binaryString binary value string (i.e. 10111)* @description* Its unused bits will be calculated automatically by length of* binaryValue. br/>* NOTE: Trailing zeros 0 will be ignored.* @example* o new KJUR.asn1.DERBitString();* o.setByBooleanArray(01011);*/this.setByBinaryString function(binaryString) {binaryString binaryString.replace(/0+$/, );var unusedBits 8 - binaryString.length % 8;if (unusedBits 8) unusedBits 0;for (var i 0; i unusedBits; i++) {binaryString + 0;}var h ;for (var i 0; i binaryString.length - 1; i + 8) {var b binaryString.substr(i, 8);var x parseInt(b, 2).toString(16);if (x.length 1) x 0 + x;h + x;}this.hTLV null;this.isModified true;this.hV 0 + unusedBits + h;};/*** set ASN.1 TLV value(V) by an array of booleanbr/>* @name setByBooleanArray* @memberOf KJUR.asn1.DERBitString#* @function* @param {array} booleanArray array of boolean (ex. true, false, true)* @description* NOTE: Trailing falses will be ignored in the ASN.1 DER Object.* @example* o new KJUR.asn1.DERBitString();* o.setByBooleanArray(false, true, false, true, true);*/this.setByBooleanArray function(booleanArray) {var s ;for (var i 0; i booleanArray.length; i++) {if (booleanArrayi true) {s + 1;} else {s + 0;}}this.setByBinaryString(s);};/*** generate an array of falses with specified lengthbr/>* @name newFalseArray* @memberOf KJUR.asn1.DERBitString* @function* @param {Integer} nLength length of array to generate* @return {array} array of boolean falses* @description* This static method may be useful to initialize boolean array.* @example* o new KJUR.asn1.DERBitString();* o.newFalseArray(3) → false, false, false*/this.newFalseArray function(nLength) {var a new Array(nLength);for (var i 0; i nLength; i++) {ai false;}return a;};this.getFreshValueHex function() {return this.hV;};if (typeof params ! undefined) {if (typeof params string && params.toLowerCase().match(/^0-9a-f+$/)) {this.setHexValueIncludingUnusedBits(params);} else if (typeof paramshex ! undefined) {this.setHexValueIncludingUnusedBits(paramshex);} else if (typeof paramsbin ! undefined) {this.setByBinaryString(paramsbin);} else if (typeof paramsarray ! undefined) {this.setByBooleanArray(paramsarray);}}};YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER OctetStringbr/>* @name KJUR.asn1.DEROctetString* @class class for ASN.1 DER OctetString* @param {Array} params associative array of parameters (ex. {str: aaa})* @extends KJUR.asn1.DERAbstractString* @description* This class provides ASN.1 OctetString simple type.br/>* Supported params attributes are:* ul>* li>str - to set a string as a value/li>* li>hex - to set a hexadecimal string as a value/li>* li>obj - to set a encapsulated ASN.1 value by JSON object* which is defined in {@link KJUR.asn1.ASN1Util.newObject}/li>* /ul>* NOTE: A parameter obj have been supported* for OCTET STRING, encapsulates structure.* since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).* @see KJUR.asn1.DERAbstractString - superclass* @example* // default constructor* o new KJUR.asn1.DEROctetString();* // initialize with string* o new KJUR.asn1.DEROctetString({str: aaa});* // initialize with hexadecimal string* o new KJUR.asn1.DEROctetString({hex: 616161});* // initialize with ASN1Util.newObject argument* o new KJUR.asn1.DEROctetString({obj: {seq: {int: 3}, {prnstr: aaa}}});* // above generates a ASN.1 data like this:* // OCTET STRING, encapsulates {* // SEQUENCE {* // INTEGER 3* // PrintableString aaa* // }* // }*/KJUR.asn1.DEROctetString function(params) {if (params ! undefined && typeof params.obj ! undefined) {var o KJUR.asn1.ASN1Util.newObject(params.obj);params.hex o.getEncodedHex();}KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);this.hT 04;};YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);/*** class for ASN.1 DER Null* @name KJUR.asn1.DERNull* @class class for ASN.1 DER Null* @extends KJUR.asn1.ASN1Object* @description* @see KJUR.asn1.ASN1Object - superclass*/KJUR.asn1.DERNull function() {KJUR.asn1.DERNull.superclass.constructor.call(this);this.hT 05;this.hTLV 0500;};YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER ObjectIdentifier* @name KJUR.asn1.DERObjectIdentifier* @class class for ASN.1 DER ObjectIdentifier* @param {Array} params associative array of parameters (ex. {oid: 2.5.4.5})* @extends KJUR.asn1.ASN1Object* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)/li>* li>hex - specify initial ASN.1 value(V) by a hexadecimal string/li>* /ul>* NOTE: params can be omitted.*/KJUR.asn1.DERObjectIdentifier function(params) {var itox function(i) {var h i.toString(16);if (h.length 1) h 0 + h;return h;};var roidtox function(roid) {var h ;var bi new BigInteger(roid, 10);var b bi.toString(2);var padLen 7 - b.length % 7;if (padLen 7) padLen 0;var bPad ;for (var i 0; i padLen; i++) bPad + 0;b bPad + b;for (var i 0; i b.length - 1; i + 7) {var b8 b.substr(i, 7);if (i ! b.length - 7) b8 1 + b8;h + itox(parseInt(b8, 2));}return h;};KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);this.hT 06;/*** set value by a hexadecimal string* @name setValueHex* @memberOf KJUR.asn1.DERObjectIdentifier#* @function* @param {String} newHexString hexadecimal value of OID bytes*/this.setValueHex function(newHexString) {this.hTLV null;this.isModified true;this.s null;this.hV newHexString;};/*** set value by a OID stringbr/>* @name setValueOidString* @memberOf KJUR.asn1.DERObjectIdentifier#* @function* @param {String} oidString OID string (ex. 2.5.4.13)* @example* o new KJUR.asn1.DERObjectIdentifier();* o.setValueOidString(2.5.4.13);*/this.setValueOidString function(oidString) {if (! oidString.match(/^0-9.+$/)) {throw malformed oid string: + oidString;}var h ;var a oidString.split(.);var i0 parseInt(a0) * 40 + parseInt(a1);h + itox(i0);a.splice(0, 2);for (var i 0; i a.length; i++) {h + roidtox(ai);}this.hTLV null;this.isModified true;this.s null;this.hV h;};/*** set value by a OID name* @name setValueName* @memberOf KJUR.asn1.DERObjectIdentifier#* @function* @param {String} oidName OID name (ex. serverAuth)* @since 1.0.1* @description* OID name shall be defined in KJUR.asn1.x509.OID.name2oidList.* Otherwise raise error.* @example* o new KJUR.asn1.DERObjectIdentifier();* o.setValueName(serverAuth);*/this.setValueName function(oidName) {var oid KJUR.asn1.x509.OID.name2oid(oidName);if (oid ! ) {this.setValueOidString(oid);} else {throw DERObjectIdentifier oidName undefined: + oidName;}};this.getFreshValueHex function() {return this.hV;};if (params ! undefined) {if (typeof params string) {if (params.match(/^0-2.0-9.+$/)) {this.setValueOidString(params);} else {this.setValueName(params);}} else if (params.oid ! undefined) {this.setValueOidString(params.oid);} else if (params.hex ! undefined) {this.setValueHex(params.hex);} else if (params.name ! undefined) {this.setValueName(params.name);}}};YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER Enumerated* @name KJUR.asn1.DEREnumerated* @class class for ASN.1 DER Enumerated* @extends KJUR.asn1.ASN1Object* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>int - specify initial ASN.1 value(V) by integer value/li>* li>hex - specify initial ASN.1 value(V) by a hexadecimal string/li>* /ul>* NOTE: params can be omitted.* @example* new KJUR.asn1.DEREnumerated(123);* new KJUR.asn1.DEREnumerated({int: 123});* new KJUR.asn1.DEREnumerated({hex: 1fad});*/KJUR.asn1.DEREnumerated function(params) {KJUR.asn1.DEREnumerated.superclass.constructor.call(this);this.hT 0a;/*** set value by Tom Wus BigInteger object* @name setByBigInteger* @memberOf KJUR.asn1.DEREnumerated#* @function* @param {BigInteger} bigIntegerValue to set*/this.setByBigInteger function(bigIntegerValue) {this.hTLV null;this.isModified true;this.hV KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);};/*** set value by integer value* @name setByInteger* @memberOf KJUR.asn1.DEREnumerated#* @function* @param {Integer} integer value to set*/this.setByInteger function(intValue) {var bi new BigInteger(String(intValue), 10);this.setByBigInteger(bi);};/*** set value by integer value* @name setValueHex* @memberOf KJUR.asn1.DEREnumerated#* @function* @param {String} hexadecimal string of integer value* @description* br/>* NOTE: Value shall be represented by minimum octet length of* twos complement representation.*/this.setValueHex function(newHexString) {this.hV newHexString;};this.getFreshValueHex function() {return this.hV;};if (typeof params ! undefined) {if (typeof paramsint ! undefined) {this.setByInteger(paramsint);} else if (typeof params number) {this.setByInteger(params);} else if (typeof paramshex ! undefined) {this.setValueHex(paramshex);}}};YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);/*** class for ASN.1 DER UTF8String* @name KJUR.asn1.DERUTF8String* @class class for ASN.1 DER UTF8String* @param {Array} params associative array of parameters (ex. {str: aaa})* @extends KJUR.asn1.DERAbstractString* @description* @see KJUR.asn1.DERAbstractString - superclass*/KJUR.asn1.DERUTF8String function(params) {KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);this.hT 0c;};YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);/*** class for ASN.1 DER NumericString* @name KJUR.asn1.DERNumericString* @class class for ASN.1 DER NumericString* @param {Array} params associative array of parameters (ex. {str: aaa})* @extends KJUR.asn1.DERAbstractString* @description* @see KJUR.asn1.DERAbstractString - superclass*/KJUR.asn1.DERNumericString function(params) {KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);this.hT 12;};YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);/*** class for ASN.1 DER PrintableString* @name KJUR.asn1.DERPrintableString* @class class for ASN.1 DER PrintableString* @param {Array} params associative array of parameters (ex. {str: aaa})* @extends KJUR.asn1.DERAbstractString* @description* @see KJUR.asn1.DERAbstractString - superclass*/KJUR.asn1.DERPrintableString function(params) {KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);this.hT 13;};YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);/*** class for ASN.1 DER TeletexString* @name KJUR.asn1.DERTeletexString* @class class for ASN.1 DER TeletexString* @param {Array} params associative array of parameters (ex. {str: aaa})* @extends KJUR.asn1.DERAbstractString* @description* @see KJUR.asn1.DERAbstractString - superclass*/KJUR.asn1.DERTeletexString function(params) {KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);this.hT 14;};YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);/*** class for ASN.1 DER IA5String* @name KJUR.asn1.DERIA5String* @class class for ASN.1 DER IA5String* @param {Array} params associative array of parameters (ex. {str: aaa})* @extends KJUR.asn1.DERAbstractString* @description* @see KJUR.asn1.DERAbstractString - superclass*/KJUR.asn1.DERIA5String function(params) {KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);this.hT 16;};YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);/*** class for ASN.1 DER UTCTime* @name KJUR.asn1.DERUTCTime* @class class for ASN.1 DER UTCTime* @param {Array} params associative array of parameters (ex. {str: 130430235959Z})* @extends KJUR.asn1.DERAbstractTime* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>str - specify initial ASN.1 value(V) by a string (ex.130430235959Z)/li>* li>hex - specify initial ASN.1 value(V) by a hexadecimal string/li>* li>date - specify Date object./li>* /ul>* NOTE: params can be omitted.* h4>EXAMPLES/h4>* @example* d1 new KJUR.asn1.DERUTCTime();* d1.setString(130430125959Z);** d2 new KJUR.asn1.DERUTCTime({str: 130430125959Z});* d3 new KJUR.asn1.DERUTCTime({date: new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});* d4 new KJUR.asn1.DERUTCTime(130430125959Z);*/KJUR.asn1.DERUTCTime function(params) {KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);this.hT 17;/*** set value by a Date objectbr/>* @name setByDate* @memberOf KJUR.asn1.DERUTCTime#* @function* @param {Date} dateObject Date object to set ASN.1 value(V)* @example* o new KJUR.asn1.DERUTCTime();* o.setByDate(new Date(2016/12/31));*/this.setByDate function(dateObject) {this.hTLV null;this.isModified true;this.date dateObject;this.s this.formatDate(this.date, utc);this.hV stohex(this.s);};this.getFreshValueHex function() {if (typeof this.date undefined && typeof this.s undefined) {this.date new Date();this.s this.formatDate(this.date, utc);this.hV stohex(this.s);}return this.hV;};if (params ! undefined) {if (params.str ! undefined) {this.setString(params.str);} else if (typeof params string && params.match(/^0-9{12}Z$/)) {this.setString(params);} else if (params.hex ! undefined) {this.setStringHex(params.hex);} else if (params.date ! undefined) {this.setByDate(params.date);}}};YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);/*** class for ASN.1 DER GeneralizedTime* @name KJUR.asn1.DERGeneralizedTime* @class class for ASN.1 DER GeneralizedTime* @param {Array} params associative array of parameters (ex. {str: 20130430235959Z})* @property {Boolean} withMillis flag to show milliseconds or not* @extends KJUR.asn1.DERAbstractTime* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>str - specify initial ASN.1 value(V) by a string (ex.20130430235959Z)/li>* li>hex - specify initial ASN.1 value(V) by a hexadecimal string/li>* li>date - specify Date object./li>* li>millis - specify flag to show milliseconds (from 1.0.6)/li>* /ul>* NOTE1: params can be omitted.* NOTE2: withMillis property is supported from asn1 1.0.6.*/KJUR.asn1.DERGeneralizedTime function(params) {KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);this.hT 18;this.withMillis false;/*** set value by a Date object* @name setByDate* @memberOf KJUR.asn1.DERGeneralizedTime#* @function* @param {Date} dateObject Date object to set ASN.1 value(V)* @example* When you specify UTC time, use Date.UTC method like this:br/>* o1 new DERUTCTime();* o1.setByDate(date);** date new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59*/this.setByDate function(dateObject) {this.hTLV null;this.isModified true;this.date dateObject;this.s this.formatDate(this.date, gen, this.withMillis);this.hV stohex(this.s);};this.getFreshValueHex function() {if (this.date undefined && this.s undefined) {this.date new Date();this.s this.formatDate(this.date, gen, this.withMillis);this.hV stohex(this.s);}return this.hV;};if (params ! undefined) {if (params.str ! undefined) {this.setString(params.str);} else if (typeof params string && params.match(/^0-9{14}Z$/)) {this.setString(params);} else if (params.hex ! undefined) {this.setStringHex(params.hex);} else if (params.date ! undefined) {this.setByDate(params.date);}if (params.millis true) {this.withMillis true;}}};YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);/*** class for ASN.1 DER Sequence* @name KJUR.asn1.DERSequence* @class class for ASN.1 DER Sequence* @extends KJUR.asn1.DERAbstractStructured* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>array - specify array of ASN1Object to set elements of content/li>* /ul>* NOTE: params can be omitted.*/KJUR.asn1.DERSequence function(params) {KJUR.asn1.DERSequence.superclass.constructor.call(this, params);this.hT 30;this.getFreshValueHex function() {var h ;for (var i 0; i this.asn1Array.length; i++) {var asn1Obj this.asn1Arrayi;h + asn1Obj.getEncodedHex();}this.hV h;return this.hV;};};YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);/*** class for ASN.1 DER Set* @name KJUR.asn1.DERSet* @class class for ASN.1 DER Set* @extends KJUR.asn1.DERAbstractStructured* @description* br/>* As for argument params for constructor, you can specify one of* following properties:* ul>* li>array - specify array of ASN1Object to set elements of content/li>* li>sortflag - flag for sort (default: true). ASN.1 BER is not sorted in SET OF./li>* /ul>* NOTE1: params can be omitted.br/>* NOTE2: sortflag is supported since 1.0.5.*/KJUR.asn1.DERSet function(params) {KJUR.asn1.DERSet.superclass.constructor.call(this, params);this.hT 31;this.sortFlag true; // item shall be sorted only in ASN.1 DERthis.getFreshValueHex function() {var a new Array();for (var i 0; i this.asn1Array.length; i++) {var asn1Obj this.asn1Arrayi;a.push(asn1Obj.getEncodedHex());}if (this.sortFlag true) a.sort();this.hV a.join();return this.hV;};if (typeof params ! undefined) {if (typeof params.sortflag ! undefined &¶ms.sortflag false)this.sortFlag false;}};YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);/*** class for ASN.1 DER TaggedObject* @name KJUR.asn1.DERTaggedObject* @class class for ASN.1 DER TaggedObject* @extends KJUR.asn1.ASN1Object* @description* br/>* Parameter tagNoNex is ASN.1 tag(T) value for this object.* For example, if you find 1 tag in a ASN.1 dump,* tagNoHex will be a1.* br/>* As for optional argument params for constructor, you can specify *ANY* of* following properties:* ul>* li>explicit - specify true if this is explicit tag otherwise false* (default is true)./li>* li>tag - specify tag (default is a0 which means 0)/li>* li>obj - specify ASN1Object which is tagged/li>* /ul>* @example* d1 new KJUR.asn1.DERUTF8String({str:a});* d2 new KJUR.asn1.DERTaggedObject({obj: d1});* hex d2.getEncodedHex();*/KJUR.asn1.DERTaggedObject function(params) {KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);this.hT a0;this.hV ;this.isExplicit true;this.asn1Object null;/*** set value by an ASN1Object* @name setString* @memberOf KJUR.asn1.DERTaggedObject#* @function* @param {Boolean} isExplicitFlag flag for explicit/implicit tag* @param {Integer} tagNoHex hexadecimal string of ASN.1 tag* @param {ASN1Object} asn1Object ASN.1 to encapsulate*/this.setASN1Object function(isExplicitFlag, tagNoHex, asn1Object) {this.hT tagNoHex;this.isExplicit isExplicitFlag;this.asn1Object asn1Object;if (this.isExplicit) {this.hV this.asn1Object.getEncodedHex();this.hTLV null;this.isModified true;} else {this.hV null;this.hTLV asn1Object.getEncodedHex();this.hTLV this.hTLV.replace(/^../, tagNoHex);this.isModified false;}};this.getFreshValueHex function() {return this.hV;};if (typeof params ! undefined) {if (typeof paramstag ! undefined) {this.hT paramstag;}if (typeof paramsexplicit ! undefined) {this.isExplicit paramsexplicit;}if (typeof paramsobj ! undefined) {this.asn1Object paramsobj;this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);}}};YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);/*** Create a new JSEncryptRSAKey that extends Tom Wus RSA key object.* This object is just a decorator for parsing the key parameter* @param {string|Object} key - The key in string format, or an object containing* the parameters needed to build a RSAKey object.* @constructor*/var JSEncryptRSAKey /** @class */ (function (_super) {__extends(JSEncryptRSAKey, _super);function JSEncryptRSAKey(key) {var _this _super.call(this) || this;if (key) {if (typeof key string) {_this.parseKey(key);}else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||JSEncryptRSAKey.hasPublicKeyProperty(key)) {_this.parsePropertiesFrom(key);}}return _this;}/*** Method to parse a pem encoded string containing both a public or private key.* The method will translate the pem encoded string in a der encoded string and* will parse private key and public key parameters. This method accepts public key* in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).** @todo Check how many rsa formats use the same format of pkcs #1.** The format is defined as:* PublicKeyInfo :: SEQUENCE {* algorithm AlgorithmIdentifier,* PublicKey BIT STRING* }* Where AlgorithmIdentifier is:* AlgorithmIdentifier :: SEQUENCE {* algorithm OBJECT IDENTIFIER, the OID of the enc algorithm* parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)* }* and PublicKey is a SEQUENCE encapsulated in a BIT STRING* RSAPublicKey :: SEQUENCE {* modulus INTEGER, -- n* publicExponent INTEGER -- e* }* its possible to examine the structure of the keys obtained from openssl using* an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/* @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer* @private*/JSEncryptRSAKey.prototype.parseKey function (pem) {try {var modulus 0;var public_exponent 0;var reHex /^\s*(?:0-9A-Fa-f0-9A-Fa-f\s*)+$/;var der reHex.test(pem) ? Hex.decode(pem) : Base64.unarmor(pem);var asn1 ASN1.decode(der);if (asn1.sub.length 3) {asn1 asn1.sub2.sub0;}if (asn1.sub.length 9) {modulus asn1.sub1.getHexStringValue(); // bigintthis.n parseBigInt(modulus, 16);public_exponent asn1.sub2.getHexStringValue(); // intthis.e parseInt(public_exponent, 16);var private_exponent asn1.sub3.getHexStringValue(); // bigintthis.d parseBigInt(private_exponent, 16);var prime1 asn1.sub4.getHexStringValue(); // bigintthis.p parseBigInt(prime1, 16);var prime2 asn1.sub5.getHexStringValue(); // bigintthis.q parseBigInt(prime2, 16);var exponent1 asn1.sub6.getHexStringValue(); // bigintthis.dmp1 parseBigInt(exponent1, 16);var exponent2 asn1.sub7.getHexStringValue(); // bigintthis.dmq1 parseBigInt(exponent2, 16);var coefficient asn1.sub8.getHexStringValue(); // bigintthis.coeff parseBigInt(coefficient, 16);}else if (asn1.sub.length 2) {var bit_string asn1.sub1;var sequence bit_string.sub0;modulus sequence.sub0.getHexStringValue();this.n parseBigInt(modulus, 16);public_exponent sequence.sub1.getHexStringValue();this.e parseInt(public_exponent, 16);}else {return false;}return true;}catch (ex) {return false;}};/*** Translate rsa parameters in a hex encoded string representing the rsa key.** The translation follow the ASN.1 notation :* RSAPrivateKey :: SEQUENCE {* version Version,* modulus INTEGER, -- n* publicExponent INTEGER, -- e* privateExponent INTEGER, -- d* prime1 INTEGER, -- p* prime2 INTEGER, -- q* exponent1 INTEGER, -- d mod (p1)* exponent2 INTEGER, -- d mod (q-1)* coefficient INTEGER, -- (inverse of q) mod p* }* @returns {string} DER Encoded String representing the rsa private key* @private*/JSEncryptRSAKey.prototype.getPrivateBaseKey function () {var options {array: new KJUR.asn1.DERInteger({ int: 0 }),new KJUR.asn1.DERInteger({ bigint: this.n }),new KJUR.asn1.DERInteger({ int: this.e }),new KJUR.asn1.DERInteger({ bigint: this.d }),new KJUR.asn1.DERInteger({ bigint: this.p }),new KJUR.asn1.DERInteger({ bigint: this.q }),new KJUR.asn1.DERInteger({ bigint: this.dmp1 }),new KJUR.asn1.DERInteger({ bigint: this.dmq1 }),new KJUR.asn1.DERInteger({ bigint: this.coeff })};var seq new KJUR.asn1.DERSequence(options);return seq.getEncodedHex();};/*** base64 (pem) encoded version of the DER encoded representation* @returns {string} pem encoded representation without header and footer* @public*/JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 function () {return hex2b64(this.getPrivateBaseKey());};/*** Translate rsa parameters in a hex encoded string representing the rsa public key.* The representation follow the ASN.1 notation :* PublicKeyInfo :: SEQUENCE {* algorithm AlgorithmIdentifier,* PublicKey BIT STRING* }* Where AlgorithmIdentifier is:* AlgorithmIdentifier :: SEQUENCE {* algorithm OBJECT IDENTIFIER, the OID of the enc algorithm* parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)* }* and PublicKey is a SEQUENCE encapsulated in a BIT STRING* RSAPublicKey :: SEQUENCE {* modulus INTEGER, -- n* publicExponent INTEGER -- e* }* @returns {string} DER Encoded String representing the rsa public key* @private*/JSEncryptRSAKey.prototype.getPublicBaseKey function () {var first_sequence new KJUR.asn1.DERSequence({array: new KJUR.asn1.DERObjectIdentifier({ oid: 1.2.840.113549.1.1.1 }),new KJUR.asn1.DERNull()});var second_sequence new KJUR.asn1.DERSequence({array: new KJUR.asn1.DERInteger({ bigint: this.n }),new KJUR.asn1.DERInteger({ int: this.e })});var bit_string new KJUR.asn1.DERBitString({hex: 00 + second_sequence.getEncodedHex()});var seq new KJUR.asn1.DERSequence({array: first_sequence,bit_string});return seq.getEncodedHex();};/*** base64 (pem) encoded version of the DER encoded representation* @returns {string} pem encoded representation without header and footer* @public*/JSEncryptRSAKey.prototype.getPublicBaseKeyB64 function () {return hex2b64(this.getPublicBaseKey());};/*** wrap the string in block of width chars. The default value for rsa keys is 64* characters.* @param {string} str the pem encoded string without header and footer* @param {Number} width64 - the length the string has to be wrapped at* @returns {string}* @private*/JSEncryptRSAKey.wordwrap function (str, width) {width width || 64;if (!str) {return str;}var regex (.{1, + width + })( +|$\n?)|(.{1, + width + });return str.match(RegExp(regex, g)).join(\n);};/*** Retrieve the pem encoded private key* @returns {string} the pem encoded private key with header/footer* @public*/JSEncryptRSAKey.prototype.getPrivateKey function () {var key -----BEGIN RSA PRIVATE KEY-----\n;key + JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \n;key + -----END RSA PRIVATE KEY-----;return key;};/*** Retrieve the pem encoded public key* @returns {string} the pem encoded public key with header/footer* @public*/JSEncryptRSAKey.prototype.getPublicKey function () {var key -----BEGIN PUBLIC KEY-----\n;key + JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \n;key + -----END PUBLIC KEY-----;return key;};/*** Check if the object contains the necessary parameters to populate the rsa modulus* and public exponent parameters.* @param {Object} obj{} - An object that may contain the two public key* parameters* @returns {boolean} true if the object contains both the modulus and the public exponent* properties (n and e)* @todo check for types of n and e. N should be a parseable bigInt object, E should* be a parseable integer number* @private*/JSEncryptRSAKey.hasPublicKeyProperty function (obj) {obj obj || {};return (obj.hasOwnProperty(n) &&obj.hasOwnProperty(e));};/*** Check if the object contains ALL the parameters of an RSA key.* @param {Object} obj{} - An object that may contain nine rsa key* parameters* @returns {boolean} true if the object contains all the parameters needed* @todo check for types of the parameters all the parameters but the public exponent* should be parseable bigint objects, the public exponent should be a parseable integer number* @private*/JSEncryptRSAKey.hasPrivateKeyProperty function (obj) {obj obj || {};return (obj.hasOwnProperty(n) &&obj.hasOwnProperty(e) &&obj.hasOwnProperty(d) &&obj.hasOwnProperty(p) &&obj.hasOwnProperty(q) &&obj.hasOwnProperty(dmp1) &&obj.hasOwnProperty(dmq1) &&obj.hasOwnProperty(coeff));};/*** Parse the properties of obj in the current rsa object. Obj should AT LEAST* include the modulus and public exponent (n, e) parameters.* @param {Object} obj - the object containing rsa parameters* @private*/JSEncryptRSAKey.prototype.parsePropertiesFrom function (obj) {this.n obj.n;this.e obj.e;if (obj.hasOwnProperty(d)) {this.d obj.d;this.p obj.p;this.q obj.q;this.dmp1 obj.dmp1;this.dmq1 obj.dmq1;this.coeff obj.coeff;}};return JSEncryptRSAKey;}(RSAKey));/**** @param {Object} options {} - An object to customize JSEncrypt behaviour* possible parameters are:* - default_key_size {number} default: 1024 the key size in bit* - default_public_exponent {string} default: 010001 the hexadecimal representation of the public exponent* - log {boolean} default: false whether log warn/error or not* @constructor*/var JSEncrypt /** @class */ (function () {function JSEncrypt(options) {options options || {};this.default_key_size parseInt(options.default_key_size, 10) || 1024;this.default_public_exponent options.default_public_exponent || 010001; // 65537 default openssl public exponent for rsa key typethis.log options.log || false;this.key null;}/*** Method to set the rsa key parameter (one method is enough to set both the public* and the private key, since the private key contains the public key paramenters)* Log a warning if logs are enabled* @param {Object|string} key the pem encoded string or an object (with or without header/footer)* @public*/JSEncrypt.prototype.setKey function (key) {if (this.log && this.key) {console.warn(A key was already set, overriding existing.);}this.key new JSEncryptRSAKey(key);};/*** Proxy method for setKey, for api compatibility* @see setKey* @public*/JSEncrypt.prototype.setPrivateKey function (privkey) {this.setKey(privkey);};/*** Proxy method for setKey, for api compatibility* @see setKey* @public*/JSEncrypt.prototype.setPublicKey function (pubkey) {this.setKey(pubkey);};/*** Proxy method for RSAKey objects decrypt, decrypt the string using the private* components of the rsa key object. Note that if the object was not set will be created* on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor* @param {string} str base64 encoded crypted string to decrypt* @return {string} the decrypted string* @public*/JSEncrypt.prototype.decrypt function (str) {try {return this.getKey().decrypt(b64tohex(str));}catch (ex) {return false;}};/*** Proxy method for RSAKey objects encrypt, encrypt the string using the public* components of the rsa key object. Note that if the object was not set will be created* on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor* @param {string} str the string to encrypt* @return {string} the encrypted string encoded in base64* @public*/JSEncrypt.prototype.encrypt function (str) {try {return hex2b64(this.getKey().encrypt(str));}catch (ex) {return false;}};/*** Proxy method for RSAKey objects sign.* @param {string} str the string to sign* @param {function} digestMethod hash method* @param {string} digestName the name of the hash algorithm* @return {string} the signature encoded in base64* @public*/JSEncrypt.prototype.sign function (str, digestMethod, digestName) {try {return hex2b64(this.getKey().sign(str, digestMethod, digestName));}catch (ex) {return false;}};/*** Proxy method for RSAKey objects verify.* @param {string} str the string to verify* @param {string} signature the signature encoded in base64 to compare the string to* @param {function} digestMethod hash method* @return {boolean} whether the data and signature match* @public*/JSEncrypt.prototype.verify function (str, signature, digestMethod) {try {return this.getKey().verify(str, b64tohex(signature), digestMethod);}catch (ex) {return false;}};/*** Getter for the current JSEncryptRSAKey object. If it doesnt exists a new object* will be created and returned* @param {callback} cb the callback to be called if we want the key to be generated* in an async fashion* @returns {JSEncryptRSAKey} the JSEncryptRSAKey object* @public*/JSEncrypt.prototype.getKey function (cb) {if (!this.key) {this.key new JSEncryptRSAKey();if (cb && {}.toString.call(cb) object Function) {this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);return;}this.key.generate(this.default_key_size, this.default_public_exponent);}return this.key;};/*** Returns the pem encoded representation of the private key* If the key doesnt exists a new key will be created* @returns {string} pem encoded representation of the private key WITH header and footer* @public*/JSEncrypt.prototype.getPrivateKey function () {return this.getKey().getPrivateKey();};/*** Returns the pem encoded representation of the private key* If the key doesnt exists a new key will be created* @returns {string} pem encoded representation of the private key WITHOUT header and footer* @public*/JSEncrypt.prototype.getPrivateKeyB64 function () {return this.getKey().getPrivateBaseKeyB64();};/*** Returns the pem encoded representation of the public key* If the key doesnt exists a new key will be created* @returns {string} pem encoded representation of the public key WITH header and footer* @public*/JSEncrypt.prototype.getPublicKey function () {return this.getKey().getPublicKey();};/*** Returns the pem encoded representation of the public key* If the key doesnt exists a new key will be created* @returns {string} pem encoded representation of the public key WITHOUT header and footer* @public*/JSEncrypt.prototype.getPublicKeyB64 function () {return this.getKey().getPublicBaseKeyB64();};JSEncrypt.version 3.0.0-rc.1;return JSEncrypt;}());window.JSEncrypt JSEncrypt;exports.JSEncrypt JSEncrypt;exports.default JSEncrypt;Object.defineProperty(exports, __esModule, { value: true });}))); //var ns_root window; var _j_document $(document); var _j_window $(window); function GetBrowserInfo() { var ua navigator.userAgent, tem, M ua.match(/(opera|chrome|safari|firefox|msie|trident(?\/))\/?\s*(\d+)/i) || ; if (/trident/i.test(M1)) { tem /\brv :+(\d+)/g.exec(ua) || ; return { name: IE, version: (tem1 || ) }; } if (M1 Chrome) { tem ua.match(/\bOPR\/(\d+)/); if (tem ! null) return { name: Opera, version: tem1 }; } M M2 ? M1, M2 : navigator.appName, navigator.appVersion, -?; if ((tem ua.match(/version\/(\d+)/i)) ! null) M.splice(1, 1, tem1); return { name: M0, version: M1 }; } //ns_root.GetBrowserInfo GetBrowserInfo; // ----------------------------------------------------------------- var browser_info GetBrowserInfo(); if (browser_info.name ! MSIE) { (function(ns_root) { var _root_namespace ns_root;/*!* JavaScript Cookie v2.0.4* https://github.com/js-cookie/js-cookie** Copyright 2006, 2015 Klaus Hartl & Fagner Brack* Released under the MIT license*/(function (factory) {if (typeof window.define function && window.define.amd) {window.define(factory);} else if (typeof exports object) {window.module.exports factory();} else {var old_cookies window.Cookies;var api window.Cookies factory();api.noConflict function () {window.Cookies old_cookies;return api;};}}(function () {function extend() {var i 0;var result {};for (; i arguments.length; i++) {var attributes argumentsi;for (var key in attributes) {resultkey attributeskey;}}return result;}function init(converter) {function set(key, value, attributes) {var result;attributes extend({path: /}, re.defaults, attributes);if (typeof attributes.expires number) {var expires new Date();expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);attributes.expires expires;}try {result JSON.stringify(value);if (/^\{\/.test(result)) {value result;}} catch (e) { }value encodeURIComponent(String(value));value value.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);key encodeURIComponent(String(key));key key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);key key.replace(/\(\)/g, window.escape);return (document.cookie key, , value,attributes.expires && ; expires + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IEattributes.path && ; path + attributes.path,attributes.domain && ; domain + attributes.domain,attributes.secure ? ; secure : .join());}function get(key, value, attributes) {var result;if (!key)result {};var cookies document.cookie ? document.cookie.split(; ) : ;var rdecode /(%0-9A-Z{2})+/g;var i 0;for (; i cookies.length; i++) {var parts cookiesi.split();var name parts0.replace(rdecode, decodeURIComponent);var cookie parts.slice(1).join();if (cookie.charAt(0) )cookie cookie.slice(1, -1);try {cookie converter && converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent);if (this.json) {try { cookie JSON.parse(cookie); }catch (e) { }}if (key name) {result cookie;break;}if (!key)resultname cookie;} catch (e) { }}return result;}var re {};re.get get;re.set set;re.getJSON function () {return re.apply({json: true}, .slice.call(arguments));};re.defaults {};re.remove function (key, attributes) {re(key, , extend(attributes, {expires: -1}));};re.withConverter init;return re;}return init();}));(function () {varfullScreenApi {supportsFullScreen: false,isFullScreen: function () { return false; },requestFullScreen: function () { },cancelFullScreen: function () { },fullScreenEventName: ,prefix: };var browserPrefixes webkit moz o ms khtml.split( );if (typeof document.cancelFullScreen ! undefined) {fullScreenApi.supportsFullScreen true;} else {for (var i 0, il browserPrefixes.length; i il; i++) {fullScreenApi.prefix browserPrefixesi;if (typeof documentfullScreenApi.prefix + CancelFullScreen ! undefined) {fullScreenApi.supportsFullScreen true;break;}}}if (fullScreenApi.supportsFullScreen) {fullScreenApi.fullScreenEventName fullScreenApi.prefix + fullscreenchange;fullScreenApi.isFullScreen function () {switch (this.prefix) {case :return document.fullScreen;case webkit:return document.webkitIsFullScreen;default:return documentthis.prefix + FullScreen;}};fullScreenApi.requestFullScreen function (el) {return (this.prefix ) ? el.requestFullScreen() : elthis.prefix + RequestFullScreen();};fullScreenApi.cancelFullScreen function (el) {return (this.prefix ) ? document.cancelFullScreen() : documentthis.prefix + CancelFullScreen();};}if (typeof window.jQuery ! undefined) {window.jQuery.fn.requestFullScreen function () {return this.each(function () {if (fullScreenApi.supportsFullScreen) {fullScreenApi.requestFullScreen(this);}});};}window.fullScreenApi fullScreenApi;})();var e document.getElementById(mainlogo);var b document.getElementById(body);e.onclick function () {if (RunPrefixMethod(document, FullScreen) || RunPrefixMethod(document, IsFullScreen)) {RunPrefixMethod(document, CancelFullScreen);}else {RunPrefixMethod(b, RequestFullScreen);}ToggleFullScreen();};function RunPrefixMethod(obj, method) {var pfx webkit, moz, ms, o, ;var p 0, m, t;while (p pfx.length && !objm) {m method;if (pfxp ) {m m.substr(0, 1).toLowerCase() + m.substr(1);}m pfxp + m;t typeof objm;if (t ! undefined) {pfx pfxp;return (t function ? objm() : objm);}p++;}}function HandleFullscreenEnter() {Log();$(.header).hide();$(#aside).hide();var cnt $(#content);cnt.css(left, 0);cnt.css(top, 0);_fullscreen true;}function HandleFullscreenExit() {Log();$(.header).show();$(#aside).show();var cnt $(#content);cnt.css(left, _g.Constants.SideMenuWidth + px);cnt.css(top, _g.Constants.MainHeaderHeight + 3 + px);_fullscreen false;}var _fullscreen false;function ToggleFullScreen() { ((_fullscreen false) ? HandleFullscreenEnter : HandleFullscreenExit)(); }function HandleFullscreenChange() {var fs window.fullScreenApi.isFullScreen();((fs) ? HandleFullscreenEnter : HandleFullscreenExit)();};document.addEventListener(fullscreenchange, HandleFullscreenChange, false);document.addEventListener(webkitfullscreenchange, HandleFullscreenChange, false);document.addEventListener(mozfullscreenchange, HandleFullscreenChange, false); // localfunction Defined(x) { return (typeof x ! undefined); }function EnsureDefined(x) {if (Defined(x) ! true) ThrowError();return x;}/** true if defined and not null */function HasValue(x) { return (Defined(x) true && null ! x); }/** true if defined and not null */ns_root.HasValue HasValue;function EnsureValue(x) {if (HasValue(x) ! true) ThrowError();return x;}function EnsureValues() {let array_argument IsArray(arguments0);if (array_argument true && arguments.length ! 1)ThrowError();let items array_argument ? arguments0 : arguments;for (let i 0; i items.length; ++i)if (HasValue(itemsi) ! true)return false;}function EnsureNumbers() {let array_argument IsArray(arguments0);if (array_argument true && arguments.length ! 1)ThrowError();let items array_argument ? arguments0 : arguments;for (let i 0; i items.length; ++i)if (HasValue(itemsi) ! true || window.isNaN(itemsi) true)return false;}function HasMembers(x) {if (HasValue(x) ! true || arguments.length 2)return false;let args Array.prototype.slice.call(arguments, 1);let items IsArray(args0) ? args0 : args;for (let i 0; i items.length; ++i)if (HasValue(xitemsi) ! true)return false;return true;}function EnsureMembers(x) {if (HasValue(x) ! true)ThrowError(Object not specified);if (arguments.length 2)ThrowError(At least two arguments expected);let args Array.prototype.slice.call(arguments, 1);let items IsArray(args0) ? args0 : args;for (let i 0; i items.length; ++i)if (HasValue(xitemsi) ! true)ThrowError();return x;}function IsFunc(fn) { return (HasValue(fn) true && (typeof fn function)); } // is there need for HasValue() here?function EnsureFunc(fn) {if (IsFunc(fn) ! true) ThrowError(Argument is not a function);return fn;}function IsJQuery(j) { return (j instanceof jQuery); } // || jquery in Object(obj);function IsArray(a) { return (HasValue(a) true && a.constructor Array); }function EnsureArray(a) {if (IsArray(a) ! true) ThrowError(Argument is not an array);return a;}function EnsureArrayOrDefault(a) {if (HasValue(a) ! true)return ;return EnsureArray(a);}function IsNumber(value) {if ((undefined value) || (null value) || value.length 1)return false;if (typeof value number) {return true;}return !isNaN(value - 0);}function EnsureNumber(n) {if (IsNumber(n) ! true) ThrowError();return n;}function IsInt(value) {if ((undefined value) || (null value) || value.length 1)return false;return (value % 1 0);}function EnsureInt(n) {if (IsInt(n) ! true) ThrowError();return n;}/** @returns {!*} */function EnsureIntOrDefault(n, m) {if (HasValue(n))return EnsureInt(n);return HasValue(m) ? EnsureInt(m) : 0;}function IsString(s) { return ((typeof s string) || (s instanceof String)); }function EnsureString(s) {if (IsString(s) ! true) ThrowError();return s;}function EnsureStringValue(s) {if (IsString(s) ! true|| s.length 1) ThrowError();return s;}function TrimEx(s) {return s.replace(/\x00-\x1F\x7F-\x9F/g, ).trim();}function LeadingZero2(arg) { return (0 + arg).slice(-2); }function LeadingZero3(arg) { return (00 + arg).slice(-3); }function Freeze(o) { return Object.freeze(o); }function Seal(o) { return Object.seal(o); }function DeleteArrayElems(a) {EnsureArray(a);for (let i 0; i a.length; ++i)delete ai;}function NoOp() { }function GetTime() {let dt new Date();return Fmt({0}:{1}:{2}.{3},LeadingZero2(dt.getHours()),LeadingZero2(dt.getMinutes()),LeadingZero2(dt.getSeconds()),LeadingZero3(dt.getMilliseconds()));}function TagTxt(text) { return document.createTextNode(text); }function TagSVG(tag) { return $(document.createElementNS(http://www.w3.org/2000/svg, tag)); }function Tag(tag_name, attrs, hotfix) {if (HasValue(tag_name) false || !IsString(tag_name) || tag_name.length 1)ThrowError(tag_name);let local_tag_name;if (tag_name0 $) {if (tag_name.length 2)return TagTxt(attrs);if (tag_name.length 3 && tag_name1 _ && IsNumber(tag_name2))return TagTxt(attrs);local_tag_name tag_name.substr(1);} else{ local_tag_name tag_name; }let re !hotfix ? $(document.createElement(local_tag_name)) : $(document.createElementNS(http://www.w3.org/2000/svg, local_tag_name));if (HasValue(attrs) false) return re;let props Object.getOwnPropertyNames(attrs);if (props.length 1) return re;let pass_attrs {};for (let i 0; i props.length; ++i) {let pname propsi;let pval attrspropsi;if (pname0 $) {let tail_idx pname.indexOf(_);if (tail_idx > 0)pname pname.substring(0, tail_idx);if (IsArray(pval)) {for (let pval_i 0; pval_i pval.length; ++pval_i)re.append(Tag(pname, pvalpval_i, hotfix));} else {re.append(Tag(pname, pval, hotfix));}} else if (pname.match(/^_0-9+$/)) {if (HasValue(pval)) {if (IsJQuery(pval))re.append(pval);elseThrowError(Not a jQuery object in numeric property);}} else if (pname style) {re.css(pval);} else if (pname _data) {re.data(pval.K, pval.V);} else {pass_attrspropsi attrspropsi;}}re.attr(pass_attrs);return re;}ns_root.Tag Tag;function test_Tag() {return Tag(div, {id: whatever,class: thatdiv,style: { margin-left: 0 },$: zz text,$span: { style: { width: auto }, $: abc },{ style: { width: auto }, $: abc },$div: {style: { background-color: #009 },$div: {$div: { }}},_2: null,_0: $(a)});}function CreateMouseEvent(x, y) { return Freeze($.Event(mousemove, { clientX: x, clientY: y })) }function GetScrollDirection(mouse_event) {return HasValue(mouse_event.originalEvent.wheelDelta)? (mouse_event.originalEvent.wheelDelta / 120 > 0): mouse_event.originalEvent.detail 0;}function DelayedCallFactory(fn, delay, ctx) {let timer null;let context HasValue(ctx) ? ctx : this;return function () {let args arguments;clearTimeout(timer);timer setTimeout(function () { fn.apply(context, args); }, delay);};}function Fit2(x_what, y_what, x_where, y_where) {let new_x, new_y;let what_ratio x_what / y_what;let diff_x x_what - x_where;let up diff_x 0;new_x x_where;new_y up? y_what + Math.abs(diff_x) / what_ratio: y_what - Math.abs(diff_x) / what_ratio;if (new_y > y_where) {what_ratio y_what / x_what;let diff_y y_what - y_where;up diff_y 0;new_y y_where;new_x up? x_what + Math.abs(diff_y) / what_ratio: x_what - Math.abs(diff_y) / what_ratio;}return { x: new_x, y: new_y };}function StopAllVideos() {Log1();_cell_controllers.Each(function (cc) { cc.StopVideo(); });}function StopAll() {Log1();if (window.stop ! undefined)window.stop();else if (document.execCommand ! undefined)document.execCommand(Stop, false);}function Guid() {function s4() { return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); }return s4();}function Round(f) { return Math.round(f * 100) / 100; }function InvokeCallbackArray(cb_array) {EnsureArray(cb_array);let pass_args null;if (arguments.length > 1)pass_args Array.prototype.slice.call(arguments, 1);for (let i 0; i cb_array.length; ++i) { // this is passed as-is here?try {cb_arrayi.apply(this, pass_args);}catch (err) {Log1(Trace(err));}}}function KeyByVal(o, n) {let re;$.each(Object.keys(o), function (k, v) {if (ov n) {re v;return false;}});return re;}function ValByKey(o, s) {let re;$.each(Object.keys(o), function (k, v) {if (v s) {re ov;return false;}});return re;}function GetOwnPropertyDescriptors(o) {let re new Array();let va Object.getOwnPropertyNames(o);$.each(va, function (k, v) { re.push(Object.getOwnPropertyDescriptor(o, v)); });return re;}function Pad(pad, str, pad_left) {if (typeof str undefined)return pad;return (pad_left)? (pad + str).slice(-pad.length): (str + pad).substring(0, pad.length);}function StartsWith(string, prefix) { return string.slice(0, prefix.length) prefix; }function Clone(obj) {let target {};for (let i in obj) { // Consider: Object.keysif (obj.hasOwnProperty(i))targeti obji;}return target;}function UnderscoreToCapital(x) {let re x.replace(/(_a-z)/g,function ($1) { return $1.toUpperCase().replace(_, ); });return re.charAt(0).toUpperCase() + re.slice(1);};function GetCellConfigName(cell_id) {return Fmt({0}__{1}, _app_config.CurrentLayoutName, cell_id);}function GetCurrentLayoutConfig() {if (!HasValue(_app_config))return new LayoutConfig(1_1, 1, 1);let re _app_config.LayoutManager.GetByName(_app_config.CurrentLayoutName);if (HasValue(re) false) re _app_config.LayoutManager.GetByName(1_1);return re;}function StatVideoElem(dom_elem_video) {Log5(video duration: {0}, buffered ranges: {1}, dom_elem_video.duration, dom_elem_video.buffered.length);for (let range_i 0; range_i dom_elem_video.buffered.length; ++range_i) {Log5({0}: from {1} to {2},range_i,dom_elem_video.buffered.start(range_i),dom_elem_video.buffered.end(range_i));}}function Escape(html) {let div document.createElement(div);let re div.appendChild(document.createTextNode(html)).parentNode.innerHTML;delete div;return re;}/*{var i src.length;var tmp new Array(i);while (i--) { this.Layoutsi stock_layoutsi; }}*/void function () {if (dispose in ArrayBuffer.prototype) return;let blob new Blob(, { type: text/javascript });let url URL.createObjectURL(blob);let worker new Worker(url);URL.revokeObjectURL(url);Object.defineProperty(ArrayBuffer.prototype, dispose, {writable: true,enumerable: false,value: function () {worker.postMessage(this, this);}});}();function FormatDateTime(datetime) { return datetime.toString().split(()0; }function DisposeVideoElem(elem) {if (HasValue(elem) false)return;Log1();if (elem.toString() BufferedVideo { }) {elem.Dispose();return;}let smth elem.data(event_state_object);if (HasValue(smth))smth.Deleted true;try { elem.stop(); } catch (e) { }try { elem0.pause(); } catch (e) { }try { elem0.src ; } catch (e) { }try { elem.remove(); } catch (e) { }delete elem;elem null;}function CSize(x, y) {var _X x;var _Y y;function GetX() { return _X; }function SetX(v) { _X v; }function GetY() { return _Y; }function SetY(v) { _Y v; }Object.defineProperties(this, {Width: { get: GetX, set: SetX, enumerable: true },Height: { get: GetY, set: SetY, enumerable: true },X: { get: GetX, set: SetX, enumerable: true },Y: { get: GetY, set: SetY, enumerable: true }});{Freeze(this);}}var _g Freeze({Colors: Freeze({StandoutHigh: #33b5e5,CellSelected: #222,CellStalled: #300,CellDefault: #000,DefaultBackground: #000}),Constants: Freeze({SideMenuWidth: 300,MainHeaderHeight: 40}),PtzCaps: Freeze({None: 0,Known: 1 1,PanTilt: 1 2,Zoom: 1 3,Focus: 1 4,AutoFocus: 1 5,Iris: 1 6,AutoIris: 1 7,OverwritePreset: 1 8,AddPreset: 1 9,RemovePreset: 1 10,ActivatePreset: 1 11}),PtzMode: Freeze({Selected: 1,Always: 2,Never: 3}),StreamMode: Freeze({Auto: 1,Main: 2,Sub: 3}),IsFirefox: navigator.userAgent.toLowerCase().indexOf(firefox) ! -1});var _Messages Freeze({Presets: Presets});function test_cb() {if (this.readyState XMLHttpRequest.HEADERS_RECEIVED)Log3(\n + this.getAllResponseHeaders());}function SetJson(x) { if (x && x.overrideMimeType) x.overrideMimeType(application/json); }function CallbackAdapterXhrToAjax(e, fn) { fn(e.target.response, e.target.statusText, e.target); }function AjaxCheck(cfg) {if (!HasValue(cfg.url))ThrowError(Empty url in ajax request);if (!HasValue(cfg.success) || !HasValue(cfg.error))Log5(Warn: Empty cb in ajax request);}function AjaxHelper(cb, cfg) {let fn_success cfg.success;let fn_error cfg.error;cfg.success HasValue(fn_success)? function AjaxHelperSuccess(e) { Log5(@); CallbackAdapterXhrToAjax(e, fn_success); }: null;cfg.error HasValue(fn_error)? function AjaxHelperError(e) { Log5(@); CallbackAdapterXhrToAjax(e, fn_error); }: null;}function Ajax(cb, cfg) {AjaxHelper(cb, cfg);AjaxRequestImpl(cb, $.extend({}, cfg, {complete: cb,timeout: 10000 * 6 * 3}));}function AjaxJson(cb, cfg) {AjaxHelper(cb, cfg);AjaxRequestImpl(cb, $.extend({}, cfg, {complete: cb,timeout: 10000 * 6 * 3,MimeType: application/json}));}ns_root.AjaxJson AjaxJson; // login pagefunction AjaxRequestImpl(cb, cfg) {AjaxCheck(cfg);let method HasValue(cfg.type) ? cfg.type : GET;if (!(method GET || method HEAD))ThrowError();let xhr new XMLHttpRequest;xhr.open(method, cfg.url);xhr.setRequestHeader(X-Connection, close);xhr.setRequestHeader(Streaming-Web-Ver, 1.4.0);if (HasValue(cfg.Authorize)){xhr.setRequestHeader(Authorization, cfg.Authorize);}if (HasValue(cfg.timeout))xhr.timeout cfg.timeout;if (HasValue(cfg.MimeType)) {xhr.overrideMimeType(cfg.Type);if (cfg.MimeType application/json)xhr.responseType json;}if (HasValue(cfg.Headers)) {if (IsArray(cfg.Headers) && cfg.Headers.length % 2 0) {for (let i 0; i cfg.Headers.length; i + 2) {xhr.setRequestHeader(cfg.Headersi, cfg.Headersi + 1);}}}if (HasValue(cfg.responseType))xhr.responseType cfg.responseType;xhr.onload cfg.success;xhr.onloadend cb;xhr.onreadystatechange function(e) {let serverObject cfg.ServerObject;if (2 xhr.readyState) { // && (xhr.status 401 || xhr.status 0)) {let token xhr.getResponseHeader(Evo-Token);if (HasValue(token)) {Log5(token);ns_root.AuthToken token;}}if (401 xhr.status) {if (HasValue(serverObject)) {serverObject.ResetDigestAuth();}}}xhr.send();}function GetHostFromUrl(url) {if (url.startsWith(http://)) {if (url.indexOf(/, 7) -1)url url + /;return url.substring(7, url.indexOf(/, 7));}else if (url.startsWith(https://)) {if (url.indexOf(/, 8) -1)url url + /;return url.substring(8, url.indexOf(/, 8));}}function CheckHostIPv4(x) {let p x.indexOf(:);if (p 0)ThrowError();let parts x.split(:);if (parts.length 2) {let port parseInt(parts1);let blocks parts0.split(.);if (blocks.length 4) {let have_blocks blocks.every(function (block) {return parseInt(block, 10) > 0 && parseInt(block, 10) 255;});return IsNumber(port) && have_blocks;}}return false;}function IsHttps() {return (location.protocol https:);}function HttpOrHttps() {return IsHttps() ? https: : http:;}var last_tipr_el null;var tipr_time Date.now();(function ($) {$.fn.tipr function (options) {var set $.extend({speed: 200,mode: bottom}, options);return this.each(function () {let tipr_cont .tipr_container_ + set.mode;$(this).hover(function () {if (last_tipr_el ! $(this)) {/*var now Date.now();if (now - tipr_time 1000)return;tipr_time now;*/let d_m set.mode;if ($(this).attr(data-mode)) {d_m $(this).attr(data-mode);tipr_cont .tipr_container_ + d_m;}let out div classtipr_container_+ d_m + >div classtipr_point_+ d_m + >div classtipr_content>+ $(this).attr(data-tip) + /div>/div>/div>;$(this).parent().append(out);let w_t $(tipr_cont).outerWidth();let w_e $(this).width();let m_l (w_e / 2) - (w_t / 2);let tc $(tipr_cont);tc.addClass(button2);tc.css({white-space: nowrap,z-index: 99,height: auto,margin: 2px,background-color: rgba(128, 128, 128, 0.5),margin-left: m_l + px,position: absolute,border: 1px solid #aaa});$(this).removeAttr(title alt);$(tipr_cont).fadeIn(set.speed);last_tipr_el $(this);}},function () {/*var now Date.now();if (now - tipr_time 1000)return;*/$(tipr_cont).remove();});});};})(jQuery);var VideoContentType new (function () {var _that this;this.Unknown 0;this.JPEG 1;this.MP4 2;this.WEBM 3;this.FromString function (s) {if (s.substring(0, 24) application/octet-stream || s.indexOf(image/jpeg) > -1) {return _that.JPEG;} else {if (s.indexOf(mp4) > -1) // video/mp4return _that.MP4;else if (s.indexOf(webm) > -1) // video/webmreturn _that.WEBM;elsereturn _that.Unknown;}}this.ToString function (n) {switch (n) {case _that.MP4: return mp4;case _that.WEBM: return webm;case _that.JPEG: return jpeg;default:case _that.Unknown: return Unknown;}}Freeze(this);})();function Fmt(format) {if (arguments.length 1)return format;var args Array.prototype.slice.call(arguments, 1);return format.replace(/{(\d+)}/g, function (match, number) {return Defined(argsnumber) ? argsnumber : match;});}ns_root.Fmt Fmt;function PrintableValue(item) {var skip_quote true;var override_name ;var printable;if (Defined(item)) {switch (typeof item) {case boolean:skip_quote true;break;case function:skip_quote true;override_name Fmt( (*){0}() , item.name);break;default:if (item instanceof Event) {override_name Event { type + item.type + };}else if (item instanceof jQuery.Event) {override_name jEvent { type + item.type + };}else if (item instanceof jQuery) {if (item.length 1)override_name Fmt({0}#{1}.{2}, item0.tagName, item0.id, item0.className);elseoverride_name jQuery { };}else if (item instanceof AppController) {}else if (IsArray(item)) {override_name ... ;skip_quote true;}else if (IsNumber(item)) {skip_quote true;}else {skip_quote false;}}if (!HasValue(item)) {printable null;skip_quote true;}if (override_name.length > 0) {printable override_name;}else {var item_txt HasValue(item) ? item.toString() : null;printable (item_txt.length > 64) ? item_txt.substr(0, 64 - 4) + ... : item_txt;}}else {printable undefined;skip_quote true;}if (IsNumber(printable)) {printable Round(printable);skip_quote true;}else if (printable.startsWith(object )) {printable printable.substring(8).slice(0, -1) + { };skip_quote true;}var quote (skip_quote) ? : ;return quote + printable + quote;}function CNA2(skip, x) {var tmp arguments.callee;if (!HasValue(tmp))throw new Error(arguments.callee seems to be unavailable);var re ;var local_skip HasValue(skip) ? skip : 1;var anon_func null;var i;for (i 0; i 15; ++i) {try { tmp tmp.caller; }catch (e) { continue; }if (i local_skip) continue;if (!HasValue(tmp) || !HasValue(tmp.name))break;if (tmp.name.length 1) {if (anon_func null)anon_func tmp;continue;}re + tmp.name;break;}if (HasValue(x))return re + (null ! anon_func ? λ : ) + (?);var tmp_args ;var tmp_args_object;if (null ! anon_func)tmp_args_object anon_func.arguments;elsetmp_args_object HasValue(tmp) ? tmp.arguments : ;for (i 0; i tmp_args_object.length; ++i) {var item tmp_args_objecti;tmp_args + PrintableValue(item) + , ;}if (tmp_args.length > 1)tmp_args tmp_args.slice(0, -2);if (re.length > 0 && null ! anon_func)re + : ;return re + (null ! anon_func ? λ : ) + ( + tmp_args + );}function ThrowError(message) {var msg HasValue(message) ? Fmt.apply(message, arguments) : ;var err new Error(Fmt(\n{0}: {1}, CNA2(1), msg)); // 1 frame offset by defaultvar stack err.stack || err.stackTrace;var lines stack.split(\n);if (StartsWith(stack, Err@)) {lines.splice(0, 1); //ff} else {lines.splice(2, 1);}var empty_idx lines.indexOf();if (empty_idx > 0) {lines.splice(empty_idx, 1);}var new_stack lines.join(\n, true);console.log(%c+ GetTime() + \n + new_stack, color: red);throw err;}function Trace(a, b) {var is_error a instanceof Error;var msg ;if (is_error) {msg HasValue(b) ? Fmt.apply(b, Array.prototype.slice.call(arguments, 1)) : ;} else {if (HasValue(a))msg Fmt.apply(a, arguments);}var err is_error? a: new Error(msg); //new Error(Fmt(\n{0}: {1}, CNA2(1), msg)); // 1 frame offset by defaultvar stack err.stack || err.stackTrace;var lines stack.split(\n);if (msg.length > 0 && msg ! \n) {lines.splice(0, 1);lines.unshift(msg);} else if (!HasValue(a)) {lines.splice(0, 2);lines.unshift();}/*var empty_idx lines.indexOf();if (empty_idx > 0) {lines.splice(empty_idx, 1);}*/var new_stack lines.join(\n, true);return new_stack;}function LogFmt(message, args) {var message_base Fmt({0} {1}, GetTime(), CNA2(2));if (!HasValue(message))return message_base + ;;var txt message_base + : ;var args_len HasValue(args) ? args.length : 0;txt + (args_len 1)? message: Fmt.apply(message, args);return txt;}function LogFmtB(message, args) {var message_base Fmt({0} {1}, GetTime(), CNA2(2, false));if (!HasValue(message))return message_base + ;;var txt message_base + : ;var args_len HasValue(args) ? args.length : 0;txt + (args_len 1)? message: Fmt.apply(message, args);return txt;}var _Console new (function () {var _colors Freeze({Black: black,Red: red,Green: green,Orange: orange,Blue: blue,Purple: purple,Cyan: darkcyan});this.WriteLine function(message, color) { console.log(%c + message, color: + color); };Object.defineProperties(this, {Colors: { get: function () { return _colors; } }});})();function Log(message) { if (_enable_logs0 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Black); }function Log1(message) { if (_enable_logs1 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Red); }function Log2(message) { if (_enable_logs2 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Green); }function Log3(message) { if (_enable_logs3 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Orange); }function Log4(message) { if (_enable_logs4 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Blue); }function Log5(message) { if (_enable_logs5 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Purple); }function Log6(message) { if (_enable_logs6 ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Cyan); }function Log1_(message) { _Console.WriteLine(LogFmtB(message, arguments), _Console.Colors.Red); }function Log2_(message) { _Console.WriteLine(LogFmtB(message, arguments), _Console.Colors.Green); }function Log3_(message) { _Console.WriteLine(LogFmtB(message, arguments), _Console.Colors.Orange); }function Log4_(message) { _Console.WriteLine(LogFmtB(message, arguments), _Console.Colors.Blue); }function Log5_(message) { _Console.WriteLine(LogFmtB(message, arguments), _Console.Colors.Purple); }function Log6_(message) { _Console.WriteLine(LogFmtB(message, arguments), _Console.Colors.Cyan); }function LogD1(message) { if (_debug ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Red); }function LogD2(message) { if (_debug ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Green); }function LogD3(message) { if (_debug ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Orange); }function LogD4(message) { if (_debug ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Blue); }function LogD5(message) { if (_debug ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Purple); }function LogD6(message) { if (_debug ! true) return; _Console.WriteLine(LogFmt(message, arguments), _Console.Colors.Cyan); }function PrintObj(arg) { return JSON.stringify(arg, null, 2); }var _enable_log false;var _enable_logs false, false, false, false, false, false, false;(function SetDefaultLogValue() {{let tmp Cookies.get(enable_log);_enable_log (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_0);_enable_logs0 (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_1);_enable_logs1 (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_2);_enable_logs2 (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_3);_enable_logs3 (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_4);_enable_logs4 (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_5);_enable_logs5 (HasValue(tmp) && tmp on);}{let tmp Cookies.get(enable_logs_6);_enable_logs6 (HasValue(tmp) && tmp on);}})();function LogToggle() {LogsToggle(0);LogsToggle(1);LogsToggle(2);LogsToggle(3);LogsToggle(4);LogsToggle(5);LogsToggle(6);}function LogsToggle(arg) {if (!HasValue(arg)) {console.log(log id, 0-6 as argument is required);return;}if (_enable_logsarg true) {console.log(Fmt(Log{0} off, arg));_enable_logsarg false;Cookies.set(Fmt(enable_logs_{0}, arg), off, { expires: 365*25, path: / });}else {console.log(Fmt(Log{0} on, arg));_enable_logsarg true;Cookies.set(Fmt(enable_logs_{0}, arg), on, { expires: 365*25, path: / });}}ns_root.LogToggle LogToggle;ns_root.LogsToggle LogsToggle;(function (root, factory) {if (typeof exports object) {module.exports exports factory();}else if (typeof define function && define.amd) {define(, factory);}else {root.CryptoJS factory();}}(this, function () {var CryptoJS CryptoJS || (function (Math, undefined) {/** Local polyfil of Object.create*/var create Object.create || (function () {function F() { };return function (obj) {var subtype;F.prototype obj;subtype new F();F.prototype null;return subtype;};}())var C {};var C_lib C.lib {};var Base C_lib.Base (function () {return {extend: function (overrides) {var subtype create(this);if (overrides) {subtype.mixIn(overrides);}if (!subtype.hasOwnProperty(init) || this.init subtype.init) {subtype.init function () {subtype.$super.init.apply(this, arguments);};}subtype.init.prototype subtype;subtype.$super this;return subtype;},create: function () {var instance this.extend();instance.init.apply(instance, arguments);return instance;},init: function () {},mixIn: function (properties) {for (var propertyName in properties) {if (properties.hasOwnProperty(propertyName)) {thispropertyName propertiespropertyName;}}if (properties.hasOwnProperty(toString)) {this.toString properties.toString;}},clone: function () {return this.init.prototype.extend(this);}};}());var WordArray C_lib.WordArray Base.extend({init: function (words, sigBytes) {words this.words words || ;if (sigBytes ! undefined) {this.sigBytes sigBytes;} else {this.sigBytes words.length * 4;}},toString: function (encoder) {return (encoder || Hex).stringify(this);},concat: function (wordArray) {var thisWords this.words;var thatWords wordArray.words;var thisSigBytes this.sigBytes;var thatSigBytes wordArray.sigBytes;this.clamp();if (thisSigBytes % 4) {for (var i 0; i thatSigBytes; i++) {var thatByte (thatWordsi >>> 2 >>> (24 - (i % 4) * 8)) & 0xff;thisWords(thisSigBytes + i) >>> 2 | thatByte (24 - ((thisSigBytes + i) % 4) * 8);}} else {for (var i 0; i thatSigBytes; i + 4) {thisWords(thisSigBytes + i) >>> 2 thatWordsi >>> 2;}}this.sigBytes + thatSigBytes;return this;},clamp: function () {var words this.words;var sigBytes this.sigBytes;wordssigBytes >>> 2 & 0xffffffff (32 - (sigBytes % 4) * 8);words.length Math.ceil(sigBytes / 4);},clone: function () {var clone Base.clone.call(this);clone.words this.words.slice(0);return clone;},random: function (nBytes) {var words ;var r (function (m_w) {var m_w m_w;var m_z 0x3ade68b1;var mask 0xffffffff;return function () {m_z (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;m_w (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;var result ((m_z 0x10) + m_w) & mask;result / 0x100000000;result + 0.5;return result * (Math.random() > .5 ? 1 : -1);}});for (var i 0, rcache; i nBytes; i + 4) {var _r r((rcache || Math.random()) * 0x100000000);rcache _r() * 0x3ade67b7;words.push((_r() * 0x100000000) | 0);}return new WordArray.init(words, nBytes);}});var C_enc C.enc {};var Hex C_enc.Hex {stringify: function (wordArray) {var words wordArray.words;var sigBytes wordArray.sigBytes;var hexChars ;for (var i 0; i sigBytes; i++) {var bite (wordsi >>> 2 >>> (24 - (i % 4) * 8)) & 0xff;hexChars.push((bite >>> 4).toString(16));hexChars.push((bite & 0x0f).toString(16));}return hexChars.join();},parse: function (hexStr) {var hexStrLength hexStr.length;var words ;for (var i 0; i hexStrLength; i + 2) {wordsi >>> 3 | parseInt(hexStr.substr(i, 2), 16) (24 - (i % 8) * 4);}return new WordArray.init(words, hexStrLength / 2);}};var Latin1 C_enc.Latin1 {stringify: function (wordArray) {var words wordArray.words;var sigBytes wordArray.sigBytes;var latin1Chars ;for (var i 0; i sigBytes; i++) {var bite (wordsi >>> 2 >>> (24 - (i % 4) * 8)) & 0xff;latin1Chars.push(String.fromCharCode(bite));}return latin1Chars.join();},parse: function (latin1Str) {var latin1StrLength latin1Str.length;var words ;for (var i 0; i latin1StrLength; i++) {wordsi >>> 2 | (latin1Str.charCodeAt(i) & 0xff) (24 - (i % 4) * 8);}return new WordArray.init(words, latin1StrLength);}};var Utf8 C_enc.Utf8 {stringify: function (wordArray) {try {return decodeURIComponent(escape(Latin1.stringify(wordArray)));} catch (e) {throw new Error(Malformed UTF-8 data);}},parse: function (utf8Str) {return Latin1.parse(unescape(encodeURIComponent(utf8Str)));}};var BufferedBlockAlgorithm C_lib.BufferedBlockAlgorithm Base.extend({reset: function () {this._data new WordArray.init();this._nDataBytes 0;},_append: function (data) {if (typeof data string) {data Utf8.parse(data);}this._data.concat(data);this._nDataBytes + data.sigBytes;},_process: function (doFlush) {var data this._data;var dataWords data.words;var dataSigBytes data.sigBytes;var blockSize this.blockSize;var blockSizeBytes blockSize * 4;var nBlocksReady dataSigBytes / blockSizeBytes;if (doFlush) {nBlocksReady Math.ceil(nBlocksReady);} else {nBlocksReady Math.max((nBlocksReady | 0) - this._minBufferSize, 0);}var nWordsReady nBlocksReady * blockSize;var nBytesReady Math.min(nWordsReady * 4, dataSigBytes);if (nWordsReady) {for (var offset 0; offset nWordsReady; offset + blockSize) {this._doProcessBlock(dataWords, offset);}var processedWords dataWords.splice(0, nWordsReady);data.sigBytes - nBytesReady;}return new WordArray.init(processedWords, nBytesReady);},clone: function () {var clone Base.clone.call(this);clone._data this._data.clone();return clone;},_minBufferSize: 0});var Hasher C_lib.Hasher BufferedBlockAlgorithm.extend({cfg: Base.extend(),init: function (cfg) {this.cfg this.cfg.extend(cfg);this.reset();},reset: function () {BufferedBlockAlgorithm.reset.call(this);this._doReset();},update: function (messageUpdate) {this._append(messageUpdate);this._process();return this;},finalize: function (messageUpdate) {if (messageUpdate) {this._append(messageUpdate);}var hash this._doFinalize();return hash;},blockSize: 512 / 32,_createHelper: function (hasher) {return function (message, cfg) {return new hasher.init(cfg).finalize(message);};},_createHmacHelper: function (hasher) {return function (message, key) {return new C_algo.HMAC.init(hasher, key).finalize(message);};}});var C_algo C.algo {};return C;}(Math));(function () {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var C_enc C.enc;var Base64 C_enc.Base64 {stringify: function (wordArray) {var words wordArray.words;var sigBytes wordArray.sigBytes;var map this._map;wordArray.clamp();var base64Chars ;for (var i 0; i sigBytes; i + 3) {var byte1 (wordsi >>> 2 >>> (24 - (i % 4) * 8)) & 0xff;var byte2 (words(i + 1) >>> 2 >>> (24 - ((i + 1) % 4) * 8)) & 0xff;var byte3 (words(i + 2) >>> 2 >>> (24 - ((i + 2) % 4) * 8)) & 0xff;var triplet (byte1 16) | (byte2 8) | byte3;for (var j 0; (j 4) && (i + j * 0.75 sigBytes) ; j++) {base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));}}var paddingChar map.charAt(64);if (paddingChar) {while (base64Chars.length % 4) {base64Chars.push(paddingChar);}}return base64Chars.join();},parse: function (base64Str) {var base64StrLength base64Str.length;var map this._map;var reverseMap this._reverseMap;if (!reverseMap) {reverseMap this._reverseMap ;for (var j 0; j map.length; j++) {reverseMapmap.charCodeAt(j) j;}}var paddingChar map.charAt(64);if (paddingChar) {var paddingIndex base64Str.indexOf(paddingChar);if (paddingIndex ! -1) {base64StrLength paddingIndex;}}return parseLoop(base64Str, base64StrLength, reverseMap);},_map: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/};function parseLoop(base64Str, base64StrLength, reverseMap) {var words ;var nBytes 0;for (var i 0; i base64StrLength; i++) {if (i % 4) {var bits1 reverseMapbase64Str.charCodeAt(i - 1) ((i % 4) * 2);var bits2 reverseMapbase64Str.charCodeAt(i) >>> (6 - (i % 4) * 2);wordsnBytes >>> 2 | (bits1 | bits2) (24 - (nBytes % 4) * 8);nBytes++;}}return WordArray.create(words, nBytes);}}());(function (Math) {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var Hasher C_lib.Hasher;var C_algo C.algo;var T ;(function () {for (var i 0; i 64; i++) {Ti (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;}}());var MD5 C_algo.MD5 Hasher.extend({_doReset: function () {this._hash new WordArray.init(0x67452301, 0xefcdab89,0x98badcfe, 0x10325476);},_doProcessBlock: function (M, offset) {for (var i 0; i 16; i++) {var offset_i offset + i;var M_offset_i Moffset_i;Moffset_i ((((M_offset_i 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |(((M_offset_i 24) | (M_offset_i >>> 8)) & 0xff00ff00));}var H this._hash.words;var M_offset_0 Moffset + 0;var M_offset_1 Moffset + 1;var M_offset_2 Moffset + 2;var M_offset_3 Moffset + 3;var M_offset_4 Moffset + 4;var M_offset_5 Moffset + 5;var M_offset_6 Moffset + 6;var M_offset_7 Moffset + 7;var M_offset_8 Moffset + 8;var M_offset_9 Moffset + 9;var M_offset_10 Moffset + 10;var M_offset_11 Moffset + 11;var M_offset_12 Moffset + 12;var M_offset_13 Moffset + 13;var M_offset_14 Moffset + 14;var M_offset_15 Moffset + 15;var a H0;var b H1;var c H2;var d H3;a FF(a, b, c, d, M_offset_0, 7, T0);d FF(d, a, b, c, M_offset_1, 12, T1);c FF(c, d, a, b, M_offset_2, 17, T2);b FF(b, c, d, a, M_offset_3, 22, T3);a FF(a, b, c, d, M_offset_4, 7, T4);d FF(d, a, b, c, M_offset_5, 12, T5);c FF(c, d, a, b, M_offset_6, 17, T6);b FF(b, c, d, a, M_offset_7, 22, T7);a FF(a, b, c, d, M_offset_8, 7, T8);d FF(d, a, b, c, M_offset_9, 12, T9);c FF(c, d, a, b, M_offset_10, 17, T10);b FF(b, c, d, a, M_offset_11, 22, T11);a FF(a, b, c, d, M_offset_12, 7, T12);d FF(d, a, b, c, M_offset_13, 12, T13);c FF(c, d, a, b, M_offset_14, 17, T14);b FF(b, c, d, a, M_offset_15, 22, T15);a GG(a, b, c, d, M_offset_1, 5, T16);d GG(d, a, b, c, M_offset_6, 9, T17);c GG(c, d, a, b, M_offset_11, 14, T18);b GG(b, c, d, a, M_offset_0, 20, T19);a GG(a, b, c, d, M_offset_5, 5, T20);d GG(d, a, b, c, M_offset_10, 9, T21);c GG(c, d, a, b, M_offset_15, 14, T22);b GG(b, c, d, a, M_offset_4, 20, T23);a GG(a, b, c, d, M_offset_9, 5, T24);d GG(d, a, b, c, M_offset_14, 9, T25);c GG(c, d, a, b, M_offset_3, 14, T26);b GG(b, c, d, a, M_offset_8, 20, T27);a GG(a, b, c, d, M_offset_13, 5, T28);d GG(d, a, b, c, M_offset_2, 9, T29);c GG(c, d, a, b, M_offset_7, 14, T30);b GG(b, c, d, a, M_offset_12, 20, T31);a HH(a, b, c, d, M_offset_5, 4, T32);d HH(d, a, b, c, M_offset_8, 11, T33);c HH(c, d, a, b, M_offset_11, 16, T34);b HH(b, c, d, a, M_offset_14, 23, T35);a HH(a, b, c, d, M_offset_1, 4, T36);d HH(d, a, b, c, M_offset_4, 11, T37);c HH(c, d, a, b, M_offset_7, 16, T38);b HH(b, c, d, a, M_offset_10, 23, T39);a HH(a, b, c, d, M_offset_13, 4, T40);d HH(d, a, b, c, M_offset_0, 11, T41);c HH(c, d, a, b, M_offset_3, 16, T42);b HH(b, c, d, a, M_offset_6, 23, T43);a HH(a, b, c, d, M_offset_9, 4, T44);d HH(d, a, b, c, M_offset_12, 11, T45);c HH(c, d, a, b, M_offset_15, 16, T46);b HH(b, c, d, a, M_offset_2, 23, T47);a II(a, b, c, d, M_offset_0, 6, T48);d II(d, a, b, c, M_offset_7, 10, T49);c II(c, d, a, b, M_offset_14, 15, T50);b II(b, c, d, a, M_offset_5, 21, T51);a II(a, b, c, d, M_offset_12, 6, T52);d II(d, a, b, c, M_offset_3, 10, T53);c II(c, d, a, b, M_offset_10, 15, T54);b II(b, c, d, a, M_offset_1, 21, T55);a II(a, b, c, d, M_offset_8, 6, T56);d II(d, a, b, c, M_offset_15, 10, T57);c II(c, d, a, b, M_offset_6, 15, T58);b II(b, c, d, a, M_offset_13, 21, T59);a II(a, b, c, d, M_offset_4, 6, T60);d II(d, a, b, c, M_offset_11, 10, T61);c II(c, d, a, b, M_offset_2, 15, T62);b II(b, c, d, a, M_offset_9, 21, T63);H0 (H0 + a) | 0;H1 (H1 + b) | 0;H2 (H2 + c) | 0;H3 (H3 + d) | 0;},_doFinalize: function () {var data this._data;var dataWords data.words;var nBitsTotal this._nDataBytes * 8;var nBitsLeft data.sigBytes * 8;dataWordsnBitsLeft >>> 5 | 0x80 (24 - nBitsLeft % 32);var nBitsTotalH Math.floor(nBitsTotal / 0x100000000);var nBitsTotalL nBitsTotal;dataWords(((nBitsLeft + 64) >>> 9) 4) + 15 ((((nBitsTotalH 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |(((nBitsTotalH 24) | (nBitsTotalH >>> 8)) & 0xff00ff00));dataWords(((nBitsLeft + 64) >>> 9) 4) + 14 ((((nBitsTotalL 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |(((nBitsTotalL 24) | (nBitsTotalL >>> 8)) & 0xff00ff00));data.sigBytes (dataWords.length + 1) * 4;this._process();var hash this._hash;var H hash.words;for (var i 0; i 4; i++) {var H_i Hi;Hi (((H_i 8) | (H_i >>> 24)) & 0x00ff00ff) |(((H_i 24) | (H_i >>> 8)) & 0xff00ff00);}return hash;},clone: function () {var clone Hasher.clone.call(this);clone._hash this._hash.clone();return clone;}});function FF(a, b, c, d, x, s, t) {var n a + ((b & c) | (~b & d)) + x + t;return ((n s) | (n >>> (32 - s))) + b;}function GG(a, b, c, d, x, s, t) {var n a + ((b & d) | (c & ~d)) + x + t;return ((n s) | (n >>> (32 - s))) + b;}function HH(a, b, c, d, x, s, t) {var n a + (b ^ c ^ d) + x + t;return ((n s) | (n >>> (32 - s))) + b;}function II(a, b, c, d, x, s, t) {var n a + (c ^ (b | ~d)) + x + t;return ((n s) | (n >>> (32 - s))) + b;}C.MD5 Hasher._createHelper(MD5);C.HmacMD5 Hasher._createHmacHelper(MD5);}(Math));(function () {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var Hasher C_lib.Hasher;var C_algo C.algo;var W ;var SHA1 C_algo.SHA1 Hasher.extend({_doReset: function () {this._hash new WordArray.init(0x67452301, 0xefcdab89,0x98badcfe, 0x10325476,0xc3d2e1f0);},_doProcessBlock: function (M, offset) {var H this._hash.words;var a H0;var b H1;var c H2;var d H3;var e H4;for (var i 0; i 80; i++) {if (i 16) {Wi Moffset + i | 0;} else {var n Wi - 3 ^ Wi - 8 ^ Wi - 14 ^ Wi - 16;Wi (n 1) | (n >>> 31);}var t ((a 5) | (a >>> 27)) + e + Wi;if (i 20) {t + ((b & c) | (~b & d)) + 0x5a827999;} else if (i 40) {t + (b ^ c ^ d) + 0x6ed9eba1;} else if (i 60) {t + ((b & c) | (b & d) | (c & d)) - 0x70e44324;} else /* if (i 80) */ {t + (b ^ c ^ d) - 0x359d3e2a;}e d;d c;c (b 30) | (b >>> 2);b a;a t;}H0 (H0 + a) | 0;H1 (H1 + b) | 0;H2 (H2 + c) | 0;H3 (H3 + d) | 0;H4 (H4 + e) | 0;},_doFinalize: function () {var data this._data;var dataWords data.words;var nBitsTotal this._nDataBytes * 8;var nBitsLeft data.sigBytes * 8;dataWordsnBitsLeft >>> 5 | 0x80 (24 - nBitsLeft % 32);dataWords(((nBitsLeft + 64) >>> 9) 4) + 14 Math.floor(nBitsTotal / 0x100000000);dataWords(((nBitsLeft + 64) >>> 9) 4) + 15 nBitsTotal;data.sigBytes dataWords.length * 4;this._process();return this._hash;},clone: function () {var clone Hasher.clone.call(this);clone._hash this._hash.clone();return clone;}});C.SHA1 Hasher._createHelper(SHA1);C.HmacSHA1 Hasher._createHmacHelper(SHA1);}());(function (Math) {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var Hasher C_lib.Hasher;var C_algo C.algo;var H ;var K ;(function () {function isPrime(n) {var sqrtN Math.sqrt(n);for (var factor 2; factor sqrtN; factor++) {if (!(n % factor)) {return false;}}return true;}function getFractionalBits(n) {return ((n - (n | 0)) * 0x100000000) | 0;}var n 2;var nPrime 0;while (nPrime 64) {if (isPrime(n)) {if (nPrime 8) {HnPrime getFractionalBits(Math.pow(n, 1 / 2));}KnPrime getFractionalBits(Math.pow(n, 1 / 3));nPrime++;}n++;}}());var W ;var SHA256 C_algo.SHA256 Hasher.extend({_doReset: function () {this._hash new WordArray.init(H.slice(0));},_doProcessBlock: function (M, offset) {var H this._hash.words;var a H0;var b H1;var c H2;var d H3;var e H4;var f H5;var g H6;var h H7;for (var i 0; i 64; i++) {if (i 16) {Wi Moffset + i | 0;} else {var gamma0x Wi - 15;var gamma0 ((gamma0x 25) | (gamma0x >>> 7)) ^((gamma0x 14) | (gamma0x >>> 18)) ^(gamma0x >>> 3);var gamma1x Wi - 2;var gamma1 ((gamma1x 15) | (gamma1x >>> 17)) ^((gamma1x 13) | (gamma1x >>> 19)) ^(gamma1x >>> 10);Wi gamma0 + Wi - 7 + gamma1 + Wi - 16;}var ch (e & f) ^ (~e & g);var maj (a & b) ^ (a & c) ^ (b & c);var sigma0 ((a 30) | (a >>> 2)) ^ ((a 19) | (a >>> 13)) ^ ((a 10) | (a >>> 22));var sigma1 ((e 26) | (e >>> 6)) ^ ((e 21) | (e >>> 11)) ^ ((e 7) | (e >>> 25));var t1 h + sigma1 + ch + Ki + Wi;var t2 sigma0 + maj;h g;g f;f e;e (d + t1) | 0;d c;c b;b a;a (t1 + t2) | 0;}H0 (H0 + a) | 0;H1 (H1 + b) | 0;H2 (H2 + c) | 0;H3 (H3 + d) | 0;H4 (H4 + e) | 0;H5 (H5 + f) | 0;H6 (H6 + g) | 0;H7 (H7 + h) | 0;},_doFinalize: function () {var data this._data;var dataWords data.words;var nBitsTotal this._nDataBytes * 8;var nBitsLeft data.sigBytes * 8;dataWordsnBitsLeft >>> 5 | 0x80 (24 - nBitsLeft % 32);dataWords(((nBitsLeft + 64) >>> 9) 4) + 14 Math.floor(nBitsTotal / 0x100000000);dataWords(((nBitsLeft + 64) >>> 9) 4) + 15 nBitsTotal;data.sigBytes dataWords.length * 4;this._process();return this._hash;},clone: function () {var clone Hasher.clone.call(this);clone._hash this._hash.clone();return clone;}});C.SHA256 Hasher._createHelper(SHA256);C.HmacSHA256 Hasher._createHmacHelper(SHA256);}(Math));(function () {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var C_enc C.enc;var Utf16BE C_enc.Utf16 C_enc.Utf16BE {stringify: function (wordArray) {var words wordArray.words;var sigBytes wordArray.sigBytes;var utf16Chars ;for (var i 0; i sigBytes; i + 2) {var codePoint (wordsi >>> 2 >>> (16 - (i % 4) * 8)) & 0xffff;utf16Chars.push(String.fromCharCode(codePoint));}return utf16Chars.join();},parse: function (utf16Str) {var utf16StrLength utf16Str.length;var words ;for (var i 0; i utf16StrLength; i++) {wordsi >>> 1 | utf16Str.charCodeAt(i) (16 - (i % 2) * 16);}return WordArray.create(words, utf16StrLength * 2);}};C_enc.Utf16LE {stringify: function (wordArray) {var words wordArray.words;var sigBytes wordArray.sigBytes;var utf16Chars ;for (var i 0; i sigBytes; i + 2) {var codePoint swapEndian((wordsi >>> 2 >>> (16 - (i % 4) * 8)) & 0xffff);utf16Chars.push(String.fromCharCode(codePoint));}return utf16Chars.join();},parse: function (utf16Str) {var utf16StrLength utf16Str.length;var words ;for (var i 0; i utf16StrLength; i++) {wordsi >>> 1 | swapEndian(utf16Str.charCodeAt(i) (16 - (i % 2) * 16));}return WordArray.create(words, utf16StrLength * 2);}};function swapEndian(word) {return ((word 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);}}());(function () {if (typeof ArrayBuffer ! function) {return;}var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var superInit WordArray.init;var subInit WordArray.init function (typedArray) {if (typedArray instanceof ArrayBuffer) {typedArray new Uint8Array(typedArray);}if (typedArray instanceof Int8Array ||(typeof Uint8ClampedArray ! undefined && typedArray instanceof Uint8ClampedArray) ||typedArray instanceof Int16Array ||typedArray instanceof Uint16Array ||typedArray instanceof Int32Array ||typedArray instanceof Uint32Array ||typedArray instanceof Float32Array ||typedArray instanceof Float64Array) {typedArray new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);}if (typedArray instanceof Uint8Array) {var typedArrayByteLength typedArray.byteLength;var words ;for (var i 0; i typedArrayByteLength; i++) {wordsi >>> 2 | typedArrayi (24 - (i % 4) * 8);}superInit.call(this, words, typedArrayByteLength);} else {superInit.apply(this, arguments);}};subInit.prototype WordArray;}());/** @preserve(c) 2012 by C�dric Mesnil. All rights reserved.Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/(function (Math) {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var Hasher C_lib.Hasher;var C_algo C.algo;var _zl WordArray.create(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13);var _zr WordArray.create(5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11);var _sl WordArray.create(11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6);var _sr WordArray.create(8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11);var _hl WordArray.create(0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E);var _hr WordArray.create(0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000);var RIPEMD160 C_algo.RIPEMD160 Hasher.extend({_doReset: function () {this._hash WordArray.create(0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0);},_doProcessBlock: function (M, offset) {for (var i 0; i 16; i++) {var offset_i offset + i;var M_offset_i Moffset_i;Moffset_i ((((M_offset_i 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |(((M_offset_i 24) | (M_offset_i >>> 8)) & 0xff00ff00));}var H this._hash.words;var hl _hl.words;var hr _hr.words;var zl _zl.words;var zr _zr.words;var sl _sl.words;var sr _sr.words;var al, bl, cl, dl, el;var ar, br, cr, dr, er;ar al H0;br bl H1;cr cl H2;dr dl H3;er el H4;var t;for (var i 0; i 80; i + 1) {t (al + Moffset + zli) | 0;if (i 16) {t + f1(bl, cl, dl) + hl0;} else if (i 32) {t + f2(bl, cl, dl) + hl1;} else if (i 48) {t + f3(bl, cl, dl) + hl2;} else if (i 64) {t + f4(bl, cl, dl) + hl3;} else {// if (i80) {t + f5(bl, cl, dl) + hl4;}t t | 0;t rotl(t, sli);t (t + el) | 0;al el;el dl;dl rotl(cl, 10);cl bl;bl t;t (ar + Moffset + zri) | 0;if (i 16) {t + f5(br, cr, dr) + hr0;} else if (i 32) {t + f4(br, cr, dr) + hr1;} else if (i 48) {t + f3(br, cr, dr) + hr2;} else if (i 64) {t + f2(br, cr, dr) + hr3;} else {// if (i80) {t + f1(br, cr, dr) + hr4;}t t | 0;t rotl(t, sri);t (t + er) | 0;ar er;er dr;dr rotl(cr, 10);cr br;br t;}t (H1 + cl + dr) | 0;H1 (H2 + dl + er) | 0;H2 (H3 + el + ar) | 0;H3 (H4 + al + br) | 0;H4 (H0 + bl + cr) | 0;H0 t;},_doFinalize: function () {var data this._data;var dataWords data.words;var nBitsTotal this._nDataBytes * 8;var nBitsLeft data.sigBytes * 8;dataWordsnBitsLeft >>> 5 | 0x80 (24 - nBitsLeft % 32);dataWords(((nBitsLeft + 64) >>> 9) 4) + 14 ((((nBitsTotal 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |(((nBitsTotal 24) | (nBitsTotal >>> 8)) & 0xff00ff00));data.sigBytes (dataWords.length + 1) * 4;this._process();var hash this._hash;var H hash.words;for (var i 0; i 5; i++) {var H_i Hi;Hi (((H_i 8) | (H_i >>> 24)) & 0x00ff00ff) |(((H_i 24) | (H_i >>> 8)) & 0xff00ff00);}return hash;},clone: function () {var clone Hasher.clone.call(this);clone._hash this._hash.clone();return clone;}});function f1(x, y, z) {return ((x) ^ (y) ^ (z));}function f2(x, y, z) {return (((x) & (y)) | ((~x) & (z)));}function f3(x, y, z) {return (((x) | (~(y))) ^ (z));}function f4(x, y, z) {return (((x) & (z)) | ((y) & (~(z))));}function f5(x, y, z) {return ((x) ^ ((y) | (~(z))));}function rotl(x, n) {return (x n) | (x >>> (32 - n));}C.RIPEMD160 Hasher._createHelper(RIPEMD160);C.HmacRIPEMD160 Hasher._createHmacHelper(RIPEMD160);}(Math));(function () {var C CryptoJS;var C_lib C.lib;var Base C_lib.Base;var C_enc C.enc;var Utf8 C_enc.Utf8;var C_algo C.algo;var HMAC C_algo.HMAC Base.extend({init: function (hasher, key) {hasher this._hasher new hasher.init();if (typeof key string) {key Utf8.parse(key);}var hasherBlockSize hasher.blockSize;var hasherBlockSizeBytes hasherBlockSize * 4;if (key.sigBytes > hasherBlockSizeBytes) {key hasher.finalize(key);}key.clamp();var oKey this._oKey key.clone();var iKey this._iKey key.clone();var oKeyWords oKey.words;var iKeyWords iKey.words;for (var i 0; i hasherBlockSize; i++) {oKeyWordsi ^ 0x5c5c5c5c;iKeyWordsi ^ 0x36363636;}oKey.sigBytes iKey.sigBytes hasherBlockSizeBytes;this.reset();},reset: function () {var hasher this._hasher;hasher.reset();hasher.update(this._iKey);},update: function (messageUpdate) {this._hasher.update(messageUpdate);return this;},finalize: function (messageUpdate) {var hasher this._hasher;var innerHash hasher.finalize(messageUpdate);hasher.reset();var hmac hasher.finalize(this._oKey.clone().concat(innerHash));return hmac;}});}());(function () {var C CryptoJS;var C_lib C.lib;var Base C_lib.Base;var WordArray C_lib.WordArray;var C_algo C.algo;var SHA1 C_algo.SHA1;var HMAC C_algo.HMAC;var PBKDF2 C_algo.PBKDF2 Base.extend({cfg: Base.extend({keySize: 128 / 32,hasher: SHA1,iterations: 1}),init: function (cfg) {this.cfg this.cfg.extend(cfg);},compute: function (password, salt) {var cfg this.cfg;var hmac HMAC.create(cfg.hasher, password);var derivedKey WordArray.create();var blockIndex WordArray.create(0x00000001);var derivedKeyWords derivedKey.words;var blockIndexWords blockIndex.words;var keySize cfg.keySize;var iterations cfg.iterations;while (derivedKeyWords.length keySize) {var block hmac.update(salt).finalize(blockIndex);hmac.reset();var blockWords block.words;var blockWordsLength blockWords.length;var intermediate block;for (var i 1; i iterations; i++) {intermediate hmac.finalize(intermediate);hmac.reset();var intermediateWords intermediate.words;for (var j 0; j blockWordsLength; j++) {blockWordsj ^ intermediateWordsj;}}derivedKey.concat(block);blockIndexWords0++;}derivedKey.sigBytes keySize * 4;return derivedKey;}});C.PBKDF2 function (password, salt, cfg) {return PBKDF2.create(cfg).compute(password, salt);};}());(function () {var C CryptoJS;var C_lib C.lib;var Base C_lib.Base;var WordArray C_lib.WordArray;var C_algo C.algo;var MD5 C_algo.MD5;var EvpKDF C_algo.EvpKDF Base.extend({cfg: Base.extend({keySize: 128 / 32,hasher: MD5,iterations: 1}),init: function (cfg) {this.cfg this.cfg.extend(cfg);},compute: function (password, salt) {var cfg this.cfg;var hasher cfg.hasher.create();var derivedKey WordArray.create();var derivedKeyWords derivedKey.words;var keySize cfg.keySize;var iterations cfg.iterations;while (derivedKeyWords.length keySize) {if (block) {hasher.update(block);}var block hasher.update(password).finalize(salt);hasher.reset();for (var i 1; i iterations; i++) {block hasher.finalize(block);hasher.reset();}derivedKey.concat(block);}derivedKey.sigBytes keySize * 4;return derivedKey;}});C.EvpKDF function (password, salt, cfg) {return EvpKDF.create(cfg).compute(password, salt);};}());(function () {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var C_algo C.algo;var SHA256 C_algo.SHA256;var SHA224 C_algo.SHA224 SHA256.extend({_doReset: function () {this._hash new WordArray.init(0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4);},_doFinalize: function () {var hash SHA256._doFinalize.call(this);hash.sigBytes - 4;return hash;}});C.SHA224 SHA256._createHelper(SHA224);C.HmacSHA224 SHA256._createHmacHelper(SHA224);}());(function (undefined) {var C CryptoJS;var C_lib C.lib;var Base C_lib.Base;var X32WordArray C_lib.WordArray;var C_x64 C.x64 {};var X64Word C_x64.Word Base.extend({init: function (high, low) {this.high high;this.low low;}});var X64WordArray C_x64.WordArray Base.extend({init: function (words, sigBytes) {words this.words words || ;if (sigBytes ! undefined) {this.sigBytes sigBytes;} else {this.sigBytes words.length * 8;}},toX32: function () {var x64Words this.words;var x64WordsLength x64Words.length;var x32Words ;for (var i 0; i x64WordsLength; i++) {var x64Word x64Wordsi;x32Words.push(x64Word.high);x32Words.push(x64Word.low);}return X32WordArray.create(x32Words, this.sigBytes);},clone: function () {var clone Base.clone.call(this);var words clone.words this.words.slice(0);var wordsLength words.length;for (var i 0; i wordsLength; i++) {wordsi wordsi.clone();}return clone;}});}());(function (Math) {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var Hasher C_lib.Hasher;var C_x64 C.x64;var X64Word C_x64.Word;var C_algo C.algo;var RHO_OFFSETS ;var PI_INDEXES ;var ROUND_CONSTANTS ;(function () {var x 1, y 0;for (var t 0; t 24; t++) {RHO_OFFSETSx + 5 * y ((t + 1) * (t + 2) / 2) % 64;var newX y % 5;var newY (2 * x + 3 * y) % 5;x newX;y newY;}for (var x 0; x 5; x++) {for (var y 0; y 5; y++) {PI_INDEXESx + 5 * y y + ((2 * x + 3 * y) % 5) * 5;}}var LFSR 0x01;for (var i 0; i 24; i++) {var roundConstantMsw 0;var roundConstantLsw 0;for (var j 0; j 7; j++) {if (LFSR & 0x01) {var bitPosition (1 j) - 1;if (bitPosition 32) {roundConstantLsw ^ 1 bitPosition;} else /* if (bitPosition > 32) */ {roundConstantMsw ^ 1 (bitPosition - 32);}}if (LFSR & 0x80) {LFSR (LFSR 1) ^ 0x71;} else {LFSR 1;}}ROUND_CONSTANTSi X64Word.create(roundConstantMsw, roundConstantLsw);}}());var T ;(function () {for (var i 0; i 25; i++) {Ti X64Word.create();}}());var SHA3 C_algo.SHA3 Hasher.extend({cfg: Hasher.cfg.extend({outputLength: 512}),_doReset: function () {var state this._state for (var i 0; i 25; i++) {statei new X64Word.init();}this.blockSize (1600 - 2 * this.cfg.outputLength) / 32;},_doProcessBlock: function (M, offset) {var state this._state;var nBlockSizeLanes this.blockSize / 2;for (var i 0; i nBlockSizeLanes; i++) {var M2i Moffset + 2 * i;var M2i1 Moffset + 2 * i + 1;M2i ((((M2i 8) | (M2i >>> 24)) & 0x00ff00ff) |(((M2i 24) | (M2i >>> 8)) & 0xff00ff00));M2i1 ((((M2i1 8) | (M2i1 >>> 24)) & 0x00ff00ff) |(((M2i1 24) | (M2i1 >>> 8)) & 0xff00ff00));var lane statei;lane.high ^ M2i1;lane.low ^ M2i;}for (var round 0; round 24; round++) {for (var x 0; x 5; x++) {var tMsw 0, tLsw 0;for (var y 0; y 5; y++) {var lane statex + 5 * y;tMsw ^ lane.high;tLsw ^ lane.low;}var Tx Tx;Tx.high tMsw;Tx.low tLsw;}for (var x 0; x 5; x++) {var Tx4 T(x + 4) % 5;var Tx1 T(x + 1) % 5;var Tx1Msw Tx1.high;var Tx1Lsw Tx1.low;var tMsw Tx4.high ^ ((Tx1Msw 1) | (Tx1Lsw >>> 31));var tLsw Tx4.low ^ ((Tx1Lsw 1) | (Tx1Msw >>> 31));for (var y 0; y 5; y++) {var lane statex + 5 * y;lane.high ^ tMsw;lane.low ^ tLsw;}}for (var laneIndex 1; laneIndex 25; laneIndex++) {var lane statelaneIndex;var laneMsw lane.high;var laneLsw lane.low;var rhoOffset RHO_OFFSETSlaneIndex;if (rhoOffset 32) {var tMsw (laneMsw rhoOffset) | (laneLsw >>> (32 - rhoOffset));var tLsw (laneLsw rhoOffset) | (laneMsw >>> (32 - rhoOffset));} else /* if (rhoOffset > 32) */ {var tMsw (laneLsw (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));var tLsw (laneMsw (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));}var TPiLane TPI_INDEXESlaneIndex;TPiLane.high tMsw;TPiLane.low tLsw;}var T0 T0;var state0 state0;T0.high state0.high;T0.low state0.low;for (var x 0; x 5; x++) {for (var y 0; y 5; y++) {var laneIndex x + 5 * y;var lane statelaneIndex;var TLane TlaneIndex;var Tx1Lane T((x + 1) % 5) + 5 * y;var Tx2Lane T((x + 2) % 5) + 5 * y;lane.high TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);lane.low TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);}}var lane state0;var roundConstant ROUND_CONSTANTSround;lane.high ^ roundConstant.high;lane.low ^ roundConstant.low;;}},_doFinalize: function () {var data this._data;var dataWords data.words;var nBitsTotal this._nDataBytes * 8;var nBitsLeft data.sigBytes * 8;var blockSizeBits this.blockSize * 32;dataWordsnBitsLeft >>> 5 | 0x1 (24 - nBitsLeft % 32);dataWords((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1 | 0x80;data.sigBytes dataWords.length * 4;this._process();var state this._state;var outputLengthBytes this.cfg.outputLength / 8;var outputLengthLanes outputLengthBytes / 8;var hashWords ;for (var i 0; i outputLengthLanes; i++) {var lane statei;var laneMsw lane.high;var laneLsw lane.low;laneMsw ((((laneMsw 8) | (laneMsw >>> 24)) & 0x00ff00ff) |(((laneMsw 24) | (laneMsw >>> 8)) & 0xff00ff00));laneLsw ((((laneLsw 8) | (laneLsw >>> 24)) & 0x00ff00ff) |(((laneLsw 24) | (laneLsw >>> 8)) & 0xff00ff00));hashWords.push(laneLsw);hashWords.push(laneMsw);}return new WordArray.init(hashWords, outputLengthBytes);},clone: function () {var clone Hasher.clone.call(this);var state clone._state this._state.slice(0);for (var i 0; i 25; i++) {statei statei.clone();}return clone;}});C.SHA3 Hasher._createHelper(SHA3);C.HmacSHA3 Hasher._createHmacHelper(SHA3);}(Math));(function () {var C CryptoJS;var C_lib C.lib;var Hasher C_lib.Hasher;var C_x64 C.x64;var X64Word C_x64.Word;var X64WordArray C_x64.WordArray;var C_algo C.algo;function X64Word_create() {return X64Word.create.apply(X64Word, arguments);}var K X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817);var W ;(function () {for (var i 0; i 80; i++) {Wi X64Word_create();}}());var SHA512 C_algo.SHA512 Hasher.extend({_doReset: function () {this._hash new X64WordArray.init(new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179));},_doProcessBlock: function (M, offset) {var H this._hash.words;var H0 H0;var H1 H1;var H2 H2;var H3 H3;var H4 H4;var H5 H5;var H6 H6;var H7 H7;var H0h H0.high;var H0l H0.low;var H1h H1.high;var H1l H1.low;var H2h H2.high;var H2l H2.low;var H3h H3.high;var H3l H3.low;var H4h H4.high;var H4l H4.low;var H5h H5.high;var H5l H5.low;var H6h H6.high;var H6l H6.low;var H7h H7.high;var H7l H7.low;var ah H0h;var al H0l;var bh H1h;var bl H1l;var ch H2h;var cl H2l;var dh H3h;var dl H3l;var eh H4h;var el H4l;var fh H5h;var fl H5l;var gh H6h;var gl H6l;var hh H7h;var hl H7l;for (var i 0; i 80; i++) {var Wi Wi;if (i 16) {var Wih Wi.high Moffset + i * 2 | 0;var Wil Wi.low Moffset + i * 2 + 1 | 0;} else {var gamma0x Wi - 15;var gamma0xh gamma0x.high;var gamma0xl gamma0x.low;var gamma0h ((gamma0xh >>> 1) | (gamma0xl 31)) ^ ((gamma0xh >>> 8) | (gamma0xl 24)) ^ (gamma0xh >>> 7);var gamma0l ((gamma0xl >>> 1) | (gamma0xh 31)) ^ ((gamma0xl >>> 8) | (gamma0xh 24)) ^ ((gamma0xl >>> 7) | (gamma0xh 25));var gamma1x Wi - 2;var gamma1xh gamma1x.high;var gamma1xl gamma1x.low;var gamma1h ((gamma1xh >>> 19) | (gamma1xl 13)) ^ ((gamma1xh 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);var gamma1l ((gamma1xl >>> 19) | (gamma1xh 13)) ^ ((gamma1xl 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh 26));var Wi7 Wi - 7;var Wi7h Wi7.high;var Wi7l Wi7.low;var Wi16 Wi - 16;var Wi16h Wi16.high;var Wi16l Wi16.low;var Wil gamma0l + Wi7l;var Wih gamma0h + Wi7h + ((Wil >>> 0) (gamma0l >>> 0) ? 1 : 0);var Wil Wil + gamma1l;var Wih Wih + gamma1h + ((Wil >>> 0) (gamma1l >>> 0) ? 1 : 0);var Wil Wil + Wi16l;var Wih Wih + Wi16h + ((Wil >>> 0) (Wi16l >>> 0) ? 1 : 0);Wi.high Wih;Wi.low Wil;}var chh (eh & fh) ^ (~eh & gh);var chl (el & fl) ^ (~el & gl);var majh (ah & bh) ^ (ah & ch) ^ (bh & ch);var majl (al & bl) ^ (al & cl) ^ (bl & cl);var sigma0h ((ah >>> 28) | (al 4)) ^ ((ah 30) | (al >>> 2)) ^ ((ah 25) | (al >>> 7));var sigma0l ((al >>> 28) | (ah 4)) ^ ((al 30) | (ah >>> 2)) ^ ((al 25) | (ah >>> 7));var sigma1h ((eh >>> 14) | (el 18)) ^ ((eh >>> 18) | (el 14)) ^ ((eh 23) | (el >>> 9));var sigma1l ((el >>> 14) | (eh 18)) ^ ((el >>> 18) | (eh 14)) ^ ((el 23) | (eh >>> 9));var Ki Ki;var Kih Ki.high;var Kil Ki.low;var t1l hl + sigma1l;var t1h hh + sigma1h + ((t1l >>> 0) (hl >>> 0) ? 1 : 0);var t1l t1l + chl;var t1h t1h + chh + ((t1l >>> 0) (chl >>> 0) ? 1 : 0);var t1l t1l + Kil;var t1h t1h + Kih + ((t1l >>> 0) (Kil >>> 0) ? 1 : 0);var t1l t1l + Wil;var t1h t1h + Wih + ((t1l >>> 0) (Wil >>> 0) ? 1 : 0);var t2l sigma0l + majl;var t2h sigma0h + majh + ((t2l >>> 0) (sigma0l >>> 0) ? 1 : 0);hh gh;hl gl;gh fh;gl fl;fh eh;fl el;el (dl + t1l) | 0;eh (dh + t1h + ((el >>> 0) (dl >>> 0) ? 1 : 0)) | 0;dh ch;dl cl;ch bh;cl bl;bh ah;bl al;al (t1l + t2l) | 0;ah (t1h + t2h + ((al >>> 0) (t1l >>> 0) ? 1 : 0)) | 0;}H0l H0.low (H0l + al);H0.high (H0h + ah + ((H0l >>> 0) (al >>> 0) ? 1 : 0));H1l H1.low (H1l + bl);H1.high (H1h + bh + ((H1l >>> 0) (bl >>> 0) ? 1 : 0));H2l H2.low (H2l + cl);H2.high (H2h + ch + ((H2l >>> 0) (cl >>> 0) ? 1 : 0));H3l H3.low (H3l + dl);H3.high (H3h + dh + ((H3l >>> 0) (dl >>> 0) ? 1 : 0));H4l H4.low (H4l + el);H4.high (H4h + eh + ((H4l >>> 0) (el >>> 0) ? 1 : 0));H5l H5.low (H5l + fl);H5.high (H5h + fh + ((H5l >>> 0) (fl >>> 0) ? 1 : 0));H6l H6.low (H6l + gl);H6.high (H6h + gh + ((H6l >>> 0) (gl >>> 0) ? 1 : 0));H7l H7.low (H7l + hl);H7.high (H7h + hh + ((H7l >>> 0) (hl >>> 0) ? 1 : 0));},_doFinalize: function () {var data this._data;var dataWords data.words;var nBitsTotal this._nDataBytes * 8;var nBitsLeft data.sigBytes * 8;dataWordsnBitsLeft >>> 5 | 0x80 (24 - nBitsLeft % 32);dataWords(((nBitsLeft + 128) >>> 10) 5) + 30 Math.floor(nBitsTotal / 0x100000000);dataWords(((nBitsLeft + 128) >>> 10) 5) + 31 nBitsTotal;data.sigBytes dataWords.length * 4;this._process();var hash this._hash.toX32();return hash;},clone: function () {var clone Hasher.clone.call(this);clone._hash this._hash.clone();return clone;},blockSize: 1024 / 32});C.SHA512 Hasher._createHelper(SHA512);C.HmacSHA512 Hasher._createHmacHelper(SHA512);}());(function () {var C CryptoJS;var C_x64 C.x64;var X64Word C_x64.Word;var X64WordArray C_x64.WordArray;var C_algo C.algo;var SHA512 C_algo.SHA512;var SHA384 C_algo.SHA384 SHA512.extend({_doReset: function () {this._hash new X64WordArray.init(new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4));},_doFinalize: function () {var hash SHA512._doFinalize.call(this);hash.sigBytes - 16;return hash;}});C.SHA384 SHA512._createHelper(SHA384);C.HmacSHA384 SHA512._createHmacHelper(SHA384);}());CryptoJS.lib.Cipher || (function (undefined) {var C CryptoJS;var C_lib C.lib;var Base C_lib.Base;var WordArray C_lib.WordArray;var BufferedBlockAlgorithm C_lib.BufferedBlockAlgorithm;var C_enc C.enc;var Utf8 C_enc.Utf8;var Base64 C_enc.Base64;var C_algo C.algo;var EvpKDF C_algo.EvpKDF;var Cipher C_lib.Cipher BufferedBlockAlgorithm.extend({cfg: Base.extend(),createEncryptor: function (key, cfg) {return this.create(this._ENC_XFORM_MODE, key, cfg);},createDecryptor: function (key, cfg) {return this.create(this._DEC_XFORM_MODE, key, cfg);},init: function (xformMode, key, cfg) {this.cfg this.cfg.extend(cfg);this._xformMode xformMode;this._key key;this.reset();},reset: function () {BufferedBlockAlgorithm.reset.call(this);this._doReset();},process: function (dataUpdate) {this._append(dataUpdate);return this._process();},finalize: function (dataUpdate) {if (dataUpdate) {this._append(dataUpdate);}var finalProcessedData this._doFinalize();return finalProcessedData;},keySize: 128 / 32,ivSize: 128 / 32,_ENC_XFORM_MODE: 1,_DEC_XFORM_MODE: 2,_createHelper: (function () {function selectCipherStrategy(key) {if (typeof key string) {return PasswordBasedCipher;} else {return SerializableCipher;}}return function (cipher) {return {encrypt: function (message, key, cfg) {return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);},decrypt: function (ciphertext, key, cfg) {return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);}};};}())});var StreamCipher C_lib.StreamCipher Cipher.extend({_doFinalize: function () {var finalProcessedBlocks this._process(!!flush);return finalProcessedBlocks;},blockSize: 1});var C_mode C.mode {};var BlockCipherMode C_lib.BlockCipherMode Base.extend({createEncryptor: function (cipher, iv) {return this.Encryptor.create(cipher, iv);},createDecryptor: function (cipher, iv) {return this.Decryptor.create(cipher, iv);},init: function (cipher, iv) {this._cipher cipher;this._iv iv;}});var CBC C_mode.CBC (function () {var CBC BlockCipherMode.extend();CBC.Encryptor CBC.extend({processBlock: function (words, offset) {var cipher this._cipher;var blockSize cipher.blockSize;xorBlock.call(this, words, offset, blockSize);cipher.encryptBlock(words, offset);this._prevBlock words.slice(offset, offset + blockSize);}});CBC.Decryptor CBC.extend({processBlock: function (words, offset) {var cipher this._cipher;var blockSize cipher.blockSize;var thisBlock words.slice(offset, offset + blockSize);cipher.decryptBlock(words, offset);xorBlock.call(this, words, offset, blockSize);this._prevBlock thisBlock;}});function xorBlock(words, offset, blockSize) {var iv this._iv;if (iv) {var block iv;this._iv undefined;} else {var block this._prevBlock;}for (var i 0; i blockSize; i++) {wordsoffset + i ^ blocki;}}return CBC;}());var C_pad C.pad {};var Pkcs7 C_pad.Pkcs7 {pad: function (data, blockSize) {var blockSizeBytes blockSize * 4;var nPaddingBytes blockSizeBytes - data.sigBytes % blockSizeBytes;var paddingWord (nPaddingBytes 24) | (nPaddingBytes 16) | (nPaddingBytes 8) | nPaddingBytes;var paddingWords ;for (var i 0; i nPaddingBytes; i + 4) {paddingWords.push(paddingWord);}var padding WordArray.create(paddingWords, nPaddingBytes);data.concat(padding);},unpad: function (data) {var nPaddingBytes data.words(data.sigBytes - 1) >>> 2 & 0xff;data.sigBytes - nPaddingBytes;}};var BlockCipher C_lib.BlockCipher Cipher.extend({cfg: Cipher.cfg.extend({mode: CBC,padding: Pkcs7}),reset: function () {Cipher.reset.call(this);var cfg this.cfg;var iv cfg.iv;var mode cfg.mode;if (this._xformMode this._ENC_XFORM_MODE) {var modeCreator mode.createEncryptor;} else /* if (this._xformMode this._DEC_XFORM_MODE) */ {var modeCreator mode.createDecryptor;this._minBufferSize 1;}if (this._mode && this._mode.__creator modeCreator) {this._mode.init(this, iv && iv.words);} else {this._mode modeCreator.call(mode, this, iv && iv.words);this._mode.__creator modeCreator;}},_doProcessBlock: function (words, offset) {this._mode.processBlock(words, offset);},_doFinalize: function () {var padding this.cfg.padding;if (this._xformMode this._ENC_XFORM_MODE) {padding.pad(this._data, this.blockSize);var finalProcessedBlocks this._process(!!flush);} else /* if (this._xformMode this._DEC_XFORM_MODE) */ {var finalProcessedBlocks this._process(!!flush);padding.unpad(finalProcessedBlocks);}return finalProcessedBlocks;},blockSize: 128 / 32});var CipherParams C_lib.CipherParams Base.extend({init: function (cipherParams) {this.mixIn(cipherParams);},toString: function (formatter) {return (formatter || this.formatter).stringify(this);}});var C_format C.format {};var OpenSSLFormatter C_format.OpenSSL {stringify: function (cipherParams) {var ciphertext cipherParams.ciphertext;var salt cipherParams.salt;if (salt) {var wordArray WordArray.create(0x53616c74, 0x65645f5f).concat(salt).concat(ciphertext);} else {var wordArray ciphertext;}return wordArray.toString(Base64);},parse: function (openSSLStr) {var ciphertext Base64.parse(openSSLStr);var ciphertextWords ciphertext.words;if (ciphertextWords0 0x53616c74 && ciphertextWords1 0x65645f5f) {var salt WordArray.create(ciphertextWords.slice(2, 4));ciphertextWords.splice(0, 4);ciphertext.sigBytes - 16;}return CipherParams.create({ ciphertext: ciphertext, salt: salt });}};var SerializableCipher C_lib.SerializableCipher Base.extend({cfg: Base.extend({format: OpenSSLFormatter}),encrypt: function (cipher, message, key, cfg) {cfg this.cfg.extend(cfg);var encryptor cipher.createEncryptor(key, cfg);var ciphertext encryptor.finalize(message);var cipherCfg encryptor.cfg;return CipherParams.create({ciphertext: ciphertext,key: key,iv: cipherCfg.iv,algorithm: cipher,mode: cipherCfg.mode,padding: cipherCfg.padding,blockSize: cipher.blockSize,formatter: cfg.format});},decrypt: function (cipher, ciphertext, key, cfg) {cfg this.cfg.extend(cfg);ciphertext this._parse(ciphertext, cfg.format);var plaintext cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);return plaintext;},_parse: function (ciphertext, format) {if (typeof ciphertext string) {return format.parse(ciphertext, this);} else {return ciphertext;}}});var C_kdf C.kdf {};var OpenSSLKdf C_kdf.OpenSSL {execute: function (password, keySize, ivSize, salt) {if (!salt) {salt WordArray.random(64 / 8);}var key EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);var iv WordArray.create(key.words.slice(keySize), ivSize * 4);key.sigBytes keySize * 4;return CipherParams.create({ key: key, iv: iv, salt: salt });}};var PasswordBasedCipher C_lib.PasswordBasedCipher SerializableCipher.extend({cfg: SerializableCipher.cfg.extend({kdf: OpenSSLKdf}),encrypt: function (cipher, message, password, cfg) {cfg this.cfg.extend(cfg);var derivedParams cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);cfg.iv derivedParams.iv;var ciphertext SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);ciphertext.mixIn(derivedParams);return ciphertext;},decrypt: function (cipher, ciphertext, password, cfg) {cfg this.cfg.extend(cfg);ciphertext this._parse(ciphertext, cfg.format);var derivedParams cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);cfg.iv derivedParams.iv;var plaintext SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);return plaintext;}});}());CryptoJS.mode.CFB (function () {var CFB CryptoJS.lib.BlockCipherMode.extend();CFB.Encryptor CFB.extend({processBlock: function (words, offset) {var cipher this._cipher;var blockSize cipher.blockSize;generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);this._prevBlock words.slice(offset, offset + blockSize);}});CFB.Decryptor CFB.extend({processBlock: function (words, offset) {var cipher this._cipher;var blockSize cipher.blockSize;var thisBlock words.slice(offset, offset + blockSize);generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);this._prevBlock thisBlock;}});function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {var iv this._iv;if (iv) {var keystream iv.slice(0);this._iv undefined;} else {var keystream this._prevBlock;}cipher.encryptBlock(keystream, 0);for (var i 0; i blockSize; i++) {wordsoffset + i ^ keystreami;}}return CFB;}());CryptoJS.mode.ECB (function () {var ECB CryptoJS.lib.BlockCipherMode.extend();ECB.Encryptor ECB.extend({processBlock: function (words, offset) {this._cipher.encryptBlock(words, offset);}});ECB.Decryptor ECB.extend({processBlock: function (words, offset) {this._cipher.decryptBlock(words, offset);}});return ECB;}());CryptoJS.pad.AnsiX923 {pad: function (data, blockSize) {var dataSigBytes data.sigBytes;var blockSizeBytes blockSize * 4;var nPaddingBytes blockSizeBytes - dataSigBytes % blockSizeBytes;var lastBytePos dataSigBytes + nPaddingBytes - 1;data.clamp();data.wordslastBytePos >>> 2 | nPaddingBytes (24 - (lastBytePos % 4) * 8);data.sigBytes + nPaddingBytes;},unpad: function (data) {var nPaddingBytes data.words(data.sigBytes - 1) >>> 2 & 0xff;data.sigBytes - nPaddingBytes;}};CryptoJS.pad.Iso10126 {pad: function (data, blockSize) {var blockSizeBytes blockSize * 4;var nPaddingBytes blockSizeBytes - data.sigBytes % blockSizeBytes;data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create(nPaddingBytes 24, 1));},unpad: function (data) {var nPaddingBytes data.words(data.sigBytes - 1) >>> 2 & 0xff;data.sigBytes - nPaddingBytes;}};CryptoJS.pad.Iso97971 {pad: function (data, blockSize) {data.concat(CryptoJS.lib.WordArray.create(0x80000000, 1));CryptoJS.pad.ZeroPadding.pad(data, blockSize);},unpad: function (data) {CryptoJS.pad.ZeroPadding.unpad(data);data.sigBytes--;}};CryptoJS.mode.OFB (function () {var OFB CryptoJS.lib.BlockCipherMode.extend();var Encryptor OFB.Encryptor OFB.extend({processBlock: function (words, offset) {var cipher this._ciphervar blockSize cipher.blockSize;var iv this._iv;var keystream this._keystream;if (iv) {keystream this._keystream iv.slice(0);this._iv undefined;}cipher.encryptBlock(keystream, 0);for (var i 0; i blockSize; i++) {wordsoffset + i ^ keystreami;}}});OFB.Decryptor Encryptor;return OFB;}());CryptoJS.pad.NoPadding {pad: function () {},unpad: function () {}};(function (undefined) {var C CryptoJS;var C_lib C.lib;var CipherParams C_lib.CipherParams;var C_enc C.enc;var Hex C_enc.Hex;var C_format C.format;var HexFormatter C_format.Hex {stringify: function (cipherParams) {return cipherParams.ciphertext.toString(Hex);},parse: function (input) {var ciphertext Hex.parse(input);return CipherParams.create({ ciphertext: ciphertext });}};}());(function () {var C CryptoJS;var C_lib C.lib;var BlockCipher C_lib.BlockCipher;var C_algo C.algo;var SBOX ;var INV_SBOX ;var SUB_MIX_0 ;var SUB_MIX_1 ;var SUB_MIX_2 ;var SUB_MIX_3 ;var INV_SUB_MIX_0 ;var INV_SUB_MIX_1 ;var INV_SUB_MIX_2 ;var INV_SUB_MIX_3 ;(function () {var d ;for (var i 0; i 256; i++) {if (i 128) {di i 1;} else {di (i 1) ^ 0x11b;}}var x 0;var xi 0;for (var i 0; i 256; i++) {var sx xi ^ (xi 1) ^ (xi 2) ^ (xi 3) ^ (xi 4);sx (sx >>> 8) ^ (sx & 0xff) ^ 0x63;SBOXx sx;INV_SBOXsx x;var x2 dx;var x4 dx2;var x8 dx4;var t (dsx * 0x101) ^ (sx * 0x1010100);SUB_MIX_0x (t 24) | (t >>> 8);SUB_MIX_1x (t 16) | (t >>> 16);SUB_MIX_2x (t 8) | (t >>> 24);SUB_MIX_3x t;var t (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);INV_SUB_MIX_0sx (t 24) | (t >>> 8);INV_SUB_MIX_1sx (t 16) | (t >>> 16);INV_SUB_MIX_2sx (t 8) | (t >>> 24);INV_SUB_MIX_3sx t;if (!x) {x xi 1;} else {x x2 ^ dddx8 ^ x2;xi ^ ddxi;}}}());var RCON 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36;var AES C_algo.AES BlockCipher.extend({_doReset: function () {if (this._nRounds && this._keyPriorReset this._key) {return;}var key this._keyPriorReset this._key;var keyWords key.words;var keySize key.sigBytes / 4;var nRounds this._nRounds keySize + 6;var ksRows (nRounds + 1) * 4;var keySchedule this._keySchedule ;for (var ksRow 0; ksRow ksRows; ksRow++) {if (ksRow keySize) {keyScheduleksRow keyWordsksRow;} else {var t keyScheduleksRow - 1;if (!(ksRow % keySize)) {t (t 8) | (t >>> 24);t (SBOXt >>> 24 24) | (SBOX(t >>> 16) & 0xff 16) | (SBOX(t >>> 8) & 0xff 8) | SBOXt & 0xff;t ^ RCON(ksRow / keySize) | 0 24;} else if (keySize > 6 && ksRow % keySize 4) {t (SBOXt >>> 24 24) | (SBOX(t >>> 16) & 0xff 16) | (SBOX(t >>> 8) & 0xff 8) | SBOXt & 0xff;}keyScheduleksRow keyScheduleksRow - keySize ^ t;}}var invKeySchedule this._invKeySchedule ;for (var invKsRow 0; invKsRow ksRows; invKsRow++) {var ksRow ksRows - invKsRow;if (invKsRow % 4) {var t keyScheduleksRow;} else {var t keyScheduleksRow - 4;}if (invKsRow 4 || ksRow 4) {invKeyScheduleinvKsRow t;} else {invKeyScheduleinvKsRow INV_SUB_MIX_0SBOXt >>> 24 ^ INV_SUB_MIX_1SBOX(t >>> 16) & 0xff ^INV_SUB_MIX_2SBOX(t >>> 8) & 0xff ^ INV_SUB_MIX_3SBOXt & 0xff;}}},encryptBlock: function (M, offset) {this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);},decryptBlock: function (M, offset) {var t Moffset + 1;Moffset + 1 Moffset + 3;Moffset + 3 t;this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);var t Moffset + 1;Moffset + 1 Moffset + 3;Moffset + 3 t;},_doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {var nRounds this._nRounds;var s0 Moffset ^ keySchedule0;var s1 Moffset + 1 ^ keySchedule1;var s2 Moffset + 2 ^ keySchedule2;var s3 Moffset + 3 ^ keySchedule3;var ksRow 4;for (var round 1; round nRounds; round++) {var t0 SUB_MIX_0s0 >>> 24 ^ SUB_MIX_1(s1 >>> 16) & 0xff ^ SUB_MIX_2(s2 >>> 8) & 0xff ^ SUB_MIX_3s3 & 0xff ^ keyScheduleksRow++;var t1 SUB_MIX_0s1 >>> 24 ^ SUB_MIX_1(s2 >>> 16) & 0xff ^ SUB_MIX_2(s3 >>> 8) & 0xff ^ SUB_MIX_3s0 & 0xff ^ keyScheduleksRow++;var t2 SUB_MIX_0s2 >>> 24 ^ SUB_MIX_1(s3 >>> 16) & 0xff ^ SUB_MIX_2(s0 >>> 8) & 0xff ^ SUB_MIX_3s1 & 0xff ^ keyScheduleksRow++;var t3 SUB_MIX_0s3 >>> 24 ^ SUB_MIX_1(s0 >>> 16) & 0xff ^ SUB_MIX_2(s1 >>> 8) & 0xff ^ SUB_MIX_3s2 & 0xff ^ keyScheduleksRow++;s0 t0;s1 t1;s2 t2;s3 t3;}var t0 ((SBOXs0 >>> 24 24) | (SBOX(s1 >>> 16) & 0xff 16) | (SBOX(s2 >>> 8) & 0xff 8) | SBOXs3 & 0xff) ^ keyScheduleksRow++;var t1 ((SBOXs1 >>> 24 24) | (SBOX(s2 >>> 16) & 0xff 16) | (SBOX(s3 >>> 8) & 0xff 8) | SBOXs0 & 0xff) ^ keyScheduleksRow++;var t2 ((SBOXs2 >>> 24 24) | (SBOX(s3 >>> 16) & 0xff 16) | (SBOX(s0 >>> 8) & 0xff 8) | SBOXs1 & 0xff) ^ keyScheduleksRow++;var t3 ((SBOXs3 >>> 24 24) | (SBOX(s0 >>> 16) & 0xff 16) | (SBOX(s1 >>> 8) & 0xff 8) | SBOXs2 & 0xff) ^ keyScheduleksRow++;Moffset t0;Moffset + 1 t1;Moffset + 2 t2;Moffset + 3 t3;},keySize: 256 / 32});C.AES BlockCipher._createHelper(AES);}());(function () {var C CryptoJS;var C_lib C.lib;var WordArray C_lib.WordArray;var BlockCipher C_lib.BlockCipher;var C_algo C.algo;var PC1 57, 49, 41, 33, 25, 17, 9, 1,58, 50, 42, 34, 26, 18, 10, 2,59, 51, 43, 35, 27, 19, 11, 3,60, 52, 44, 36, 63, 55, 47, 39,31, 23, 15, 7, 62, 54, 46, 38,30, 22, 14, 6, 61, 53, 45, 37,29, 21, 13, 5, 28, 20, 12, 4;var PC2 14, 17, 11, 24, 1, 5,3, 28, 15, 6, 21, 10,23, 19, 12, 4, 26, 8,16, 7, 27, 20, 13, 2,41, 52, 31, 37, 47, 55,30, 40, 51, 45, 33, 48,44, 49, 39, 56, 34, 53,46, 42, 50, 36, 29, 32;var BIT_SHIFTS 1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28;var SBOX_P {0x0: 0x808200,0x10000000: 0x8000,0x20000000: 0x808002,0x30000000: 0x2,0x40000000: 0x200,0x50000000: 0x808202,0x60000000: 0x800202,0x70000000: 0x800000,0x80000000: 0x202,0x90000000: 0x800200,0xa0000000: 0x8200,0xb0000000: 0x808000,0xc0000000: 0x8002,0xd0000000: 0x800002,0xe0000000: 0x0,0xf0000000: 0x8202,0x8000000: 0x0,0x18000000: 0x808202,0x28000000: 0x8202,0x38000000: 0x8000,0x48000000: 0x808200,0x58000000: 0x200,0x68000000: 0x808002,0x78000000: 0x2,0x88000000: 0x800200,0x98000000: 0x8200,0xa8000000: 0x808000,0xb8000000: 0x800202,0xc8000000: 0x800002,0xd8000000: 0x8002,0xe8000000: 0x202,0xf8000000: 0x800000,0x1: 0x8000,0x10000001: 0x2,0x20000001: 0x808200,0x30000001: 0x800000,0x40000001: 0x808002,0x50000001: 0x8200,0x60000001: 0x200,0x70000001: 0x800202,0x80000001: 0x808202,0x90000001: 0x808000,0xa0000001: 0x800002,0xb0000001: 0x8202,0xc0000001: 0x202,0xd0000001: 0x800200,0xe0000001: 0x8002,0xf0000001: 0x0,0x8000001: 0x808202,0x18000001: 0x808000,0x28000001: 0x800000,0x38000001: 0x200,0x48000001: 0x8000,0x58000001: 0x800002,0x68000001: 0x2,0x78000001: 0x8202,0x88000001: 0x8002,0x98000001: 0x800202,0xa8000001: 0x202,0xb8000001: 0x808200,0xc8000001: 0x800200,0xd8000001: 0x0,0xe8000001: 0x8200,0xf8000001: 0x808002},{0x0: 0x40084010,0x1000000: 0x4000,0x2000000: 0x80000,0x3000000: 0x40080010,0x4000000: 0x40000010,0x5000000: 0x40084000,0x6000000: 0x40004000,0x7000000: 0x10,0x8000000: 0x84000,0x9000000: 0x40004010,0xa000000: 0x40000000,0xb000000: 0x84010,0xc000000: 0x80010,0xd000000: 0x0,0xe000000: 0x4010,0xf000000: 0x40080000,0x800000: 0x40004000,0x1800000: 0x84010,0x2800000: 0x10,0x3800000: 0x40004010,0x4800000: 0x40084010,0x5800000: 0x40000000,0x6800000: 0x80000,0x7800000: 0x40080010,0x8800000: 0x80010,0x9800000: 0x0,0xa800000: 0x4000,0xb800000: 0x40080000,0xc800000: 0x40000010,0xd800000: 0x84000,0xe800000: 0x40084000,0xf800000: 0x4010,0x10000000: 0x0,0x11000000: 0x40080010,0x12000000: 0x40004010,0x13000000: 0x40084000,0x14000000: 0x40080000,0x15000000: 0x10,0x16000000: 0x84010,0x17000000: 0x4000,0x18000000: 0x4010,0x19000000: 0x80000,0x1a000000: 0x80010,0x1b000000: 0x40000010,0x1c000000: 0x84000,0x1d000000: 0x40004000,0x1e000000: 0x40000000,0x1f000000: 0x40084010,0x10800000: 0x84010,0x11800000: 0x80000,0x12800000: 0x40080000,0x13800000: 0x4000,0x14800000: 0x40004000,0x15800000: 0x40084010,0x16800000: 0x10,0x17800000: 0x40000000,0x18800000: 0x40084000,0x19800000: 0x40000010,0x1a800000: 0x40004010,0x1b800000: 0x80010,0x1c800000: 0x0,0x1d800000: 0x4010,0x1e800000: 0x40080010,0x1f800000: 0x84000},{0x0: 0x104,0x100000: 0x0,0x200000: 0x4000100,0x300000: 0x10104,0x400000: 0x10004,0x500000: 0x4000004,0x600000: 0x4010104,0x700000: 0x4010000,0x800000: 0x4000000,0x900000: 0x4010100,0xa00000: 0x10100,0xb00000: 0x4010004,0xc00000: 0x4000104,0xd00000: 0x10000,0xe00000: 0x4,0xf00000: 0x100,0x80000: 0x4010100,0x180000: 0x4010004,0x280000: 0x0,0x380000: 0x4000100,0x480000: 0x4000004,0x580000: 0x10000,0x680000: 0x10004,0x780000: 0x104,0x880000: 0x4,0x980000: 0x100,0xa80000: 0x4010000,0xb80000: 0x10104,0xc80000: 0x10100,0xd80000: 0x4000104,0xe80000: 0x4010104,0xf80000: 0x4000000,0x1000000: 0x4010100,0x1100000: 0x10004,0x1200000: 0x10000,0x1300000: 0x4000100,0x1400000: 0x100,0x1500000: 0x4010104,0x1600000: 0x4000004,0x1700000: 0x0,0x1800000: 0x4000104,0x1900000: 0x4000000,0x1a00000: 0x4,0x1b00000: 0x10100,0x1c00000: 0x4010000,0x1d00000: 0x104,0x1e00000: 0x10104,0x1f00000: 0x4010004,0x1080000: 0x4000000,0x1180000: 0x104,0x1280000: 0x4010100,0x1380000: 0x0,0x1480000: 0x10004,0x1580000: 0x4000100,0x1680000: 0x100,0x1780000: 0x4010004,0x1880000: 0x10000,0x1980000: 0x4010104,0x1a80000: 0x10104,0x1b80000: 0x4000004,0x1c80000: 0x4000104,0x1d80000: 0x4010000,0x1e80000: 0x4,0x1f80000: 0x10100},{0x0: 0x80401000,0x10000: 0x80001040,0x20000: 0x401040,0x30000: 0x80400000,0x40000: 0x0,0x50000: 0x401000,0x60000: 0x80000040,0x70000: 0x400040,0x80000: 0x80000000,0x90000: 0x400000,0xa0000: 0x40,0xb0000: 0x80001000,0xc0000: 0x80400040,0xd0000: 0x1040,0xe0000: 0x1000,0xf0000: 0x80401040,0x8000: 0x80001040,0x18000: 0x40,0x28000: 0x80400040,0x38000: 0x80001000,0x48000: 0x401000,0x58000: 0x80401040,0x68000: 0x0,0x78000: 0x80400000,0x88000: 0x1000,0x98000: 0x80401000,0xa8000: 0x400000,0xb8000: 0x1040,0xc8000: 0x80000000,0xd8000: 0x400040,0xe8000: 0x401040,0xf8000: 0x80000040,0x100000: 0x400040,0x110000: 0x401000,0x120000: 0x80000040,0x130000: 0x0,0x140000: 0x1040,0x150000: 0x80400040,0x160000: 0x80401000,0x170000: 0x80001040,0x180000: 0x80401040,0x190000: 0x80000000,0x1a0000: 0x80400000,0x1b0000: 0x401040,0x1c0000: 0x80001000,0x1d0000: 0x400000,0x1e0000: 0x40,0x1f0000: 0x1000,0x108000: 0x80400000,0x118000: 0x80401040,0x128000: 0x0,0x138000: 0x401000,0x148000: 0x400040,0x158000: 0x80000000,0x168000: 0x80001040,0x178000: 0x40,0x188000: 0x80000040,0x198000: 0x1000,0x1a8000: 0x80001000,0x1b8000: 0x80400040,0x1c8000: 0x1040,0x1d8000: 0x80401000,0x1e8000: 0x400000,0x1f8000: 0x401040},{0x0: 0x80,0x1000: 0x1040000,0x2000: 0x40000,0x3000: 0x20000000,0x4000: 0x20040080,0x5000: 0x1000080,0x6000: 0x21000080,0x7000: 0x40080,0x8000: 0x1000000,0x9000: 0x20040000,0xa000: 0x20000080,0xb000: 0x21040080,0xc000: 0x21040000,0xd000: 0x0,0xe000: 0x1040080,0xf000: 0x21000000,0x800: 0x1040080,0x1800: 0x21000080,0x2800: 0x80,0x3800: 0x1040000,0x4800: 0x40000,0x5800: 0x20040080,0x6800: 0x21040000,0x7800: 0x20000000,0x8800: 0x20040000,0x9800: 0x0,0xa800: 0x21040080,0xb800: 0x1000080,0xc800: 0x20000080,0xd800: 0x21000000,0xe800: 0x1000000,0xf800: 0x40080,0x10000: 0x40000,0x11000: 0x80,0x12000: 0x20000000,0x13000: 0x21000080,0x14000: 0x1000080,0x15000: 0x21040000,0x16000: 0x20040080,0x17000: 0x1000000,0x18000: 0x21040080,0x19000: 0x21000000,0x1a000: 0x1040000,0x1b000: 0x20040000,0x1c000: 0x40080,0x1d000: 0x20000080,0x1e000: 0x0,0x1f000: 0x1040080,0x10800: 0x21000080,0x11800: 0x1000000,0x12800: 0x1040000,0x13800: 0x20040080,0x14800: 0x20000000,0x15800: 0x1040080,0x16800: 0x80,0x17800: 0x21040000,0x18800: 0x40080,0x19800: 0x21040080,0x1a800: 0x0,0x1b800: 0x21000000,0x1c800: 0x1000080,0x1d800: 0x40000,0x1e800: 0x20040000,0x1f800: 0x20000080},{0x0: 0x10000008,0x100: 0x2000,0x200: 0x10200000,0x300: 0x10202008,0x400: 0x10002000,0x500: 0x200000,0x600: 0x200008,0x700: 0x10000000,0x800: 0x0,0x900: 0x10002008,0xa00: 0x202000,0xb00: 0x8,0xc00: 0x10200008,0xd00: 0x202008,0xe00: 0x2008,0xf00: 0x10202000,0x80: 0x10200000,0x180: 0x10202008,0x280: 0x8,0x380: 0x200000,0x480: 0x202008,0x580: 0x10000008,0x680: 0x10002000,0x780: 0x2008,0x880: 0x200008,0x980: 0x2000,0xa80: 0x10002008,0xb80: 0x10200008,0xc80: 0x0,0xd80: 0x10202000,0xe80: 0x202000,0xf80: 0x10000000,0x1000: 0x10002000,0x1100: 0x10200008,0x1200: 0x10202008,0x1300: 0x2008,0x1400: 0x200000,0x1500: 0x10000000,0x1600: 0x10000008,0x1700: 0x202000,0x1800: 0x202008,0x1900: 0x0,0x1a00: 0x8,0x1b00: 0x10200000,0x1c00: 0x2000,0x1d00: 0x10002008,0x1e00: 0x10202000,0x1f00: 0x200008,0x1080: 0x8,0x1180: 0x202000,0x1280: 0x200000,0x1380: 0x10000008,0x1480: 0x10002000,0x1580: 0x2008,0x1680: 0x10202008,0x1780: 0x10200000,0x1880: 0x10202000,0x1980: 0x10200008,0x1a80: 0x2000,0x1b80: 0x202008,0x1c80: 0x200008,0x1d80: 0x0,0x1e80: 0x10000000,0x1f80: 0x10002008},{0x0: 0x100000,0x10: 0x2000401,0x20: 0x400,0x30: 0x100401,0x40: 0x2100401,0x50: 0x0,0x60: 0x1,0x70: 0x2100001,0x80: 0x2000400,0x90: 0x100001,0xa0: 0x2000001,0xb0: 0x2100400,0xc0: 0x2100000,0xd0: 0x401,0xe0: 0x100400,0xf0: 0x2000000,0x8: 0x2100001,0x18: 0x0,0x28: 0x2000401,0x38: 0x2100400,0x48: 0x100000,0x58: 0x2000001,0x68: 0x2000000,0x78: 0x401,0x88: 0x100401,0x98: 0x2000400,0xa8: 0x2100000,0xb8: 0x100001,0xc8: 0x400,0xd8: 0x2100401,0xe8: 0x1,0xf8: 0x100400,0x100: 0x2000000,0x110: 0x100000,0x120: 0x2000401,0x130: 0x2100001,0x140: 0x100001,0x150: 0x2000400,0x160: 0x2100400,0x170: 0x100401,0x180: 0x401,0x190: 0x2100401,0x1a0: 0x100400,0x1b0: 0x1,0x1c0: 0x0,0x1d0: 0x2100000,0x1e0: 0x2000001,0x1f0: 0x400,0x108: 0x100400,0x118: 0x2000401,0x128: 0x2100001,0x138: 0x1,0x148: 0x2000000,0x158: 0x100000,0x168: 0x401,0x178: 0x2100400,0x188: 0x2000001,0x198: 0x2100000,0x1a8: 0x0,0x1b8: 0x2100401,0x1c8: 0x100401,0x1d8: 0x400,0x1e8: 0x2000400,0x1f8: 0x100001},{0x0: 0x8000820,0x1: 0x20000,0x2: 0x8000000,0x3: 0x20,0x4: 0x20020,0x5: 0x8020820,0x6: 0x8020800,0x7: 0x800,0x8: 0x8020000,0x9: 0x8000800,0xa: 0x20800,0xb: 0x8020020,0xc: 0x820,0xd: 0x0,0xe: 0x8000020,0xf: 0x20820,0x80000000: 0x800,0x80000001: 0x8020820,0x80000002: 0x8000820,0x80000003: 0x8000000,0x80000004: 0x8020000,0x80000005: 0x20800,0x80000006: 0x20820,0x80000007: 0x20,0x80000008: 0x8000020,0x80000009: 0x820,0x8000000a: 0x20020,0x8000000b: 0x8020800,0x8000000c: 0x0,0x8000000d: 0x8020020,0x8000000e: 0x8000800,0x8000000f: 0x20000,0x10: 0x20820,0x11: 0x8020800,0x12: 0x20,0x13: 0x800,0x14: 0x8000800,0x15: 0x8000020,0x16: 0x8020020,0x17: 0x20000,0x18: 0x0,0x19: 0x20020,0x1a: 0x8020000,0x1b: 0x8000820,0x1c: 0x8020820,0x1d: 0x20800,0x1e: 0x820,0x1f: 0x8000000,0x80000010: 0x20000,0x80000011: 0x800,0x80000012: 0x8020020,0x80000013: 0x20820,0x80000014: 0x20,0x80000015: 0x8020000,0x80000016: 0x8000000,0x80000017: 0x8000820,0x80000018: 0x8020820,0x80000019: 0x8000020,0x8000001a: 0x8000800,0x8000001b: 0x0,0x8000001c: 0x20800,0x8000001d: 0x820,0x8000001e: 0x20020,0x8000001f: 0x8020800};var SBOX_MASK 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f;var DES C_algo.DES BlockCipher.extend({_doReset: function () {var key this._key;var keyWords key.words;var keyBits ;for (var i 0; i 56; i++) {var keyBitPos PC1i - 1;keyBitsi (keyWordskeyBitPos >>> 5 >>> (31 - keyBitPos % 32)) & 1;}var subKeys this._subKeys ;for (var nSubKey 0; nSubKey 16; nSubKey++) {var subKey subKeysnSubKey ;var bitShift BIT_SHIFTSnSubKey;for (var i 0; i 24; i++) {subKey(i / 6) | 0 | keyBits((PC2i - 1) + bitShift) % 28 (31 - i % 6);subKey4 + ((i / 6) | 0) | keyBits28 + (((PC2i + 24 - 1) + bitShift) % 28) (31 - i % 6);}subKey0 (subKey0 1) | (subKey0 >>> 31);for (var i 1; i 7; i++) {subKeyi subKeyi >>> ((i - 1) * 4 + 3);}subKey7 (subKey7 5) | (subKey7 >>> 27);}var invSubKeys this._invSubKeys ;for (var i 0; i 16; i++) {invSubKeysi subKeys15 - i;}},encryptBlock: function (M, offset) {this._doCryptBlock(M, offset, this._subKeys);},decryptBlock: function (M, offset) {this._doCryptBlock(M, offset, this._invSubKeys);},_doCryptBlock: function (M, offset, subKeys) {this._lBlock Moffset;this._rBlock Moffset + 1;exchangeLR.call(this, 4, 0x0f0f0f0f);exchangeLR.call(this, 16, 0x0000ffff);exchangeRL.call(this, 2, 0x33333333);exchangeRL.call(this, 8, 0x00ff00ff);exchangeLR.call(this, 1, 0x55555555);for (var round 0; round 16; round++) {var subKey subKeysround;var lBlock this._lBlock;var rBlock this._rBlock;var f 0;for (var i 0; i 8; i++) {f | SBOX_Pi((rBlock ^ subKeyi) & SBOX_MASKi) >>> 0;}this._lBlock rBlock;this._rBlock lBlock ^ f;}var t this._lBlock;this._lBlock this._rBlock;this._rBlock t;exchangeLR.call(this, 1, 0x55555555);exchangeRL.call(this, 8, 0x00ff00ff);exchangeRL.call(this, 2, 0x33333333);exchangeLR.call(this, 16, 0x0000ffff);exchangeLR.call(this, 4, 0x0f0f0f0f);Moffset this._lBlock;Moffset + 1 this._rBlock;},keySize: 64 / 32,ivSize: 64 / 32,blockSize: 64 / 32});function exchangeLR(offset, mask) {var t ((this._lBlock >>> offset) ^ this._rBlock) & mask;this._rBlock ^ t;this._lBlock ^ t offset;}function exchangeRL(offset, mask) {var t ((this._rBlock >>> offset) ^ this._lBlock) & mask;this._lBlock ^ t;this._rBlock ^ t offset;}C.DES BlockCipher._createHelper(DES);var TripleDES C_algo.TripleDES BlockCipher.extend({_doReset: function () {var key this._key;var keyWords key.words;this._des1 DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));this._des2 DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));this._des3 DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));},encryptBlock: function (M, offset) {this._des1.encryptBlock(M, offset);this._des2.decryptBlock(M, offset);this._des3.encryptBlock(M, offset);},decryptBlock: function (M, offset) {this._des3.decryptBlock(M, offset);this._des2.encryptBlock(M, offset);this._des1.decryptBlock(M, offset);},keySize: 192 / 32,ivSize: 64 / 32,blockSize: 64 / 32});C.TripleDES BlockCipher._createHelper(TripleDES);}());(function () {var C CryptoJS;var C_lib C.lib;var StreamCipher C_lib.StreamCipher;var C_algo C.algo;var RC4 C_algo.RC4 StreamCipher.extend({_doReset: function () {var key this._key;var keyWords key.words;var keySigBytes key.sigBytes;var S this._S ;for (var i 0; i 256; i++) {Si i;}for (var i 0, j 0; i 256; i++) {var keyByteIndex i % keySigBytes;var keyByte (keyWordskeyByteIndex >>> 2 >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;j (j + Si + keyByte) % 256;var t Si;Si Sj;Sj t;}this._i this._j 0;},_doProcessBlock: function (M, offset) {Moffset ^ generateKeystreamWord.call(this);},keySize: 256 / 32,ivSize: 0});function generateKeystreamWord() {var S this._S;var i this._i;var j this._j;var keystreamWord 0;for (var n 0; n 4; n++) {i (i + 1) % 256;j (j + Si) % 256;var t Si;Si Sj;Sj t;keystreamWord | S(Si + Sj) % 256 (24 - n * 8);}this._i i;this._j j;return keystreamWord;}C.RC4 StreamCipher._createHelper(RC4);var RC4Drop C_algo.RC4Drop RC4.extend({cfg: RC4.cfg.extend({drop: 192}),_doReset: function () {RC4._doReset.call(this);for (var i this.cfg.drop; i > 0; i--) {generateKeystreamWord.call(this);}}});C.RC4Drop StreamCipher._createHelper(RC4Drop);}());/** @preserve* Counter block mode compatible with Dr Brian Gladman fileenc.c* derived from CryptoJS.mode.CTR* Jan Hruby jhruby.web@gmail.com*/CryptoJS.mode.CTRGladman (function () {var CTRGladman CryptoJS.lib.BlockCipherMode.extend();function incWord(word) {if (((word >> 24) & 0xff) 0xff) { //overflowvar b1 (word >> 16) & 0xff;var b2 (word >> 8) & 0xff;var b3 word & 0xff;if (b1 0xff) // overflow b1{b1 0;if (b2 0xff) {b2 0;if (b3 0xff) {b3 0;}else {++b3;}}else {++b2;}}else {++b1;}word 0;word + (b1 16);word + (b2 8);word + b3;}else {word + (0x01 24);}return word;}function incCounter(counter) {if ((counter0 incWord(counter0)) 0) {counter1 incWord(counter1);}return counter;}var Encryptor CTRGladman.Encryptor CTRGladman.extend({processBlock: function (words, offset) {var cipher this._ciphervar blockSize cipher.blockSize;var iv this._iv;var counter this._counter;if (iv) {counter this._counter iv.slice(0);this._iv undefined;}incCounter(counter);var keystream counter.slice(0);cipher.encryptBlock(keystream, 0);for (var i 0; i blockSize; i++) {wordsoffset + i ^ keystreami;}}});CTRGladman.Decryptor Encryptor;return CTRGladman;}());(function () {var C CryptoJS;var C_lib C.lib;var StreamCipher C_lib.StreamCipher;var C_algo C.algo;var S ;var C_ ;var G ;var Rabbit C_algo.Rabbit StreamCipher.extend({_doReset: function () {var K this._key.words;var iv this.cfg.iv;for (var i 0; i 4; i++) {Ki (((Ki 8) | (Ki >>> 24)) & 0x00ff00ff) |(((Ki 24) | (Ki >>> 8)) & 0xff00ff00);}var X this._X K0, (K3 16) | (K2 >>> 16),K1, (K0 16) | (K3 >>> 16),K2, (K1 16) | (K0 >>> 16),K3, (K2 16) | (K1 >>> 16);var C this._C (K2 16) | (K2 >>> 16), (K0 & 0xffff0000) | (K1 & 0x0000ffff),(K3 16) | (K3 >>> 16), (K1 & 0xffff0000) | (K2 & 0x0000ffff),(K0 16) | (K0 >>> 16), (K2 & 0xffff0000) | (K3 & 0x0000ffff),(K1 16) | (K1 >>> 16), (K3 & 0xffff0000) | (K0 & 0x0000ffff);this._b 0;for (var i 0; i 4; i++) {nextState.call(this);}for (var i 0; i 8; i++) {Ci ^ X(i + 4) & 7;}if (iv) {var IV iv.words;var IV_0 IV0;var IV_1 IV1;var i0 (((IV_0 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 24) | (IV_0 >>> 8)) & 0xff00ff00);var i2 (((IV_1 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 24) | (IV_1 >>> 8)) & 0xff00ff00);var i1 (i0 >>> 16) | (i2 & 0xffff0000);var i3 (i2 16) | (i0 & 0x0000ffff);C0 ^ i0;C1 ^ i1;C2 ^ i2;C3 ^ i3;C4 ^ i0;C5 ^ i1;C6 ^ i2;C7 ^ i3;for (var i 0; i 4; i++) {nextState.call(this);}}},_doProcessBlock: function (M, offset) {var X this._X;nextState.call(this);S0 X0 ^ (X5 >>> 16) ^ (X3 16);S1 X2 ^ (X7 >>> 16) ^ (X5 16);S2 X4 ^ (X1 >>> 16) ^ (X7 16);S3 X6 ^ (X3 >>> 16) ^ (X1 16);for (var i 0; i 4; i++) {Si (((Si 8) | (Si >>> 24)) & 0x00ff00ff) |(((Si 24) | (Si >>> 8)) & 0xff00ff00);Moffset + i ^ Si;}},blockSize: 128 / 32,ivSize: 64 / 32});function nextState() {var X this._X;var C this._C;for (var i 0; i 8; i++) {C_i Ci;}C0 (C0 + 0x4d34d34d + this._b) | 0;C1 (C1 + 0xd34d34d3 + ((C0 >>> 0) (C_0 >>> 0) ? 1 : 0)) | 0;C2 (C2 + 0x34d34d34 + ((C1 >>> 0) (C_1 >>> 0) ? 1 : 0)) | 0;C3 (C3 + 0x4d34d34d + ((C2 >>> 0) (C_2 >>> 0) ? 1 : 0)) | 0;C4 (C4 + 0xd34d34d3 + ((C3 >>> 0) (C_3 >>> 0) ? 1 : 0)) | 0;C5 (C5 + 0x34d34d34 + ((C4 >>> 0) (C_4 >>> 0) ? 1 : 0)) | 0;C6 (C6 + 0x4d34d34d + ((C5 >>> 0) (C_5 >>> 0) ? 1 : 0)) | 0;C7 (C7 + 0xd34d34d3 + ((C6 >>> 0) (C_6 >>> 0) ? 1 : 0)) | 0;this._b (C7 >>> 0) (C_7 >>> 0) ? 1 : 0;for (var i 0; i 8; i++) {var gx Xi + Ci;var ga gx & 0xffff;var gb gx >>> 16;var gh ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;var gl (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);Gi gh ^ gl;}X0 (G0 + ((G7 16) | (G7 >>> 16)) + ((G6 16) | (G6 >>> 16))) | 0;X1 (G1 + ((G0 8) | (G0 >>> 24)) + G7) | 0;X2 (G2 + ((G1 16) | (G1 >>> 16)) + ((G0 16) | (G0 >>> 16))) | 0;X3 (G3 + ((G2 8) | (G2 >>> 24)) + G1) | 0;X4 (G4 + ((G3 16) | (G3 >>> 16)) + ((G2 16) | (G2 >>> 16))) | 0;X5 (G5 + ((G4 8) | (G4 >>> 24)) + G3) | 0;X6 (G6 + ((G5 16) | (G5 >>> 16)) + ((G4 16) | (G4 >>> 16))) | 0;X7 (G7 + ((G6 8) | (G6 >>> 24)) + G5) | 0;}C.Rabbit StreamCipher._createHelper(Rabbit);}());CryptoJS.mode.CTR (function () {var CTR CryptoJS.lib.BlockCipherMode.extend();var Encryptor CTR.Encryptor CTR.extend({processBlock: function (words, offset) {var cipher this._ciphervar blockSize cipher.blockSize;var iv this._iv;var counter this._counter;if (iv) {counter this._counter iv.slice(0);this._iv undefined;}var keystream counter.slice(0);cipher.encryptBlock(keystream, 0);counterblockSize - 1 (counterblockSize - 1 + 1) | 0for (var i 0; i blockSize; i++) {wordsoffset + i ^ keystreami;}}});CTR.Decryptor Encryptor;return CTR;}());(function () {var C CryptoJS;var C_lib C.lib;var StreamCipher C_lib.StreamCipher;var C_algo C.algo;var S ;var C_ ;var G ;var RabbitLegacy C_algo.RabbitLegacy StreamCipher.extend({_doReset: function () {var K this._key.words;var iv this.cfg.iv;var X this._X K0, (K3 16) | (K2 >>> 16),K1, (K0 16) | (K3 >>> 16),K2, (K1 16) | (K0 >>> 16),K3, (K2 16) | (K1 >>> 16);var C this._C (K2 16) | (K2 >>> 16), (K0 & 0xffff0000) | (K1 & 0x0000ffff),(K3 16) | (K3 >>> 16), (K1 & 0xffff0000) | (K2 & 0x0000ffff),(K0 16) | (K0 >>> 16), (K2 & 0xffff0000) | (K3 & 0x0000ffff),(K1 16) | (K1 >>> 16), (K3 & 0xffff0000) | (K0 & 0x0000ffff);this._b 0;for (var i 0; i 4; i++) {nextState.call(this);}for (var i 0; i 8; i++) {Ci ^ X(i + 4) & 7;}if (iv) {var IV iv.words;var IV_0 IV0;var IV_1 IV1;var i0 (((IV_0 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 24) | (IV_0 >>> 8)) & 0xff00ff00);var i2 (((IV_1 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 24) | (IV_1 >>> 8)) & 0xff00ff00);var i1 (i0 >>> 16) | (i2 & 0xffff0000);var i3 (i2 16) | (i0 & 0x0000ffff);C0 ^ i0;C1 ^ i1;C2 ^ i2;C3 ^ i3;C4 ^ i0;C5 ^ i1;C6 ^ i2;C7 ^ i3;for (var i 0; i 4; i++) {nextState.call(this);}}},_doProcessBlock: function (M, offset) {var X this._X;nextState.call(this);S0 X0 ^ (X5 >>> 16) ^ (X3 16);S1 X2 ^ (X7 >>> 16) ^ (X5 16);S2 X4 ^ (X1 >>> 16) ^ (X7 16);S3 X6 ^ (X3 >>> 16) ^ (X1 16);for (var i 0; i 4; i++) {Si (((Si 8) | (Si >>> 24)) & 0x00ff00ff) |(((Si 24) | (Si >>> 8)) & 0xff00ff00);Moffset + i ^ Si;}},blockSize: 128 / 32,ivSize: 64 / 32});function nextState() {var X this._X;var C this._C;for (var i 0; i 8; i++) {C_i Ci;}C0 (C0 + 0x4d34d34d + this._b) | 0;C1 (C1 + 0xd34d34d3 + ((C0 >>> 0) (C_0 >>> 0) ? 1 : 0)) | 0;C2 (C2 + 0x34d34d34 + ((C1 >>> 0) (C_1 >>> 0) ? 1 : 0)) | 0;C3 (C3 + 0x4d34d34d + ((C2 >>> 0) (C_2 >>> 0) ? 1 : 0)) | 0;C4 (C4 + 0xd34d34d3 + ((C3 >>> 0) (C_3 >>> 0) ? 1 : 0)) | 0;C5 (C5 + 0x34d34d34 + ((C4 >>> 0) (C_4 >>> 0) ? 1 : 0)) | 0;C6 (C6 + 0x4d34d34d + ((C5 >>> 0) (C_5 >>> 0) ? 1 : 0)) | 0;C7 (C7 + 0xd34d34d3 + ((C6 >>> 0) (C_6 >>> 0) ? 1 : 0)) | 0;this._b (C7 >>> 0) (C_7 >>> 0) ? 1 : 0;for (var i 0; i 8; i++) {var gx Xi + Ci;var ga gx & 0xffff;var gb gx >>> 16;var gh ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;var gl (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);Gi gh ^ gl;}X0 (G0 + ((G7 16) | (G7 >>> 16)) + ((G6 16) | (G6 >>> 16))) | 0;X1 (G1 + ((G0 8) | (G0 >>> 24)) + G7) | 0;X2 (G2 + ((G1 16) | (G1 >>> 16)) + ((G0 16) | (G0 >>> 16))) | 0;X3 (G3 + ((G2 8) | (G2 >>> 24)) + G1) | 0;X4 (G4 + ((G3 16) | (G3 >>> 16)) + ((G2 16) | (G2 >>> 16))) | 0;X5 (G5 + ((G4 8) | (G4 >>> 24)) + G3) | 0;X6 (G6 + ((G5 16) | (G5 >>> 16)) + ((G4 16) | (G4 >>> 16))) | 0;X7 (G7 + ((G6 8) | (G6 >>> 24)) + G5) | 0;}C.RabbitLegacy StreamCipher._createHelper(RabbitLegacy);}());CryptoJS.pad.ZeroPadding {pad: function (data, blockSize) {var blockSizeBytes blockSize * 4;data.clamp();data.sigBytes + blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);},unpad: function (data) {var dataWords data.words;var i data.sigBytes - 1;while (!((dataWordsi >>> 2 >>> (24 - (i % 4) * 8)) & 0xff)) {i--;}data.sigBytes i + 1;}};return CryptoJS;}));(function (ns_root) {var _ new (function () { })();function GenerateCNonce() {let characters abcdef0123456789;let token ;for (var i 0; i 16; i++) {let rnd Math.round(Math.random() * characters.length);token + characters.substr(rnd, 1);}return token;}function ReadRsaHeader(xhr) {let response_headers xhr.getAllResponseHeaders();response_headers response_headers.split(\r\n);for (let i 0; i response_headers.length; i++) {if (response_headersi.match(/^Evo-Token:/i) ! null)return response_headersi;}return null;}function ReadDigestHeader(xhr) {var response_headers xhr.getAllResponseHeaders();response_headers response_headers.split(\r\n);for (var i 0; i response_headers.length; i++) {if (response_headersi.match(/^www-authenticate/i) ! null)return response_headersi;}return null;}if (!HasValue(ns_root.Encrypt)) {ns_root.Encrypt new JSEncrypt();ns_root.Encrypt.setPublicKey($(#pub_key).text());ns_root.DebugEncrypt function(userToken, serverToken) {console.log( ns_root.Encrypt.encrypt(userToken + --- + serverToken + --- + Math.random().toString(36).substring(5)) );};}ns_root.RsaAuth function RsaAuth(host, username, password, completion) {Log2_();let that this;let _completion completion;EnsureValue(host);let _rsa_e_unameandpw ns_root.Encrypt.encrypt(username + \n + password + \n + Math.random().toString(36).substring(5));let _auth_url Fmt(HttpOrHttps() + //{0}/xhr, host);var _ctx null;function Initialize() {_ctx Seal({Owner: that,Scheme: null,Nonce: null,Realm: null,Qop: null,Response: null,Opaque: null,Nc: 0,CNonce: null,Timeout: 10000 * 6 * 3, // 3 minToken: null,Host: host,AuthNeeded: true,Initialized: false,EvoAuthSent: false,Uuid: Guid(),Interval: null});}this.Initialize Initialize;Initialize();function ShiftInterval() {Log();if (null ! _ctx.Interval)clearInterval(_ctx.Interval);_ctx.Interval setInterval(function PingAuth() {Log(that.GetContext(_).Host);that.UnauthorizedRequest();},10000);}this.Request function (completion) {if (HasValue(completion))_completion completion;(HasValue(_ctx.Nonce) ? that.AuthorizedRequest : that.UnauthorizedRequest)();ShiftInterval();};var _unauth_request;var _auth_request;var _evoTokenHeader;function UpdateDigestData(xhr) {let digest_header ReadDigestHeader(xhr);if (!HasValue(digest_header))return;digest_header digest_header.split(:)1;digest_header digest_header.split(,);_ctx.Scheme digest_header0.split(/\s/)1;_ctx.Scheme _ctx.Scheme.replace(/MaybeDigest/g, Digest);for (var i 0; i digest_header.length; i++) {let equalIndex digest_headeri.indexOf();let key digest_headeri.substring(0, equalIndex);let val digest_headeri.substring(equalIndex + 1);val val.replace(/+/g, );let val2 TrimEx(val);if (key.match(/realm/i) ! null) _ctx.Realm val2;if (key.match(/nonce/i) ! null) _ctx.Nonce val2;if (key.match(/opaque/i) ! null) _ctx.Opaque val2;if (key.match(/qop/i) ! null) _ctx.Qop val2;}_ctx.CNonce GenerateCNonce();}this.UnauthorizedRequest function UnauthorizedRequest() {_unauth_request new XMLHttpRequest();_unauth_request.open(GET, _auth_url);_unauth_request.timeout _ctx.Timeout;_unauth_request.onreadystatechange function(e) {if (e.currentTarget.readyState 2 &&(e.currentTarget.status 401 || e.currentTarget.status 0)) {{let rsa_header ReadRsaHeader(e.currentTarget);if (!HasValue(rsa_header))return;_evoTokenHeader rsa_header.substring(evo-token:.length).trim();UpdateDigestData(_unauth_request);_ctx.AuthNeeded true;that.AuthorizedRequest();}return;}if (e.currentTarget.readyState 4) {if (e.currentTarget.status 200 || e.currentTarget.status 204) {Log2(Authorization not required for {0}, _auth_url);_ctx.AuthNeeded false;_ctx.Initialized true;Log4(Initialized {0}, _auth_url);if (IsFunc(_completion))_completion(true);} else if (e.currentTarget.status 0) {if (IsFunc(_completion))_completion(false);}}};_unauth_request.onerror function (e) {if (_unauth_request.status ! 401)Log(Error {0} on unauthorized request to {1}, e.currentTarget.status, _auth_url);if (IsFunc(_completion))_completion(false);};Log(Unauthorized request to + _auth_url);_unauth_request.send();};this.CreateResponse function (method, url) {let ha1 CryptoJS.MD5(username, _ctx.Realm, password.join(:)).toString();let ha2 CryptoJS.MD5(method, url.join(:)).toString();return CryptoJS.MD5(ha1, _ctx.Nonce, (00000000 + _ctx.Nc).slice(-8), _ctx.CNonce, _ctx.Qop, ha2.join(:)).toString();};this.GetDigestHeader function (method, url) {if (_ctx.Initialized false)ThrowError(Fmt(Not initialized ({0}), that.GetContext(_).Host));ShiftInterval();return GetDigestHeaderImpl(method, url);};function GetRsaAuthHeaderImpl(method, url, b) {EnsureValue(method);EnsureValue(url);if (HasValue(ns_root.AuthToken))_evoTokenHeader ns_root.AuthToken;_ctx.Response btoa(_rsa_e_unameandpw + --- + _evoTokenHeader + --- + Math.random().toString(36).substring(5));return _ctx.Response;}function GetDigestHeaderImpl(method, url, b) {EnsureValue(method);EnsureValue(url);if (!HasValue(b))++(_ctx.Nc);_ctx.Response that.CreateResponse(method, url);let re ( + _ctx.Scheme + +username + username + , +realm + _ctx.Realm + , +nonce + _ctx.Nonce + , +uri + url + , +response + _ctx.Response + , +opaque + _ctx.Opaque + , +qop + _ctx.Qop + , +nc + (00000000 + _ctx.Nc).slice(-8) + , +cnonce + _ctx.CNonce + );Log6(re);return re;}this.AuthorizedRequest function AuthorizedRequest() {Log5(_auth_url);let rsa_auth_header GetRsaAuthHeaderImpl(GET, _auth_url);let digest_auth_header GetDigestHeaderImpl(GET, _auth_url);_auth_request new XMLHttpRequest();_auth_request.open(GET, _auth_url);_auth_request.timeout _ctx.Timeout;_auth_request.setRequestHeader(Authorization, digest_auth_header);if (true ! _ctx.EvoAuthSent) {_auth_request.setRequestHeader(Streaming-Web-Ver, 1.3.0);_auth_request.setRequestHeader(Evo-Token-Response, rsa_auth_header);_ctx.EvoAuthSent true;}_auth_request.onload function (e) {if (e.currentTarget.status > 200 && e.currentTarget.status 400) {Log2_(Successfuly authorized on {0}, _auth_url);_ctx.Initialized true;if (IsFunc(_completion))_completion(true);}else if (e.currentTarget.status 500) {if (IsFunc(_completion))_completion(e.currentTarget);}else {Log1_(Authorization failed on {0}, _auth_url);if (IsFunc(_completion))_completion(e.currentTarget);}};_auth_request.onerror function (e) {Log4(Error {0} on authenticated request to {1}, e.currentTarget.status, _auth_url);if (IsFunc(_completion))_completion(false);};_auth_request.send();Log4(Sending authorized request to {0}, _auth_url);};this.Abort function () {Log4(Aborted request to {0}, _auth_url);let fn function (xhr) {if (HasValue(xhr) && xhr.readyState ! 4)xhr.Abort();};fn(_unauth_request);fn(_auth_request);};this.GetContext function (scope) {if (scope ! _) ThrowError(access);return _ctx;};{Freeze(this);}};ns_root.RsaAuth.prototype Freeze({get AuthNeeded() { return this.GetContext(_).AuthNeeded; },get Initialized() { return this.GetContext(_).Initialized; },get Host() { return this.GetContext(_).Host; },BumpNc: function () { ++(this.GetContext(_).Nc); },GetRsaHeader: function (method, url) {if (this.GetContext(_).Initialized false)ThrowError(Not initialized);return null;}});Freeze(ns_root.RsaAuth);})(_root_namespace);function Markup() { }Markup.AsideElem function () {return Tag(aside, {id: aside,$div: {class: button_panel,style: { color: #fff },$div: {class: button_panel button_panel_selected linkblock,id: btn_devices,style: { width: 50% },$: Cameras},{class: button_panel button_panel_idle linkblock,id: btn_setup,$: Setup}},{class: menupanel,style: { overflow-y: scroll },id: devices_box}});}Freeze(Markup);(function(ns_root) {var _ new (function() {})();ns_root.Dispatcher function Dispatcher(x, y) {var _flag (x true);var _fn_list new Array();var _that this;var _active;var _server y || { Host: ? };var _depleted_callbacks ;var _stopped false;function ReloadPage() {StopAll();location.reload();}this.OnDepleted function() {InvokeCallbackArray(_depleted_callbacks);};/*this.Enque function Enque(fn) {if (_fn_list.length > 12)ReloadPage(); // Consider: this might trigger after some intensive PTZEnsureFunc(fn);Log(len: {0}, _fn_list.length + 1);_fn_list.push(fn);}*/this.Enque2 function Enque2(fn, config) {if (_stopped) {Log(Stopped);return;}if (_fn_list.length > 12)ReloadPage(); // Consider: this might trigger after some intensive PTZEnsureFunc(fn);EnsureValue(config);ShiftTimeout();if (HasValue(config.Headers) && IsArray(config.Headers)) {config.Headers config.Headers.concat(ObfuscateDigest, 1);} else {config.Headers ObfuscateDigest, 1;}(_flag ? Log1 : Log)({0}> total: {1}, (_flag ? queue : _server.Host), _fn_list.length + 1);_fn_list.push(Seal({ SendFunc: fn, Config: config })); // fn + args};this.Deque function Deque() {if (_fn_list.length 1)return null;(_flag ? Log1 : Log)({0}> remaining: {1}, (_flag ? queue : _server.Host), _fn_list.length - 1);return _fn_list.shift();};this.Peek function() {if (_fn_list.length 1) ThrowError();return _fn_list_fn_list.length - 1;};var _current_timer;function Drop() {Log1({0}>, (_flag ? queue : _server.Host));_fn_list ;}this.Drop Drop;function ShiftTimeout() {clearTimeout(_current_timer);_current_timer setTimeout(DispatcherTick, 100);}function TaskFinished(a, b, c) {if (HasValue(a))Log({0}> Completion: {1}, (_flag ? queue : _server.Host), a.Config.url);_active false;if (_fn_list.length 0)InvokeCallbackArray(_depleted_callbacks);elseShiftTimeout();_depleted_callbacks ;}function Stop() {_stopped true;_fn_list new Array();clearTimeout(_current_timer);}this.Stop Stop;function Start() {_stopped false;_current_timer setTimeout(DispatcherTick, 100);}this.Start Start;function DispatcherTick() {let item _that.Deque();if (HasValue(item)) {_active true;try {let fn_completion (function() {let _item item;return function(a, b, c) {if (a.target.status 0 && HasValue(_item.Config.error))_item.Config.error(a);TaskFinished(_item);};})();if (_server.Auth.AuthNeeded) {let method item.Config.type || GET;let dh _server.Auth.GetDigestHeader(method, item.Config.url);EnsureValue(dh);item.Config.Authorize dh;}item.Config.url HttpOrHttps() + // + _server.Host + item.Config.url;let info (_flag ? queue : _server.Host);Log4({0}> Task start: {1}, info, item.Config.url);item.SendFunc(fn_completion, item.Config);Log2({0}> Task finish: {1}, info, item.Config.url);}catch (err) {(_flag ? Log1 : Log)(Trace(err));TaskFinished();}}else TaskFinished();}this.Tick DispatcherTick;Object.defineProperties(this, {FnList: {get: function() { return _fn_list.slice(); }},OnDepleted: {set: function(x) { _depleted_callbacks.push(x); }}});{Freeze(this);if (_flag false)TaskFinished();}};Freeze(ns_root.Dispatcher);})(_root_namespace);(function (ns_root) {var _ new (function () { })();ns_root.DateTimeControl function (date) {var _that this; // this is thisvar dropdown_year false;var _ctx Seal({get That() { return _that; },elem_year: null,elem_month: null,elem_day: null,elem_hour: null,elem_minute: null,elem_second: null,elem_button: null,DateTime: null,CreateTimeFragElem: function (x, y, z) {var tag Tag(div, {class: ycenter inline linkblock dt_field tip,style: { width: 30px, text-align: center },$: HasValue(x) ? LeadingZero2(x) : --}).on(mousewheel DOMMouseScroll, function HandleScroll(e) {_ctx.DateTime new Date(_ctx.DateTime.getTime() + (GetScrollDirection(e) ? y : -y));_that.UpdateElems();}).on(click, function HandleClick(e) {var elem $(.time_selector);if (elem.length > 0) {elem.remove();return;}elem $(e.target);var elem_offset elem.offset();var parent_elem elem.parent();var data elem.data(kind);if (!HasValue(data))return;var range 0, 0;switch (data) {case second:case minute:range 0, 59;break;case hour:range 0, 23;break;case day:range 1, 31;break;case month:range 1, 12;break;case year:range 10, new Date().getFullYear() - 2000;break;}var tmp_elem Tag(div, {class: time_selector linkblock2,style: {background-color: rgba(0,0,0,0.5),border: 1px solid #555,position: fixed,width: 26px,height: 200px,overflow-y: scroll,left: elem_offset.left + 1,top: 34px,text-align: right},});for (var i range0; i range1; ++i) {var div Tag(div, {class: linkblock,style: { margin: 2px },$: i});var entry Tag(a, {_0: div}).on(click, function(e) {var selector_elem $(e.target);var data selector_elem.data(kind);if (!HasValue(data))return;var val EnsureNumber(parseInt(selector_elem.html()));switch (data) {case second:_ctx.DateTime.setSeconds(val);break;case minute:_ctx.DateTime.setMinutes(val);break;case hour:_ctx.DateTime.setHours(val);break;case day:_ctx.DateTime.setDate(val);break;case month:_ctx.DateTime.setMonth(val);break;case year:_ctx.DateTime.setFullYear(val + 2000);break;}var elem $(.time_selector);if (elem.length > 0)elem.remove();_ctx.That.UpdateElems();});div.data(kind, data);tmp_elem.append(entry);}parent_elem.append(tmp_elem);});tag.data(kind, z);return tag;}});this.GetContext function (scope) {if (scope ! _) ThrowError(access);return _ctx;}{_ctx.DateTime (HasValue(date)) ? date : null;Freeze(this);}}var second_len_ms 1000;var minute_len_ms second_len_ms * 60;var hour_len_ms minute_len_ms * 60;var day_len_ms hour_len_ms * 24;var month_len_ms day_len_ms * 31;var year_len_ms day_len_ms * 365;function CreateYearElem(ctx) { return ctx.CreateTimeFragElem(HasValue(ctx.DateTime) ? ctx.DateTime.getFullYear() : --, year_len_ms, year); }function CreateMonthElem(ctx) { return ctx.CreateTimeFragElem(HasValue(ctx.DateTime) ? ctx.DateTime.getMonth() + 1 : --, month_len_ms, month); }function CreateDayElem(ctx) { return ctx.CreateTimeFragElem(HasValue(ctx.DateTime) ? ctx.DateTime.getDate() : --, day_len_ms, day); }function CreateHourElem(ctx) { return ctx.CreateTimeFragElem(HasValue(ctx.DateTime) ? ctx.DateTime.getHours() : --, hour_len_ms, hour); }function CreateMinuteElem(ctx) { return ctx.CreateTimeFragElem(HasValue(ctx.DateTime) ? ctx.DateTime.getMinutes() : --, minute_len_ms, minute); }function CreateSecondElem(ctx) { return ctx.CreateTimeFragElem(HasValue(ctx.DateTime) ? ctx.DateTime.getSeconds() : --, second_len_ms, second); }ns_root.DateTimeControl.prototype Freeze({GetDateTime: function() { return this.GetContext(_).DateTime; },SetDateTime: function(v) { this.GetContext(_).DateTime v; this.UpdateElems(); },UpdateElems: function () {var _ctx this.GetContext(_);var dt _ctx.DateTime;var fn function (x, y, fn_create_elem) {if (HasValue(x))$(x).html( fn_create_elem(_ctx).html() );elsey(fn_create_elem(_ctx));}fn(_ctx.elem_year, function (x) { _ctx.elem_year x }, CreateYearElem);fn(_ctx.elem_month, function (x) { _ctx.elem_month x }, CreateMonthElem);fn(_ctx.elem_day, function (x) { _ctx.elem_day x }, CreateDayElem);fn(_ctx.elem_hour, function (x) { _ctx.elem_hour x }, CreateHourElem);fn(_ctx.elem_minute, function (x) { _ctx.elem_minute x }, CreateMinuteElem);fn(_ctx.elem_second, function (x) { _ctx.elem_second x }, CreateSecondElem);},CreateElems: function () {this.UpdateElems();var ctx this.GetContext(_);var fn_elem function (x) { return { class: ycenter inline, $: x } }var tag Tag(div, {id: head_center,class: inline,style: { width: auto, height: 40px },_0: ctx.elem_year,$div_1: fn_elem(/),_1: ctx.elem_month, //$div_2: fn_elem(/),_2: ctx.elem_day,$div_3: fn_elem(-),_3: ctx.elem_hour,$div_4: fn_elem(:),_4: ctx.elem_minute,$div_5: fn_elem(:),_5: ctx.elem_second,_6: ctx.elem_button Tag(div, {style: { float: right, background-size: contain },class: ycenter icon linkblock emb_icon_ar_24}).on(click, function () {var cc _cell_controllers.Selected;EnsureValue(cc);cc.AbsoluteSeek(ctx.DateTime.getTime());})});$(tag).data(dt_control, ctx.That);return tag;}});Freeze(ns_root.DateTimeControl.prototype);Freeze(ns_root.DateTimeControl);})(_root_namespace);(function(ns_root) {var _ new (function() {})();ns_root.Range function Range(range, id) {var copy Range.SameType(argumentsarguments.length - 1);if (copy) {var ctx (argumentsarguments.length - 1).GetContext(_);range ctx.Range;id ctx.Id;}EnsureArray(range);if (range.length ! 2 || range0 > range1)ThrowError();var _ctx Seal({Range: range0, range1,Id: id,});this.GetContext function(scope) {if (scope ! _) ThrowError(access);return _ctx;};{Freeze(this);}};ns_root.Range.prototype Freeze({get From() { return this.GetContext(_).Range0; },set From(v) { this.GetContext(_).Range0 v; },get To () { return this.GetContext(_).Range1; },set To(v) { this.GetContext(_).Range1 v; },get FromTime () { return new Date(this.GetContext(_).Range0); },get ToTime () { return new Date(this.GetContext(_).Range1); },get Length() {var ctx this.GetContext(_);return ctx.Range1 - ctx.Range0; // premature optimization},get Range() { return this.GetContext(_).Range; },get Id() { return this.GetContext(_).Id; },InRange: function (x) { return (x > this.From && x this.To); },toString: function () {return Fmt({0} ~ {1} ({2}),this.From.toLocaleString(),this.To.toLocaleString(),(this.To - this.From).toLocaleString());}});Range.SameType function(x) {return HasValue(x) true && (x instanceof Range);};Range.EnsureType function(x) {if (Range.SameType(x) ! true)ThrowError();return x;};Freeze(ns_root.Range);})(_root_namespace);(function (ns_root) {var _ new (function () { })();ns_root.TimelineData function TimelineData() {var _that this; // this is thisvar _ctx Seal({That: function () { var _that this; return _that; },From: null,To: null,TimeRanges: ,MergedRanges: ,});this.GetContext function (scope) {if (scope ! _) ThrowError(access);return _ctx;};{Freeze(this);}};function AddDataRange(ctx) {}ns_root.TimelineData.prototype Freeze({AddRanges2: function(from, to, ranges) {EnsureArray(ranges);if (from 0 || to 0)ThrowError();let ctx this.GetContext(_);if (HasValue(ctx.From)) {}else { ctx.From from; }if (HasValue(ctx.To)) {if (to > ctx.To)ctx.To to;elseLog(Warning);}else { ctx.To to; }for (let i 0; i ranges.length; ++i) {let range rangesi;Range.EnsureType(range);let cont false;for (let j 0; j ctx.TimeRanges.length; ++j) {if (ctx.TimeRangesj.From range.From && ctx.TimeRangesj.To range.To) {cont true;break;}}if (cont)continue;ctx.TimeRanges.push(range);}for (let i 0; i ctx.TimeRanges.length; ++i) {Log4_(Fmt(Range {0}@{1} from {2}, i, ctx.TimeRangesi.Id, new Date(ctx.TimeRangesi.From)));Log4_(Fmt(Range {0}@{1} to {2}, i, ctx.TimeRangesi.Id, new Date(ctx.TimeRangesi.To)));}},get MergedRanges() {let tmp ;let ctx this.GetContext(_);for (let i 0; i ctx.TimeRanges.length; ++i) {let range ctx.TimeRangesi;let intersecting ;for (let ti 0; ti tmp.length; ++ti) {let tmp_item tmpti;if (tmp_item.InRange(range.From) && tmp_item.InRange(range.To))continue;if (tmp_item.InRange(range.From) || tmp_item.InRange(range.To))intersecting.push(tmp_item);}let from;let to;if (intersecting.length > 0) {from intersecting0.From;to intersecting0.To;if (intersecting.length > 1) {for (let x 0; x intersecting.length; ++x) {if (intersectingx.From from)from intersectingx.From;if (intersectingx.To > to)to intersectingx.To;}}}else {from range.From;to range.To;}tmp.push(new Range(from, to));}let re ;let fn function(x, y) {re.push(new Range(x, { Data: y, ServerId: 0 }));};if (tmp.length 1) {fn(ctx.From, ctx.To, false);return re;}if (ctx.From tmp0.From)fn(ctx.From, tmp0.From, false);fn(tmp0.From, tmp0.To, true);if (tmp.length > 1) {for (let i 1; i tmp.length; ++i) {if (tmpi.From > rere.length - 1.To)fn(rere.length - 1.To, tmpi.From, false);fn(tmpi.From, tmpi.To, true);}}if (ctx.To > rere.length - 1.To)fn(rere.length - 1.To, ctx.To, false);return re;},AddRanges: function (from, to, ranges, sv_id) {ThrowError();EnsureArray(ranges);let ctx this.GetContext(_);let fn function(x, y) {ctx.TimeRanges.push(new Range(x, { Data: y, ServerId: sv_id }));};if (ranges.length 1) {fn(from, to, false);return;}if (from ranges00)fn(from, ranges00, false);fn(ranges0, true);if (ranges.length > 1) {for (let i 1; i ranges.length; ++i) {fn(rangesi - 11, rangesi0, false);fn(rangesi, true);}}let last ranges.length - 1;if (to > rangeslast1)fn(rangeslast1, to, false);},IsDataRange: function(utcms) {EnsureNumber(utcms);let ctx this.GetContext(_);let ranges this.MergedRanges;for (let i 0; i ranges.length; ++i) {if (rangesi.InRange(utcms))return rangesi.Id.Data;}return null;},FindNextData: function(utcms) {EnsureNumber(utcms);let ctx this.GetContext(_);for (let i 0; i ctx.TimeRanges.length; ++i) {if (ctx.TimeRangesi.From > utcms && ctx.TimeRangesi.Id.Data true)return new Range(ctx.TimeRangesi);}return null;},FindNextMergedData: function (utcms) {EnsureNumber(utcms);let ranges this.MergedRanges;for (let i 0; i ranges.length; ++i) {if (rangesi.From > utcms && rangesi.Id.Data true)return new Range(rangesi);}return null;},FindServer: function(utcms) {EnsureNumber(utcms);let ctx this.GetContext(_);for (let seekIteration 1; seekIteration 180; ++seekIteration) { // 3 minlet attemptUms utcms + seekIteration * 1000;for (let i 0; i ctx.TimeRanges.length; ++i) {if (ctx.TimeRangesi.InRange(attemptUms))return ctx.TimeRangesi.Id;}}return null;},get Ranges() {let re ;let ctx this.GetContext(_);for (let i 0; i ctx.TimeRanges.length; ++i)re.push(new Range(ctx.TimeRangesi));return re;},get Length() { return this.GetContext(_).TimeRanges.length; },get Start() { // absreturn this.GetContext(_).TimeRanges0.From;},get Last() {let ctx this.GetContext(_);return new Range(ctx.TimeRangesctx.TimeRanges.length - 1);},get End() { // abslet ctx this.GetContext(_);return ctx.TimeRangesctx.TimeRanges.length - 1.To;},get IsEmpty() { return (this.GetContext(_).TimeRanges.length 1); }});Freeze(ns_root.TimelineData);})(_root_namespace);function GetDataHeaders(xhr) {var content_type xhr.getResponseHeader(Content-Type);var header_len parseInt(xhr.getResponseHeader(X-Stream-Header-Length));var start_time parseInt(xhr.getResponseHeader(X-Stream-Start-Time));var end_time parseInt(xhr.getResponseHeader(X-Stream-End-Time));if (!HasValue(content_type)) ThrowError(Content-Type);if (!HasValue(header_len)) ThrowError(X-Stream-Header-Length);if (!HasValue(start_time)) ThrowError(X-Stream-Start-Time);if (!HasValue(end_time)) ThrowError(X-Stream-End-Time);return new (function () {var _header_len header_len;var _content_type content_type;var _start_time start_time;var _end_time end_time;Object.defineProperties(this, {HeaderLength: { get: function () { return _header_len; } },ContentType: { get: function () { return _content_type } },StartTime: { get: function () { return _start_time; } },EndTime: { get: function () { return _end_time; } },Length: { get: function () { return this.EndTime - this.StartTime; } }});Freeze(this);})();}(function(ns_root) {var _ new (function () { })();ns_root.Server function Server(obj, authorize) {var _ctx Seal({Id: null,Host: null,Name: null,Dispatcher: null,Auth: null,Timer: null,EventsConnected: true,});this.GetContext function(scope) {if (scope ! _) ThrowError(access);return _ctx;};{Freeze(this);EnsureMembers(obj, id, ip, name);_ctx.Id EnsureInt(parseInt(obj.id));_ctx.Host IsHttps() ? EnsureValue(obj.httpsIp) : EnsureValue(obj.ip);_ctx.Name EnsureStringValue(obj.name);_ctx.Dispatcher new Dispatcher(false, this);EnsureValues(_user, _pass);_ctx.Auth new RsaAuth(_ctx.Host, _user, _pass);if (!HasValue(authorize))_ctx.Auth.Request();}};ns_root.Server.prototype Freeze({get Name() { return this.GetContext(_).Name; },set Name(v) { this.GetContext(_).Name v; },get Id() { return this.GetContext(_).Id; },get Host() { return this.GetContext(_).Host; },set Host(v) { this.GetContext(_).Host v; },get Auth() { return this.GetContext(_).Auth; },get Dispatcher() { return this.GetContext(_).Dispatcher; },get EventsConnected() { return this.GetContext(_).EventsConnected; },set EventsConnected(v) { this.GetContext(_).EventsConnected v true ? true : false; },Query: function Query(cb, cfg) {if (cfg.url.startsWith(http))ThrowError();var ctx this.GetContext(_);Log4(Fmt(Server::Query(): {0}{1}, ctx.Host, cfg.url));cfg.ServerObject this;ctx.Dispatcher.Enque2(cb, cfg);},ResetDigestAuth: function ResetDigestAuth() {Log();let ctx this.GetContext(_);ctx.Dispatcher.Stop();let that this;ctx.Auth.Initialize();ctx.Auth.Request(function(x) {Log(ctx.Host);if (x true) {ctx.EventsConnected true;ctx.Dispatcher.Start();}else {ctx.EventsConnected false;clearTimeout(ctx.Timer);ctx.Timer setTimeout(function() { ResetDigestAuth.call(that); }, 12000);}});},toString: function () { return Server { }; },});ns_root.Server.EnsureType function(x) {if (HasValue(x) ! true || !(x instanceof Server))ThrowError();return x;};Freeze(ns_root.Server);})(_root_namespace);(function (ns_root) {var _ new (function () { })();ns_root.Device function Device(obj) {var _ctx Seal({Id: null, // int?ServerId: null, // int?Title: null,PtzCaps: null,Presets: ,ArchiveServerIds: ,ArchiveBoundaries: null,ArchiveBoundariesSub: null,HasArchive: null, // bool?HasArchiveSub: null, // bool?});this.GetContext function(scope) {if (scope ! _) ThrowError(access);return _ctx;};{Freeze(this);_ctx.Id EnsureInt(parseInt(obj.id));_ctx.ServerId EnsureInt(parseInt(obj.server));_ctx.Title EnsureStringValue(obj.title);_ctx.PtzCaps EnsureInt(parseInt(obj.ptzCapabilities));_ctx.Presets EnsureArrayOrDefault((obj.ptzPresets));_ctx.ArchiveServerIds EnsureArrayOrDefault((obj.archiveServers));}};ns_root.Device.prototype {get Id() { return this.GetContext(_).Id; },get ServerId() { return this.GetContext(_).ServerId; },set ServerId(v) { this.GetContext(_).ServerId v; },get Title() { return this.GetContext(_).Title; },get PtzCaps() { return this.GetContext(_).PtzCaps; },set PtzCaps(v) { this.GetContext(_).PtzCaps v; },get Presets() { return this.GetContext(_).Presets.slice(); },set Presets(v) { EnsureArray(v); this.GetContext(_).Presets v; },get ArchiveServerIds() { return this.GetContext(_).ArchiveServerIds.slice(); },set ArchiveServerIds(v) { this.GetContext(_).ArchiveServerIds v; },get StreamLocation() {let ctx this.GetContext(_);let re ;let server _controller.Serversctx.ServerId;Server.EnsureType(server);if (server.Host.length 1)return re;return HttpOrHttps() + // + server.Host;},get StreamLocation2() {let stream_location ;let sp GetStreamModeText();stream_location + Fmt(/live/{0}/{1}, this.Id, sp);let opts ;if (sp auto)opts + Fmt(?width{0}&height{1}, _cell_width, _cell_height);return stream_location + opts + (opts.length > 0 ? & : ?) + something + new Date().getTime();},get StreamLocation3() {let stream_location Fmt(/live/{0}/addStreamToken, this.Id);let sp GetStreamModeText();stream_location + ?stream + sp;if (sp auto)stream_location + Fmt(&width{0}&height{1}, _cell_width, _cell_height);return stream_location;},get BoundariesLocation() { return Fmt(/archive/{0}/boundaries, this.Id); },get BoundariesLocation2() { return Fmt(/archive/{0}/boundaries?streamTypemainStream, this.Id); },GetNextFrameTimeLocation: function (utcms) { return Fmt(/archive/{0}/nextFrameTime?time{1}, this.Id, utcms); },GetPrevFrameTimeLocation: function (utcms) { return Fmt(/archive/{0}/prevFrameTime?time{1}, this.Id, utcms); },GetServer: function() { return _controller.Serversthis.ServerId; },get HasArchive() { return this.GetContext(_).HasArchive; },get HasArchiveSub() { return this.GetContext(_).HasArchiveSub; },get ArchiveBoundaries() {let re {};let keys Object.keys(this.GetContext(_).ArchiveBoundaries);for (let i 0; i keys.length; ++i)rekeysi new Range(this.GetContext(_).ArchiveBoundarieskeysi);return re;},get ArchiveBoundariesSub() {let re {};let keys Object.keys(this.GetContext(_).ArchiveBoundariesSub);for (let i 0; i keys.length; ++i)rekeysi new Range(this.GetContext(_).ArchiveBoundariesSubkeysi);return re;},UpdateArchiveBoundaries: function UpdateArchiveBoundaries(completion) {let ctx this.GetContext(_);let that this;if (HasValue(ctx.HasArchive) && HasValue(ctx.HasArchiveSub)) {completion();return;}Log4();let pps ;for (let i 0; i ctx.ArchiveServerIds.length; ++i) {let p (function(ar_server) {return new Promise(function(yes, no) {try {let url that.BoundariesLocation2;let sv _controller.Serversar_server.Id;sv.Query(AjaxJson, {url: url,success: function HandleArchiveInfoResponse(response_data, text_status, request) {Log6();let tmp response_data;if (HasMembers(tmp, main, sub)) {if (HasMembers(tmp.main, from, to) && HasMembers(tmp.sub, from, to)) {if (!HasValue(ctx.ArchiveBoundaries))ctx.ArchiveBoundaries {};if (!HasValue(ctx.ArchiveBoundariesSub))ctx.ArchiveBoundariesSub {};if (EnsureIntOrDefault(tmp.main.from) ! 0 && EnsureIntOrDefault(tmp.main.to) ! 0) {ctx.HasArchive true;ctx.ArchiveBoundariesar_server.Id new Range(tmp.main.from, tmp.main.to, ar_server.Id);Log3(ch{0}-main@s{1}: {2}, that.Id, ar_server.Id, ctx.ArchiveBoundariesar_server.Id.toString());}else {if (!HasValue(ctx.HasArchive))ctx.HasArchive false;}if (EnsureIntOrDefault(tmp.sub.from) ! 0 && EnsureIntOrDefault(tmp.sub.to) ! 0) {ctx.HasArchiveSub true;ctx.ArchiveBoundariesSubar_server.Id new Range(tmp.sub.from, tmp.sub.to, ar_server.Id);Log3(ch{0}-sub@s{1}: {2}, that.Id, ar_server.Id, ctx.ArchiveBoundariesSubar_server.Id.toString());}else {if (!HasValue(ctx.HasArchiveSub))ctx.HasArchiveSub false;}}}yes();},error: function HandleAjaxError(request, text_status, request_error) {let tmp request.getResponseHeader(X-VMS-Error);if (HasValue(tmp))Log1(VMS Error {0}, tmp);no();}});}catch (err) { no(); }});})(_controller.Serversctx.ArchiveServerIdsi);pps.push(p);}Promise.all(pps).then(function (v) {Log1(UpdateArchiveBoundaries waitall finished);completion();});},FindArchiveRange: function(utcms, lst) {EnsureNumber(utcms);let ctx this.GetContext(_);let b (lst substream) ? ctx.ArchiveBoundariesSub : ctx.ArchiveBoundaries;let keys Object.keys(b);for (let i 0; i keys.length; ++i) {let item bkeysi;if (item.InRange(utcms))return new Range(item);}return null;},FindNextFrame: function(utcms, completion, z) {let ctx this.GetContext(_);let that this;let pps ;for (let i 0; i ctx.ArchiveServerIds.length; ++i) {if (!_controller.Serversctx.ArchiveServerIdsi.Auth.Initialized)continue;let p (function(ar_server) {return new Promise(function(yes, no) {try {let url that.GetNextFrameTimeLocation(utcms);url url + &streamType + (z substream ? substream : mainStream);let sv _controller.Serversar_server.Id;sv.Query(AjaxJson, {url: url,success: function HandleNextFrameResponse(response_data, text_status, request) {Log6(PrintObj(response_data));yes(Freeze({ Server: ar_server, UtcMs: response_data }));},error: function CustomHandleAjaxError(request, text_status, request_error) {let tmp request.getResponseHeader(X-VMS-Error);if (HasValue(tmp))Log1(VMS Error {0}, tmp);no();}});}catch (err) { no(); }});})(_controller.Serversctx.ArchiveServerIdsi);pps.push(p);}Promise.all(pps).then(function (v) {Log1(waitall finished);completion(v);});},get ArchiveFrom() {let ctx this.GetContext(_);let boundaries ctx.ArchiveBoundaries;if (IsArray(boundaries) && EnsureValue(boundaries.length) 1) ThrowError();let keys Object.keys(boundaries);let from boundarieskeys0.From;for (let i 1; i keys.length; ++i) {if (boundarieskeysi.From from)from boundarieskeysi.From;}return from;},get ArchiveTo() {let ctx this.GetContext(_);let boundaries ctx.ArchiveBoundaries;if (IsArray(boundaries) && EnsureValue(boundaries.length) 1) ThrowError();let keys Object.keys(boundaries);let to boundarieskeys0.To;for (let i 1; i keys.length; ++i) {if (boundarieskeysi.To > to)to boundarieskeysi.To;}return to;},get ArchiveSubFrom() {let ctx this.GetContext(_);let boundaries ctx.ArchiveBoundariesSub;if (IsArray(boundaries) && EnsureValue(boundaries.length) 1) ThrowError();let keys Object.keys(boundaries);let from boundarieskeys0.From;for (let i 1; i keys.length; ++i) {if (boundarieskeysi.From from)from boundarieskeysi.From;}return from;},get ArchiveSubTo() {let ctx this.GetContext(_);let boundaries ctx.ArchiveBoundariesSub;if (IsArray(boundaries) && EnsureValue(boundaries.length) 1) ThrowError();let keys Object.keys(boundaries);let to boundarieskeys0.To;for (let i 1; i keys.length; ++i) {if (boundarieskeysi.To > to)to boundarieskeysi.To;}return to;},get ArchiveRange() { return new Range(this.ArchiveFrom, this.ArchiveTo); },get ArchiveRangeSub() { return new Range(this.ArchiveSubFrom, this.ArchiveSubTo); },toString: function() {let ctx this.GetContext(_);return Fmt(Device {0} { ptz{1} }, ctx.Title, ctx.PtzCaps);}}Freeze(ns_root.Device.prototype);Freeze(ns_root.Device);})(_root_namespace);(function (ns_root) {var _ new (function () { })();ns_root.BufferManager function BufferManager() {var _ctx Seal({Chunks: ,});this.GetContext function(scope) {if (scope ! _) ThrowError(access);return _ctx;}Freeze(this);};ns_root.BufferManager.prototype Freeze({AddRange: function (range) {Range.EnsureType(range);var _ctx this.GetContext(_);var start_from 0;if (this.IsEmpty false && range.From this.End) {this.Last.To range.From;++start_from;}_ctx.Chunks.push(range);},Print: function() {var ctx this.GetContext(_);for (var i 0; i ctx.Chunks.length; ++i) {var chunk ctx.Chunksi;Log4(chunk{0}: {1}, i, chunk.toString());}},GetCurrentChunk: function(utcms) {var ctx this.GetContext(_);for (var i 0; i ctx.Chunks.length; ++i) {var chunk ctx.Chunksi;if (chunk.InRange(utcms))return i;}return null;},Clear: function () {var ctx this.GetContext(_);DeleteArrayElems(ctx.Chunks);delete ctx.Chunks;ctx.Chunks ;},get Ranges() {var re ;var ctx this.GetContext(_);for (var i 0; i ctx.Chunks.length; ++i)re.push(new Range(ctx.Chunksi));return re;}, // return copyget Count() { return this.GetContext(_).Chunks.length; },get Start() { // absreturn this.GetContext(_).Chunks0.From;},get End() { // absvar _ctx this.GetContext(_);return _ctx.Chunks_ctx.Chunks.length - 1.To;},get Length() {var _ctx this.GetContext(_);return _ctx.Chunks_ctx.Chunks.length - 1.To - _ctx.Chunks0.From;},get Last() {var _ctx this.GetContext(_);return _ctx.Chunks_ctx.Chunks.length - 1; // returns writable Range object},get IsEmpty() { return (this.GetContext(_).Chunks.length 1); }});Freeze(ns_root.BufferManager.prototype);Freeze(ns_root.BufferManager);})(_root_namespace);(function(ns_root) {var _ new (function() {})();ns_root.BufferedVideo function BufferedVideo(elem) {Log();var _elem_cell elem;var _that this;var _qElemVideo;var _chunk_offset 0; // time offset relative to playback start, for next chunkvar _first_chunk true;var _chunk_content_type;var _last_end_time_utcms null; // previous chunk end timevar _buffered_end_abs 0;var _start_time;var _paused true;var _progress_callbacks ;var _progress_timer null;var _chunk_processed_callbacks ;var _media_source;var _source_buffer;var _frames ;var _curr_frame_i 0; // current frame indexvar _current_time 0;var _duration_ms 0;var _last_image;var _current_pending_frame null;function Play() {Log();if (!HasValue(_qElemVideo)) return;if (_qElemVideo.paused false) return;if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM) {_qElemVideo0.play();}else if (_chunk_content_type VideoContentType.JPEG) {_paused false;PlayJpegFrame();TriggerProgress();if (HasValue(_progress_timer))clearTimeout(_progress_timer);_progress_timer setTimeout(TriggerProgress, 250);}else {ThrowError();}}this.Play Play;function Pause() {if (!HasValue(_qElemVideo)) return;if (_qElemVideo.paused true) return;if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM) {_paused true;_qElemVideo0.pause();}else if (_chunk_content_type VideoContentType.JPEG) {if (HasValue(_progress_timer))clearInterval(_progress_timer);_paused true;}else {ThrowError();}Log();}this.Pause Pause;function Dispose() {Log(Trace());clearTimeout(_current_pending_frame);clearInterval(_progress_timer);var len _frames.length;for (var i 0; i len; ++i)delete _framesi;delete _frames;delete _source_buffer;delete _media_source;DisposeVideoElem(_qElemVideo);_qElemVideo null;}this.Dispose Dispose;function PlayJpegFrame() {clearTimeout(_current_pending_frame);if (_curr_frame_i > _frames.length)return;var frame _frames_curr_frame_i;if (HasValue(frame)) { // err.._current_time _frames_curr_frame_i.Age;var _reader new FileReader();_reader.onload function(e) {var img new Image();img.src e.target.result;_last_image img;_qElemVideo0.src img.src; //e.target.result;UpdateImageElem(_qElemVideo);delete _reader;}_reader.readAsDataURL(frame.Blob);if (_paused false)_current_pending_frame setTimeout(PlayJpegFrame, _frames_curr_frame_i.Time);}++_curr_frame_i;}function SeekWithinBuffer(second) {var wish_time_ms second * 1000;if (wish_time_ms > _duration_ms)return;for (var i 0; i _frames.length; ++i) {if (_framesi.Age > wish_time_ms) {_curr_frame_i i;_current_time _framesi.Age;PlayJpegFrame();TriggerProgress2();break;}}}function TriggerProgress(e) {_current_time + 250;if (_chunk_content_type VideoContentType.JPEG) {if (HasValue(_progress_timer))clearTimeout(_progress_timer);if (_paused false)_progress_timer setTimeout(TriggerProgress, 250);}TriggerProgress2();}function TriggerProgress2() {InvokeCallbackArray(_progress_callbacks);}function CreateImageElem() {if (HasValue(_qElemVideo)) {DisposeVideoElem(_qElemVideo);_qElemVideo null;}var tempImgElem Tag(img, { class: stream_image });tempImgElem.one(load, function(e) { UpdateImageElem(e.target); });_qElemVideo tempImgElem;}function CreateVideoElem() {Log();_qElemVideo Tag(video, { id: stream_image });var tempDomVideoElem _qElemVideo0;tempDomVideoElem.addEventListener(timeupdate, TriggerProgress);if (false) {tempDomVideoElem.addEventListener(audioprocess, function audioprocess_handler(e) { Log6(The input buffer of a ScriptProcessorNode is ready to be processed.); });tempDomVideoElem.addEventListener(canplay, function canplay_handler(e) { Log6(The browser can play the media, but estimates that not enough data has been loaded to play the media up to its end without having to stop for further buffering of content.); });tempDomVideoElem.addEventListener(canplaythrough, function canplaythrough_handler(e) { Log6(The browser estimates it can play the media up to its end without stopping for content buffering.); });tempDomVideoElem.addEventListener(complete, function complete_handler(e) { Log6(The rendering of an OfflineAudioContext is terminated.); });tempDomVideoElem.addEventListener(durationchange, function durationchange_handler(e) { Log6(The duration attribute has been updated.); });tempDomVideoElem.addEventListener(emptied, function emptied_handler(e) { Log6(The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it.); });tempDomVideoElem.addEventListener(ended, function ended_handler(e) { Log6(Playback has stopped because the end of the media was reached.); });tempDomVideoElem.addEventListener(loadeddata, function loadeddata_handler(e) { Log6(The first frame of the media has finished loading.); });tempDomVideoElem.addEventListener(loadedmetadata, function loadedmetadata_handler(e) { Log6(The metadata has been loaded.); });tempDomVideoElem.addEventListener(pause, function pause_handler(e) { Log6(Playback has been paused.); });tempDomVideoElem.addEventListener(play, function play_handler(e) { Log6(Playback has begun.); });tempDomVideoElem.addEventListener(playing, function playing_handler(e) { Log6(Playback is ready to start after having been paused or delayed due to lack of data.); });tempDomVideoElem.addEventListener(progress, function progress_handler(e) { Log6(Fired periodically as the browser loads a resource.); });tempDomVideoElem.addEventListener(ratechange, function ratechange_handler(e) { Log6(The playback rate has changed.); });tempDomVideoElem.addEventListener(seeked, function seeked_handler(e) { Log6(A seek operation completed.); });tempDomVideoElem.addEventListener(seeking, function seeking_handler(e) { Log6(A seek operation began.); });tempDomVideoElem.addEventListener(stalled, function stalled_handler(e) { Log6(The user agent is trying to fetch media data, but data is unexpectedly not forthcoming.); });tempDomVideoElem.addEventListener(suspend, function suspend_handler(e) { Log6(Media data loading has been suspended.); });tempDomVideoElem.addEventListener(volumechange, function volumechange_handler(e) { Log6(The volume has changed.); });tempDomVideoElem.addEventListener(waiting, function waiting_handler(e) { Log6(Playback has stopped because of a temporary lack of data); });}{_media_source new MediaSource();tempDomVideoElem.src URL.createObjectURL(_media_source);}}function ChangeContentElem(ct) {Log();if (ct VideoContentType.MP4 || ct VideoContentType.WEBM)CreateVideoElem();else if (ct VideoContentType.JPEG)CreateImageElem();else ThrowError();_elem_cell.find(.spinner).remove();_elem_cell.append(_qElemVideo); // testLayout(); // err.._chunk_content_type ct;}var that this;function HandleSourceBufferUpdate(e) {InvokeCallbackArray(_chunk_processed_callbacks);}var _source_buffer_event_registered false;function MaybeCreateSourceBuffer(content_type) {if (!HasValue(_source_buffer)) {_source_buffer _media_source.addSourceBuffer(content_type);AddSourceBufferEvent();}}function AddSourceBufferEvent() {if (_source_buffer_event_registered true)return;_source_buffer.addEventListener(updateend, HandleSourceBufferUpdate);_source_buffer_event_registered true;}function RemoveSourceBufferEvent() {if (_source_buffer_event_registered false)return;_source_buffer.removeEventListener(updateend, HandleSourceBufferUpdate);_source_buffer_event_registered false;}function AppendJpegBuffer(response_data) {var dv new DataView(response_data);var samples dv.getUint32(0);Log1(Samples: {0}, samples);var header_len 4 + 8 * samples;var frame_offset header_len;var chunk_duration_ms 0;for (var i 0; i samples; ++i) {var frame_time dv.getUint32(4 + 8 * i);var frame_size dv.getUint32(4 + 8 * i + 4);var image_chunk new Uint8Array(response_data, frame_offset, frame_size);var blob new Blob(image_chunk, { type: image/jpeg });_frames.push(Freeze({Blob: blob, // image blobTime: frame_time, // display timeAge: _duration_ms + chunk_duration_ms // time offset relative to start}));frame_offset + frame_size;chunk_duration_ms + frame_time;delete image_chunk;}delete dv;_duration_ms + chunk_duration_ms;}function HandleDataResponse(e) {Log();var xhr e.currentTarget;var headers GetDataHeaders(xhr);Log5(Content-Type: {0}, bytes: {1}, length: {2}, headers.ContentType, xhr.response.byteLength, headers.Length);if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM) {if (!MediaSource.isTypeSupported(headers.ContentType))ThrowError(Fmt(Unsupported archive type: {0}, headers.ContentType));}var chunk_content_type VideoContentType.FromString(headers.ContentType);if (HasValue(_chunk_content_type) && _chunk_content_type ! chunk_content_type)ThrowError(Archive type change not supported);var correction_ms 0;if (_first_chunk true) { // || !HasValue(_chunk_content_type)) {_start_time headers.StartTime;ChangeContentElem(chunk_content_type);}else {correction_ms _last_end_time_utcms - headers.StartTime;if (correction_ms > 0) {Log5(correction: {0}, correction_ms);_chunk_offset - correction_ms;}Log5(offset: {0}, _chunk_offset);}var fn function() {Log6();if (_chunk_content_type VideoContentType.MP4|| _chunk_content_type VideoContentType.WEBM) {MaybeCreateSourceBuffer(headers.ContentType);var chunk new Uint8Array(xhr.response);/*var another_fn function(e) {if (_source_buffer.updating true) {Log1(Source buffer is updating, throttling);setTimeout(another_fn, 50);return;}AddSourceBufferEvent();_source_buffer.appendBuffer(chunk);}*/if (_first_chunk false) {chunk chunk.slice(headers.HeaderLength); // only first header should be used_source_buffer.timestampOffset _chunk_offset / 1000.0;/*Log(Removing from buffer);RemoveSourceBufferEvent();_source_buffer.remove(this.BufferStart, this.CurrentTime - 3);setTimeout(another_fn, 50);*/}_source_buffer.appendBuffer(chunk);}else if (_chunk_content_type VideoContentType.JPEG) {AppendJpegBuffer(xhr.response);if (_first_chunk true) {PlayJpegFrame(); // show first frame, will update playback timeTriggerProgress2();}}else { ThrowError(); }_first_chunk false;_chunk_offset + headers.EndTime - headers.StartTime;_last_end_time_utcms headers.EndTime;if (_buffered_end_abs ! headers.EndTime)_buffered_end_abs headers.EndTime;};if (_first_chunk && (_chunk_content_type VideoContentType.MP4|| _chunk_content_type VideoContentType.WEBM)) {_media_source.addEventListener(sourceopen, fn);}else {fn.call(_that);if (_chunk_content_type VideoContentType.JPEG)InvokeCallbackArray(_chunk_processed_callbacks);}};this.HandleDataResponse HandleDataResponse;this.toString function() { return BufferedVideo { }; }Object.defineProperties(this, {0: { get: function () { return _that; } },Paused: { get: function() { return _paused; } },BufferRange: {get: function() {if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM)return _qElemVideo0.buffered.length 0 ? 0, 0 : _qElemVideo0.buffered.start(0),_qElemVideo0.buffered.end(_qElemVideo0.buffered.length - 1);else if (_chunk_content_type VideoContentType.JPEG)return 0, _duration_ms / 1000.0;else ThrowError();}},BufferStart: {get: function() {if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM)return _qElemVideo0.buffered.length 0 ? 0 :_qElemVideo0.buffered.start(0);else if (_chunk_content_type VideoContentType.JPEG)return 0.0; // err..else ThrowError();}},BufferEnd: {get: function() {if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM)return _qElemVideo0.buffered.length 0 ? 0 : _qElemVideo0.buffered.end(_qElemVideo0.buffered.length - 1);else if (_chunk_content_type VideoContentType.JPEG)return _duration_ms / 1000.0; // TODO return jpeg currentTimeelse ThrowError();}},BufferEndUms: {get: function() {return _buffered_end_abs;}},CurrentTime: {get: function() {if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM)return _qElemVideo0.currentTime;else if (_chunk_content_type VideoContentType.JPEG)return _current_time / 1000.0;else ThrowError();},set: function(v) {if (_chunk_content_type VideoContentType.MP4 || _chunk_content_type VideoContentType.WEBM)_qElemVideo0.currentTime v;else if (_chunk_content_type VideoContentType.JPEG) {SeekWithinBuffer(v);}else ThrowError();}},OnProgress: {set: function(v) {EnsureFunc(v);_progress_callbacks.push(v);}},OnChunkProcessed: {set: function(v) {EnsureFunc(v);_chunk_processed_callbacks.push(v);}},ContentType: { get: function() { return _chunk_content_type; } },FirstChunk: { get: function() { return _first_chunk; } }});{Freeze(this);}}Freeze(ns_root.BufferedVideo.prototype);Freeze(ns_root.BufferedVideo);})(_root_namespace);var _archive_mode false;(function(ns_root) {var _ new (function() {})();ns_root.CellController function CellController(qCellElem) {if (!IsJQuery(qCellElem) || qCellElem.length 1)Err();if (!qCellElem.hasClass(cell))Err(Invalid root element);var _that this;var _qCellElem qCellElem; // root layout cell elementvar _id qCellElem.attr(id);var _selected false; // selection framevar _stalled false; // this is set when onprogress() is not being fired for a whilevar _zoom_mode false; // sphere mode togglevar _restart_timer;var _qHeaderElem;var _qFooterElem;var _sLocalStreamType mainStream;{var streamMode EnsureInt(GetStreamModeInt());_sLocalStreamType (streamMode _g.StreamMode.Sub) ? substream : mainStream;}var _device; // device object (received by event)var _live_content_type; // device codecvar _ptz_active false; // pantilt command was issued and not yet stoppedvar _preset_list_active false; // preset list statevar _image_dimensions; //actual video dimensionsvar _elem_video null; // stores created video elements for better terminationvar _layout_cell_position; // cell location within layoutvar _that_cc this;var _bump_progress_timer; // timer cancellationvar fn_delayed_bump_progress function(x) {clearTimeout(_bump_progress_timer);_bump_progress_timer setTimeout(function() { SetStalled.apply(_that); }, 5000);};var _ctx Seal({PlaybackTimeUms: null,});var _ctx_archive Seal({BufferManager: new BufferManager(),VeryStart: null,});this.VideoElem function() { return _elem_video; };this.CellElem function () { return _qCellElem; };function Init() {Log();_stalled false;_qHeaderElem null;_qFooterElem null;_ptz_active false;_preset_list_active false;_image_dimensions null;_live_content_type VideoContentType.Unknown;_zoom_mode false;_elem_video null;ClearStalled();}function Save() {if (_archive_mode true)return;switch (_app_config.CurrentLayoutName) {case 1_1:case 1_2:case 2_1:case 2_2:break;default:break;}Cookies.set(GetCellConfigName(_qCellElem.attr(id)), HasValue(_device) ? _device.Title : , { expires: 365*25, path: / });}this.Save Save;function ChangeDevice(id) {Log();Respawn();_device _controller.Devicesid;if (!HasValue(_device))return;_device.UpdateArchiveBoundaries(function() {if (_archive_mode false) {AddMediaContainer();}else { AddArchiveMediaContainer(); }UpdateArchiveControls();});/*(new Promise(function(resolve, reject) {_device.UpdateArchiveBoundaries(resolve);})).then(function () {UpdateArchiveControls();});*/}this.ChangeDevice ChangeDevice;function StartInArchiveMode(id, time) {Log();SwitchToArchive.call(ns_root);_qCellElem.empty();_qCellElem.addClass(archive_playback);Respawn();_device _controller.Devicesid;if (!HasValue(_device))return;_device.UpdateArchiveBoundaries(function() {AddArchiveMediaContainer();UpdateArchiveControls();AbsoluteSeek(new Date(time).getTime());});}this.StartInArchiveMode StartInArchiveMode;function StopVideo() {if (!HasValue(_elem_video))return;if (HasValue(_bump_progress_timer)) {Log5(clearTimeout());clearTimeout(_bump_progress_timer);}if (HasValue(_restart_timer))clearTimeout(_restart_timer);Log1(Stopping: {0}, _device.Title);DisposeVideoElem(_elem_video);}this.StopVideo StopVideo;function Respawn() {Log();StopVideo();let sel _selected;Init.call(_that);_selected sel; // keep selectionlet cc _qCellElem.data(cc);_qCellElem.empty(); //find(*).remove(); // recursive removal_qCellElem.html(_qCellElem.html());_qCellElem.data(cc, cc); // restore associated cell controllerif (HasValue(_device)) {let sv _controller.GetServerById(_device.ServerId);if (!sv.EventsConnected)CreateMessage(Disconnected);}}this.Respawn Respawn;this.HandleResize function HandleResize() {UpdatePtzControl();UpdateHeader();}this.HandleSelectedCellChange function() {_qCellElem.css(border-color, _selected? _g.Colors.StandoutHigh: #333);if (_selected)_qCellElem.addClass(cell_active);else_qCellElem.removeClass(cell_active);SetStateBackground();UpdatePtzControl();}this.SetLayoutPosition function SetLayoutPosition(size) {if (!(size instanceof CSize))Err(arg);_layout_cell_position size;}function HandleArchiveClick() {Log3(_device.Title);SwitchToArchive.call(ns_root);_controller.DropQues();StopAllVideos();_qCellElem.empty();_qCellElem.addClass(archive_playback);ForceLayoutUpdate();UpdatePtzControl();AddArchiveMediaContainer();}function CreateButtonElem(arg) { // presets, close videolet tmp (HasValue(arg)) ? arg : havearchive emb_icon_play_24;return Tag(div, {class: ycenter icon + tmp,style: {margin-left: 3px,margin-right: 3px,background-size: contain,}});}function CreateBasicButtonElem(txt) { // generic button-like thing, unclickablereturn Tag(div, {class: ycenter inline button2,style: {margin-right: 5px, // !float: right},_0: Tag(span, {class: ycenter inline,$: txt + })});}function CreateBannerElem(txt) {return Tag(div, {class: ycenter cell_message,style: {pointer-events: none,z-index: 10,text-align: center,},$: txt});}function SwitchToLiveImpl(e){StopVideo();ArchiveInit();SwitchToLive.call(ns_root);ForceLayoutUpdate();}function UpdateHeader() { // Creates header elems if requiredif (HasValue(_qHeaderElem))_qHeaderElem.remove();if (!HasValue(_device)) {Log1(no device set);return;}var presets_button null;if (_archive_mode ! true) {if (_device.PtzCaps & _g.PtzCaps.ActivatePreset) {presets_button Tag(a, {class: ycenter inline,href: #,$div: {class: ycenter inline button linkblock,style: {padding-left: 5px,padding-right: 5px,border: 1px solid #000,box-shadow: 0px 0px 0px 1px #33819e inset},_0: Tag(span, {class: ycenter inline,$: Presets})}}).on(click, function HandlePresetClick(e) {Log5();_preset_list_active !_preset_list_active;UpdatePresetList();});}}var deviceTitleText _device.Title;var qMaybeSwitchStreamButton null;if (_archive_mode true) {var deviceHasArchiveForOtherStream false;switch (_sLocalStreamType) {case substream:deviceTitleText + (sub);deviceHasArchiveForOtherStream _device.HasArchive;break;case mainStream:deviceTitleText + (main);deviceHasArchiveForOtherStream _device.HasArchiveSub;break;default:Err();}if (deviceHasArchiveForOtherStream) {qMaybeSwitchStreamButton CreateButtonElem().addClass(linkblock2 tip).attr(data-tip, Switch stream).click(function() {let tmpUms _ctx.PlaybackTimeUms;if (!HasValue(tmpUms))tmpUms _play_from_utcms;_sLocalStreamType (_sLocalStreamType mainStream) ? substream : mainStream;RestartArchiveFrom(tmpUms);}).tipr();}}var qTmp Tag(div, {class: video_header,style: {width: 100%,pointer-events: none},$div: {class: ycenter video_info_overlay,style: {margin: 5px,pointer-events: all,white-space: nowrap,position: absolute,left: 0,},_0: Tag(span, {class: tip,data-tip: deviceTitleText,$: deviceTitleText //_device.Title.substring(0, (_cell_width / 25 | 0)) + ((_device.Title.length > (_cell_width / 25 | 0)) ? ... : )}).tipr()},{class: video_info_overlay overlay_right inline,style: {margin: 5px,pointer-events: all,white-space: nowrap,position: absolute,right: 0,},_0: (_archive_mode ! true) ? UpdateArchiveControls(false) : null,_1: presets_button,_2: (_archive_mode true)? CreateButtonElem(emb_icon_eye_24).addClass(linkblock2 tip).attr(data-tip, Switch to live view).click(SwitchToLiveImpl).tipr(): null,_3: qMaybeSwitchStreamButton,_4: CreateButtonElem(emb_icon_cancel_24).addClass(linkblock2 tip).attr(data-tip, Remove camera from layout).click(function OnCancelClick() {SwitchToLive.call(ns_root);Respawn();_device null;Cookies.set(GetCellConfigName(_qCellElem.attr(id)), , { expires: 365*25, path: / }); // remove stored device slot}).tipr()}});_qHeaderElem qTmp;_qCellElem.append(qTmp);}function UpdateFooter() { // Creates footer elems if requiredif (HasValue(_qFooterElem))_qFooterElem.remove();let qTmp Tag(div, {class: video_footer,style: {width: 100%},_0: (_archive_mode true)? null: CreateBasicButtonElem(VideoContentType.ToString(_live_content_type)),_1: (_archive_mode true)? null: (HasValue(_image_dimensions) ? CreateBasicButtonElem(Fmt({0}x{1}, _image_dimensions.Width, _image_dimensions.Height)) : null),_2: (_archive_mode true)? CreateSeekPanelElems(): null,});_qFooterElem qTmp;if (_archive_mode true) {_qFooterElem.css({display: flex,justify-content: space-around,pointer-events: all});}else {_qFooterElem.css({display: block,pointer-events: none});}_qCellElem.append(qTmp);}function UpdateArchiveControls(prepend) {let elem_overlay _qCellElem.children(.video_header).children(.overlay_right);if (!HasValue(_device) ||!( (HasValue(_device.HasArchive) && _device.HasArchive true) || (HasValue(_device.HasArchiveSub) && _device.HasArchiveSub true) )) {elem_overlay.children(.havearchive).remove();return null;}if (elem_overlay.children(.havearchive).length 1) {let elem_archive_button CreateButtonElem().attr(data-tip, Go to archive).addClass(linkblock2 tip).click(HandleArchiveClick).tipr();if (!HasValue(prepend) || prepend ! false) {elem_overlay.prepend(elem_archive_button);}return elem_archive_button;}return null;}function UpdatePresetList() {if (_preset_list_active false) {_qCellElem.children(.presets_list).remove();}else {let presets _device.Presets; // { id:, title:,}let elems_presets ;for (let i 0; i presets.length; ++i) {let pname presetsi.title.length > 0 ? presetsi.title : Preset + (parseInt(presetsi.id) + 1);let item {href: #,_data: { K: preset, V: presetsi },$div: {class: linkblock,style: { clear: right, width: 100%, text-align: right, z-index: 10 },$: pname}};elems_presets.push(item);}var qPresetsMenu Tag(div, {class: presets_list menu_common,style: {z-index: 10,padding: 10px,position: absolute,top: 42px,bottom: 42px,right: 2px,width: 120px,background-color: rgba(1,1,1,0.75),overflow-y: scroll},$a: elems_presets});qPresetsMenu.children(a).each(function(k, v) {$(v).on(click, function HandlePresetNameClick(e) {Log5();_preset_list_active false;let elem $(this);let data elem.data(preset);if (HasValue(data))ActivatePreset.apply(_that_cc, data.id);UpdatePresetList();});});_qCellElem.append(qPresetsMenu);}/*var elem_a $(this); // avar elem_btn elem_a.children(.button);elem_btn.css({position: absolute,bottom: 0});*/}function UpdatePtzControlInfo() { // ptz contol - mode indicationtry {let maybe_btn;if (_zoom_mode) {_qFooterElem.children(.pantilt_btn).remove();maybe_btn _qFooterElem.children(.zoom_btn);if (maybe_btn.length 1)_qFooterElem.append(CreateBasicButtonElem(Zoom).addClass(zoom_btn));}else {_qFooterElem.children(.zoom_btn).remove();maybe_btn _qFooterElem.children(.pantilt_btn);if (maybe_btn.length 1)_qFooterElem.append(CreateBasicButtonElem(PanTilt).addClass(pantilt_btn));}}catch (ex) {}}function UpdatePtzControl() {let remove_control true;for (;;) {if (_app_config.PtzMode _g.PtzMode.Never|| (_app_config.PtzMode _g.PtzMode.Selected && !_qCellElem.hasClass(cell_active)))break;if (_archive_mode)break;if (!HasValue(_device))break;if (_device.PtzCaps _g.PtzCaps.Known)break;if (!((_device.PtzCaps & _g.PtzCaps.PanTilt) && (_device.PtzCaps & _g.PtzCaps.Zoom)))break;if (!HasValue(_image_dimensions))break; // no image yetremove_control false;break;}if (remove_control) {_qCellElem.children(.dial_wrap).remove();_qCellElem.children(.chs_wrap).remove();return;}if (_ptz_active) return;let elem_dial_wrap (function GetOrCreateDial() {let elem_dial_wrap _qCellElem.children(.dial_wrap);if (elem_dial_wrap.length 1) {elem_dial_wrap Tag(div, {class: dial_wrap,style: { z-index: 5 },$svg: {class: dial,viewBox: 0 0 1000 1000,style: { z-index: 5 },$circle: { id: sph_b_0, cx: 500, cy: 500, r: 480, fill: none, stroke: rgba(0,0,0,0.25), stroke-width: 10 },{ id: sph_w_1, cx: 500, cy: 500, r: 480, fill: none, stroke: rgba(255,255,255,0.5), stroke-width: 4 }}});elem_dial_wrap.html(elem_dial_wrap.html());elem_dial_wrap.on(mouseleave mouseup, function HandleMouseUp(e) {if (e.button 2) {event.preventDefault();return false;}$(this).unbind(mousemove);if (_ptz_active true) {let err null;try {if (_zoom_mode) {HandleZoomStop(e);}else {HandlePanTiltStop(e);}}catch (ex) {err ex;}_ptz_active false;if (HasValue(err))Err(err);}elem_dial_wrap.each(function ResetChsPosition() {let elem_dial $(this); // diallet elem_chs elem_dial.next(.chs_wrap); // chs divlet elem_chs_data elem_chs.data(css_rel_cf);if (HasValue(elem_chs_data)) {elem_chs.css({position: absolute,left: elem_chs_data.left,top: elem_chs_data.top});}});return true;});elem_dial_wrap.on(mousedown, function HandleMouseDown(e) {if (e.button 2) {event.preventDefault();return false;}_ptz_active true;let maybe_elem_dial $(this);maybe_elem_dial.on(mousemove, HandlePanTilt);maybe_elem_dial.trigger(CreateMouseEvent(e.pageX, e.pageY));});elem_dial_wrap.on(mousewheel DOMMouseScroll, function HandleMouseWheel(e) {let up GetScrollDirection(e);_zoom_mode (_device.PtzCaps & _g.PtzCaps.Zoom) ? !up : false;UpdatePtzControlInfo.call(_that_cc);});_qCellElem.append(elem_dial_wrap);}return elem_dial_wrap;})();let room Math.min(_cell_width, (_cell_height - 38 * 2));let min_dimension room > 300 ? 300 : room;elem_dial_wrap.css({width: 67%,height: auto,position: absolute,top: 0,left: 0,max-width: min_dimension,max-height: min_dimension});(function UpdateSvgCircles() {let black_circles $(*id^sph_b_);let white_circles $(*id^sph_w_);let c_w 14 - min_dimension / 80.0;let c_h 8 - min_dimension / 160.0;black_circles.attr(stroke-width, c_w 2 ? 2 : c_w);white_circles.attr(stroke-width, c_h 2 ? 2 : c_h);})();let sphere_w elem_dial_wrap.width();let sphere_h elem_dial_wrap.height();let padding_top (function SetSpherePadding() {let c_h _cell_height - 38 * 2;let padding_top 38;let padding_left 0;if (sphere_h c_h)padding_top + (c_h - sphere_h) / 2;if (sphere_w _cell_width)padding_left + (_cell_width - sphere_w) / 2;elem_dial_wrap.css({top: padding_top + px,left: padding_left + px});return padding_top;})();let elem_chs_wrap (function GetOrCreateChs() {let elem_chs_wrap elem_dial_wrap.next(.chs_wrap);if (elem_chs_wrap.length 1) {elem_chs_wrap Tag(div, {class: chs_wrap,style: {width: 10px,height: 10px,position: absolute,pointer-events: none},$svg: {class: circles_svg,style: { width: 12px, height: 12px, position: absolute },viewBox: 0 0 100 100,$circle: {class: chs,stroke-width: 2,cx: 50,cy: 50,r: 48,stroke: white,fill: #33b5e5}}});elem_chs_wrap.html(elem_chs_wrap.html()); // Consider following to keep events: chs_wrap chs_wrap.clone(true);_qCellElem.append(elem_chs_wrap);}return elem_chs_wrap;})();(function UpdateChs() {let css_rel_cf {top: /*elem_sphere_offset.top +*/ _qCellElem.height() / 2 - 5,left: /*elem_sphere_offset.left +*/ _qCellElem.width() / 2 - 5}elem_chs_wrap.css({top: css_rel_cf.top + px,left: css_rel_cf.left + px});elem_chs_wrap.data(css_rel_cf, css_rel_cf);elem_chs_wrap.data(css_abs_cf, elem_chs_wrap.offset());})();UpdatePtzControlInfo.call(_that_cc);return;}this.UpdatePtzControl UpdatePtzControl;function SetStateBackground() {if (_stalled) {_qCellElem.css(background-color, _g.Colors.CellStalled);return;}let wish_color _selected ? _g.Colors.CellSelected : _g.Colors.CellDefault;let curr_color rgb2hex(_qCellElem.css(background-color));if (!HasValue(curr_color) || curr_color ! s2l(wish_color))_qCellElem.css(background-color, wish_color);}function rgb2hex(rgb) {if (!HasValue(rgb))return _g.Colors.DefaultBackground;let match null;if (rgb transparent)rgb _g.Colors.DefaultBackground;elsematch rgb.match(/^rgb(a)?\((\d+),\s*(\d+),\s*(\d+)(,\s*)?(\d+)?\)$/);if (HasValue(match)) {if (HasValue(match6) && LeadingZero2(match6) ! 00) {Log1(Alpha value truncated);}return # + LeadingZero2(match2) + LeadingZero2(match3) + LeadingZero2(match4);}else {return #000;} // err unknown value}function s2l(arg) {if (arg.length 4 && arg0 #) {return arg0 + arg1 + arg1 + arg2 + arg2 + arg3 + arg3;}Err(bad arg);return null;}function ClearStalled() {_stalled false;SetStateBackground();}function SetStalled(arg) {Log1();if (!HasValue(_device))return;_stalled true;SetStateBackground();if (HasValue(_restart_timer))clearTimeout(_restart_timer);let timeout 5000;if (HasValue(arg) && IsInt(arg)) {timeout arg;}_restart_timer setTimeout(function() { if (_stalled) ChangeDevice.call(_that, _device.Id); }, timeout);}this.SetStalled SetStalled;function AppendNavigationElems() {let config {border: 1px solid #555,height: 50px,position: absolute,top: _cell_height / 2 - 50 / 2,width: 100px,};_qCellElem.append(Tag(div, {class: seek_left linkblock2,style: $.extend({}, config, {left: 0px,text-align: left}),$: }));_qCellElem.append(Tag(div, {class: seek_right linkblock2,style: $.extend({}, config, {right: 0px,text-align: right}),$: >}));}function CreateSeekPanelElems() {function fn_elem_conf(txt) {return {href: #,$div: {class: seek_btn button linkblock2,_0: Tag(span, { class: inline ycenter, $: txt })}}}function fn_elem(a, b) { return Tag(a, fn_elem_conf(a)).on(click, function () { RelativeSeek(b); }); }var state (_elem_video null || _elem_video.Paused) ? emb_icon_play_24 : emb_icon_pause_24;return Tag(div, {class: seek_buttons ycenter,style: {height: 28px,display: inline-flex,justify-content: center, //space-betweenalign-items: center,},_0: fn_elem(-1h, -3600),_1: fn_elem(-10m, -600),_2: fn_elem(-1m, -60),_3: fn_elem(-10s, -10),_4: Tag(a, {href: #,$div: {class: playback_control icon linkblock2 + state,style: { margin-top: -5px, background-size: contain },$: \u00A0}}) // \u00A0 .on(click, function() {var elem_icon $(.playback_control);var wish_mode elem_icon.hasClass(emb_icon_pause_24) ? pause : play;TogglePlaybackIcon(wish_mode play);if (wish_mode play)_elem_video0.Play();else_elem_video0.Pause();}),_5: fn_elem(+10s, 10),_6: fn_elem(+1m, 60),_7: fn_elem(+10m, 600),_8: fn_elem(+1h, 3600),});};function TogglePlaybackIcon(state) {let elem_icon $(.playback_control);let wish_mode HasValue(state) && state true ? play : pause;if (wish_mode play) {elem_icon.removeClass(emb_icon_play_24);elem_icon.addClass(emb_icon_pause_24);}else {elem_icon.removeClass(emb_icon_pause_24);elem_icon.addClass(emb_icon_play_24);}}function UpdatePlaybackControl() {let elem $(.playback_control);let paused (_elem_video null || (_elem_video.Paused || false));if (paused true) {elem.removeClass(emb_icon_pause_24);elem.addClass(emb_icon_play_24);}else {elem.removeClass(emb_icon_play_24);elem.addClass(emb_icon_pause_24);}}function CreateTimelineElem() {let elem Tag(div, {style: {position: absolute,bottom: 60px,left: 10px,right: 10px,height: 15px},$div: {class: tl_container,style: { height: 15px, position: relative },$div: {class: timeline,style: {height: 15px,width: 16384px, // 8192 is about 5 min on mid zoomposition: absolute,top: 0,left: 0,}},{class: infoline,style: {height: 15px,width: 16384px,position: absolute,top: 0,left: 0,}},{class: tl_marker_wrap,style: {position: absolute,width: 100%,height: 100%,top: 0,left: 0},$div: {class: tl_marker,style: {height: 6px,width: 2px,top: 3px,left: calc(50% - 2px),position: relative,background-color: cyan,display: inline-block,border: solid 1px black}}},}});_qCellElem.append(elem);UpdateInfolinePos(0);}var _fn_timed_pantilt DelayedCallFactory(PanTilt, 100, this);var _fn_timed_zoom DelayedCallFactory(Zoom, 100, this);var _last_pan_speed 0;var _last_tilt_speed 0;function HandlePtzResponse(response_data, text_status, request) { Log6(request.status); }function PtzRequest(url) {let sv _device.GetServer();sv.Query(AjaxJson, {url: url,success: HandlePtzResponse,error: HandleAjaxError});}function ActivatePreset(arg) {var url this.PanTiltUrl + activatePreset?preset + arg;PtzRequest(url);}function Zoom(n) {var url this.PanTiltUrl + zoom?speed + Round(n);PtzRequest(url);}function PanTilt(pan, tilt) {var url this.PanTiltUrl + pantilt?pan + Round(pan) + &tilt + Round(tilt);PtzRequest(url);}function HandlePanTiltStop(e) {_fn_timed_pantilt(0, 0);_last_pan_speed 0;_last_tilt_speed 0;}function HandleZoomStop(e) {_fn_timed_zoom(0);_last_tilt_speed 0;}function HandlePanTilt(event) {var elem_dial $(this).children(.dial);var elem_chs $(this).next(.chs_wrap); //.children(.chs);var dist_max elem_dial.width() / 2 - 6; // active area should be a bit smaller than elementvar half_cursor_size 12 / 2;var cursor_screen_pos elem_chs.data(css_abs_cf);var cursor_x (cursor_screen_pos.left);var cursor_y (cursor_screen_pos.top);var diffX event.clientX - cursor_x;var diffY event.clientY - cursor_y;var x Math.abs(diffX);var y Math.abs(diffY);var left 0;var top 0;var ratio 1; //dist_max / r;left (dist_max - half_cursor_size) + (event.clientX - cursor_x + half_cursor_size) * ratio;top (dist_max - half_cursor_size) + (event.clientY - cursor_y + half_cursor_size) * ratio;var wish_pan_speed (left - (dist_max - half_cursor_size)) / dist_max;var wish_tilt_speed (top - (dist_max - half_cursor_size)) / dist_max;wish_tilt_speed * -1;elem_chs.css({position: fixed,left: _mouse_X - half_cursor_size, // chs dimension /2top: _mouse_Y - half_cursor_size});if (wish_pan_speed ! _last_pan_speed || wish_tilt_speed ! _last_tilt_speed) {_last_pan_speed wish_pan_speed;_last_tilt_speed wish_tilt_speed;if (_last_pan_speed > 1.0) {_last_pan_speed 1.0;Log1(normalized X of range);}if (_last_tilt_speed > 1.0) {_last_tilt_speed 1.0;Log1(normalized Y out of range);}if (_zoom_mode) {_fn_timed_zoom(_last_tilt_speed);}else {_fn_timed_pantilt(_last_pan_speed, _last_tilt_speed);}}}var _play_from_utcms null; // current buffering start position_ctx_archive.VeryStart 0; // playback start (used to calculate current playback time)var _chunk_in_progress false; // used to avoid avoid fetching multiple chunks while chunk being fetched is being appendedvar _timeline new TimelineData();var _timeline_edge_utcms 0;var _first_timeline_update true;function ArchiveInit() {Log();_play_from_utcms null; // playback start/continue time_ctx_archive.VeryStart 0; // playback start (used to calculate current playback time)_chunk_in_progress false;_timeline_edge_utcms 0;_first_timeline_update true;_timeline null;_timeline new TimelineData();_ctx_archive.BufferManager.Clear();delete _ctx_archive.BufferManager;_ctx_archive.BufferManager new BufferManager();}this.ArchiveInit ArchiveInit;function ToUms(s) {EnsureNumber(s);var re parseFloat(s.toFixed(3)) * 1000 + _ctx_archive.VeryStart;return re;}function ToRelTime(ums) { return (ums - _ctx_archive.VeryStart) / 1000.0; }function RestartArchiveFrom(utcms) {EnsureNumber(utcms);Respawn();ArchiveInit();_play_from_utcms utcms;AddArchiveMediaContainer();}function FindClosestBoundary(boundaries, dir, utcms) {var min_prev;var closest_prev;var min_next;var closest_next;var keys Object.keys(boundaries);for (var i 0; i keys.length; ++i) {var item boundarieskeysi;var diff;if (item.From utcms && item.To utcms) {diff utcms - item.To;if (!HasValue(min_prev) || diff min_prev) {min_prev diff;closest_prev item;}}else if (item.From > utcms && item.To > utcms) {diff item.From - utcms;if (!HasValue(min_next) || diff min_next) {min_next diff;closest_next item;}}else {Log1(Warning: item inside of range);} // should have been found by previous loop}if (dir 0) {if (HasValue(closest_prev)) {var tmp closest_prev.To - 1000 * 60 * 5;if (tmp closest_prev.From) {Log1(Warning: previous archive range is short);tmp closest_prev.To - 1000 * 60;if (tmp closest_prev.From)return null; // no-op}return tmp;}else {return null; // no-op}}else {if (HasValue(closest_next)) {return closest_next.From;}else {return null; // no-op}}}function FindValidStartPoint(dir, wish_pos_utcms) {var can_seek false;var seek_utcms null;var boundaries _device.ArchiveBoundaries;var keys Object.keys(boundaries);for (var i 0; i keys.length; ++i) {var item boundarieskeysi;if (item.InRange(wish_pos_utcms)) {seek_utcms wish_pos_utcms;can_seek true;break;}}if (can_seek false) {seek_utcms FindClosestBoundary(boundaries, dir, wish_pos_utcms);if (!HasValue(seek_utcms)) {Log1(Warning: nowhere to seek);return null;}}return seek_utcms;}function RelativeSeek(s) {EnsureNumber(s);if (s 0) return;if (!(_elem_video instanceof BufferedVideo))Err(bad video controller elem);var elem_video _elem_video;if (!HasValue(elem_video.ContentType)) {RestartArchiveFrom(_play_from_utcms);return; // video element not displayed yet}var curr_time_s elem_video.CurrentTime;var buf_start_s elem_video.BufferStart;var buf_end_s elem_video.BufferEnd;var wish_pos_s curr_time_s + s;if (wish_pos_s > buf_start_s && wish_pos_s buf_end_s) { // within fetched dataLog();elem_video.CurrentTime wish_pos_s;return;}var wish_pos_utcms Round(ToUms(wish_pos_s));var p FindValidStartPoint(s, wish_pos_utcms);if (HasValue(p))RestartArchiveFrom(p);}function AbsoluteSeek(utcms) {if (_archive_mode ! true)return;Log();var pp FindValidStartPoint(1, utcms);var pn FindValidStartPoint(-1, utcms);var closest;var diff_pp;if (HasValue(pp))diff_pp Math.abs(utcms - pp);var diff_pn;if (HasValue(pn))diff_pn Math.abs(utcms - pn);var time;if (HasValue(diff_pp) && HasValue(diff_pn)) {var use_pp (diff_pp diff_pn);closest (use_pp) ? pp : pn;time use_pp ? closest - 1000 * 60 * 5: closest;} else if (HasValue(diff_pp)) {time pp - 1000 * 60 * 5;} else if (HasValue(diff_pn)) {time pn;}if (HasValue(time))RestartArchiveFrom(time);elseLog1(Warning: Will not seek outside boundaries);}this.AbsoluteSeek AbsoluteSeek;function PrintTimeline() {if (_timeline.IsEmpty)return;var last_utcms 0;var base_utcms _ctx_archive.VeryStart; //_timeline.Ranges0.Range0;var ranges _timeline.MergedRanges;for (var i 0; i ranges.length; ++i) {var range rangesi;var fn range.Id.Data ? Log2 : Log3;fn({0} {1}, range.Id.ServerId, range.toString());/*if (last_utcms > 0)Log3({0}/{1} ~ {2} ({3}),rangesi.Id.ServerId,Round((last_utcms - base_utcms) / 1000.0),Round((rangesi.From - base_utcms) / 1000.0),Round((rangesi.From - last_utcms) / 1000.0));Log2({0}/{1} ~ {2} ({3}),rangesi.Id.ServerId,Round((rangesi.From - base_utcms) / 1000.0),Round((rangesi.To - base_utcms) / 1000.0),Round((rangesi.To - _timeline.Rangesi.From) / 1000.0));last_utcms _timeline.Rangesi.To;*/}}this.PrintTimeline PrintTimeline;function AppendTimelineElem(elem, ms, mspp) {var data_block true;if (ms 0) {data_block false;ms * -1;}elem.append(Tag(div, {class: tl_block,style: { width: Math.ceil(ms / mspp) + px, background-color: data_block ? rgba(137, 195, 92, 0.85) : rgba(255, 119, 0, 0.85) }}));}function AppendInfolineElem(elem, ms, mspp) {var data_block true;if (ms 0) {data_block false;ms * -1;}elem.append(Tag(div, {class: tl_block,style: {width: Math.ceil(ms / mspp) + px,background-color: data_block ? rgba(0, 0, 0, 0.25) : rgba(255, 255, 255, 0.25),border-left: 1px solid rgba(255, 255, 255, 0.5),}}));}var TimelineSecondsVisibleForward 30;function MsPerPixel(w) {EnsureNumber(w);var ms_visible TimelineSecondsVisibleForward * 2 * 1000; //return ms_visible / w;}function UpdateInfolineElems() {var w $(.tl_container).width();var elem $(.infoline);elem.empty();var len _ctx_archive.BufferManager.Count;for (var i 0; i len; ++i) {var item _ctx_archive.BufferManager.Rangesi;AppendInfolineElem(elem, item.Id true ? item.Length : -(item.Length), MsPerPixel(w));}}function UpdateInfolinePos(sec) {EnsureNumber(sec);var w $(.tl_container).width();var elem $(.infoline);elem.css({left: Fmt({0}px, Math.ceil(-(sec * 1000 / MsPerPixel(w)) + w / 2))});}function UpdateTimelineElems() {var w $(.tl_container).width();if (!HasValue(w)) {Log1(Warning: no timeline elem);return;}var elem $(.timeline);elem.empty();var ranges _timeline.MergedRanges;for (var i 0; i ranges.length; ++i) {var item rangesi;AppendTimelineElem(elem, item.Id.Data true ? item.Length : -(item.Length), MsPerPixel(w));}}function UpdateTimelinePos(sec) {EnsureNumber(sec);Log2();var w $(.tl_container).width();var elem $(.timeline);if (_timeline.IsEmpty) {elem.css({ left: 0 });return;}elem.css({left: Fmt( {0}px, Math.ceil( -(sec * 1000 / MsPerPixel(w)) ) )});UpdateInfolineElems();UpdateInfolinePos(sec);}function GetTimeline(utcms, feedbackFn) {if (!_timeline.IsEmpty && utcms _timeline_edge_utcms - 100) {Log(Requested time already accounted ({0} / {1} ~ {2},(utcms - _ctx_archive.VeryStart) / 1000.0,(_timeline.Start - _ctx_archive.VeryStart) / 1000.0,(_timeline.End - _ctx_archive.VeryStart) / 1000.0);return;}var from_utcms;if (!_timeline.IsEmpty) {from_utcms _timeline_edge_utcms; // todo review_timeline_edge_utcms _timeline_edge_utcms + 1000 * TimelineSecondsVisibleForward;}else {_timeline_edge_utcms _play_from_utcms + 1000 * TimelineSecondsVisibleForward;from_utcms _play_from_utcms - 1000 * TimelineSecondsVisibleForward; // or boundary}var streamTypeQueryParam Fmt(&streamType{0}, _sLocalStreamType);EnsureNumbers(from_utcms, _timeline_edge_utcms);var url Fmt(/archive/{0}/timeline?start{1}&end{2}&interval5000{3}, _device.Id, from_utcms, _timeline_edge_utcms, streamTypeQueryParam); // 30 sec?var pps ;for (var i 0; i _device.ArchiveServerIds.length; ++i) {if (!_controller.Servers_device.ArchiveServerIdsi.Auth.Initialized) {Log4_(Fmt(Auth not initialized for archive server {0}, _device.ArchiveServerIdsi));continue;}var p (function(sv, from, to) {return new Promise(function (yes, no) {try {sv.Query(AjaxJson, {url: url,success: function HandleTimelineResponse(response_data, text_status, request) {try {var data;if (response_data.length 1) {Log(No timeline data on server {0}, sv.Id);data ;}else {Log4(PrintObj(response_data));Log(Timeline data found on server {0}, sv.Id);data response_data;}EnsureArray(data);var ranges ;for (var i 0; i data.length; ++i) {var range new Range(datai0, datai1, sv.Id);ranges.push(range);}yes(Freeze({ Ranges: ranges, From: from, To: to }));}catch (err) { yes({ Ranges: , From: from, To: to }); }},error: no,});}catch (err) { no(); }});})(_controller.Servers_device.ArchiveServerIdsi, from_utcms, _timeline_edge_utcms);pps.push(p);}Promise.all(pps).then(function(v) {Log1(Timeline waitall finished);let all_ranges ;let from;let to;for (let i 0; i v.length; ++i) {let ranges vi.Ranges;all_ranges all_ranges.concat(ranges);from vi.From;to vi.To;}EnsureValues(from, to);_timeline.AddRanges2(from, to, all_ranges);UpdateTimelineElems();if (IsFunc(feedbackFn)) {setTimeout(feedbackFn, 1);}});}function UpdateCurrentPlaybackTime(s) {let curr_time_abs Round(ToUms(s));let curr_time_utctime new Date(curr_time_abs);_dtc.SetDateTime(curr_time_utctime);UpdateTimelinePos(s);}var _last_rt 0;function OnTimeUpdate() {if (!(_elem_video instanceof BufferedVideo))Err(bad video controller elem);if (!HasValue(_device) || !(_device.HasArchive || _device.HasArchiveSub))Err(No archive data expected for {0}, _device.Title);let curr_time_s _elem_video.CurrentTime;UpdateCurrentPlaybackTime(curr_time_s);let buf_end_s _elem_video.BufferEnd;let curr_time_utcms ToUms(curr_time_s);_ctx.PlaybackTimeUms curr_time_utcms;let current_chunk_num _ctx_archive.BufferManager.GetCurrentChunk(curr_time_utcms);let is_data_range _timeline.IsDataRange(curr_time_utcms);Log5(Playing.. BVid: {0}/{1}; BMgr: ?/{2}, chunk {3}, data: {4},Round(curr_time_s),Round(buf_end_s),Round(_ctx_archive.BufferManager.Length / 1000.0),current_chunk_num || 0,is_data_range);/*if (curr_time_s > buf_end_s) {Log1(End of buffer);try { _elem_video.Pause(); }catch (err) { Log1(err); }return;}*/if (is_data_range false) {let next_data_range _timeline.FindNextMergedData(curr_time_utcms);if (HasValue(next_data_range)) {let rt ToRelTime(next_data_range.From);if (rt ! _last_rt) {if (HasValue(next_data_range)) {Log(Seek to next data: {0}, rt);_elem_video.CurrentTime rt;_last_rt rt;}}}else {try {_elem_video.Pause();TogglePlaybackIcon();}catch (err) { Log1(err); }}}if (curr_time_utcms + (TimelineSecondsVisibleForward + 15) * 1000 > _timeline_edge_utcms) {GetTimeline(_timeline_edge_utcms, true);UpdateTimelineElems();}if (!HasValue(current_chunk_num) || current_chunk_num + 2 > _ctx_archive.BufferManager.Count) {OnChunkNeeded();}}function OnChunkNeeded() {if (_chunk_in_progress true)return;let end _elem_video.BufferEndUms;let next_time EnsureNumber(_elem_video.FirstChunk ? _play_from_utcms : end);let sv_id _timeline.FindServer(next_time);if (!HasValue(sv_id)) {let nd _timeline.FindNextData(next_time);if (!HasValue(nd)) {_qCellElem.find(.spinner).remove();return;}sv_id _timeline.FindServer(nd);}if (!HasValue(sv_id)) {Log(Cound not find server with data);_qCellElem.find(.spinner).remove();return;}_chunk_in_progress true;Log1(Chunk in progress);let auth _controller.Serverssv_id.Auth;let auth_needed auth.AuthNeeded;let host auth.Host;let streamTypeQueryParam Fmt(&streamType{0}, _sLocalStreamType);let url Fmt(/archive/{0}/stream?time{1}{2}, _device.Id, next_time, streamTypeQueryParam);Log4(Data expected on {0}, {1}, sv_id, HttpOrHttps() + // + host + url);{let xhr new XMLHttpRequest;xhr.open(get, HttpOrHttps() + // + host + url);xhr.timeout 10000 * 6 * 3;if (auth_needed) {let dh _controller.Serverssv_id.Auth.GetDigestHeader(GET, HttpOrHttps() + // + host + url);xhr.setRequestHeader(Authorization, dh);xhr.setRequestHeader(Streaming-Web-Ver, 1.3.0);}xhr.responseType arraybuffer;xhr.onload function OnChunkLoad(e) {Log4();_elem_video.HandleDataResponse(e);};xhr.onreadystatechange function OnReadyStateChange(e) {if (xhr.readyState 2) {Log5(xhr.getAllResponseHeaders());let headers GetDataHeaders(e.currentTarget);_ctx_archive.BufferManager.AddRange(new Range(headers.StartTime, headers.EndTime));UpdateInfolineElems();}};xhr.send();}}function HandleAjaxError(unused, text_status, request_error) {let tmp request_error.getResponseHeader(X-VMS-Error);let message;if (HasValue(tmp))message Fmt(Server error {0}, tmp);elsemessage Connection error;Log1(message);CreateMessage(message);SetStalled();}function CreateMessage(message) {if (!HasValue(_device))return null;let elem_banner CreateBannerElem(message);let elem_spinner _qCellElem.find(.spinner);if (elem_spinner.length 1)_qCellElem.append(elem_banner);elseelem_spinner.replaceWith(elem_banner);return elem_banner;}this.CreateMessage CreateMessage;function CreateSpinner() {let spinner_id spinner_ + Guid();let spinner CreateBannerElem(Loading..).attr(id, spinner_id).addClass(icon_spin spinner);setTimeout(function() {$(# + spinner_id).replaceWith(CreateBannerElem(Waiting..));}, 15000);let elem_spinner _qCellElem.find(.spinner);if (elem_spinner.length 1)_qCellElem.append(spinner);elseelem_spinner.replaceWith(spinner);}function AddMediaContainer() {CreateSpinner();UpdateHeader();let stream_location _device.StreamLocation2; //GetLiveQueryLocation(_device);Log4({0}, stream_location);let sv _device.GetServer();sv.Query(Ajax, {type: HEAD,url: stream_location,success: HandleContainerHeadResponse,error: HandleAjaxError});}function AddArchiveMediaContainer() {let streamModeText ;let deviceHasArchive (_device.HasArchive || _device.HasArchiveSub);switch (_sLocalStreamType) {case substream:if (!_device.HasArchiveSub)_sLocalStreamType mainStream;streamModeText _device.HasArchiveSub ? substream : main stream;break;case mainStream:if (!_device.HasArchive)_sLocalStreamType substream;streamModeText _device.HasArchive ? main stream : substream;break;default:Err();}if (!deviceHasArchive) {let temp CreateMessage(Fmt(Device {0} does not have {1} archive data, _device.Title, streamModeText));if (HasValue(temp)) {temp.append(Tag(br));temp.append(Tag(br));temp.append(Tag(a, { href: #, $: (switch to live), style: { font-size: -2, pointer-events: all }, class: linkblock }).click(SwitchToLiveImpl));}Log1(No archive data expected for {0}, _device.Title);return;}CreateSpinner();let search_nextframe true;let fn function(utcms) {_play_from_utcms utcms;_ctx_archive.VeryStart _play_from_utcms;UpdateHeader();CreateTimelineElem();_elem_video new BufferedVideo(_qCellElem);UpdateFooter.call(_that_cc);_elem_video.OnProgress OnTimeUpdate;_elem_video.OnChunkProcessed function () { // ...Log1(Chunk finished);_chunk_in_progress false;};GetTimeline(_play_from_utcms, OnChunkNeeded);UpdateCurrentPlaybackTime(0);};if (!HasValue(_play_from_utcms)) {var archive_range null;if (_sLocalStreamType substream)archive_range _device.ArchiveRangeSub;elsearchive_range _device.ArchiveRange;for (;;) {let re;let almost_now_utcms new Date() - 1000 * 60;if (archive_range.InRange(almost_now_utcms)) {re _device.FindArchiveRange(almost_now_utcms, _sLocalStreamType);if (HasValue(re)) {_play_from_utcms almost_now_utcms;Log(Archive pos: now -1m);break;}}let almost_end_utcms archive_range.To - 1000 * 60 * 5;re _device.FindArchiveRange(almost_end_utcms, _sLocalStreamType);if (HasValue(re)) {_play_from_utcms almost_end_utcms;Log(Archive pos: end -5m);break;}_play_from_utcms archive_range.From;break;}}else {if (_timeline.IsDataRange(_play_from_utcms))search_nextframe false;}if (search_nextframe) {_device.FindNextFrame(_play_from_utcms - 1000, function(x) {if (x.length 1)return;let min x0.UtcMs;if (x.length > 1) {for (var i 1; i x.length; ++i) {if (!IsNumber(xi.UtcMs)) continue;if (xi.UtcMs min)min xi.UtcMs;}}fn(min + 1);}, _sLocalStreamType);}else { fn(_play_from_utcms); }}function CreateVideoElem(content_type, stream_location) {var fn_delayed_ptz_update DelayedCallFactory(UpdatePtzControl, 1250);var elem_video null;switch (_live_content_type) {case VideoContentType.MP4:case VideoContentType.WEBM:{_elem_video (function CreateVideoElemImpl() {return Tag(video,{autoplay: ,preload: none,style: { width: _cell_width + px, height: _cell_height + px },$source: { src: stream_location, type: content_type }}); //.on(remove, function (e) { StopVideo(); });})();elem_video _elem_video0;let smth new (function EventHandler() {let _that this;this.Deleted false;this.OnLoadedVideoMetaData function OnLoadedVideoMetaData(e) {if (_that.Deleted true)return;ClearStalled();_image_dimensions new CSize(e.target.videoWidth, e.target.videoHeight);Log(Video size for {0}: {1}x{2},_device.Title,_image_dimensions.Width,_image_dimensions.Height);UpdateFooter.call(_that_cc);fn_delayed_ptz_update();};function FixLatency(x) {if (x.buffered.length 0)return;if (x.buffered.length > 1)Err(buffered);let ct x.currentTime;if (!HasValue(ct))Err(currentTime);let buf_end x.buffered.end(x.buffered.length - 1); // always use last buffered rangelet diff buf_end - ct;if (diff > 3) {Log1(Stream latency -{0}, Round(diff));x.currentTime ct + diff - 0.5;}};this.OnVideoProgress function OnVideoProgress(e) {if (_that.Deleted true)return;if (_elem_video null)return;ClearStalled();fn_delayed_bump_progress(elem_video);let x _elem_video0;if (!HasValue(x.buffered) || x.buffered.length 0)return;let ct x.currentTime;let buf_end x.buffered.end(x.buffered.length - 1); // always use last buffered rangelet diff buf_end - ct;LogD5({3} curr: {0}, buf_end: {1}, diff: {2},Round(ct),Round(buf_end),Round(diff),_device.Title);};this.OnVideoError function OnVideoError(e) { Log1(deleted: {0}, _that.Deleted); };Freeze(this);})();_elem_video.data(event_state_object, smth);elem_video.onloadedmetadata smth.OnLoadedVideoMetaData;elem_video.onprogress smth.OnVideoProgress;elem_video.onerror smth.OnVideoError;}break;case VideoContentType.JPEG:_elem_video Tag(img, { class: stream_image });elem_video _elem_video;elem_video.one(load, function HandleFirstImageLoad(e) {ClearStalled();_image_dimensions new CSize(e.target.naturalWidth, e.target.naturalHeight);Log(Image size for {0}: {1}x{2}, _device.Title, _image_dimensions.Width, _image_dimensions.Height);UpdateImageElem(e.target);UpdateFooter.call(_that_cc);fn_delayed_ptz_update();});elem_video.get(0).src stream_location;break;default:Err();}_qCellElem.empty();_qCellElem.append(elem_video);Log2(Stream started: {0}, _device.Title);UpdateHeader();UpdateFooter();}function HandleContainerHeadResponse(response_data, status_text, request) {if (request.status ! 204) {Log(Bad server response);CreateMessage(Fmt({0} error ({1}), GetStreamModeHumanText(), request.status));if (404 request.status || 503 request.status) {SetStalled( 10000 );}return;}if (!(status_text nocontent || status_text No Content))Err(Bad server response);var content_type request.getResponseHeader(Content-Type);if (!HasValue(content_type))Err(Content-type header not set);Log6({0}, Content-Type: {1}, request.status, content_type);if (content_type blocked) {HandleAjaxError(response_data, Stream not available due to license limitations, request);return;}_live_content_type VideoContentType.FromString(content_type);var stream_location;var token Guid();var url _device.StreamLocation3 + &token + token;var sv _device.GetServer();sv.Query(Ajax, {url: url,success: function(a, b, c) {stream_location _device.StreamLocation + /retrieveLiveStreamByToken?token + token;CreateVideoElem(content_type, stream_location);},error: HandleAjaxError});}Object.defineProperties(this, {VideoElem: { get: function () { return _elem_video; } },Id: { get: function () { return _id; } },LayoutPosition: { get: function () { return _layout_cell_position; } },Active: {get: function() { return _selected; },set: function(v) {_selected v;_that.HandleSelectedCellChange();} // Consider setting others to inactive},Device: {get: function() { return _device; }},DeviceTitle: {get: function() { return HasValue(_device) ? _device.Title : null; }},PanTiltUrl: {get: function() { return /ptz/ + _device.Id + /; }},});this.GetContextA function(scope) {if (scope ! _) Err(access);return _ctx_archive;};this.GetContext function(scope) {if (scope ! _) Err(access);return _ctx;};{Freeze(this);}}ns_root.CellController.prototype Freeze({get BufferManager() { return this.GetContextA(_).BufferManager; },get VeryStart() { return this.GetContextA(_).VeryStart; },get PlaybackUms() { return this.GetContext(_).PlaybackTimeUms; },});Freeze(ns_root.CellController.prototype);Freeze(ns_root.CellController);})(_root_namespace);function CellControllerCollection() {var _cell_controllers ;this.Contains function Contains(fn_pre) {if (!IsFunc(fn_pre))ThrowError(Bad predicate);for (let i 0; i _cell_controllers.length; ++i) {if (fn_pre(_cell_controllersi))return true;}return false;};this.Add function Add(cc) {if (!(cc instanceof CellController))ThrowError(Arg should be an instance of CellController);if (this.Contains(function (x) { return x cc; }))ThrowError(Sequence already contains such object);_cell_controllers.push(cc);};this.Replace function Replace(cc) {for (let i 0; i _cell_controllers.length; ++i) {if (cc _cell_controllersi) {let elem_cell cc.CellElem();_cell_controllersi new CellController(elem_cell);elem_cell.data(cc, _cell_controllersi);return _cell_controllersi;}}ThrowError(Could not match controller);};this.Clear function Clear() { _cell_controllers ; }this.Select function Select(cc) {for (let i 0; i _cell_controllers.length; ++i)_cell_controllersi.Active (_cell_controllersi cc);};this.Each function Each(fn_each) {for (let i 0; i _cell_controllers.length; ++i)fn_each(_cell_controllersi);};Object.defineProperties(this, {Items: {get: function () { return _cell_controllers.slice(); }},Selected: {get: function () {for (let i 0; i _cell_controllers.length; ++i)if (_cell_controllersi.Active)return _cell_controllersi;return null;}}});{Freeze(this);}}Freeze(CellControllerCollection);(function(ns_root) {var _ new (function() {})();ns_root.AppController function AppController() {this.Devices new Object();this.Servers new Object();var _evss ;var _that this;var _ctx Seal({Host: null,Connected: false,});this.ClearEvss function() { _evss ; };this.GetServerById function GetServerById(id) {let sv_keys Object.keys(_that.Servers);for (let i 0; i sv_keys.length; ++i) {var smth Number(sv_keysi);if (smth id)return _that.Serverssmth;}return null;};function HandleDeviceClick(x) {EnsureValue(x);_cell_controllers.Each(function(x) { x.ArchiveInit(); });/*_controller.AddMediaContainer2(item);*/let elem_active_cell $(.cell_active);if (elem_active_cell.length 0)elem_active_cell $(.cell).first();let active_cc elem_active_cell.data(cc);active_cc.ChangeDevice(x);active_cc.Save();SelectNextAvailCell();}this.HandleDeviceClick HandleDeviceClick;function UpdateChannelList() {Log();let elem_devices_box $(#devices_box);if (elem_devices_box.length 1) return;if (_setup_shown) return;var scrollPosition elem_devices_box.scrollTop();elem_devices_box.empty();let a ;let keys Object.keys(_that.Devices);for (let i 0; i keys.length; ++i) {let smth Number(keysi);a.push(_that.Devicessmth);}a.sort(function (a, b) { return a.Title.localeCompare(b.Title); });let elem_devices_box_helper Tag(div, { id: devices_box_helper });elem_devices_box.append(elem_devices_box_helper);let fn function(key, item) {let wrapping_elem Tag(div, { height: 32px; });let elem_channel_clickable Tag(a,{href: #,$div: {class: linkblock common_container,style: { white-space: nowrap, overflow: hidden },$div: { class: ycenter icon emb_icon_cams_24, $: \u00A0 }, // { class: ycenter inline, $: item.Title }}});wrapping_elem.append(elem_channel_clickable);elem_devices_box_helper.append(wrapping_elem);wrapping_elem.click(function() { HandleDeviceClick(item.Id); });};let total_height 32;for (let i 0; i a.length; ++i) {fn(null, ai);total_height + 32;}$(#devices_box_helper).css(height, total_height);elem_devices_box.scrollTop(scrollPosition);}this.UpdateChannelList UpdateChannelList;let _event_source null;let _events_received false;let _registered {};function HandleFirstEvent() {setTimeout(function() {if (!_events_received) {LoadLayoutCameras();_events_received true;if (_start_in_show_archive_mode){let elem_active_cell $(.cell_active);if (elem_active_cell.length 0)elem_active_cell $(.cell).first();let active_cc elem_active_cell.data(cc);active_cc.StartInArchiveMode(_show_archive_channel_id, _show_archive_time);}}}, 100);}let EventSourceRetryInterval 0;function EventStreamSubscribeImpl(mainServer, whatever) {if (HasValue(whatever)) {let x 0;}Log();$(#deviceList).empty();let evoTokenResponse ;let p new Promise(function(yes, no) {let request new XMLHttpRequest();request.open(GET, Fmt(HttpOrHttps() + /getExplicitEvoToken));request.timeout 7000;request.onload function HandleExplicitToken(progressEvent) {Log();let thatXhr progressEvent.target;if (thatXhr.readyState 4 && thatXhr.status 200) {evoTokenResponse JSON.parse(thatXhr.response);yes();} else {no();}};request.send();});p.then(function() {let userToken Math.random().toString(36).substring(5);let salt1 Math.random().toString(36).substring(5);let salt2 Math.random().toString(36).substring(5);let tokenEnc1 Encrypt.encrypt(userToken + --- + evoTokenResponse.token + --- + salt1);let tokenEnc2 Encrypt.encrypt(userToken + --- + evoTokenResponse.token + --- + salt2);let p2 new Promise(function CreateAuthToken1(yes, no) {Log();mainServer.Query(AjaxJson,{url: /createAuthToken,Headers: Add-Token, tokenEnc1,success: function HandleCreateAuthTokenResponse(response_data, text_status, request) {yes();},error: function HandleCreateAuthTokenError(response_data, text_status, request) {no();}});});p2.then(function CreateMainEventSource1() {Log();let event_url HasValue(_ctx.Host)? Fmt(HttpOrHttps() + //{0}/channels2?token + tokenEnc2, _ctx.Host): /channels2?token + tokenEnc2;_event_source new window.EventSource(event_url, { Server: _that.Servers101 });_event_source.ServerObject _that.Servers101;_event_source.onopen function(e) {_ctx.Connected true;_events_received false;Log(Event stream started);SwitchToLive.call(ns_root);};clearInterval(EventSourceRetryInterval);ConfigureMainEventSource(_event_source);});});}function ConfigureMainEventSource(evs) {evs.onerror _that.HandleEventSourceError;ConfigureEventSource(evs);}function ConfigureEventSource(evs) {evs.onmessage function (e) { Log1(Event message); };evs.addEventListener(added, function (event) {_that.HandleUpdatedChannels(JSON.parse(event.data));});evs.addEventListener(removed, function (event) {_that.HandleRemovedChannels(JSON.parse(event.data));});evs.addEventListener(updated, function (event) {_that.HandleUpdatedChannels(JSON.parse(event.data));});}function EventStreamSubscribe(mainServer) {setTimeout(function() { EventStreamSubscribeImpl(mainServer); }, 100);}this.EventStreamSubscribe EventStreamSubscribe;this.HandleEventSourceError function HandleEventStreamError(e) {e.target.onerror null;e.target.close();_event_source null;_ctx.Connected false;let failedServerId e.target.ServerObject.Id;_cell_controllers.Each(function (cc) {if (!HasValue(cc.Device))return;if (cc.Device.ServerId ! failedServerId)return;cc.Respawn();cc.CreateMessage(Disconnected);cc.SetStalled();});if (failedServerId ! 101) {return;}let chan_keys Object.keys(_that.Devices);for (let i 0; i chan_keys.length; ++i) {delete _that.DevicesNumber(chan_keysi);}_that.UpdateChannelList();clearInterval(EventSourceRetryInterval);EventSourceRetryInterval setInterval(EventStreamSubscribeImpl, 15000, _that.Servers101, 12345);Log();};this.HandleUpdatedChannels function HandleUpdatedChannelsImpl(data) {if (data.length 1)return;Log1();let channels EnsureArrayOrDefault(data.channels);for (let i 0; i channels.length; ++i) {let device new Device(channelsi);Log(Device: {0} {1}, channelsi.id, channelsi.title);if (device.ServerId 0) {Log(Device with no server);continue;}if (HasValue(_that.Devicesdevice.Id)) {let existing _that.Devicesdevice.Id;existing.ServerId device.ServerId;existing.PtzCaps device.PtzCaps;existing.Presets device.Presets;let archiveServerIds device.ArchiveServerIds;let existingArchiveServerIds existing.ArchiveServerIds;for (let x 0; x archiveServerIds.length; ++x) {let found false;for (let y 0; y existingArchiveServerIds.length; ++y) {if (archiveServerIdsx existingArchiveServerIdsy) {found true;break;}}if (!found) {existing.ArchiveServerIds existing.ArchiveServerIds.concat(archiveServerIdsx);}}}else {_that.Devicesdevice.Id device;}Log1(Device {0}: {1} archive servers, device.Id, device.ArchiveServerIds.length);}_cell_controllers.Each(function (cc) { cc.UpdatePtzControl(); });_that.UpdateChannelList();if (!HasValue(data.servers) || data.servers.length 1)return;let server_configs EnsureArrayOrDefault(data.servers);let pps ;for (let i 0; i server_configs.length; ++i) {let sv_config server_configsi;if (!HasValue(sv_config.ip) || sv_config.ip.length 1) {if (sv_config.id 101) {Log(Setting default ip);sv_config.ip location.host;}else {Log(Empty ip for server {0}, sv_config.id);continue; // empty ip in /channels for out-of-sync recording server}}let sv new Server(sv_config, false);if (!HasValue(_that.Serverssv.Id)) {_that.Serverssv.Id sv;let p (function (sv) {return new Promise(function (yes, no) {try { sv.Auth.Request(yes); }catch (err) { no(); }});})(sv);pps.push(p);}else {if (sv.Id 101)_that.Serverssv.Id.Name sv.Name;}if (sv.Id 101) { // TODO use /infolet title Fmt({0} ({1}), sv.Name, _user || );document.title title;$(.doc_title).html(title);}}Promise.all(pps).then(function WaitAllServers(x) {Log2();let keys Object.keys(_that.Servers);for (let i 0; i keys.length; ++i) {let smth Number(keysi);if (smth 0) continue;if (smth 101) continue;if (!HasValue(_registeredkeysi)) {_registeredkeysi true;let sv _that.Serverskeysi;let evoTokenResponse ;let p new Promise(function(yes, no) {let request new XMLHttpRequest();request.open(GET, Fmt(HttpOrHttps() + /getExplicitEvoToken));request.timeout _ctx.Timeout;request.onload function(progressEvent) {let thatXhr progressEvent.target;if (thatXhr.readyState 4 && thatXhr.status 200) {evoTokenResponse JSON.parse(thatXhr.response);yes();}};request.send();});p.then(function() {let userToken Math.random().toString(36).substring(5);let salt1 Math.random().toString(36).substring(5);let salt2 Math.random().toString(36).substring(5);let tokenEnc1 Encrypt.encrypt(userToken + --- + evoTokenResponse.token + --- + salt1);let tokenEnc2 Encrypt.encrypt(userToken + --- + evoTokenResponse.token + --- + salt2);let p2 new Promise(function(yes, no) {sv.Query(AjaxJson,{url: /createAuthToken,Headers: Add-Token, tokenEnc1,success: functionHandleCreateAuthTokenResponse(response_data, text_status, request) {yes();},error: function HandleCreateAuthTokenError(response_data, text_status, request) {no();}});});p2.then(function CreateMainEventSource2() {let event_url Fmt(HttpOrHttps() + //{0}/channels2?token + tokenEnc2, sv.Host);Log4(Creating event source on {0}, sv.Host);let evs new window.EventSource(event_url, { Server: sv });evs.ServerObject sv;evs.onopen function(x) {let sv x.target.ServerObject;_cell_controllers.Each(function(cc) {if (!HasValue(cc.Device))return;if (cc.Device.ServerId ! sv.Id)return;cc.ChangeDevice(cc.Device.Id);});};ConfigureMainEventSource(evs);_evss.push(evs);});});}}HandleFirstEvent();});};this.HandleRemovedChannels function HandleRemovedChannelsImpl(data) {Log();if (IsArray(data.channels) && data.channels.length > 0) {Log(JSON.stringify(data));$.each(data.channels, function(key, item) {delete _that.Devicesitem;});this.UpdateChannelList();}/*if (existingChannels.length 0) {noChannelsAvailableLabel.show();}*/};this.DropQues function DropQues() {let keys Object.keys(_that.Servers);for (let i 0; i keys.length; ++i) {let sv_id Number(keysi);if (sv_id 0)continue;let sv _that.Serverskeysi;sv.Dispatcher.Drop();}};Object.defineProperties(this, {EventSource: { get: function () { return _event_source; } }});this.GetContext function(scope) {if (scope ! _) ThrowError(access);return _ctx;};{Freeze(this);Log();}};ns_root.AppController.prototype Freeze({toString: function () { return AppController { }; },get Host() { return this.GetContext(_).Host; },set Host(v) { this.GetContext(_).Host v; },get Connected() { return this.GetContext(_).Connected; },});Freeze(ns_root.AppController);})(_root_namespace);function AppConfig() {var i;var props {layout_manager: function Default() { return new LayoutManager(); },current_layout_name: function Default() { return 1_1; },ptz_mode: function Default() { return _g.PtzMode.Selected; },stream_mode: function Default() { return _g.StreamMode.Auto; },aside_shown: function Default() { return true; }}; //var keys Object.keys(props);for (i 0; i keys.length; ++i) { Define(keysi); }function fn_varname(x) { return Fmt(_{0}, x); } // _xfunction fn_statvarname(x) { return Fmt({0}_changed, fn_varname(x)); } // _x_changedfunction Get(p) {return eval(Fmt(use strict; {0};, p));}function Set(p, v) {return eval(Fmt({0} v;, p));}function Define(p) {eval(Fmt({0} null; {1} false, fn_varname(p), fn_statvarname(p)));}function Change(p, v) {eval(Fmt({0} v; {1} true, fn_varname(p), fn_statvarname(p)));}this.Load function Load() {for (var i 0; i keys.length; ++i) {var var_name fn_varname(keysi);if (keysi layout_manager) {let lm new LayoutManager();lm.Load();Set(var_name, lm);continue;}var re Cookies.get(var_name);Set(var_name, HasValue(re) ? re : propskeysi());Set(fn_statvarname(keysi), false);}};this.Save function Save() {if (_archive_mode true)return;Log4();for (i 0; i keys.length; ++i) {var var_name fn_varname(keysi);var var_value Get(var_name);var has_changed_prop (HasValue(var_value) && HasValue(var_value.Changed) && var_value.Changed true);if (Get(fn_statvarname(keysi)) true || has_changed_prop) {Log2(Changed: {0}, var_name);var sn var_name;if (!Defined(var_value)) {var_value null;} else {if (IsFunc(var_value.Save)) {var_value.Save();var_value.Changed false;Set(fn_statvarname(keysi), false);continue;} else if (has_changed_prop) {var_value.Changed false;}}Cookies.set(sn, var_value, { expires: 365 * 25, path: / });Set(fn_statvarname(keysi), false);}}};for (i 0; i keys.length; ++i) {var pub_name UnderscoreToCapital(keysi);var var_basename keysi;var getter_factory function(arg) {var var_basename arg;var var_name fn_varname(var_basename);return function() { return Get(var_name); };};var setter_factory function(k, v) {var var_basename k;return function(v) { Change(var_basename, v); };};Object.defineProperty(this, pub_name, {get: getter_factory(var_basename),set: setter_factory(var_basename)});}{Freeze(this);}}Freeze(AppConfig);function Serialize(x) { return JSON.stringify(x); }function Deserialize(x) { return JSON.parse(x); }function GetStreamModeInt() {var stream_mode;try {stream_mode parseInt(_app_config.StreamMode);}catch (e) {stream_mode _g.StreamMode.Auto;}return stream_mode;}function GetStreamModeText() {var sp ;switch (GetStreamModeInt()) {case _g.StreamMode.Auto:sp auto;break;case _g.StreamMode.Sub:sp substream;break;case _g.StreamMode.Main:sp mainStream;break;default:Log1(WARNING: no stream mode value);sp auto;break;}return sp;}function GetStreamModeHumanText() {var sp ;switch (GetStreamModeInt()) {case _g.StreamMode.Auto:sp Auto stream;break;case _g.StreamMode.Sub:sp Substream;break;case _g.StreamMode.Main:sp Main stream;break;default:Log1(WARNING: no stream mode value);sp Auto;break;}return sp;}function LayoutManager() {this.Layouts ;var _changed false;this.Add function (value) {if (!(value instanceof LayoutConfig))ThrowError(bad arg);var item null;for (var i 0; i this.Layouts.length; ++i) {if (this.Layoutsi.Name value.Name) {item this.Layoutsi;break;}}if (HasValue(item)) {item.SizeX value.SizeX;item.SizeY value.SizeY;}else {this.Layouts.push({ Name: value.Name, Value: value }); // LayoutConfig?}_changed true;};this.Contains function (fn_pre) {for (var i 0; i this.Layouts.length; ++i) {if (fn_pre(this.Layoutsi.Value))return true;}return false;};this.GetByName function (name) {var stock_layouts new LayoutConfig(1_1, 1, 1),new LayoutConfig(1_2, 1, 2),new LayoutConfig(2_1, 2, 1),new LayoutConfig(2_2, 2, 2);var item, i;for (i 0; i stock_layouts.length; ++i) {item stock_layoutsi;if (item.Name name)return new LayoutConfig(item.Name, item.SizeX, item.SizeY); // clone}for (i 0; i this.Layouts.length; ++i) {item this.Layoutsi;if (item.Name name)return new LayoutConfig(item.Name, item.Value.SizeX, item.Value.SizeY); // clone}return null;};this.RemoveByName function (name) {for (var i 0; i this.Layouts.length; ++i) {if (this.Layoutsi name)delete this.Layoutsi; //}_changed true;};this.Save function () {Log4();var i;var names ;for (i 0; i this.Layouts.length; ++i) {var item this.Layoutsi;names.push(item.Name);Cookies.set(_layout_ + item.Name, Serialize(item.Value), { expires: 365*25, path: / });}Cookies.set(known_layouts, names, { expires: 365*25, path: / });_changed false;};this.Load function () {var i;var json Cookies.get(known_layouts);if (!HasValue(json))return;var names JSON.parse(json);if (!HasValue(names))return;for (i 0; i names.length; ++i) {var name namesi;var json2 Cookies.get(_layout_ + name);if (!HasValue(json2))continue;var obj JSON.parse(json2);var lc new LayoutConfig(name, obj.SizeX, obj.SizeY);this.Layouts.push({ Name: name, Value: lc });}};Object.defineProperties(this, {Changed: {get: function () { return _changed; },set: function (v) { _changed v; }}});Freeze(this);}Freeze(LayoutManager);function register_cf() {eval();}function LayoutConfig(name, x, y) {var _name;var _size_x;var _size_y;var _changed;this.Save function Save() {Log4();return Serialize(this);}this.Load function Load(data) {Deserialize(data);_changed false;}Object.defineProperties(this, {Name: {get: function () { return _name; },set: function (v) { _name v; _changed true },enumerable: true},SizeX: {get: function () { return _size_x; },set: function (v) { if (v 1) ThrowError(SizeX); _size_x v; _changed true },enumerable: true},SizeY: {get: function () { return _size_y; },set: function (v) { if (v 1) ThrowError(SizeY); _size_y v; _changed true },enumerable: true},Changed: {get: function () { return _changed; },set: function (v) { _changed v; }},});{this.SizeX x;this.SizeY y;this.Name name;Freeze(this);}}_j_document.on(layout_changed, LoadLayoutCameras);var _menu_open false;function ToggleLayoutMenu() {if (_menu_open false) {var elem_ul Tag(ul, { style: { height: 168px, overflow-y: scroll } });var elem Tag(div, {style: { font-size: 12pt, float: right, margin-left: 10px, margin-right: 10px },});$(elem).html(×);var elem_layout_menu_wrap Tag(div, {class: menu_layout menu_common,id: layout_menu,_1: Tag(a, {_0: elem,}).on(click, function () { ToggleLayoutMenu(); }),$div_1: { // head?..style: { margin: 10px },$: Current: + _app_config.CurrentLayoutName,$hr: { style: { padding: 0, margin: 5px } }},_0: elem_ul});$.each(_app_config.LayoutManager.Layouts, function (k, v) {elem_ul.append(Tag(li, {$a: {href: #,$div: {class: linkblock common_container,$div: {class: inline,$: v.Name // !}}}}).on(click, function LayoutNameClickTest(e) {_app_config.CurrentLayoutName $(this).text();Log1(sel: {0}, _app_config.CurrentLayoutName);ToggleLayoutMenu();ForceLayoutUpdate();}));});var elem_input_div Tag(div, {style: {position: absolute,bottom: 2px,height: 28px},_0: (_archive_mode true)? null: Tag(form, {style: { height: 28px },$input: {id: layout_name,class: inline,type: text,name: lname,value: ,placeholder: Enter layout name},_0: Tag(div, {class: ycenter linkblock inline,style: {height: 20px,border: 1px solid #aaa,font-size: 10pt,float: right,margin-right: 2px,margin-left: 2px,padding-left: 2px,padding-right: 2px},$: Save}).on(click, function (e) {Log();var ln $(#layout_name).val();ln ln.replace(/\W/g, );if (!HasValue(ln) || ln.length 1)return; // Consider UI error indication_app_config.LayoutManager.Add(new LayoutConfig(ln, _layout_x, _layout_y));_app_config.Save();_app_config.CurrentLayoutName ln;_cell_controllers.Each(function (x) { x.Save(); });ToggleLayoutMenu();})}) // form});elem_layout_menu_wrap.append(elem_input_div);$(#head_right).append(elem_layout_menu_wrap);_menu_open true;} else {$(#layout_menu).remove();_menu_open false;}}ns_root.ToggleLayoutMenu ToggleLayoutMenu;function ToggleLayout() {if (_app_config.AsideShown true || _app_config.AsideShown true) {$(#aside).animate({ width: 0 }, 200);$(#content).animate({ left: 0 }, 200, Layout);_app_config.AsideShown false;} else {$(#aside).animate({ width: _g.Constants.SideMenuWidth + px }, 200);$(#content).animate({ left: _g.Constants.SideMenuWidth + px }, 200, Layout);_app_config.AsideShown true;}_app_config.Save();}this.ToggleLayout ToggleLayout;var _setup_shown false;var _dtc;$(#btn_setup).click(function (e) {_setup_shown true;$(.button_panel_selected).removeClass(button_panel_selected).addClass(button_panel_idle);$(this).removeClass(button_panel_idle).addClass(button_panel_selected);var panel $(#devices_box);panel.empty();var hr_attrs { style: { margin: 0, padding: 0 } };var el Tag(div, {style: { padding: 10px },$_0: Show PTZ control,$hr_1: hr_attrs,$form_1: {$div_0: {$_0: Always,$input: { type: radio, name: opt_p, value: _g.PtzMode.Always }},$div_1: {$_1: When selected,$input: { type: radio, name: opt_p, value: _g.PtzMode.Selected }},$div_2: {$_2: Never,$input: { type: radio, name: opt_p, value: _g.PtzMode.Never }}},$br: {},$_1: Stream options,$hr_2: hr_attrs,$form_2: {$div_0: {$_0: Main,$input: { type: radio, name: opt_s, value: _g.StreamMode.Main }},$div_1: {$_1: Sub,$input: { type: radio, name: opt_s, value: _g.StreamMode.Sub }},$div_2: {$_2: Auto,$input: { type: radio, name: opt_s, value: _g.StreamMode.Auto }}}});panel.append(el);var elem_radio $(input:radionameopt_p);if (elem_radio.is(:checked) false) {elem_radio.filter(Fmt(value{0}, parseInt(_app_config.PtzMode))).prop(checked, true);}elem_radio $(input:radionameopt_s);if (elem_radio.is(:checked) false) {elem_radio.filter(Fmt(value{0}, parseInt(_app_config.StreamMode))).prop(checked, true);}$(inputtyperadio).on(change, function HandleRadioChange(e) {var elem_input $(this);var input_name elem_input.attr(name);if (input_name opt_p)_app_config.PtzMode parseInt(elem_input.val());else if (input_name opt_s)_app_config.StreamMode parseInt(elem_input.val());_app_config.Save();_cell_controllers.Each(function (cc) { cc.UpdatePtzControl(); });});});$(#btn_devices).click(function (e) {_setup_shown false;$(.button_panel_selected).removeClass(button_panel_selected).addClass(button_panel_idle);$(this).removeClass(button_panel_idle).addClass(button_panel_selected);var panel $(#devices_box);panel.empty();_controller.UpdateChannelList();});var _layout_x 0;var _layout_y 0;var _cell_width 0;var _cell_height 0;var _cell_controllers new CellControllerCollection();function ForceLayoutUpdate() {_layout_x 0;_layout_y 0;Layout();}ns_root.ForceLayoutUpdate ForceLayoutUpdate;function LoadLayoutCameras() {LogD1(Trace());$(.cell).each(function (k, v) {var cn GetCellConfigName($(v).attr(id));var maybe_smth Cookies.get(cn);if (!HasValue(maybe_smth) || maybe_smth.length 1)return true; // continue$.each(_controller.Devices, function (e, device) {if (device.Title maybe_smth) {$(v).data(cc).ChangeDevice(device.Id);}});});}function TerminateLayout(elem_content) {_controller.DropQues();StopAllVideos();_cell_controllers.Clear();if (HasValue(elem_content))elem_content.empty();}function SwitchToArchive() {_archive_mode true;_dtc new DateTimeControl();var elem_head_center $(#head_center);elem_head_center.replaceWith(_dtc.CreateElems());}ns_root.SwitchToArchive SwitchToArchive;function SwitchToLive() {_archive_mode false;var elem_head_center $(#head_center);elem_head_center.empty();delete _dtc;}ns_root.SwitchToLive SwitchToLive;function Layout(advertise) {var elem_content $(#content);var w elem_content.width();var h elem_content.height();var current_layout_cf GetCurrentLayoutConfig();if (_archive_mode ! true) {_cell_width w / current_layout_cf.SizeX - 1 * 2; // *2 is for two 1px borders_cell_height h / current_layout_cf.SizeY - 1 * 2;} else {_cell_width w - 1 * 2;_cell_height h - 1 * 2;}Log(Content: {0}x{1}, Cell dimensions: {2}x{3}, w, h, _cell_width, _cell_height);if (_archive_mode ! true&& (current_layout_cf.SizeX ! _layout_x || current_layout_cf.SizeY ! _layout_y)) {Log(Layout config changed);TerminateLayout(elem_content);_layout_x current_layout_cf.SizeX;_layout_y current_layout_cf.SizeY;for (var i 0; i _layout_y; ++i) {for (var j 0; j _layout_x; ++j) {var cell Tag(div, { class: cell, id: Fmt(c_{0}_{1}, j, i) });var cc new CellController(cell);cc.SetLayoutPosition(new CSize(i, j));cell.data(cc, cc);_cell_controllers.Add(cc);cell.click(function (e) {var elem_clicked $(e.target);if (elem_clicked.length 1 && elem_clicked.hasClass(cell)) {var cc elem_clicked.data(cc);_cell_controllers.Select(cc);}});cc.Active (i 0 && j 0);elem_content.append(cell);}}if (advertise ! true)_j_document.triggerHandler(layout_changed, 1);}var cells $(.cell);cells.each(function (k, v) {var elem_cell $(v);var layout_pos;var cc elem_cell.data(cc);if (_archive_mode) {if (!elem_cell.hasClass(archive_playback)) {if (HasValue(cc)) {try { cc.StopVideo(); }catch (err) { }}elem_cell.remove();return true; // continue;}layout_pos new CSize(0, 0);if (HasValue(cc)) {cc.HandleSelectedCellChange(); // this would hopefully remove stalled color on change to archive mode_cell_controllers.Select(cc);}} else {layout_pos cc.LayoutPosition;}var css_conf {width: _cell_width + px,height: _cell_height + px,top: ((_cell_height + 2) * layout_pos.X) + px,left: ((_cell_width + 2) * layout_pos.Y) + px};elem_cell.css(css_conf);});$(video).css({width: _cell_width + px,height: _cell_height + px});UpdateImageElems();_cell_controllers.Each(function (cc) { cc.UpdatePtzControl() });}function UpdateImageElem(zImageElem) {var local_elem_img $(zImageElem);local_elem_img.css({max-width: _cell_width + px,max-height: _cell_height + px});var el_width Math.round(local_elem_img0.naturalWidth);var el_height Math.round(local_elem_img0.naturalHeight);if (el_width 0 || el_height 0) {Log1(0 image size);return;}var scaling Fit2(el_width, el_height, _cell_width, _cell_height);var free_x _cell_width - scaling.x;var free_y _cell_height - scaling.y;local_elem_img.css({width: scaling.x + px,height: scaling.y + px,padding-left: (free_x > 0) ? free_x / 2.0 + px : 0,padding-top: (free_y > 0) ? free_y / 2.0 + px : 0});}function UpdateImageElems() {var img_elems $(.stream_image);img_elems.each(function (k, v) { UpdateImageElem(v); });}function HandleResize(e) {Log6();Layout();_cell_controllers.Each(function (cc) { cc.HandleResize(); });}function PrintDevices() {_cell_controllers.Each(function (cc) {Log(PrintObj(cc.Device));});}function SelectNextAvailCell() {var cells $(.cell);for (var i 0; i cells.length; ++i) {var zitem $(cellsi);if (zitem.hasClass(cell_active))continue;var cc zitem.data(cc);if (HasValue(cc.Device))continue;_cell_controllers.Select(cc);break;}}var _debug false;window.onerror function (message, file, line, col, error) {console.log(%c + GetTime() + + message, color: red);return true; // error handled};_j_window.resize(DelayedCallFactory(HandleResize, 100));var _mouse_X, _mouse_Y;$(document).on(mousemove, function (e) {_mouse_X e.pageX;_mouse_Y e.pageY;});var _app_config new AppConfig();var _controller new AppController();var _archive_mode false;var _start_in_show_archive_mode false;var _show_archive_channel_id 0;var _show_archive_time 0; // Time in ms since Epoch (January 1, 1970, UTC)var _version;var _user;var _pass;function InitializeAppImpl(mainServer) {_app_config.Load();_j_window.on(beforeunload, function () {Log1();_app_config.Save();_controller.EventSource.close();StopAll();});if (_app_config.AsideShown true || _app_config.AsideShown true) {$(#aside).css({ width: _g.Constants.SideMenuWidth });$(#content).css({ left: _g.Constants.SideMenuWidth });}else {$(#aside).css({ width: 0 });$(#content).css({ left: 0 });}_controller.EventStreamSubscribe(mainServer);Layout();_version 1.3.1;Log1(Initialized (v{0}), _version);}function InitializeApp(a, b) {_user a;_pass b;let mainServer new Server({ id: 101, ip: location.host, httpsIp: location.host, name: Location }, false);_controller.Servers101 mainServer;let p new Promise(function(yes, no) {mainServer.Auth.Request(yes);});p.then(function (x) {let elem $(#login_error);if (x instanceof XMLHttpRequest) {if (500 x.status || 401 x.status) {let header x.getResponseHeader(X-VMS-Error);let textHeader x.getResponseHeader(X-VMS-ErrorText);if (0x81450003 header) {elem.html(Error: Connection limit is exceeded!);}else if (0x813600a0 header) {if (HasValue(textHeader) && textHeader.length)elem.html(Error: login failed ( + textHeader + ));} else {elem.html(Error: login failed);}elem.show();}return;}if (x true) {elem.html();elem.hide();$(#login).hide();$(#main_window).show();InitializeAppImpl.call(window, mainServer);}else if (x false) {$(#main_window).hide();$(#login).show();elem.html(Error: login failed);elem.show();}});}ns_root.InitializeApp InitializeApp;ns_root.GetAppConfig function() { return _app_config; };ns_root.GetController function() { return _controller; };ns_root.AuthToken null; })(window); } var fn function () { window.InitializeApp.call(window, $(#login_user).val(), $(#login_pass).val()); } _j_document.ready(function() { try { AjaxJson(function() {}, { url: location.origin + /info, success: function(a, b, c) { if (HasValue(a) && HasValue(a.title)) { $(#login_title).html(a.title); } }, error: function(a, b, c) { Log1_(Fatal error); } }); } catch (e) { } var info browser_info; var skip (0 window.location.search?.indexOf(?noBrowserCheck)); if (!skip && info.name ! Chrome && info.name ! Firefox) { if (info.name MSIE) { var msg_elem $(div>).css({ margin-top: 32px }); msg_elem.append(document.createTextNode(Internet Explorer is not supported)); $(#login).append(msg_elem); } else { // check version $(#login).append(Tag(div, { $div: { style: { margin-top: 32px }, $: Fmt(Sorry, your browser ({0} {1}) is not supported., info.name, info.version) }, { $: Recent Firefox or Chrome browser version is required. }, })); } } else { $(#login_form).show(); $(#login_user).focus(); } }); /script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]