{"version":3,"file":"static/chunks/2be283af-3c81e5ea127758c8.js","mappings":"8PAqBA,gBAIA,OAHA,yBACA,EAAS,cAAgB,gCAAsC,cAAkB,EACjF,cAAwB,wEACxB,IACA,EAEA,gBACA,kCACA,kFAEA,aAAkB,mBADlB,OAEA,qEACA,CAEA,iBAQA,MAPA,8BACA,iCAA+C,IAAO,IAEtD,aADA,eACA,uDAEA,QACA,GACA,qBACA,EAcA,oBAEA,yCACA,cAAkC,IAAM,aAA+B,SAAY,MACnF,cAAiC,IAAM,cAAmC,SAAY,MACtF,kBAJA,CAI8B,mBAJJ,EAA1B,EAI8B,mBAJJ,sBAA+D,MAAiB,EAI5E,UAC9B,8BACA,CAAG,CACH,CAEA,gBACA,IAAsG,QAAtG,GAAY,wBAA6B,qBAA0B,YAAc,gBAAqB,CACtG,UAAe,iCAAoD,2DAAqE,aAAc,GACtJ,cAAqB,mBAAsB,gBAC3C,GACA,wDACA,iCACA,kHAEA,OADA,4BACA,MACA,kBAAsC,KACtC,QAAiC,OAAjC,UAAiC,CAAS,mBAC1C,kBAAiC,OAAW,MAAU,QACtD,sBAAwC,aAAc,QACtD,SACA,kEAA4G,IAAO,SACnH,yCAA+E,aAAiB,MAChG,2BAAuD,aAAgB,IAAQ,MAC/E,oBAA6C,aAAgB,cAAgB,MAC7E,kBACA,aAAgC,QAChC,CACA,aACA,CAAQ,SAAY,QAAa,KAAS,OAAU,MACpD,qBAAkC,OAAS,+BAC3C,EAtB2C,QAuB3C,CAEA,oDAKA,kBAEA,MACA,YAMA,IAJA,IAJA,EAIA,EAAyE,OAAzE,qBAAoD,iBAAqB,mBACzE,uCAAkE,WAAoB,IACtF,IACA,MADA,EACA,CACA,KACA,KACA,QAEA,aAEA,cACA,yCACA,YAA+B,sBAAwB,kBAAyB,yDAAyI,CACzN,EACA,cACA,0DACA,EACA,cACA,2CAA2D,uBAAyB,CACpF,EAIA,GACA,YACA,sBACA,oCACA,wBACA,oBACA,gBACA,sBACA,eACA,EACA,cACA,kBACA,UACA,WACA,gBACA,mBACA,uBACA,iBACA,eACA,aACA,gBACA,aACA,UACA,QAAsB,4BAA4D,UAElF,WACA,SACA,CACA,CACA,OACA,oBACA,CAAqB,CACrB,CACA,GAGA,CACA,cACA,kBACA,wBACA,eACA,QAAsB,6BAA0C,MAChE,YACA,QAAsB,8BAA2C,MACjE,WACA,QAAsB,6BAA0C,MAChE,YACA,QAAsB,8BAA2C,UAEjE,SAEA,CAoCA,gBACA,iBAEA,OADA,mCACA,OAyCA,SAAkC,MAAY,EAC9C,CAKA,YACA,UACA,UACA,CAAK,CACL,eACA,EAEA,aACA,aACA,iBACA,0BACA,qBACA,oBACA,+BACA,6BACA,sCACA,gBACA,CA8IA,OA7IA,mCACA,IACA,IADA,OAEA,sHACA,0BACA,wBACA,iCACA,cACA,gBACA,oBACA,uBACA,uBACA,MACA,yBACA,EACA,+EACA,oBAAiC,IAAS,EAC1C,MACA,uBACA,aACA,CAAiB,CACjB,2BACA,YAAsC,IAAc,cACnC,CACJ,EACb,qBACA,CACA,0CACA,4CACA,yBACA,CAAa,EACb,yBACA,CAAS,CACT,EACA,6CAEA,IADA,EACA,8EACA,GACA,sCACA,mBACA,mBACA,EACA,oBACA,oBAEA,EACA,oCACA,uBACA,EACA,iCACA,wBACA,EACA,sCACA,qBACA,EACA,uCACA,sBACA,EACA,yCACA,wBACA,EACA,0CACA,yBACA,EACA,yCAEA,IADA,QACA,KACA,KACA,KACA,IAEA,mCACA,qCACA,6DACA,mBACA,oJACA,MACA,oBACA,oBACA,UAA2E,IAA3E,YACA,cACA,oBAA4C,cAAc,qBAC1D,EACA,kBACA,OACA,MAEA,KAJiF,GAGjF,oBACA,CAD+E,CAC/E,EAAgC,2BAA8B,MAC9D,UACA,MACA,aACA,UACA,KACA,YACA,CACA,CACA,KACA,CAEA,qCAAsD,IAAc,IACpE,OAAyB,cAEzB,qDACA,YACA,OAAyB,cAEzB,6BACA,8CACA,0BACA,2BACA,iDACA,GA3HA,UA2HA,EAEA,0CAEA,QADA,iCACA,IAA4B,2BAA8B,MAC1D,UACA,0CACA,MACA,2BACA,6BACA,mCAGA,UACA,0CACA,KACA,oDACA,kCAGA,CACA,CACA,OACA,yBACA,UACA,cACA,eACA,YACA,CACA,EACA,CACA,CAAC,GAED,aACA,cACA,oBACA,6BACA,2BACA,SACA,YACA,CACA,CAaA,OAZA,gDACA,mCAEA,iDACA,4BACA,EACA,+CACA,gCACA,EACA,gDACA,gCAAwD,8BACxD,EACA,CACA,CAAC,GAED,aACA,cACA,WACA,gCACA,mBACA,qBAAgC,MAAY,IAC5C,UACA,sCACA,2BACA,mCACA,4CACA,yBACA,CAAS,EACT,6CACA,sDACA,CAsJA,OArJA,2CACA,8BAEA,iCACA,MACA,iCACA,wBACA,+DACA,EACA,mDACA,6DAEA,oDACA,+BACA,EACA,qCACA,4BAGA,sCACA,kBACA,EACA,mCAQA,OAPA,6BACA,2CAGA,0CACA,4BAEA,0BAEA,uCACA,yBAEA,yBAGA,yBAEA,EAEA,4CACA,OACA,qBACA,sBACA,uBACA,yBACA,0BACA,4BAEA,0CACA,0BACA,oHACA,6DAEA,CAAa,CAEb,EACA,sCAEA,IADA,IACA,UACA,kBACA,mBACA,sBACA,wBACA,wBACA,yBACA,sHACA,kCAEA,EACA,wCACA,yCACA,MAEA,cACA,sBACA,2BACA,sBACA,gBAKA,sBAHA,4CAKA,EACA,2CACA,WACA,wDACA,kCACA,CAAS,EACT,8DACA,kCACA,CAAS,EACT,2DACA,kCACA,CAAS,CACT,EACA,+CAEA,IADA,EACA,WACA,0BACA,2BACA,sBACA,iBACA,GACA,wDAEA,IACA,EACA,uCAEA,IADA,mCAEA,SACA,eAKA,MAJA,wBACA,2BACA,sBACA,gBAEA,EACA,4CAGA,8BAFA,0BAEA,GADA,2BAEA,iCACA,+CACA,EAKA,oCAEA,aAAoC,KACpC,IAFA,EAEA,6DACA,mCACA,IACA,8BACA,kCAGA,8BACA,kCAGA,EACA,CACA,CAAC,GAED,KAA4B,MAAY,EACxC,WACA,gBACA,qBACA,iBACA,cACA,qBACA,CAuBA,OAtBA,oCAEA,qBACA,wBACA,IAHA,QAGA,qFACA,0EACA,oFACA,wBACA,WAAsC,kEAAoF,kEAA8F,EACxN,sCACA,YAEA,OADA,yCAEA,CAAS,EACT,kBACA,EACA,sCACA,qBACA,EACA,uCACA,sBACA,EACA,CACA,CAAC,GAED,aACA,eACA,uDACA,cACA,iBACA,YACA,EAWA,cACA,gCACA,yCACA,MACA,0BACA,gBACA,iBAhBA,WACA,uCACA,0BACA,gBACA,gBAA6C,8BAAuC,OACpF,qBAEA,CAAS,CACT,CAAK,EACL,IAOA,iBACA,+BACA,CAAqB,EACrB,QAEA,OADA,SACA,MAEA,CAAS,CACT,CAAK,CACL,EAEA,EACA,YACA,iDACA,OACA,sBACA,2BACA,gCACA,EACA,sBACA,iBACA,0BACA,wBACA,2BACA,8BACA,EACA,sBACA,oBACA,WACA,uBACA,EACA,uBACA,wBAGA,aAA8B,eAAoB,EAClD,sBACA,aAAkC,eAAmB,EAErD,4BACA,8BACA,sBACA,qBACA,0BACA,+BACA,yBACA,UAEA,EACA,yBACA,iBACA,wBACA,QAA6B,WAAoB,EAEjD,oCAA2D,eAAoB,EAC/E,wBACA,qCACA,yBACA,4BACA,wBACA,gCAEA,EACA,2BACA,oBACA,8BAGA,EACA,sCAEA,4BACA,8EAEA,0BACA,EACA,yBACA,iBACA,wBACA,EACA,qBACA,wBACA,6DACA,WACA,YAGA,EACA,YACA,eACA,YACA,gBACA,yBACA,sBACA,EACA,iBACA,aACA,gBACA,gBACA,cACA,aACA,mBACA,aACA,YACA,oBACA,eACA,eACA,EACA,cACA,EAIA,EACA,YACA,iDACA,OACA,sBACA,2BACA,gCACA,EACA,sBACA,iCACA,gCACA,wBACA,QACA,EACA,sBACA,oBACA,iCACA,+BACA,SACA,uBACA,EACA,wBACA,sBACA,SAEA,EACA,uBACA,sBACA,QAEA,EACA,0BAEA,EACA,wBAEA,EACA,qBACA,wBACA,6DACA,WACA,YAGA,EACA,cACA,iBACA,aACA,gBACA,gBACA,WACA,EACA,cACA,EAIA,gBACA,yCAEA,KADA,CADA,iBACA,KACA,CACA,WACA,OACA,SACA,CAAK,EAEL,OADA,eACA,CACA,EAEA,EACA,YACA,wDACA,OACA,sBACA,sBACA,mBACA,mBACA,eACA,2BACA,2BACA,4BAEA,yBACA,SACA,EACA,uBACA,eACA,EACA,wBACA,cAEA,oBACA,EACA,wBAEA,GADA,aAA4C,MAC5C,oCAEA,mBACA,OACA,eACA,6BAEA,eACA,gCAEA,UACA,6CACA,yBACA,uBACA,yBACA,wBACA,uCACA,KACA,oBACA,2CACA,CAAiB,EAEjB,GAEA,cAA4C,WAAkB,qBAAuC,KACrG,EACA,yBACA,YAA4C,OAC5C,8BACA,mBACA,eACA,WACA,CAAa,EACb,YACA,CAAa,CACb,EACA,wBACA,gBACA,cACA,YA/DA,aAgEA,EAKA,cACA,uCACA,0BACA,gBACA,OAEA,OADA,sBACA,WACA,EAGA,OADA,OADA,SACA,KAIA,kBAEA,CAAS,CACT,CAAK,CACL,CACA,SAA6B,MAAY,EACzC,WACA,aACA,UACA,uBACA,oCACA,sBACA,yBACA,uCACA,2BACA,wBACA,wBACA,yCACA,kBACA,iCAEA,EACA,EACA,0BACA,mCACA,qCACA,qCACA,6CACA,qCACA,+CACA,MAAsB,aAAgB,sBACtC,8CACA,QACA,eACA,WACA,gBAAsC,iBAAqB,EAC3D,qCACA,IACA,aACA,gCACA,wBACA,6CACA,4CAEA,IACA,yBACA,aACA,kCACA,6CACA,2CAEA,MAEA,aACA,SAA2B,2CAAiD,CAC5E,QAA0B,+BAAmC,CAChD,GACb,6DAEA,mDACA,yCAEA,oCACA,oEAGA,sCACA,+BACA,gCACA,qCACA,uCACA,yCACA,yCACA,oBACA,yBACA,sBACA,mDACA,gCACA,CAAS,CACT,CAsaA,OAraA,4CACA,mCAEA,yCACA,KACA,kCACA,sEACA,EACA,sCACA,aACA,UACA,WACA,gBACA,mBACA,aACA,eACA,UACA,KACA,WACA,SAEA,CACA,QACA,EACA,yCACA,uCAEA,0BACA,gBACA,OACA,2BACA,SAA6C,qDAAuC,OACpF,EAMA,OAIA,OARA,SADA,iBACA,kCACA,EACA,2BACA,SAA6C,4BAAuC,OAIpF,WAAiD,6BAAuC,EAKxF,CAAa,CACb,CAAS,CACT,EACA,6CACA,IAv3BA,EAOA,EAeA,EATA,EA02BA,yHAlgCA,KACA,SACA,0EACA,YACA,4DACA,8CAA2D,WAAc,IACzE,uEACA,kBAEA,QACA,EAw/BA,uGACA,OACA,YACA,GACA,YAEA,mCACA,GA93BA,EA83BA,4BAv3BA,GANA,cA63BA,GA53BA,kBAA8C,OAC9C,OACA,qBACA,CAAY,EACZ,eAw3BA,EAx3BA,EACA,WACA,sBAA8D,0BAE9D,SADA,OACA,CACA,CAAK,MAAU,GAo3Bf,aACA,YAEA,0BACA,qBACA,6BACA,CAAS,CACT,gBACA,MAEA,8BACA,MACA,YAEA,OAt3BA,UADA,EAu3BA,KAt3BkC,MAClC,4BACA,qHAEA,kCAk3BA,EAj3BA,qBACA,gBAi3BA,EAh4BA,eADA,EAi4BA,eA/3BA,kBAAkD,OAClD,OACA,aACA,CAAY,EACZ,mBACA,kBA23BA,GAGA,oBACA,sCAEA,GAA0B,uJAAqS,KAL/T,IAMA,EACA,uCACA,0BAEA,qCACA,wBAEA,kCACA,cACA,uCAEA,IADA,sBACA,OACA,0BACA,gBACA,OACA,kBACA,oBACA,EACA,SACA,SACA,QAIA,GAHA,gDACA,uCAEA,CADA,iCAEA,SACA,qBACA,UACA,CAA6B,EAE7B,iCAEA,yCACA,EAEA,SACA,SACA,QAIA,OAHA,qCACA,mBAA8C,0CAC9C,OACA,0BACA,oBACA,aACA,WACA,CAAiC,CACjC,wBACA,iBACA,gBACA,CAAiC,CACjC,yBACA,iBAAgF,KAAmB,kEAAqH,GACxN,cACA,wBACA,wBACA,CAAyC,CAEzC,CAAiC,CACjC,sBACA,cACA,CAAiC,CACJ,QAC7B,EAEA,GADA,uBACA,iCAEA,OADA,OACA,cACA,EACA,oBACA,SACA,QA6DA,OA5DA,oEACA,iDACA,2BACA,sHACA,kDACA,eAC6B,GAE7B,iBACA,kCACA,0BACA,iCACA,2BACA,eACA,8BACA,EACA,iBACA,gBACA,SACA,CAA6B,GAE7B,2BACA,yBAAuD,GAAe,EACtE,mBACA,oBACA,CAA6B,EAC7B,kCACA,+BACA,mDACA,6CACA,2BAC6B,EAC7B,8BAEA,sBACA,mCACA,SACA,uBACA,8BACA,qCACA,iCACA,6BACA,sBACiC,EAEjC,qDACA,0CACA,sBACA,wEAEA,iBACA,iCACA,gBACA,YACA,CAA6B,EAE7B,iCACA,gCAGA,mGAIA,GAHA,eACA,wDAEA,6BACA,iCACA,wBACA,UACA,CAAqC,CACrC,CACA,CAA6B,oBAC7B,YACA,CAA6B,QAC7B,EAEA,OADA,SACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,kCACA,uCACA,0BACA,gBACA,OACA,kBACA,oBACA,EACA,SACA,SACA,QACA,uBACA,6DAEA,SACA,QAEA,GADA,sBACA,oCACA,yCACA,EACA,SACA,SACA,yBACA,EAKA,OAJA,iBACA,yBAEA,sBACA,SACA,YAEA,CAAa,CACb,CAAS,CACT,EAEA,+BACA,uCACA,QACA,0BACA,gBACA,OAIA,GAHA,GACA,qBAEA,uDAMA,OALA,8BACA,gDACA,OACA,uDACA,2BACA,WACA,EACA,SACA,2BACA,SACA,kBAEA,CAAa,CACb,CAAS,CACT,EAEA,+BACA,uCACA,QACA,0BACA,gBACA,OAMA,OALA,8BACA,gDACA,OACA,oBACA,2BACA,WACA,EAGA,OAFA,SACA,2BACA,IAEA,CAAa,CACb,CAAS,CACT,EACA,qCACA,yBAAiD,wBACjD,GACA,2BAAsD,0BAEtD,0CACA,EACA,wCACA,uBACA,EACA,yCACA,wBACA,EACA,8BACA,iBACA,yBAAsC,oCAAsC,EAE5E,uBACA,+BAEA,EACA,+BACA,iBACA,wBAEA,EACA,+BACA,iBACA,uBAEA,uBACA,0DAEA,EACA,oCACA,iBACA,2BAAwC,cAA0B,CAElE,EACA,+BACA,iBACA,uBAEA,uBACA,0DAEA,EACA,uCACA,0BAEA,oCACA,QACA,4GACA,EACA,kCACA,MACA,oEACA,EACA,oCACA,QACA,4GACA,EACA,qCACA,uBAEA,0DACA,mCACA,EACA,+CACA,QACA,uIACA,EACA,wCACA,0BACA,qBACA,cACA,OACA,yBACA,6CACA,MACA,EACA,qCAEA,IADA,EACA,0BACA,0BACA,kEACA,EA7eA,EA8eA,EA9e2B,EA+e3B,0CAEA,IADA,IACA,0DACA,OACA,8DACA,kGACA,gBAEA,EACA,sCACA,uBACA,2BACA,EACA,sCACA,uBACA,iDACA,0BAEA,EACA,mBACA,CACA,CAAC,GAID,EA1yCA,YACA,2CACA","sources":["webpack://_N_E/../../node_modules/@u-next/videoplayer/dist/videoplayer-b13b17b6.esm.js"],"sourcesContent":["import EventEmitter from 'events';\nimport ImsParser, { PreparedStatus } from '@u-next/ims-parser';\nimport Bowser from 'bowser';\nimport { SuperFlowClient } from '@u-next/superflow-web';\n\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nvar chooseByWeight = function (items) {\n var _a;\n if (!items) {\n return null;\n }\n var weights = (_a = items.map(function (item) { return item.weight; })) !== null && _a !== void 0 ? _a : [];\n var r = Math.random() * weights.reduce(function (w, weight) { return weight + w; }, 0);\n var selectedWeight = 0;\n var reduced = r - weights[selectedWeight];\n while (reduced > 0) {\n selectedWeight += 1;\n reduced -= weights[selectedWeight];\n }\n return items[selectedWeight];\n};\nvar createPlaybackError = function (_a) {\n var code = _a.code, severity = _a.severity, codePrefix = _a.codePrefix;\n return __assign(__assign({ type: 'playback_error' }, new Error('再生エラー')), { code: \"\".concat(codePrefix !== null && codePrefix !== void 0 ? codePrefix : '').concat(code), critical: severity ? severity > 1 : false });\n};\nvar uint8ArrayToBase64 = function (uint8Array) {\n return btoa(String.fromCharCode.apply(null, Array.from(uint8Array)));\n};\nvar base64ToUint8Array = function (base64str) {\n return Uint8Array.from(atob(base64str), function (c) { return c.charCodeAt(0); });\n};\nfunction isPlaybackError$1(e) {\n return 'type' in e && e.type === 'playback_error';\n}\nvar STREAMFORMAT_TO_INTERNAL = {\n DASH: 'dash',\n DASH_CMAF: 'dash-cmaf',\n DASH_DOLBYVISION: 'dash-dolbyvision',\n DASH_HDR10: 'dash-hdr10',\n HLS_CMAF: 'hls-cmaf',\n HLS_FP: 'hls-fp',\n HLS_S_AES: 'hls-s-aes',\n SMOOTH: 'smooth',\n};\nfunction sanitizePlayable(_a) {\n var streamFormat = _a[0], manifestCandidates = _a[1];\n switch (streamFormat) {\n case 'dash':\n case 'dash-cmaf':\n case 'dash-cmaf-vr':\n case 'dash-dolbyvision':\n case 'dash-hdr10':\n case 'hls-cmaf':\n case 'hls-fp':\n case 'hls-s-aes':\n case 'smooth':\n case 'mp4':\n return [{ type: streamFormat, manifestCandidates: manifestCandidates }];\n default: {\n var mappedSteamFormat = STREAMFORMAT_TO_INTERNAL[streamFormat];\n return mappedSteamFormat\n ? [\n {\n type: mappedSteamFormat,\n manifestCandidates: manifestCandidates,\n },\n ]\n : [];\n }\n }\n}\nfunction sanitizeLicenseUrl(_a) {\n var drmType = _a[0], licenseUrl = _a[1];\n switch (drmType.toLowerCase()) {\n case 'widevine':\n return [{ type: 'widevine', licenseUrl: licenseUrl }];\n case 'playready':\n return [{ type: 'playready', licenseUrl: licenseUrl }];\n case 'fairplay':\n return [{ type: 'fairplay', licenseUrl: licenseUrl }];\n case 'hls-s-aes':\n return [{ type: 'hls-s-aes', licenseUrl: licenseUrl }];\n default:\n return [];\n }\n}\n/**\n * Returns a sanitized and filtered playables which format is listed in supportedStreamFormats,\n * preserving the order of supportedStreamFormats.\n */\nfunction supportedPlayables(playables, supportedStreamFormats) {\n var listOfPlayable = Array.isArray(playables)\n ? playables.map(function (playable) { return [\n playable.type,\n playable.manifestCandidates,\n ]; })\n : Object.entries(playables);\n var sanitizedPlayables = listOfPlayable.flatMap(sanitizePlayable);\n return supportedStreamFormats.flatMap(function (format) { return sanitizedPlayables.find(function (_a) {\n var type = _a.type;\n return type === format;\n }) || []; });\n}\nfunction mapLicenseUrls(licenseUrls) {\n var listOfLicenseUrls = Array.isArray(licenseUrls)\n ? licenseUrls.map(function (licenseUrl) { return [\n licenseUrl.type,\n licenseUrl.licenseUrl,\n ]; })\n : Object.entries(licenseUrls);\n return listOfLicenseUrls.flatMap(sanitizeLicenseUrl);\n}\nfunction getManifestUrl(isTimeshift, manifestCandidate) {\n if (isTimeshift === void 0) { isTimeshift = false; }\n if (isTimeshift && !manifestCandidate.timeshiftManifestUrl) {\n console.warn('timeshiftManifestUrl is not available, even though isTimeshift is true. Falling back to manifestUrl.');\n }\n return new URL(isTimeshift && manifestCandidate.timeshiftManifestUrl\n ? manifestCandidate.timeshiftManifestUrl\n : manifestCandidate.manifestUrl);\n}\nfunction attachPlayTokenToUrl(url, playToken) {\n var parsedUrl = new URL(url);\n parsedUrl.searchParams.set('play_token', playToken);\n return parsedUrl.href;\n}\n\nvar StreamFormatsInternal = [\n 'dash',\n 'dash-cmaf',\n 'dash-cmaf-vr',\n 'dash-dolbyvision',\n 'dash-hdr10',\n 'hls-cmaf',\n 'hls-fp',\n 'hls-s-aes',\n 'smooth',\n 'mp4',\n];\nvar StreamFormatsNexus = [\n 'DASH',\n 'DASH_CMAF',\n 'DASH_DOLBYVISION',\n 'DASH_HDR10',\n 'HLS_CMAF',\n 'HLS_FP',\n 'HLS_S_AES',\n 'SMOOTH',\n];\nfunction isStreamFormat$1(value) {\n return (StreamFormatsNexus.includes(value) ||\n StreamFormatsInternal.includes(value));\n}\nvar DrmTypesInternal = [\n 'widevine',\n 'playready',\n 'fairplay',\n 'hls-s-aes',\n];\nvar DrmTypesNexus = ['WIDEVINE', 'PLAYREADY', 'FAIRPLAY'];\nfunction isDrmType$1(value) {\n return (DrmTypesInternal.includes(value) ||\n DrmTypesNexus.includes(value));\n}\n\nvar sceneSearchEventEmitter = new EventEmitter();\nvar SCENE_SEARCH_CONST = {\n mainImgSize: {\n width: 320,\n height: 180,\n },\n subImgSize: {\n width: 256,\n height: 144,\n },\n subImgPadding: 4,\n};\nvar NO_IMAGE = 'NO_IMAGE';\nvar UVideoPlayerSceneSearcher = /** @class */ (function () {\n function UVideoPlayerSceneSearcher() {\n this.imsStatus = 0;\n this.maxOneSideImageNum = 0;\n this.isMobile = undefined;\n this.imsParser = null;\n this.playRangeStartTime = undefined;\n this.playRangeEndTime = undefined;\n this.timeShiftedSceneSearchUrl = undefined;\n this.player = null;\n }\n UVideoPlayerSceneSearcher.prototype.setOptions = function (_a) {\n var _this = this;\n var _b, _c;\n var sceneSearchList = _a.sceneSearchList, playRangeStartTime = _a.playRangeStartTime, playRangeEndTime = _a.playRangeEndTime, timeShiftedSceneSearchUrl = _a.timeShiftedSceneSearchUrl, player = _a.player, isMobile = _a.isMobile;\n this.playRangeStartTime = playRangeStartTime;\n this.playRangeEndTime = playRangeEndTime;\n this.timeShiftedSceneSearchUrl = timeShiftedSceneSearchUrl;\n this.player = player;\n this.isMobile = isMobile;\n var profile = this.isMobile\n ? sceneSearchList === null || sceneSearchList === void 0 ? void 0 : sceneSearchList.IMS_L\n : sceneSearchList === null || sceneSearchList === void 0 ? void 0 : sceneSearchList.IMS_M;\n if (profile) {\n var url = typeof profile === 'string'\n ? profile\n : (_c = (_b = chooseByWeight(profile)) === null || _b === void 0 ? void 0 : _b.sceneSearchUrl) !== null && _c !== void 0 ? _c : '';\n this.imsParser = new ImsParser({\n url: url,\n onPrepared: function (imsStatus) {\n _this.imsStatus = imsStatus;\n },\n onDownloadError: function () {\n _this.imsStatus = PreparedStatus.INVALID_FILE;\n },\n });\n this.imsParser.init();\n }\n player.control.waitForAttach().then(function () {\n window.addEventListener('resize', function () {\n _this.updateContainerWidth(player);\n });\n _this.updateContainerWidth(player);\n });\n };\n UVideoPlayerSceneSearcher.prototype.updateContainerWidth = function (player) {\n var _a;\n var containerWidth = (_a = player.control.getContainerElement()) === null || _a === void 0 ? void 0 : _a.clientWidth;\n if (containerWidth) {\n this.maxOneSideImageNum = Math.ceil((containerWidth -\n SCENE_SEARCH_CONST.subImgSize.width -\n SCENE_SEARCH_CONST.subImgPadding * 2) /\n 2 /\n (SCENE_SEARCH_CONST.subImgSize.width +\n SCENE_SEARCH_CONST.subImgPadding * 2));\n }\n };\n UVideoPlayerSceneSearcher.prototype.searchStart = function (seekTime) {\n sceneSearchEventEmitter.emit('scenesearch', seekTime);\n };\n UVideoPlayerSceneSearcher.prototype.searchEnd = function () {\n sceneSearchEventEmitter.emit('scenesearchend');\n };\n UVideoPlayerSceneSearcher.prototype.onSceneSearch = function (listener) {\n sceneSearchEventEmitter.on('scenesearch', listener);\n };\n UVideoPlayerSceneSearcher.prototype.offSceneSearch = function (listener) {\n sceneSearchEventEmitter.off('scenesearch', listener);\n };\n UVideoPlayerSceneSearcher.prototype.onSceneSearchEnd = function (listener) {\n sceneSearchEventEmitter.on('scenesearchend', listener);\n };\n UVideoPlayerSceneSearcher.prototype.offSceneSearchEnd = function (listener) {\n sceneSearchEventEmitter.off('scenesearchend', listener);\n };\n UVideoPlayerSceneSearcher.prototype.getResolvedScene = function (sceneTime) {\n var _a, _b, _c, _d;\n var mainImg = '';\n var leftImgList = [];\n var rightImgList = [];\n var seekedTime = sceneTime;\n // timeshift\n if (this.timeShiftedSceneSearchUrl) {\n var url_1 = this.timeShiftedSceneSearchUrl;\n var seekRange = (_a = this.player) === null || _a === void 0 ? void 0 : _a.getSeekRange();\n var duration = seekRange && seekRange.end - seekRange.start;\n var liveDeliveryStartEpoch_1 = (_d = (_c = (_b = this.player) === null || _b === void 0 ? void 0 : _b.playerOptions) === null || _c === void 0 ? void 0 : _c.live) === null || _d === void 0 ? void 0 : _d.deliveryStartEpoch;\n if (url_1 &&\n typeof duration === 'number' &&\n typeof liveDeliveryStartEpoch_1 === 'number') {\n var sceneIntervalSec_1 = Math.ceil(duration / 10000) * 10; // 全シーンの数が1000を超えない かつ 10秒の倍数\n var getImage = function (index) {\n return url_1.replace(/\\{epoch_second\\}/, (liveDeliveryStartEpoch_1 + sceneIntervalSec_1 * index).toString());\n };\n var targetImgIndex = Math.floor(sceneTime / sceneIntervalSec_1); // シーク位置のシーン(画像)のindex\n mainImg = getImage(targetImgIndex);\n seekedTime = targetImgIndex * sceneIntervalSec_1;\n var maxImages = Math.floor(duration / sceneIntervalSec_1) + 1; // 全シーン(画像)の数\n for (var i = 1; i <= this.maxOneSideImageNum; i += 1) {\n var leftImgIndex = targetImgIndex - i;\n if (leftImgIndex >= 0)\n leftImgList.push(getImage(leftImgIndex));\n var rightImgIndex = targetImgIndex + i;\n if (rightImgIndex < maxImages)\n rightImgList.push(getImage(rightImgIndex));\n }\n }\n }\n else {\n // non timeshift\n if (!this.imsParser || this.imsStatus !== PreparedStatus.OK) {\n return { seekedTime: seekedTime };\n }\n var targetImsIndex = this.imsParser.getClosestTimestampIndex(sceneTime * 1000);\n if (targetImsIndex === null) {\n return { seekedTime: seekedTime };\n }\n mainImg = this.imsParser.getImage(targetImsIndex);\n var mainImgTimestamp = this.imsParser.getImageTimestamp(targetImsIndex) / 1000;\n if ((this.playRangeStartTime &&\n mainImgTimestamp < this.playRangeStartTime) ||\n (this.playRangeEndTime && mainImgTimestamp > this.playRangeEndTime)) {\n mainImg = NO_IMAGE;\n }\n seekedTime = this.imsParser.getImageTimestamp(targetImsIndex) / 1000;\n var maxImsImages = this.imsParser.getImageCount();\n for (var i = 1; i <= this.maxOneSideImageNum; i += 1) {\n var leftImgIndex = targetImsIndex - i;\n var leftImgTime = this.imsParser.getImageTimestamp(leftImgIndex) / 1000;\n if (leftImgIndex >= 0) {\n if (!this.playRangeStartTime ||\n leftImgTime >= this.playRangeStartTime) {\n leftImgList.push(this.imsParser.getImage(leftImgIndex));\n }\n }\n var rightImgIndex = targetImsIndex + i;\n var rightImgTime = this.imsParser.getImageTimestamp(rightImgIndex) / 1000;\n if (rightImgIndex < maxImsImages) {\n if (!this.playRangeEndTime || rightImgTime <= this.playRangeEndTime) {\n rightImgList.push(this.imsParser.getImage(rightImgIndex));\n }\n }\n }\n }\n return {\n imsStatus: this.imsStatus,\n mainImg: mainImg,\n leftImgList: leftImgList,\n rightImgList: rightImgList,\n seekedTime: seekedTime,\n };\n };\n return UVideoPlayerSceneSearcher;\n}());\n\nvar UVideoPlayerStorage = /** @class */ (function () {\n function UVideoPlayerStorage(videoElement) {\n this.videoElement = videoElement;\n this.temporaryPlaybackRate = 1;\n this.temporaryVolumeProps = {\n volume: 1,\n prevVolume: 0,\n };\n }\n UVideoPlayerStorage.prototype.getTemporaryPlaybackRate = function () {\n return this.temporaryPlaybackRate;\n };\n UVideoPlayerStorage.prototype.setTemporaryPlaybackRate = function (playbackRate) {\n this.temporaryPlaybackRate = playbackRate;\n };\n UVideoPlayerStorage.prototype.getTemporaryVolumeProps = function () {\n return this.temporaryVolumeProps;\n };\n UVideoPlayerStorage.prototype.setTemporaryVolumeProps = function (volumeProps) {\n this.temporaryVolumeProps = __assign(__assign({}, this.temporaryVolumeProps), volumeProps);\n };\n return UVideoPlayerStorage;\n}());\n\nvar UVideoPlayerControl = /** @class */ (function () {\n function UVideoPlayerControl(player) {\n var _this = this;\n this._resolveAttachPromise = null;\n this._prevVolume = 1;\n this.eventEmitter = new EventEmitter();\n this.player = player;\n this.videoElement = player.getVideoElement();\n this.containerElement = null;\n this.fullscreenWrapperElement = null;\n this._attachPromise = new Promise(function (resolve) {\n _this._resolveAttachPromise = resolve;\n });\n this.toggleMuted = this.toggleMuted.bind(this);\n this.toggleFullscreen = this.toggleFullscreen.bind(this);\n }\n UVideoPlayerControl.prototype.getContainerElement = function () {\n return this.containerElement;\n };\n UVideoPlayerControl.prototype.attachTo = function (containerElement) {\n var _a;\n containerElement.appendChild(this.videoElement);\n this.containerElement = containerElement;\n (_a = this._resolveAttachPromise) === null || _a === void 0 ? void 0 : _a.call(this);\n };\n UVideoPlayerControl.prototype.getFullscreenWrapperElement = function () {\n return this.fullscreenWrapperElement || this.containerElement;\n };\n UVideoPlayerControl.prototype.setFullscreenWrapperElement = function (element) {\n this.fullscreenWrapperElement = element;\n };\n UVideoPlayerControl.prototype.waitForAttach = function () {\n return this._attachPromise;\n };\n // volume\n UVideoPlayerControl.prototype.setPrevVolume = function (volume) {\n this._prevVolume = volume;\n };\n UVideoPlayerControl.prototype.toggleMuted = function () {\n if (this.videoElement.volume === 0) {\n this.videoElement.volume = this._prevVolume;\n }\n else {\n this._prevVolume = this.videoElement.volume;\n this.videoElement.volume = 0;\n }\n return this.videoElement.volume;\n };\n UVideoPlayerControl.prototype.togglePlayPause = function () {\n var isPaused = this.videoElement.paused;\n if (isPaused) {\n this.videoElement.play();\n }\n else {\n this.videoElement.pause();\n }\n };\n // fullscreen\n UVideoPlayerControl.prototype.requestFullscreen = function (containerElement, videoElement) {\n var _a, _b;\n if (containerElement.requestFullscreen)\n containerElement.requestFullscreen();\n else if (containerElement.mozRequestFullScreen)\n containerElement.mozRequestFullScreen();\n else if (containerElement.webkitRequestFullscreen)\n containerElement.webkitRequestFullscreen();\n // for iOS safari\n else if (videoElement === null || videoElement === void 0 ? void 0 : videoElement.webkitEnterFullScreen)\n videoElement.webkitEnterFullScreen();\n if (typeof ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.lock) === 'function') {\n window.screen.orientation.lock('landscape').catch(function () {\n // ignore error on device which doesn't support orientation.lock\n });\n }\n };\n UVideoPlayerControl.prototype.exitFullscreen = function () {\n var _a, _b;\n var doc = document;\n if (doc.exitFullscreen)\n doc.exitFullscreen();\n else if (doc.mozCancelFullScreen)\n doc.mozCancelFullScreen();\n else if (doc.webkitExitFullscreen)\n doc.webkitExitFullscreen();\n if (typeof ((_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.orientation) === null || _b === void 0 ? void 0 : _b.unlock) === 'function') {\n window.screen.orientation.unlock();\n }\n };\n UVideoPlayerControl.prototype.toggleFullscreen = function () {\n var fullscreenWrapper = this.getFullscreenWrapperElement();\n if (!fullscreenWrapper)\n return;\n var doc = document;\n var isCurrentFullscreen = !!(doc.fullscreenElement ||\n doc.webkitFullscreenElement ||\n doc.webkitIsFullScreen ||\n doc.mozFullScreen);\n if (!isCurrentFullscreen) {\n this.requestFullscreen(fullscreenWrapper, this.videoElement);\n }\n else {\n this.exitFullscreen();\n }\n };\n UVideoPlayerControl.prototype.onFullscreenChange = function (callback) {\n var _this = this;\n document.addEventListener('fullscreenchange', function () {\n return _this.handleFullscreenChange(callback);\n });\n document.addEventListener('webkitfullscreenchange', function () {\n return _this.handleFullscreenChange(callback);\n });\n document.addEventListener('mozfullscreenchange', function () {\n return _this.handleFullscreenChange(callback);\n });\n };\n UVideoPlayerControl.prototype.handleFullscreenChange = function (callback) {\n var _a;\n var doc = document;\n var isFullscreen = !!(doc.fullscreenElement ||\n doc.webkitFullscreenElement ||\n doc.webkitIsFullScreen ||\n doc.mozFullScreen);\n if (!isFullscreen) {\n (_a = this.containerElement) === null || _a === void 0 ? void 0 : _a.focus();\n }\n callback(isFullscreen);\n };\n UVideoPlayerControl.prototype.getIsFullscreen = function () {\n var fullscreenWrapper = this.getFullscreenWrapperElement();\n if (!fullscreenWrapper)\n return false;\n var doc = document;\n var isCurrentFullscreen = !!(doc.fullscreenElement ||\n doc.webkitFullscreenElement ||\n doc.webkitIsFullScreen ||\n doc.mozFullScreen);\n return isCurrentFullscreen;\n };\n UVideoPlayerControl.prototype.seekFromCurrentTime = function (seconds) {\n var currentTime = this.videoElement.currentTime;\n var duration = this.videoElement.duration;\n var newTime = Math.min(Math.max(0, currentTime + seconds), duration);\n this.videoElement.currentTime = newTime;\n this.eventEmitter.emit('seekFromCurrentTime', seconds);\n };\n /**\n * Try to seek next/previous frame based on manifest framerate.\n * @param {number} direction - positive -> next frame, negative -> previous frame.\n */\n UVideoPlayerControl.prototype.seekByFrame = function (direction) {\n var _a;\n if (direction === void 0) { direction = 1; }\n var frameRate = (_a = this.player) === null || _a === void 0 ? void 0 : _a.getFrameRate();\n if (frameRate && frameRate > 0 && this.videoElement.paused) {\n if (direction > 0) {\n this.videoElement.currentTime =\n this.videoElement.currentTime + 1 / frameRate;\n }\n else {\n this.videoElement.currentTime =\n this.videoElement.currentTime - 1 / frameRate;\n }\n }\n };\n return UVideoPlayerControl;\n}());\n\nvar angleEventEmitter = new EventEmitter();\nvar UVideoPlayerAngleSelector = /** @class */ (function () {\n function UVideoPlayerAngleSelector(endPoints, player) {\n this.endPointIndex = 0;\n this.endPoints = endPoints;\n this.player = player;\n angleEventEmitter.emit('angleinit', endPoints);\n }\n UVideoPlayerAngleSelector.prototype.switchAngle = function (endPointIndex) {\n var _a, _b, _c, _d;\n this.endPointIndex = endPointIndex;\n angleEventEmitter.emit('anglechange', endPointIndex);\n var isRealtime = (((_a = this.player.playerOptions) === null || _a === void 0 ? void 0 : _a.playbackType) === 'live' &&\n !((_b = this.player.playerOptions) === null || _b === void 0 ? void 0 : _b.isTimeshift)) ||\n ((_c = this.player.playerOptions) === null || _c === void 0 ? void 0 : _c.playbackType) === 'linear';\n this.player.setOptions({\n meta: __assign(__assign({}, (_d = this.player.playerOptions) === null || _d === void 0 ? void 0 : _d.meta), { title: this.endPoints[endPointIndex].title, subtitle: this.endPoints[endPointIndex].subtitle }),\n playables: this.endPoints[endPointIndex].playables,\n startTime: !isRealtime\n ? this.player.getVideoElement().currentTime\n : undefined,\n });\n this.player.load();\n };\n UVideoPlayerAngleSelector.prototype.onAngleChange = function (listener) {\n angleEventEmitter.on('anglechange', listener);\n };\n UVideoPlayerAngleSelector.prototype.offAngleChange = function (listener) {\n angleEventEmitter.off('anglechange', listener);\n };\n return UVideoPlayerAngleSelector;\n}());\n\nvar getCurrentTimeString = function () {\n var date = new Date();\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000)\n .toISOString()\n .replace('T', ' ')\n .substr(0, 19);\n};\nfunction importTreasureDataClient() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, import('./videoplayer-0adcfe0d.esm.js')];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n}\nvar getTdClient = function (_a) {\n var commonInfo = _a.commonInfo, tdConfig = _a.tdConfig;\n return __awaiter(void 0, void 0, void 0, function () {\n var tdClient;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, importTreasureDataClient().then(function (module) {\n tdClient = new module.TreasureDataClient(commonInfo, tdConfig);\n })];\n case 1:\n _b.sent();\n return [2 /*return*/, tdClient];\n }\n });\n });\n};\n\nvar MoviePlayLogger = /** @class */ (function () {\n function MoviePlayLogger(_a) {\n var tdClient = _a.tdClient, tdDb = _a.tdDb, tdTable = _a.tdTable, onSend = _a.onSend;\n var _this = this;\n this.htmlUnloading = false;\n this.setParams = function (data) {\n _this._data = Object.assign(_this._data, data);\n };\n this.init = function (_a) {\n var playTime = _a.playTime;\n _this._logState.hasStarted = true;\n _this._logState.hasEnded = false;\n _this._logState.isBuffering = false;\n _this._data.play_time = Math.ceil(playTime);\n };\n this.stop = function (htmlUnloading) {\n _this.htmlUnloading = !!htmlUnloading;\n _this.paused();\n _this._logState.hasEnded = true;\n };\n this.paused = function () {\n if (!_this._logState.isPlaying) {\n return;\n }\n _this.buffering({ isBuffering: false });\n if (_this._logState.isOffline) {\n _this.buffering({ isBuffering: true });\n }\n else if (_this._logState.playbackStart) {\n _this._data.playback_end_time = getCurrentTimeString();\n _this._data.playback_time =\n Math.ceil(Date.now() -\n _this._logState.playbackStart -\n _this._logState.bufferingTime) / 1000;\n _this._logState.isPlaying = false;\n _this.send();\n }\n };\n this.playing = function (_a) {\n var playTime = _a.playTime;\n if (!_this._logState.hasStarted) {\n _this.init({ playTime: playTime });\n }\n _this._logState.isOffline || _this.buffering({ isBuffering: false });\n if (!_this._logState.isPlaying) {\n _this._logState.playbackStart = Date.now();\n _this._logState.isPlaying = true;\n _this._logState.bufferingTime = 0;\n _this._data.playback_time = 0;\n _this._data.playback_start_time = getCurrentTimeString();\n }\n };\n this.buffering = function (_a) {\n var isBuffering = _a.isBuffering;\n if (isBuffering === _this._logState.isBuffering) {\n return;\n }\n if (isBuffering) {\n _this._logState.bufferingStart = Date.now();\n }\n else if (_this._logState.bufferingStart) {\n _this._logState.bufferingTime += Math.ceil(Date.now() - _this._logState.bufferingStart);\n }\n _this._logState.isBuffering = isBuffering;\n };\n this.offline = function (_a) {\n var isOffline = _a.isOffline;\n _this._logState.isOffline = isOffline;\n };\n this.send = function () {\n if (!_this._logState.hasEnded) {\n _this._tdClient.send(_this._tdDb, _this._tdTable, _this._data, _this.htmlUnloading);\n if (_this._onSend) {\n _this._onSend();\n }\n }\n };\n this._data = {\n download_flg: 0,\n play_time: 0,\n playback_time: 0,\n playback_start_time: null,\n playback_end_time: null, // 再生終了時刻\n };\n this._tdClient = tdClient;\n this._tdDb = tdDb;\n this._tdTable = tdTable;\n this._logState = {\n hasStarted: false,\n isOffline: false,\n playbackStart: null,\n isPlaying: false,\n hasEnded: false,\n bufferingStart: null,\n isBuffering: false,\n bufferingTime: 0, // 再生中経過したバッファ時間(ms)\n };\n this._onSend = onSend;\n }\n return MoviePlayLogger;\n}());\n\nvar LiveLinearPlayLogger = /** @class */ (function () {\n function LiveLinearPlayLogger(_a) {\n var tdClient = _a.tdClient, tdDb = _a.tdDb, tdTable = _a.tdTable, onSend = _a.onSend;\n var _this = this;\n this.htmlUnloading = false;\n this.setParams = function (data) {\n _this._data = Object.assign(_this._data, data);\n };\n this.start = function () {\n _this._data.playback_action_time = getCurrentTimeString();\n _this._data.playback_action = 'START';\n _this._logState.hasEnded = false;\n _this.send();\n };\n this.stop = function (htmlUnloading) {\n _this.htmlUnloading = !!htmlUnloading;\n _this._data.playback_action_time = getCurrentTimeString();\n _this._data.playback_action = 'STOP';\n _this.send();\n _this._logState.hasEnded = true;\n };\n this.playing = function () {\n if (_this._logState.hasEnded) {\n _this.start();\n }\n };\n this.paused = function () {\n if (!_this._logState.hasEnded) {\n _this.stop();\n }\n };\n this.buffering = function () {\n // do nothing\n };\n this.offline = function () {\n // do nothing\n };\n this.send = function () {\n if (!_this._logState.hasEnded) {\n _this._tdClient.send(_this._tdDb, _this._tdTable, _this._data, _this.htmlUnloading);\n if (_this._onSend) {\n _this._onSend();\n }\n }\n };\n this._data = {};\n this._tdClient = tdClient;\n this._tdDb = tdDb;\n this._tdTable = tdTable;\n this._logState = {\n hasEnded: true,\n };\n this._onSend = onSend;\n }\n return LiveLinearPlayLogger;\n}());\n\nvar createPlayLogger = function (tdClient, playLogArgs) {\n var tdDb = playLogArgs.tdDb, tdTable = playLogArgs.tdTable, playLogData = playLogArgs.playLogData, isLiveOrLinear = playLogArgs.isLiveOrLinear;\n var PlayLogger = isLiveOrLinear ? LiveLinearPlayLogger : MoviePlayLogger;\n var playLoggerInstance = new PlayLogger({\n tdClient: tdClient,\n tdDb: tdDb,\n tdTable: tdTable,\n });\n playLoggerInstance.setParams(playLogData);\n return playLoggerInstance;\n};\n\nvar LiveResumeLogger = /** @class */ (function () {\n function LiveResumeLogger(_a) {\n var superFlowClient = _a.superFlowClient, dataset = _a.dataset, table = _a.table, _b = _a.debug, debug = _b === void 0 ? false : _b;\n var _this = this;\n this._startEpoch = null;\n this._isRealtime = null;\n this._isEnabled = false;\n this._state = 'IDLE';\n this._debug = false;\n this.setParams = function (params) {\n _this._startEpoch = params.startEpoch;\n _this._isRealtime = params.isRealtime;\n };\n this.setData = function (data) {\n _this._data = data;\n };\n this.enable = function () {\n _this._isEnabled = true;\n };\n this.playing = function () {\n if (!_this._isEnabled)\n return;\n _this._state = 'PLAYING';\n };\n this.stop = function (currentTimeFromStart, htmlUnloading) {\n if (htmlUnloading === void 0) { htmlUnloading = false; }\n if (!_this._isEnabled || _this._state === 'STOPPED')\n return;\n _this._state = 'STOPPED';\n var interruptionEpoch = 0;\n if (_this._isRealtime) {\n interruptionEpoch = Math.floor(Date.now() / 1000);\n }\n else if (_this._startEpoch) {\n interruptionEpoch = Math.floor(_this._startEpoch + currentTimeFromStart);\n }\n if (_this._debug) {\n console.info('Send live interruption event', {\n isRealtime: _this._isRealtime,\n currentTimeFromStart: currentTimeFromStart,\n startEpoch: _this._startEpoch,\n startTime: _this._startEpoch\n ? new Date(_this._startEpoch * 1000).toString()\n : null,\n interruptionEpoch: interruptionEpoch,\n interruptionTime: new Date(interruptionEpoch * 1000).toString(),\n });\n }\n if (!interruptionEpoch)\n return;\n _this._send(__assign(__assign({}, _this._data), { interruption_epoch: interruptionEpoch }), htmlUnloading);\n };\n this._send = function (eventData, htmlUnloading) {\n if (htmlUnloading === void 0) { htmlUnloading = false; }\n _this._superFlowClient.sendEvent({\n dataset: _this._dataset,\n table: _this._table,\n eventData: eventData,\n }, {\n sendBeacon: htmlUnloading,\n });\n };\n this._superFlowClient = superFlowClient;\n this._dataset = dataset;\n this._table = table;\n this._debug = debug;\n }\n return LiveResumeLogger;\n}());\n\nvar LIVE_EDGE_WINDOW = 10; // Consider it at \"live edge\" if the remaining time is less than this amount of seconds\nfunction awaitPromiseIgnoreRejection(promise) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, promise];\n case 1:\n _b.sent();\n return [3 /*break*/, 3];\n case 2:\n _b.sent();\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nvar playerEventEmitter = new EventEmitter();\nvar UVideoPlayer = /** @class */ (function () {\n function UVideoPlayer() {\n var _this = this;\n this.videoPlayer = null;\n this.supportedStreamFormats = ['mp4'];\n this._promiseQueue = [];\n this.eventCallbacks = null;\n this._resolveAngleSelectorPromise = null;\n this.isPlayRangeEnabled = false;\n this.angleSelector = null;\n this.playerOptions = null;\n this.getRequestHeaders = function () {\n if (_this.playbackSession) {\n return _this.playbackSession.requestHeaders;\n }\n return {};\n };\n this.playbackSession = null;\n this.onPlay = this.onPlay.bind(this);\n this.onPause = this.onPause.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onBuffering = this.onBuffering.bind(this);\n this.onError = this.onError.bind(this);\n this.getSeekRange = this.getSeekRange.bind(this);\n var browser = Bowser.getParser(navigator.userAgent);\n if (typeof window.WebKitMediaKeys === 'function') {\n var osVersion = browser\n .getOSVersion()\n .split('.')\n .map(function (ver) { return Number(ver); });\n var isMobile = !!browser.getOSName().match(/(iOS|iPad)/);\n if (isMobile &&\n osVersion.length >= 2 &&\n ((osVersion[0] === 11 && osVersion[1] >= 2) || osVersion[0] >= 12) &&\n !(osVersion[0] === 15 && osVersion[1] === 0)) {\n this.supportedStreamFormats.push('hls-cmaf');\n this.supportedStreamFormats.push('hls-fp');\n }\n else if (!isMobile &&\n browser.getOSName() === 'macOS' &&\n osVersion.length >= 2 &&\n ((osVersion[0] === 10 && osVersion[1] >= 13) || osVersion[0] >= 11)) {\n this.supportedStreamFormats.push('hls-cmaf');\n this.supportedStreamFormats.push('hls-fp');\n }\n }\n else {\n if (browser.satisfies({\n desktop: { chrome: '>= 76', firefox: '>= 90', edge: '>=18' },\n mobile: { chrome: '>= 76', firefox: '>= 90' },\n })) {\n this.supportedStreamFormats.push('dash-cmaf', 'dash-cmaf-vr');\n }\n if (browser.getBrowserName().match(/(Chrome|Edge|Firefox)/)) {\n this.supportedStreamFormats.push('dash');\n }\n if (navigator.userAgent.match('Quest')) {\n this.supportedStreamFormats.push('dash-cmaf-vr', 'dash-cmaf', 'dash');\n }\n }\n var videoElement = document.createElement('video');\n videoElement.setAttribute('width', '100%');\n videoElement.setAttribute('height', '100%');\n videoElement.setAttribute('playsInline', 'true');\n videoElement.addEventListener('play', this.onPlay);\n videoElement.addEventListener('pause', this.onPause);\n videoElement.addEventListener('ended', this.onEnded);\n this.videoElement = videoElement;\n this.control = new UVideoPlayerControl(this);\n this.storage = new UVideoPlayerStorage(videoElement);\n this._angleSelectorPromise = new Promise(function (resolve) {\n _this._resolveAngleSelectorPromise = resolve;\n });\n }\n UVideoPlayer.prototype.waitForAngleSelector = function () {\n return this._angleSelectorPromise;\n };\n UVideoPlayer.prototype.addAngleSelector = function (endPoints) {\n var _a;\n this.angleSelector = new UVideoPlayerAngleSelector(endPoints, this);\n (_a = this._resolveAngleSelectorPromise) === null || _a === void 0 ? void 0 : _a.call(this);\n };\n UVideoPlayer.prototype.getPlayerName = function (streamFormat) {\n var playerName = undefined;\n switch (streamFormat) {\n case 'dash':\n case 'dash-cmaf':\n case 'dash-cmaf-vr':\n case 'hls-fp':\n case 'hls-cmaf':\n playerName = 'shaka';\n break;\n case 'mp4':\n playerName = 'html5';\n break;\n }\n return playerName;\n };\n UVideoPlayer.prototype.createPlayback = function (playerName, eventCallbacks) {\n return __awaiter(this, void 0, void 0, function () {\n var playerShaka, playerHtml5, playerSafari;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(playerName === 'shaka')) return [3 /*break*/, 2];\n return [4 /*yield*/, import('./videoplayer-4e61c231.esm.js')];\n case 1:\n playerShaka = (_a.sent()).default;\n return [2 /*return*/, playerShaka.create(this.videoElement, eventCallbacks)];\n case 2:\n if (!(playerName === 'html5')) return [3 /*break*/, 4];\n return [4 /*yield*/, import('./videoplayer-be661c79.esm.js')];\n case 3:\n playerHtml5 = (_a.sent()).default;\n return [2 /*return*/, playerHtml5.create(this.videoElement, eventCallbacks)];\n case 4: return [4 /*yield*/, import('./videoplayer-ed6c7914.esm.js')];\n case 5:\n playerSafari = (_a.sent()).default;\n return [2 /*return*/, playerSafari.create(this.videoElement, eventCallbacks)];\n }\n });\n });\n };\n UVideoPlayer.prototype.getVideoPlaybackItem = function (_a) {\n var playbackAuthorization = _a.playbackAuthorization, authorizationToken = _a.authorizationToken, playables = _a.playables, startTime = _a.startTime, isTimeshift = _a.isTimeshift, playbackType = _a.playbackType, options = __rest(_a, [\"playbackAuthorization\", \"authorizationToken\", \"playables\", \"startTime\", \"isTimeshift\", \"playbackType\"]);\n if (!playables ||\n authorizationToken === undefined ||\n !playbackAuthorization) {\n return null;\n }\n var isRealtime = (playbackType === 'live' && !isTimeshift) || playbackType === 'linear';\n var availablePlayables = supportedPlayables(playables, this.supportedStreamFormats);\n if (!availablePlayables.length) {\n return null;\n }\n var selectedPlayable = availablePlayables === null || availablePlayables === void 0 ? void 0 : availablePlayables[0];\n var firstAvailableVRPlayable = availablePlayables.find(function (playable) {\n return playable.type.endsWith('-vr');\n });\n if (options.preferVR && firstAvailableVRPlayable) {\n selectedPlayable = firstAvailableVRPlayable;\n }\n var selectedManifestCandidate = chooseByWeight(selectedPlayable.manifestCandidates);\n if (!selectedManifestCandidate) {\n return null;\n }\n var manifestUrl = getManifestUrl(isTimeshift, selectedManifestCandidate);\n var licenseUrls = mapLicenseUrls(selectedManifestCandidate.licenseUrls);\n if (!licenseUrls) {\n return null;\n }\n if (!isRealtime && playbackAuthorization === 'playtoken') {\n manifestUrl.searchParams.append('play_token', authorizationToken);\n }\n return __assign({ cdnId: selectedManifestCandidate.id, manifestUri: manifestUrl.href, licenseUrls: licenseUrls, authorizationToken: authorizationToken, playbackAuthorization: playbackAuthorization, streamFormat: selectedPlayable.type, startTime: startTime, isRealtime: !!isRealtime, playbackType: playbackType }, options);\n };\n UVideoPlayer.prototype.getVideoElement = function () {\n return this.videoElement;\n };\n UVideoPlayer.prototype.getPlayLogger = function () {\n return this.playLogger;\n };\n UVideoPlayer.prototype._load = function (playerOptions, eventCallbacks, _lastPromise) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function () {\n var treasureDataArgs, superFlowArgs, playbackItem, playerName, _f, _g, playbackType, isTimeshift, playbackType, isTimeshift, live, startEpoch, isRealtime;\n var _this = this;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n if (!_lastPromise) return [3 /*break*/, 2];\n return [4 /*yield*/, awaitPromiseIgnoreRejection(_lastPromise)];\n case 1:\n _h.sent();\n _h.label = 2;\n case 2:\n (_a = eventCallbacks.onLoadStart) === null || _a === void 0 ? void 0 : _a.call(eventCallbacks);\n treasureDataArgs = playerOptions.treasureDataArgs, superFlowArgs = playerOptions.superFlowArgs;\n playbackItem = this.getVideoPlaybackItem(playerOptions);\n if (!playbackItem) {\n throw createPlaybackError({\n code: 'NOT_SUPPORTED',\n severity: 2,\n });\n }\n if (!this.videoPlayer) return [3 /*break*/, 4];\n // unload previous source\n return [4 /*yield*/, this.videoPlayer.unload()];\n case 3:\n // unload previous source\n _h.sent();\n _h.label = 4;\n case 4:\n playerName = this.getPlayerName(playbackItem.streamFormat);\n this.playerConfig = { playerName: playerName, manifestType: playbackItem.streamFormat };\n _f = this;\n return [4 /*yield*/, this.createPlayback(playerName, {\n onError: function (e) {\n eventCallbacks.onError(e);\n _this.onError();\n },\n onBuffering: function (isBuffering) {\n eventCallbacks.onBuffering(isBuffering);\n _this.onBuffering(isBuffering);\n },\n onLoaded: function (drmType, webFrontAbrManager, getCdnHost) {\n eventCallbacks.onLoaded(__assign(__assign({}, playbackItem), { playerName: playerName || 'shaka', drmType: drmType, webFrontAbrManager: webFrontAbrManager, getCdnHost: getCdnHost }));\n if (_this.playLogger) {\n _this.playLogger.setParams({\n cdn_server_name: getCdnHost ? getCdnHost() : '',\n });\n }\n },\n onUnloaded: function () {\n eventCallbacks.onUnloaded();\n },\n })];\n case 5:\n _f.videoPlayer = _h.sent();\n if (!(!this.tdClient && treasureDataArgs)) return [3 /*break*/, 7];\n _g = this;\n return [4 /*yield*/, getTdClient(treasureDataArgs)];\n case 6:\n _g.tdClient = _h.sent();\n _h.label = 7;\n case 7:\n if (this.tdClient && !this.playLogger && (treasureDataArgs === null || treasureDataArgs === void 0 ? void 0 : treasureDataArgs.playLogParams)) {\n this.playLogger = createPlayLogger(this.tdClient, treasureDataArgs.playLogParams);\n this.playLogger.setParams({\n player: (_c = (_b = treasureDataArgs.playLogParams.playerName) !== null && _b !== void 0 ? _b : this.playerConfig.playerName) !== null && _c !== void 0 ? _c : null,\n movie_profile_type: this.playerConfig.manifestType,\n cdn_id: playbackItem.cdnId,\n });\n }\n if (this.playLogger &&\n (treasureDataArgs === null || treasureDataArgs === void 0 ? void 0 : treasureDataArgs.playLogParams) &&\n (playerOptions === null || playerOptions === void 0 ? void 0 : playerOptions.live)) {\n playbackType = playerOptions.playbackType, isTimeshift = playerOptions.isTimeshift;\n this.playLogger.setParams({\n cdn_id: playbackItem.cdnId,\n playlist_type_code: playbackType === 'live'\n ? isTimeshift\n ? 'LIVE-TIMESHIFT'\n : 'LIVE-REALTIME'\n : 'CATCHUP',\n });\n }\n if (!this.superFlowClient && superFlowArgs) {\n this.superFlowClient = new SuperFlowClient({\n host: superFlowArgs.config.host,\n debug: superFlowArgs.config.debug,\n });\n this.superFlowClient.setEventKey({\n deviceId: superFlowArgs.commonInfo.deviceId,\n userMultiAccountId: superFlowArgs.commonInfo.userMultiAccountId,\n servicePlatform: superFlowArgs.commonInfo.servicePlatform,\n client: superFlowArgs.commonInfo.client,\n });\n this.superFlowClient.start();\n }\n if (this.superFlowClient &&\n (superFlowArgs === null || superFlowArgs === void 0 ? void 0 : superFlowArgs.liveResumeArgs) &&\n playerOptions.live) {\n if (!this.liveResumeLogger) {\n this.liveResumeLogger = new LiveResumeLogger({\n superFlowClient: this.superFlowClient,\n dataset: superFlowArgs.liveResumeArgs.dataset,\n table: superFlowArgs.liveResumeArgs.table,\n debug: superFlowArgs.config.debug,\n });\n }\n this.liveResumeLogger.setData(superFlowArgs.liveResumeArgs.data);\n playbackType = playerOptions.playbackType, isTimeshift = playerOptions.isTimeshift, live = playerOptions.live;\n startEpoch = playbackType === 'live-catchup'\n ? (_d = live.catchupEditedStartEpoch) !== null && _d !== void 0 ? _d : live.deliveryStartEpoch\n : live.deliveryStartEpoch;\n isRealtime = playbackType === 'live' && !isTimeshift;\n this.liveResumeLogger.setParams({\n startEpoch: startEpoch || 0,\n isRealtime: isRealtime,\n });\n // only logged in user can save resume point\n if (superFlowArgs.commonInfo.userMultiAccountId) {\n this.liveResumeLogger.enable();\n }\n }\n return [4 /*yield*/, ((_e = this.videoPlayer) === null || _e === void 0 ? void 0 : _e.load(playbackItem, this.getRequestHeaders).then(function () {\n if (_this.videoPlayer) {\n _this.isPlayRangeEnabled = _this.videoPlayer.isPlayRangeEnabled;\n }\n if (_this.videoPlayer && _this.playLogger) {\n var drmType = _this.videoPlayer.getDrmType();\n _this.playLogger.setParams({\n drm_type: drmType,\n });\n }\n }).catch(function (e) {\n eventCallbacks.onError(e);\n }))];\n case 8:\n _h.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n UVideoPlayer.prototype._unload = function (htmlUnloading, _lastPromise) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!_lastPromise) return [3 /*break*/, 2];\n return [4 /*yield*/, awaitPromiseIgnoreRejection(_lastPromise)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n if (this.liveResumeLogger) {\n this.liveResumeLogger.stop(this.getCurrentTimeFromStart(), htmlUnloading);\n }\n _a.label = 3;\n case 3:\n _a.trys.push([3, , 6, 7]);\n if (!(this.videoPlayer && !htmlUnloading)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.videoPlayer.unload()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [3 /*break*/, 7];\n case 6:\n if (this.playLogger) {\n this.playLogger.stop(true);\n }\n this.videoPlayer = null;\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n // this function puts load() into a promise queue, make sure it executes after the previous unload is finished\n UVideoPlayer.prototype.load = function (playerOptions, eventCallbacks) {\n return __awaiter(this, void 0, void 0, function () {\n var _lastPromise, _loadPromise;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (playerOptions) {\n this.setOptions(playerOptions, eventCallbacks);\n }\n if (!(this.playerOptions && this.eventCallbacks)) return [3 /*break*/, 2];\n _lastPromise = this._promiseQueue.length > 0\n ? this._promiseQueue[this._promiseQueue.length - 1]\n : undefined;\n _loadPromise = this._load(this.playerOptions, this.eventCallbacks, _lastPromise);\n this._promiseQueue.push(_loadPromise);\n return [4 /*yield*/, _loadPromise];\n case 1:\n _a.sent();\n this._promiseQueue.shift();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n // this function puts unload() into a promise queue, make sure it executes after the previous load is finished\n UVideoPlayer.prototype.unload = function (htmlUnloading) {\n return __awaiter(this, void 0, void 0, function () {\n var _lastPromise, _unloadPromise;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _lastPromise = this._promiseQueue.length > 0\n ? this._promiseQueue[this._promiseQueue.length - 1]\n : undefined;\n _unloadPromise = this._unload(htmlUnloading, _lastPromise);\n this._promiseQueue.push(_unloadPromise);\n return [4 /*yield*/, _unloadPromise];\n case 1:\n _a.sent();\n this._promiseQueue.shift();\n return [2 /*return*/];\n }\n });\n });\n };\n UVideoPlayer.prototype.setOptions = function (playerOptions, eventCallbacks) {\n this.playerOptions = __assign(__assign({}, this.playerOptions), playerOptions);\n if (eventCallbacks) {\n this.eventCallbacks = __assign(__assign({}, this.eventCallbacks), eventCallbacks);\n }\n playerEventEmitter.emit('optionschange', this.playerOptions);\n };\n UVideoPlayer.prototype.onOptionsChange = function (listener) {\n playerEventEmitter.on('optionschange', listener);\n };\n UVideoPlayer.prototype.offOptionsChange = function (listener) {\n playerEventEmitter.off('optionschange', listener);\n };\n UVideoPlayer.prototype.onPlay = function () {\n if (this.playLogger) {\n this.playLogger.playing({ playTime: this.videoElement.duration });\n }\n if (this.liveResumeLogger) {\n this.liveResumeLogger.playing();\n }\n };\n UVideoPlayer.prototype.onPause = function () {\n if (this.playLogger) {\n this.playLogger.paused();\n }\n };\n UVideoPlayer.prototype.onEnded = function () {\n if (this.playLogger) {\n this.playLogger.stop();\n }\n if (this.liveResumeLogger) {\n this.liveResumeLogger.stop(this.getCurrentTimeFromStart());\n }\n };\n UVideoPlayer.prototype.onBuffering = function (isBuffering) {\n if (this.playLogger) {\n this.playLogger.buffering({ isBuffering: isBuffering });\n }\n };\n UVideoPlayer.prototype.onError = function () {\n if (this.playLogger) {\n this.playLogger.stop();\n }\n if (this.liveResumeLogger) {\n this.liveResumeLogger.stop(this.getCurrentTimeFromStart());\n }\n };\n UVideoPlayer.prototype.getPlayerConfig = function () {\n return this.playerConfig;\n };\n UVideoPlayer.prototype.getFrameRate = function () {\n var _a, _b;\n return (_b = (_a = this.videoPlayer) === null || _a === void 0 ? void 0 : _a.getFrameRate) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n UVideoPlayer.prototype.getDrmType = function () {\n var _a;\n return (_a = this.videoPlayer) === null || _a === void 0 ? void 0 : _a.getDrmType();\n };\n UVideoPlayer.prototype.getSeekRange = function () {\n var _a, _b;\n return (_b = (_a = this.videoPlayer) === null || _a === void 0 ? void 0 : _a.getSeekRange) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n UVideoPlayer.prototype.getIsRealTime = function () {\n if (!this.playerOptions)\n return;\n var _a = this.playerOptions, playbackType = _a.playbackType, isTimeshift = _a.isTimeshift;\n return ((playbackType === 'live' && !isTimeshift) || playbackType === 'linear');\n };\n UVideoPlayer.prototype.getCurrentTimeFromStart = function () {\n var _a, _b;\n return Math.max(0, this.videoElement.currentTime - ((_b = (_a = this.getSeekRange()) === null || _a === void 0 ? void 0 : _a.start) !== null && _b !== void 0 ? _b : 0));\n };\n UVideoPlayer.prototype.getRemainingTime = function () {\n var seekRange = this.getSeekRange();\n var duration = seekRange && seekRange.end - seekRange.start > 0\n ? seekRange.end - seekRange.start\n : undefined;\n return typeof duration === 'number'\n ? Math.max(0, duration - this.getCurrentTimeFromStart())\n : undefined;\n };\n UVideoPlayer.prototype.getIsLiveEdge = function () {\n var _a;\n var remainingTime = this.getRemainingTime();\n return (typeof remainingTime === 'number' &&\n ((_a = this.playerOptions) === null || _a === void 0 ? void 0 : _a.isTimeshift) &&\n remainingTime < LIVE_EDGE_WINDOW);\n };\n UVideoPlayer.prototype.getPlaybackRateProps = function () {\n var _a, _b;\n var live = (_a = this.playerOptions) === null || _a === void 0 ? void 0 : _a.live;\n return {\n changeable: !this.getIsRealTime() && !(live === null || live === void 0 ? void 0 : live.isOnAir),\n keepTemporarily: ((_b = this.playerOptions) === null || _b === void 0 ? void 0 : _b.keepPlaybackRateTemporarily) ||\n (!!live && !live.isOnAir), // keep playback rate temporarily when playing not-on-air live(time-shifted playing after on-air or catchup)\n };\n };\n UVideoPlayer.prototype.attachSession = function (session) {\n this.playbackSession = session;\n session.attach(this.videoElement);\n };\n UVideoPlayer.prototype.detachSession = function (htmlUnloading) {\n if (this.playbackSession) {\n this.playbackSession.detach(this.videoElement, htmlUnloading);\n this.playbackSession = null;\n }\n };\n UVideoPlayer.chooseByWeight = chooseByWeight;\n return UVideoPlayer;\n}());\n\nvar isStreamFormat = isStreamFormat$1;\nvar isDrmType = isDrmType$1;\nvar isPlaybackError = isPlaybackError$1;\n\nexport { UVideoPlayerSceneSearcher as U, __awaiter as _, __generator as a, __assign as b, attachPlayTokenToUrl as c, base64ToUint8Array as d, __extends as e, createPlaybackError as f, isDrmType as g, isPlaybackError as h, isStreamFormat as i, UVideoPlayer as j, uint8ArrayToBase64 as u };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW9wbGF5ZXItYjEzYjE3YjYuZXNtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdHNsaWJAMi42LjMvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5tanMiLCIuLi9zcmMvdXRpbHMudHMiLCIuLi9zcmMvdHlwZXMudHMiLCIuLi9zcmMvc2NlbmVTZWFyY2gudHMiLCIuLi9zcmMvc3RvcmFnZS50cyIsIi4uL3NyYy9jb250cm9sLnRzIiwiLi4vc3JjL2FuZ2xlLnRzIiwiLi4vc3JjL0xvZy91dGlscy50cyIsIi4uL3NyYy9Mb2cvTW92aWVQbGF5TG9nZ2VyLnRzIiwiLi4vc3JjL0xvZy9MaXZlTGluZWFyUGxheUxvZ2dlci50cyIsIi4uL3NyYy9Mb2cvUGxheUxvZ2dlckZhY3RvcnkudHMiLCIuLi9zcmMvTG9nL0xpdmVSZXN1bWVMb2dnZXIudHMiLCIuLi9zcmMvVVZpZGVvUGxheWVyLnRzIiwiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xuXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcbiAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xuICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gIH1cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgIHRbcF0gPSBzW3BdO1xuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgIH1cbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xuICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cbiAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcbiAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XG4gIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xuICB2YXIgXywgZG9uZSA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGNvbnRleHQgPSB7fTtcbiAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xuICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XG4gICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xuICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XG4gICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XG4gICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcbiAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xuICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcbiAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcbiAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XG4gICAgICB9XG4gIH1cbiAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xuICBkb25lID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XG4gIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xuICB9XG4gIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcbiAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICB9XG59XG5cbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICBvW2syXSA9IG1ba107XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XG4gIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcbiAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xuICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgcmV0dXJuIGFyO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcbiAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgIHJba10gPSBhW2pdO1xuICByZXR1cm4gcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XG4gIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiwgYXdhaXRSZXR1cm4pLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XG4gIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XG4gIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpZiAoZ1tuXSkgeyBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyBpZiAoZikgaVtuXSA9IGYoaVtuXSk7IH0gfVxuICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XG4gIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxuICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XG4gIHZhciBpLCBwO1xuICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xuICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxuICByZXR1cm4gY29va2VkO1xufTtcblxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgb1tcImRlZmF1bHRcIl0gPSB2O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcbiAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XG4gIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xuICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XG4gIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XG4gIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcbiAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xuICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xuICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcbiAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XG4gIHJldHVybiB0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyID09PSBzdGF0ZSA6IHN0YXRlLmhhcyhyZWNlaXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZShlbnYsIHZhbHVlLCBhc3luYykge1xuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xuICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcbiAgICBpZiAoYXN5bmMpIHtcbiAgICAgIGlmICghU3ltYm9sLmFzeW5jRGlzcG9zZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0Rpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xuICAgIH1cbiAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xuICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5kaXNwb3NlXTtcbiAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XG4gICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XG4gICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcbiAgfVxuICBlbHNlIGlmIChhc3luYykge1xuICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX2Rpc3Bvc2VSZXNvdXJjZXMoZW52KSB7XG4gIGZ1bmN0aW9uIGZhaWwoZSkge1xuICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcbiAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgd2hpbGUgKGVudi5zdGFjay5sZW5ndGgpIHtcbiAgICAgIHZhciByZWMgPSBlbnYuc3RhY2sucG9wKCk7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjLmRpc3Bvc2UgJiYgcmVjLmRpc3Bvc2UuY2FsbChyZWMudmFsdWUpO1xuICAgICAgICBpZiAocmVjLmFzeW5jKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkudGhlbihuZXh0LCBmdW5jdGlvbihlKSB7IGZhaWwoZSk7IHJldHVybiBuZXh0KCk7IH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICBmYWlsKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBfX2V4dGVuZHMsXG4gIF9fYXNzaWduLFxuICBfX3Jlc3QsXG4gIF9fZGVjb3JhdGUsXG4gIF9fcGFyYW0sXG4gIF9fbWV0YWRhdGEsXG4gIF9fYXdhaXRlcixcbiAgX19nZW5lcmF0b3IsXG4gIF9fY3JlYXRlQmluZGluZyxcbiAgX19leHBvcnRTdGFyLFxuICBfX3ZhbHVlcyxcbiAgX19yZWFkLFxuICBfX3NwcmVhZCxcbiAgX19zcHJlYWRBcnJheXMsXG4gIF9fc3ByZWFkQXJyYXksXG4gIF9fYXdhaXQsXG4gIF9fYXN5bmNHZW5lcmF0b3IsXG4gIF9fYXN5bmNEZWxlZ2F0b3IsXG4gIF9fYXN5bmNWYWx1ZXMsXG4gIF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxuICBfX2ltcG9ydFN0YXIsXG4gIF9faW1wb3J0RGVmYXVsdCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEdldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcbiAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxuICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZSxcbiAgX19kaXNwb3NlUmVzb3VyY2VzLFxufTtcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sIm5hbWVzIjpbImlzUGxheWJhY2tFcnJvciIsImlzU3RyZWFtRm9ybWF0IiwiaXNEcm1UeXBlIiwiVHlwZXMuaXNTdHJlYW1Gb3JtYXQiLCJUeXBlcy5pc0RybVR5cGUiLCJUeXBlcy5pc1BsYXliYWNrRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbkMsRUFBRSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUs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RSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDcEcsTUFBTSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDcEgsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDNUUsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDTyxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0FBQzNDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuSCxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNKLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDcEUsRUFBRSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUU7QUFDcEIsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDcEUsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNwRCxVQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZLLFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxVQUFVLFFBQVEsRUFBRSxDQUFD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\n"],"names":[],"sourceRoot":"","ignoreList":[0]}