@kkcompany/player 2.25.0-canary.16 → 2.25.0-canary.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/core.mjs +658 -5
- package/dist/index.js +1362 -576
- package/dist/index.mjs +703 -15
- package/dist/modules.mjs +2 -2
- package/dist/react.mjs +705 -17
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -812,7 +812,7 @@ function convertToSeconds(timeString) {
|
|
|
812
812
|
function getVersion() {
|
|
813
813
|
try {
|
|
814
814
|
// eslint-disable-next-line no-undef
|
|
815
|
-
return "2.25.0-canary.
|
|
815
|
+
return "2.25.0-canary.18";
|
|
816
816
|
} catch (e) {
|
|
817
817
|
return undefined;
|
|
818
818
|
}
|
|
@@ -925,8 +925,12 @@ const getAudioTracks = (_, {
|
|
|
925
925
|
}, {});
|
|
926
926
|
const tracks = Object.values(all);
|
|
927
927
|
|
|
928
|
-
if (tracks.length
|
|
929
|
-
|
|
928
|
+
if (tracks.length <= 1) {
|
|
929
|
+
return [{
|
|
930
|
+
type: 'audio',
|
|
931
|
+
...tracks[0],
|
|
932
|
+
selected: true
|
|
933
|
+
}];
|
|
930
934
|
}
|
|
931
935
|
|
|
932
936
|
return tracks;
|
|
@@ -4873,7 +4877,7 @@ const DefaultContainer = ({
|
|
|
4873
4877
|
containerRef,
|
|
4874
4878
|
children
|
|
4875
4879
|
}) => jsx$1("div", {
|
|
4876
|
-
css: [containerStyle$3, open && openStyle$1, process.env.NODE_ENV === "production" ? "" : ";label:DefaultContainer;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk92ZXJsYXlQYW5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0QkkiLCJmaWxlIjoiT3ZlcmxheVBhbmVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlT25jbGlja091dHNpZGUgZnJvbSAncmVhY3QtY29vbC1vbmNsaWNrb3V0c2lkZSdcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnLi9idXR0b25zJ1xuaW1wb3J0IHtGdW5jdGlvbkJhckV4dGVuc2lvbiwgVGl0bGVCYXJFeHRlbnNpb259IGZyb20gJy4vdWlFeHRlbnNpb25zJ1xuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogJzInLFxuICB0b3A6ICcwJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTE1MHZoKScsXG4gIG9wYWNpdHk6ICcwJyxcbiAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMC41cyBlYXNlLCB0cmFuc2Zvcm0gMHMgMC41cyBsaW5lYXInLFxufVxuXG5jb25zdCBvcGVuU3R5bGUgPSB7XG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICBvcGFjaXR5OiAnMScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuNXMgZWFzZScsXG59XG5cbmNvbnN0IERlZmF1bHRDb250YWluZXIgPSAoe29wZW4sIGNvbnRhaW5lclJlZiwgY2hpbGRyZW59KSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e1tjb250YWluZXJTdHlsZSwgb3BlbiAmJiBvcGVuU3R5bGVdfVxuICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbilcblxuY29uc3QgZGVza3RvcENvbnRhaW5lclN0eWxlID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgekluZGV4OiAnMScsXG4gIGJvdHRvbTogJ2NhbGMoNWVtICsgdmFyKC0tYm90dG9tLXNwYWNpbmcsIDByZW0pKScsXG4gIHJpZ2h0OiAnMXJlbScsXG4gIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgb3BhY2l0eTogJzAnLFxuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDB2aCknLFxuICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwcyBsaW5lYXIgMC4ycycsXG59XG5cbmNvbnN0IERlc2t0b3BPcGVuU3R5bGUgPSB7XG4gIG9wYWNpdHk6ICcxJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuMnMgZWFzZSwgdHJhbnNmb3JtIDBzJyxcbn1cblxuY29uc3QgRGVza3RvcENvbnRhaW5lciA9ICh7b3BlbiwgY29udGFpbmVyUmVmLCBjaGlsZHJlbiwgb25DbG9zZSwgLi4ucmVzdH0pID0+IChcbiAgPGRpdlxuICAgIGNzcz17W2Rlc2t0b3BDb250YWluZXJTdHlsZSwgb3BlbiAmJiBEZXNrdG9wT3BlblN0eWxlXX1cbiAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICB7Li4ucmVzdH1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9kaXY+
|
|
4880
|
+
css: [containerStyle$3, open && openStyle$1, process.env.NODE_ENV === "production" ? "" : ";label:DefaultContainer;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk92ZXJsYXlQYW5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0QkkiLCJmaWxlIjoiT3ZlcmxheVBhbmVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlT25jbGlja091dHNpZGUgZnJvbSAncmVhY3QtY29vbC1vbmNsaWNrb3V0c2lkZSdcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnLi9idXR0b25zJ1xuaW1wb3J0IHtGdW5jdGlvbkJhckV4dGVuc2lvbiwgVGl0bGVCYXJFeHRlbnNpb259IGZyb20gJy4vdWlFeHRlbnNpb25zJ1xuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogJzInLFxuICB0b3A6ICcwJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTE1MHZoKScsXG4gIG9wYWNpdHk6ICcwJyxcbiAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMC41cyBlYXNlLCB0cmFuc2Zvcm0gMHMgMC41cyBsaW5lYXInLFxufVxuXG5jb25zdCBvcGVuU3R5bGUgPSB7XG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICBvcGFjaXR5OiAnMScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuNXMgZWFzZScsXG59XG5cbmNvbnN0IERlZmF1bHRDb250YWluZXIgPSAoe29wZW4sIGNvbnRhaW5lclJlZiwgY2hpbGRyZW59KSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e1tjb250YWluZXJTdHlsZSwgb3BlbiAmJiBvcGVuU3R5bGVdfVxuICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbilcblxuY29uc3QgZGVza3RvcENvbnRhaW5lclN0eWxlID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgekluZGV4OiAnMScsXG4gIGJvdHRvbTogJ2NhbGMoNWVtICsgdmFyKC0tYm90dG9tLXNwYWNpbmcsIDByZW0pKScsXG4gIHJpZ2h0OiAnMXJlbScsXG4gIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgb3BhY2l0eTogJzAnLFxuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDB2aCknLFxuICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwcyBsaW5lYXIgMC4ycycsXG59XG5cbmNvbnN0IERlc2t0b3BPcGVuU3R5bGUgPSB7XG4gIG9wYWNpdHk6ICcxJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuMnMgZWFzZSwgdHJhbnNmb3JtIDBzJyxcbn1cblxuY29uc3QgRGVza3RvcENvbnRhaW5lciA9ICh7b3BlbiwgY29udGFpbmVyUmVmLCBjaGlsZHJlbiwgb25DbG9zZSwgLi4ucmVzdH0pID0+IChcbiAgPGRpdlxuICAgIGNzcz17W2Rlc2t0b3BDb250YWluZXJTdHlsZSwgb3BlbiAmJiBEZXNrdG9wT3BlblN0eWxlXX1cbiAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICB7Li4ucmVzdH1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9kaXY+XG4pXG5cbmNvbnN0IE92ZXJsYXlQYW5lbCA9ICh7XG4gIGJ1dHRvbkljb24sXG4gIHRpdGxlLFxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBjaGlsZHJlbixcbiAgc2xvdHMgPSB7XG4gICAgcm9vdDogdWlUeXBlID09PSAnZGVza3RvcCcgPyBEZXNrdG9wQ29udGFpbmVyIDogRGVmYXVsdENvbnRhaW5lcixcbiAgfSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIHJvb3Q6IHNsb3RzLnJvb3QsXG4gIH1cbiAgY29uc3QgQnV0dG9uV3JhcCA9XG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgPyBGdW5jdGlvbkJhckV4dGVuc2lvbiA6IFRpdGxlQmFyRXh0ZW5zaW9uXG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBvbk9wZW4gPSBldmVudCA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiBzZXRPcGVuKHRydWUpLCAxKVxuICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnZm9jdXMtbWVudScsIHtkZXRhaWw6IHtzdGF0dXM6ICdvcGVuJ30sIGJ1YmJsZXM6IHRydWV9KVxuICAgIClcbiAgfVxuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCBvbkNsb3NlID0gKCkgPT4ge1xuICAgIHNldE9wZW4oZmFsc2UpXG4gICAgY29udGFpbmVyUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnZm9jdXMtbWVudScsIHtkZXRhaWw6IHtzdGF0dXM6ICdjbG9zZWQnfSwgYnViYmxlczogdHJ1ZX0pXG4gICAgKVxuICB9XG4gIGNvbnN0IHJlZiA9IHVzZU9uY2xpY2tPdXRzaWRlKFxuICAgICgpID0+IHtcbiAgICAgIGlmIChvcGVuICYmIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnKSB7XG4gICAgICAgIG9uQ2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAge2V2ZW50VHlwZXM6IFsnY2xpY2snXX1cbiAgKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlZihjb250YWluZXJSZWYuY3VycmVudClcbiAgICByZXR1cm4gb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdjbG9zZS1tZW51Jywgb25DbG9zZSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJ1dHRvbldyYXAgcG9zaXRpb249XCJyaWdodFwiPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgIHN0YXJ0SWNvbj17YnV0dG9uSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvcGVuID8gdW5kZWZpbmVkIDogb25PcGVufVxuICAgICAgICAvPlxuICAgICAgPC9CdXR0b25XcmFwPlxuICAgICAgPGNvbXBvbmVudHMucm9vdCBjb250YWluZXJSZWY9e2NvbnRhaW5lclJlZn0gb3Blbj17b3Blbn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2NvbXBvbmVudHMucm9vdD5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdmVybGF5UGFuZWxcbiJdfQ== */"],
|
|
4877
4881
|
ref: containerRef,
|
|
4878
4882
|
onClick: event => event.stopPropagation(),
|
|
4879
4883
|
children: children
|
|
@@ -4903,7 +4907,7 @@ const DesktopContainer = ({
|
|
|
4903
4907
|
onClose,
|
|
4904
4908
|
...rest
|
|
4905
4909
|
}) => jsx$1("div", {
|
|
4906
|
-
css: [desktopContainerStyle$1, open && DesktopOpenStyle, process.env.NODE_ENV === "production" ? "" : ";label:DesktopContainer;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk92ZXJsYXlQYW5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3REkiLCJmaWxlIjoiT3ZlcmxheVBhbmVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlT25jbGlja091dHNpZGUgZnJvbSAncmVhY3QtY29vbC1vbmNsaWNrb3V0c2lkZSdcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnLi9idXR0b25zJ1xuaW1wb3J0IHtGdW5jdGlvbkJhckV4dGVuc2lvbiwgVGl0bGVCYXJFeHRlbnNpb259IGZyb20gJy4vdWlFeHRlbnNpb25zJ1xuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogJzInLFxuICB0b3A6ICcwJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTE1MHZoKScsXG4gIG9wYWNpdHk6ICcwJyxcbiAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMC41cyBlYXNlLCB0cmFuc2Zvcm0gMHMgMC41cyBsaW5lYXInLFxufVxuXG5jb25zdCBvcGVuU3R5bGUgPSB7XG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICBvcGFjaXR5OiAnMScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuNXMgZWFzZScsXG59XG5cbmNvbnN0IERlZmF1bHRDb250YWluZXIgPSAoe29wZW4sIGNvbnRhaW5lclJlZiwgY2hpbGRyZW59KSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e1tjb250YWluZXJTdHlsZSwgb3BlbiAmJiBvcGVuU3R5bGVdfVxuICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbilcblxuY29uc3QgZGVza3RvcENvbnRhaW5lclN0eWxlID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgekluZGV4OiAnMScsXG4gIGJvdHRvbTogJ2NhbGMoNWVtICsgdmFyKC0tYm90dG9tLXNwYWNpbmcsIDByZW0pKScsXG4gIHJpZ2h0OiAnMXJlbScsXG4gIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgb3BhY2l0eTogJzAnLFxuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDB2aCknLFxuICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwcyBsaW5lYXIgMC4ycycsXG59XG5cbmNvbnN0IERlc2t0b3BPcGVuU3R5bGUgPSB7XG4gIG9wYWNpdHk6ICcxJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuMnMgZWFzZSwgdHJhbnNmb3JtIDBzJyxcbn1cblxuY29uc3QgRGVza3RvcENvbnRhaW5lciA9ICh7b3BlbiwgY29udGFpbmVyUmVmLCBjaGlsZHJlbiwgb25DbG9zZSwgLi4ucmVzdH0pID0+IChcbiAgPGRpdlxuICAgIGNzcz17W2Rlc2t0b3BDb250YWluZXJTdHlsZSwgb3BlbiAmJiBEZXNrdG9wT3BlblN0eWxlXX1cbiAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICB7Li4ucmVzdH1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9kaXY+
|
|
4910
|
+
css: [desktopContainerStyle$1, open && DesktopOpenStyle, process.env.NODE_ENV === "production" ? "" : ";label:DesktopContainer;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk92ZXJsYXlQYW5lbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3REkiLCJmaWxlIjoiT3ZlcmxheVBhbmVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlT25jbGlja091dHNpZGUgZnJvbSAncmVhY3QtY29vbC1vbmNsaWNrb3V0c2lkZSdcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtpc0Rlc2t0b3B9IGZyb20gJ3V0aWwvZW52aXJvbm1lbnQnXG5pbXBvcnQge0J1dHRvbn0gZnJvbSAnLi9idXR0b25zJ1xuaW1wb3J0IHtGdW5jdGlvbkJhckV4dGVuc2lvbiwgVGl0bGVCYXJFeHRlbnNpb259IGZyb20gJy4vdWlFeHRlbnNpb25zJ1xuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogJzInLFxuICB0b3A6ICcwJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTE1MHZoKScsXG4gIG9wYWNpdHk6ICcwJyxcbiAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMC41cyBlYXNlLCB0cmFuc2Zvcm0gMHMgMC41cyBsaW5lYXInLFxufVxuXG5jb25zdCBvcGVuU3R5bGUgPSB7XG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknLFxuICBvcGFjaXR5OiAnMScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuNXMgZWFzZScsXG59XG5cbmNvbnN0IERlZmF1bHRDb250YWluZXIgPSAoe29wZW4sIGNvbnRhaW5lclJlZiwgY2hpbGRyZW59KSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e1tjb250YWluZXJTdHlsZSwgb3BlbiAmJiBvcGVuU3R5bGVdfVxuICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L2Rpdj5cbilcblxuY29uc3QgZGVza3RvcENvbnRhaW5lclN0eWxlID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgekluZGV4OiAnMScsXG4gIGJvdHRvbTogJ2NhbGMoNWVtICsgdmFyKC0tYm90dG9tLXNwYWNpbmcsIDByZW0pKScsXG4gIHJpZ2h0OiAnMXJlbScsXG4gIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gIG91dGxpbmU6ICdub25lJyxcbiAgb3BhY2l0eTogJzAnLFxuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDB2aCknLFxuICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwcyBsaW5lYXIgMC4ycycsXG59XG5cbmNvbnN0IERlc2t0b3BPcGVuU3R5bGUgPSB7XG4gIG9wYWNpdHk6ICcxJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuMnMgZWFzZSwgdHJhbnNmb3JtIDBzJyxcbn1cblxuY29uc3QgRGVza3RvcENvbnRhaW5lciA9ICh7b3BlbiwgY29udGFpbmVyUmVmLCBjaGlsZHJlbiwgb25DbG9zZSwgLi4ucmVzdH0pID0+IChcbiAgPGRpdlxuICAgIGNzcz17W2Rlc2t0b3BDb250YWluZXJTdHlsZSwgb3BlbiAmJiBEZXNrdG9wT3BlblN0eWxlXX1cbiAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICB7Li4ucmVzdH1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9kaXY+XG4pXG5cbmNvbnN0IE92ZXJsYXlQYW5lbCA9ICh7XG4gIGJ1dHRvbkljb24sXG4gIHRpdGxlLFxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBjaGlsZHJlbixcbiAgc2xvdHMgPSB7XG4gICAgcm9vdDogdWlUeXBlID09PSAnZGVza3RvcCcgPyBEZXNrdG9wQ29udGFpbmVyIDogRGVmYXVsdENvbnRhaW5lcixcbiAgfSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIHJvb3Q6IHNsb3RzLnJvb3QsXG4gIH1cbiAgY29uc3QgQnV0dG9uV3JhcCA9XG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgPyBGdW5jdGlvbkJhckV4dGVuc2lvbiA6IFRpdGxlQmFyRXh0ZW5zaW9uXG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBvbk9wZW4gPSBldmVudCA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiBzZXRPcGVuKHRydWUpLCAxKVxuICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnZm9jdXMtbWVudScsIHtkZXRhaWw6IHtzdGF0dXM6ICdvcGVuJ30sIGJ1YmJsZXM6IHRydWV9KVxuICAgIClcbiAgfVxuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCBvbkNsb3NlID0gKCkgPT4ge1xuICAgIHNldE9wZW4oZmFsc2UpXG4gICAgY29udGFpbmVyUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnZm9jdXMtbWVudScsIHtkZXRhaWw6IHtzdGF0dXM6ICdjbG9zZWQnfSwgYnViYmxlczogdHJ1ZX0pXG4gICAgKVxuICB9XG4gIGNvbnN0IHJlZiA9IHVzZU9uY2xpY2tPdXRzaWRlKFxuICAgICgpID0+IHtcbiAgICAgIGlmIChvcGVuICYmIHVpVHlwZSA9PT0gJ2Rlc2t0b3AnKSB7XG4gICAgICAgIG9uQ2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAge2V2ZW50VHlwZXM6IFsnY2xpY2snXX1cbiAgKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlZihjb250YWluZXJSZWYuY3VycmVudClcbiAgICByZXR1cm4gb24oY29udGFpbmVyUmVmLmN1cnJlbnQsICdjbG9zZS1tZW51Jywgb25DbG9zZSlcbiAgfSwgW10pXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJ1dHRvbldyYXAgcG9zaXRpb249XCJyaWdodFwiPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgIHN0YXJ0SWNvbj17YnV0dG9uSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvcGVuID8gdW5kZWZpbmVkIDogb25PcGVufVxuICAgICAgICAvPlxuICAgICAgPC9CdXR0b25XcmFwPlxuICAgICAgPGNvbXBvbmVudHMucm9vdCBjb250YWluZXJSZWY9e2NvbnRhaW5lclJlZn0gb3Blbj17b3Blbn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2NvbXBvbmVudHMucm9vdD5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdmVybGF5UGFuZWxcbiJdfQ== */"],
|
|
4907
4911
|
ref: containerRef,
|
|
4908
4912
|
onClick: event => event.stopPropagation(),
|
|
4909
4913
|
...rest,
|
|
@@ -4912,6 +4916,7 @@ const DesktopContainer = ({
|
|
|
4912
4916
|
|
|
4913
4917
|
const OverlayPanel = ({
|
|
4914
4918
|
buttonIcon,
|
|
4919
|
+
title,
|
|
4915
4920
|
uiType = isDesktop() ? 'desktop' : 'mobile',
|
|
4916
4921
|
children,
|
|
4917
4922
|
slots = {
|
|
@@ -4925,11 +4930,28 @@ const OverlayPanel = ({
|
|
|
4925
4930
|
const ButtonWrap = uiType === 'desktop' ? FunctionBarExtension : TitleBarExtension;
|
|
4926
4931
|
const [open, setOpen] = useState(false);
|
|
4927
4932
|
|
|
4928
|
-
const
|
|
4929
|
-
|
|
4930
|
-
|
|
4933
|
+
const onOpen = event => {
|
|
4934
|
+
setTimeout(() => setOpen(true), 1);
|
|
4935
|
+
event.currentTarget.dispatchEvent(new CustomEvent('focus-menu', {
|
|
4936
|
+
detail: {
|
|
4937
|
+
status: 'open'
|
|
4938
|
+
},
|
|
4939
|
+
bubbles: true
|
|
4940
|
+
}));
|
|
4941
|
+
};
|
|
4931
4942
|
|
|
4932
4943
|
const containerRef = useRef();
|
|
4944
|
+
|
|
4945
|
+
const onClose = () => {
|
|
4946
|
+
setOpen(false);
|
|
4947
|
+
containerRef.current.dispatchEvent(new CustomEvent('focus-menu', {
|
|
4948
|
+
detail: {
|
|
4949
|
+
status: 'closed'
|
|
4950
|
+
},
|
|
4951
|
+
bubbles: true
|
|
4952
|
+
}));
|
|
4953
|
+
};
|
|
4954
|
+
|
|
4933
4955
|
const ref = useOnclickOutside(() => {
|
|
4934
4956
|
if (open && uiType === 'desktop') {
|
|
4935
4957
|
onClose();
|
|
@@ -4945,8 +4967,9 @@ const OverlayPanel = ({
|
|
|
4945
4967
|
children: [jsx$1(ButtonWrap, {
|
|
4946
4968
|
position: "right",
|
|
4947
4969
|
children: jsx$1(Button, {
|
|
4970
|
+
title: title,
|
|
4948
4971
|
startIcon: buttonIcon,
|
|
4949
|
-
onClick:
|
|
4972
|
+
onClick: open ? undefined : onOpen
|
|
4950
4973
|
})
|
|
4951
4974
|
}), jsx$1(components.root, {
|
|
4952
4975
|
containerRef: containerRef,
|
|
@@ -5984,7 +6007,7 @@ const makeResponse = (headers, data, status, uri, responseURL, requestType) => {
|
|
|
5984
6007
|
throw new shaka$1.util.Error(severity, shaka$1.util.Error.Category.NETWORK, shaka$1.util.Error.Code.BAD_HTTP_STATUS, uri, status, responseText, headers, requestType);
|
|
5985
6008
|
};
|
|
5986
6009
|
|
|
5987
|
-
const goog$
|
|
6010
|
+
const goog$2 = {
|
|
5988
6011
|
asserts: {
|
|
5989
6012
|
assert: () => {}
|
|
5990
6013
|
}
|
|
@@ -6130,7 +6153,7 @@ class HttpFetchPlugin {
|
|
|
6130
6153
|
}
|
|
6131
6154
|
|
|
6132
6155
|
if (readObj.done) {
|
|
6133
|
-
goog$
|
|
6156
|
+
goog$2.asserts.assert(!readObj.value, 'readObj should be unset when "done" is true.');
|
|
6134
6157
|
controller.close();
|
|
6135
6158
|
} else {
|
|
6136
6159
|
controller.enqueue(readObj.value);
|
|
@@ -6369,6 +6392,654 @@ const fixDashManifest = (data, {
|
|
|
6369
6392
|
return new XMLSerializer().serializeToString(doc);
|
|
6370
6393
|
};
|
|
6371
6394
|
|
|
6395
|
+
/* eslint-disable no-cond-assign */
|
|
6396
|
+
|
|
6397
|
+
/* eslint-disable prefer-destructuring */
|
|
6398
|
+
|
|
6399
|
+
/*! @license
|
|
6400
|
+
* Shaka Player
|
|
6401
|
+
* Copyright 2016 Google LLC
|
|
6402
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6403
|
+
*/
|
|
6404
|
+
const goog$1 = {
|
|
6405
|
+
asserts: {
|
|
6406
|
+
assert: (condition, message) => {
|
|
6407
|
+
if (!condition) {
|
|
6408
|
+
console.warn('GOOG Assert!', message);
|
|
6409
|
+
}
|
|
6410
|
+
}
|
|
6411
|
+
}
|
|
6412
|
+
};
|
|
6413
|
+
|
|
6414
|
+
const addDefaultTextColor = styles => {
|
|
6415
|
+
const textColor = shaka.text.Cue.defaultTextColor;
|
|
6416
|
+
|
|
6417
|
+
for (const [key, value] of Object.entries(textColor)) {
|
|
6418
|
+
const cue = new shaka.text.Cue(0, 0, '');
|
|
6419
|
+
cue.color = value;
|
|
6420
|
+
styles.set(`.${key}`, cue);
|
|
6421
|
+
}
|
|
6422
|
+
|
|
6423
|
+
const bgColor = shaka.text.Cue.defaultTextBackgroundColor;
|
|
6424
|
+
|
|
6425
|
+
for (const [key, value] of Object.entries(bgColor)) {
|
|
6426
|
+
const cue = new shaka.text.Cue(0, 0, '');
|
|
6427
|
+
cue.backgroundColor = value;
|
|
6428
|
+
styles.set(`.${key}`, cue);
|
|
6429
|
+
}
|
|
6430
|
+
};
|
|
6431
|
+
|
|
6432
|
+
const parseTime = text => {
|
|
6433
|
+
var _Array$from;
|
|
6434
|
+
|
|
6435
|
+
const timeFormat = /(?:(\d{1,}):)?(\d{2}):(\d{2})((\.(\d{1,3})))?/g;
|
|
6436
|
+
const results = (_Array$from = Array.from(text.matchAll(timeFormat))) === null || _Array$from === void 0 ? void 0 : _Array$from[0];
|
|
6437
|
+
|
|
6438
|
+
if (results == null) {
|
|
6439
|
+
return null;
|
|
6440
|
+
} // This capture is optional, but will still be in the array as undefined,
|
|
6441
|
+
// in which case it is 0.
|
|
6442
|
+
|
|
6443
|
+
|
|
6444
|
+
const hours = Number(results[1]) || 0;
|
|
6445
|
+
const minutes = Number(results[2]);
|
|
6446
|
+
const seconds = Number(results[3]);
|
|
6447
|
+
const milliseconds = Number(results[6]) || 0;
|
|
6448
|
+
|
|
6449
|
+
if (minutes > 59 || seconds > 59) {
|
|
6450
|
+
return null;
|
|
6451
|
+
}
|
|
6452
|
+
|
|
6453
|
+
return milliseconds / 1000 + seconds + minutes * 60 + hours * 3600;
|
|
6454
|
+
};
|
|
6455
|
+
|
|
6456
|
+
const parseRegion = block => {
|
|
6457
|
+
if (block[0].trim() !== 'REGION') {
|
|
6458
|
+
return [];
|
|
6459
|
+
}
|
|
6460
|
+
|
|
6461
|
+
const region = new shaka.text.CueRegion();
|
|
6462
|
+
block.slice(1).forEach(word => {
|
|
6463
|
+
let results = null;
|
|
6464
|
+
|
|
6465
|
+
if (results = /^id:(.*)$/.exec(word)) {
|
|
6466
|
+
region.id = results[1];
|
|
6467
|
+
} else if (results = /^width:(\d{1,2}|100)%$/.exec(word)) {
|
|
6468
|
+
region.width = Number(results[1]);
|
|
6469
|
+
} else if (results = /^lines:(\d+)$/.exec(word)) {
|
|
6470
|
+
region.height = Number(results[1]);
|
|
6471
|
+
region.heightUnits = shaka.text.CueRegion.units.LINES;
|
|
6472
|
+
} else if (results = /^regionanchor:(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(word)) {
|
|
6473
|
+
region.regionAnchorX = Number(results[1]);
|
|
6474
|
+
region.regionAnchorY = Number(results[2]);
|
|
6475
|
+
} else if (results = /^viewportanchor:(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(word)) {
|
|
6476
|
+
region.viewportAnchorX = Number(results[1]);
|
|
6477
|
+
region.viewportAnchorY = Number(results[2]);
|
|
6478
|
+
} else if (results = /^scroll:up$/.exec(word)) {
|
|
6479
|
+
region.scroll = shaka.text.CueRegion.scrollMode.UP;
|
|
6480
|
+
} else {
|
|
6481
|
+
shaka.log.warning('VTT parser encountered an invalid VTTRegion setting: ', word, ' The setting will be ignored.');
|
|
6482
|
+
}
|
|
6483
|
+
});
|
|
6484
|
+
return [region];
|
|
6485
|
+
};
|
|
6486
|
+
/**
|
|
6487
|
+
* @implements {shaka.extern.TextParser}
|
|
6488
|
+
* @export
|
|
6489
|
+
*/
|
|
6490
|
+
|
|
6491
|
+
|
|
6492
|
+
class VttTextParser {
|
|
6493
|
+
/** Constructs a VTT parser. */
|
|
6494
|
+
constructor() {
|
|
6495
|
+
/** @private {boolean} */
|
|
6496
|
+
this.sequenceMode_ = false;
|
|
6497
|
+
/** @private {string} */
|
|
6498
|
+
|
|
6499
|
+
this.manifestType_ = shaka.media.ManifestParser.UNKNOWN;
|
|
6500
|
+
}
|
|
6501
|
+
/**
|
|
6502
|
+
* @override
|
|
6503
|
+
* @export
|
|
6504
|
+
*/
|
|
6505
|
+
|
|
6506
|
+
|
|
6507
|
+
parseInit() {
|
|
6508
|
+
goog$1.asserts.assert(false, 'VTT does not have init segments');
|
|
6509
|
+
}
|
|
6510
|
+
/**
|
|
6511
|
+
* @override
|
|
6512
|
+
* @export
|
|
6513
|
+
*/
|
|
6514
|
+
|
|
6515
|
+
|
|
6516
|
+
setSequenceMode(sequenceMode) {
|
|
6517
|
+
this.sequenceMode_ = sequenceMode;
|
|
6518
|
+
}
|
|
6519
|
+
/**
|
|
6520
|
+
* @override
|
|
6521
|
+
* @export
|
|
6522
|
+
*/
|
|
6523
|
+
|
|
6524
|
+
|
|
6525
|
+
setManifestType(manifestType) {
|
|
6526
|
+
this.manifestType_ = manifestType;
|
|
6527
|
+
}
|
|
6528
|
+
/**
|
|
6529
|
+
* @override
|
|
6530
|
+
* @export
|
|
6531
|
+
*/
|
|
6532
|
+
|
|
6533
|
+
|
|
6534
|
+
parseMedia(data, time) {
|
|
6535
|
+
// Get the input as a string. Normalize newlines to \n.
|
|
6536
|
+
let str = shaka.util.StringUtils.fromUTF8(data);
|
|
6537
|
+
str = str.replace(/\r\n|\r(?=[^\n]|$)/gm, '\n');
|
|
6538
|
+
const blocks = str.split(/\n{2,}/m);
|
|
6539
|
+
|
|
6540
|
+
if (!/^WEBVTT($|[ \t\n])/m.test(blocks[0])) {
|
|
6541
|
+
throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL, shaka.util.Error.Category.TEXT, shaka.util.Error.Code.INVALID_TEXT_HEADER);
|
|
6542
|
+
} // Depending on "segmentRelativeVttTiming" configuration,
|
|
6543
|
+
// "vttOffset" will correspond to either "periodStart" (default)
|
|
6544
|
+
// or "segmentStart", for segmented VTT where timings are relative
|
|
6545
|
+
// to the beginning of each segment.
|
|
6546
|
+
// NOTE: "periodStart" is the timestamp offset applied via TextEngine.
|
|
6547
|
+
// It is no longer closely tied to periods, but the name stuck around.
|
|
6548
|
+
// NOTE: This offset and the flag choosing its meaning have no effect on
|
|
6549
|
+
// HLS content, which should use X-TIMESTAMP-MAP and periodStart instead.
|
|
6550
|
+
|
|
6551
|
+
|
|
6552
|
+
let offset = time.vttOffset;
|
|
6553
|
+
|
|
6554
|
+
if (this.manifestType_ == shaka.media.ManifestParser.HLS) {
|
|
6555
|
+
// Only use 'X-TIMESTAMP-MAP' with HLS.
|
|
6556
|
+
if (blocks[0].includes('X-TIMESTAMP-MAP')) {
|
|
6557
|
+
offset = this.computeHlsOffset_(blocks[0], time);
|
|
6558
|
+
} else if (time.periodStart && time.vttOffset == time.periodStart) {
|
|
6559
|
+
// In the case where X-TIMESTAMP-MAP is not used and it is HLS, we
|
|
6560
|
+
// should not use offset unless segment-relative times are used.
|
|
6561
|
+
offset = 0;
|
|
6562
|
+
}
|
|
6563
|
+
}
|
|
6564
|
+
|
|
6565
|
+
const regions = [];
|
|
6566
|
+
/** @type {!Map<string, !shaka.text.Cue>} */
|
|
6567
|
+
|
|
6568
|
+
const styles = new Map();
|
|
6569
|
+
addDefaultTextColor(styles); // Parse cues.
|
|
6570
|
+
|
|
6571
|
+
const ret = [];
|
|
6572
|
+
|
|
6573
|
+
for (const block of blocks.slice(1)) {
|
|
6574
|
+
const lines = block.split('\n');
|
|
6575
|
+
VttTextParser.parseStyle_(lines, styles);
|
|
6576
|
+
regions.push(...parseRegion(lines));
|
|
6577
|
+
const cue = VttTextParser.parseCue_(lines, offset, regions, styles);
|
|
6578
|
+
|
|
6579
|
+
if (cue) {
|
|
6580
|
+
ret.push(cue);
|
|
6581
|
+
}
|
|
6582
|
+
}
|
|
6583
|
+
|
|
6584
|
+
return ret;
|
|
6585
|
+
}
|
|
6586
|
+
/**
|
|
6587
|
+
* @param {string} headerBlock Contains X-TIMESTAMP-MAP.
|
|
6588
|
+
* @param {shaka.extern.TextParser.TimeContext} time
|
|
6589
|
+
* @return {number}
|
|
6590
|
+
* @private
|
|
6591
|
+
*/
|
|
6592
|
+
|
|
6593
|
+
|
|
6594
|
+
computeHlsOffset_(headerBlock, time) {
|
|
6595
|
+
// https://bit.ly/2K92l7y
|
|
6596
|
+
// The 'X-TIMESTAMP-MAP' header is used in HLS to align text with
|
|
6597
|
+
// the rest of the media.
|
|
6598
|
+
// The header format is 'X-TIMESTAMP-MAP=MPEGTS:n,LOCAL:m'
|
|
6599
|
+
// (the attributes can go in any order)
|
|
6600
|
+
// where n is MPEG-2 time and m is cue time it maps to.
|
|
6601
|
+
// For example 'X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000'
|
|
6602
|
+
// means an offset of 10 seconds
|
|
6603
|
+
// 900000/MPEG_TIMESCALE - cue time.
|
|
6604
|
+
const cueTimeMatch = headerBlock.match(/LOCAL:((?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{3}))/m);
|
|
6605
|
+
const mpegTimeMatch = headerBlock.match(/MPEGTS:(\d+)/m);
|
|
6606
|
+
|
|
6607
|
+
if (!cueTimeMatch || !mpegTimeMatch) {
|
|
6608
|
+
throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL, shaka.util.Error.Category.TEXT, shaka.util.Error.Code.INVALID_TEXT_HEADER);
|
|
6609
|
+
}
|
|
6610
|
+
|
|
6611
|
+
const cueTime = parseTime(cueTimeMatch[1]);
|
|
6612
|
+
|
|
6613
|
+
if (cueTime == null) {
|
|
6614
|
+
throw new shaka.util.Error(shaka.util.Error.Severity.CRITICAL, shaka.util.Error.Category.TEXT, shaka.util.Error.Code.INVALID_TEXT_HEADER);
|
|
6615
|
+
}
|
|
6616
|
+
|
|
6617
|
+
let mpegTime = Number(mpegTimeMatch[1]);
|
|
6618
|
+
const mpegTimescale = VttTextParser.MPEG_TIMESCALE_;
|
|
6619
|
+
const rolloverSeconds = VttTextParser.TS_ROLLOVER_ / mpegTimescale;
|
|
6620
|
+
let segmentStart = time.segmentStart - time.periodStart;
|
|
6621
|
+
|
|
6622
|
+
while (segmentStart >= rolloverSeconds) {
|
|
6623
|
+
segmentStart -= rolloverSeconds;
|
|
6624
|
+
mpegTime += VttTextParser.TS_ROLLOVER_;
|
|
6625
|
+
}
|
|
6626
|
+
|
|
6627
|
+
return time.periodStart + mpegTime / mpegTimescale - cueTime;
|
|
6628
|
+
}
|
|
6629
|
+
/**
|
|
6630
|
+
* Parses a style block into a Cue object.
|
|
6631
|
+
*
|
|
6632
|
+
* @param {!Array<string>} text
|
|
6633
|
+
* @param {!Map<string, !shaka.text.Cue>} styles
|
|
6634
|
+
* @private
|
|
6635
|
+
*/
|
|
6636
|
+
|
|
6637
|
+
|
|
6638
|
+
static parseStyle_(text, styles) {
|
|
6639
|
+
// Skip empty blocks.
|
|
6640
|
+
if (text.length == 1 && !text[0]) {
|
|
6641
|
+
return;
|
|
6642
|
+
} // Skip comment blocks.
|
|
6643
|
+
|
|
6644
|
+
|
|
6645
|
+
if (/^NOTE($|[ \t])/.test(text[0])) {
|
|
6646
|
+
return;
|
|
6647
|
+
} // Only style block are allowed.
|
|
6648
|
+
|
|
6649
|
+
|
|
6650
|
+
if (text[0] != 'STYLE') {
|
|
6651
|
+
return;
|
|
6652
|
+
}
|
|
6653
|
+
/** @type {!Array<!Array<string>>} */
|
|
6654
|
+
|
|
6655
|
+
|
|
6656
|
+
const styleBlocks = [];
|
|
6657
|
+
let lastBlockIndex = -1;
|
|
6658
|
+
|
|
6659
|
+
for (let i = 1; i < text.length; i++) {
|
|
6660
|
+
if (text[i].includes('::cue')) {
|
|
6661
|
+
styleBlocks.push([]);
|
|
6662
|
+
lastBlockIndex = styleBlocks.length - 1;
|
|
6663
|
+
}
|
|
6664
|
+
|
|
6665
|
+
if (lastBlockIndex == -1) {
|
|
6666
|
+
continue;
|
|
6667
|
+
}
|
|
6668
|
+
|
|
6669
|
+
styleBlocks[lastBlockIndex].push(text[i]);
|
|
6670
|
+
|
|
6671
|
+
if (text[i].includes('}')) {
|
|
6672
|
+
lastBlockIndex = -1;
|
|
6673
|
+
}
|
|
6674
|
+
}
|
|
6675
|
+
|
|
6676
|
+
for (const styleBlock of styleBlocks) {
|
|
6677
|
+
let styleSelector = 'global'; // Look for what is within parentheses. For example:
|
|
6678
|
+
// <code>:: cue (b) {</code>, what we are looking for is <code>b</code>
|
|
6679
|
+
|
|
6680
|
+
const selector = styleBlock[0].match(/\((.*)\)/);
|
|
6681
|
+
|
|
6682
|
+
if (selector) {
|
|
6683
|
+
styleSelector = selector.pop();
|
|
6684
|
+
} // We start at 1 to avoid '::cue' and end earlier to avoid '}'
|
|
6685
|
+
|
|
6686
|
+
|
|
6687
|
+
let propertyLines = styleBlock.slice(1, -1);
|
|
6688
|
+
|
|
6689
|
+
if (styleBlock[0].includes('}')) {
|
|
6690
|
+
const payload = /\{(.*?)\}/.exec(styleBlock[0]);
|
|
6691
|
+
|
|
6692
|
+
if (payload) {
|
|
6693
|
+
propertyLines = payload[1].split(';');
|
|
6694
|
+
}
|
|
6695
|
+
} // Continue styles over multiple selectors if necessary.
|
|
6696
|
+
// For example,
|
|
6697
|
+
// ::cue(b) { background: white; } ::cue(b) { color: blue; }
|
|
6698
|
+
// should set both the background and foreground of bold tags.
|
|
6699
|
+
|
|
6700
|
+
|
|
6701
|
+
let cue = styles.get(styleSelector);
|
|
6702
|
+
|
|
6703
|
+
if (!cue) {
|
|
6704
|
+
cue = new shaka.text.Cue(0, 0, '');
|
|
6705
|
+
}
|
|
6706
|
+
|
|
6707
|
+
let validStyle = false;
|
|
6708
|
+
|
|
6709
|
+
for (let i = 0; i < propertyLines.length; i++) {
|
|
6710
|
+
// We look for CSS properties. As a general rule they are separated by
|
|
6711
|
+
// <code>:</code>. Eg: <code>color: red;</code>
|
|
6712
|
+
const lineParts = /^\s*([^:]+):\s*(.*)/.exec(propertyLines[i]);
|
|
6713
|
+
|
|
6714
|
+
if (lineParts) {
|
|
6715
|
+
const name = lineParts[1].trim();
|
|
6716
|
+
const value = lineParts[2].trim().replace(';', '');
|
|
6717
|
+
|
|
6718
|
+
switch (name) {
|
|
6719
|
+
case 'background-color':
|
|
6720
|
+
case 'background':
|
|
6721
|
+
validStyle = true;
|
|
6722
|
+
cue.backgroundColor = value;
|
|
6723
|
+
break;
|
|
6724
|
+
|
|
6725
|
+
case 'color':
|
|
6726
|
+
validStyle = true;
|
|
6727
|
+
cue.color = value;
|
|
6728
|
+
break;
|
|
6729
|
+
|
|
6730
|
+
case 'font-family':
|
|
6731
|
+
validStyle = true;
|
|
6732
|
+
cue.fontFamily = value;
|
|
6733
|
+
break;
|
|
6734
|
+
|
|
6735
|
+
case 'font-size':
|
|
6736
|
+
validStyle = true;
|
|
6737
|
+
cue.fontSize = value;
|
|
6738
|
+
break;
|
|
6739
|
+
|
|
6740
|
+
case 'font-weight':
|
|
6741
|
+
if (parseInt(value, 10) >= 700 || value == 'bold') {
|
|
6742
|
+
validStyle = true;
|
|
6743
|
+
cue.fontWeight = shaka.text.Cue.fontWeight.BOLD;
|
|
6744
|
+
}
|
|
6745
|
+
|
|
6746
|
+
break;
|
|
6747
|
+
|
|
6748
|
+
case 'font-style':
|
|
6749
|
+
switch (value) {
|
|
6750
|
+
case 'normal':
|
|
6751
|
+
validStyle = true;
|
|
6752
|
+
cue.fontStyle = shaka.text.Cue.fontStyle.NORMAL;
|
|
6753
|
+
break;
|
|
6754
|
+
|
|
6755
|
+
case 'italic':
|
|
6756
|
+
validStyle = true;
|
|
6757
|
+
cue.fontStyle = shaka.text.Cue.fontStyle.ITALIC;
|
|
6758
|
+
break;
|
|
6759
|
+
|
|
6760
|
+
case 'oblique':
|
|
6761
|
+
validStyle = true;
|
|
6762
|
+
cue.fontStyle = shaka.text.Cue.fontStyle.OBLIQUE;
|
|
6763
|
+
break;
|
|
6764
|
+
}
|
|
6765
|
+
|
|
6766
|
+
break;
|
|
6767
|
+
|
|
6768
|
+
case 'opacity':
|
|
6769
|
+
validStyle = true;
|
|
6770
|
+
cue.opacity = parseFloat(value);
|
|
6771
|
+
break;
|
|
6772
|
+
|
|
6773
|
+
case 'text-combine-upright':
|
|
6774
|
+
validStyle = true;
|
|
6775
|
+
cue.textCombineUpright = value;
|
|
6776
|
+
break;
|
|
6777
|
+
|
|
6778
|
+
case 'text-shadow':
|
|
6779
|
+
validStyle = true;
|
|
6780
|
+
cue.textShadow = value;
|
|
6781
|
+
break;
|
|
6782
|
+
|
|
6783
|
+
case 'white-space':
|
|
6784
|
+
validStyle = true;
|
|
6785
|
+
cue.wrapLine = value != 'noWrap';
|
|
6786
|
+
break;
|
|
6787
|
+
|
|
6788
|
+
default:
|
|
6789
|
+
shaka.log.warning('VTT parser encountered an unsupported style: ', lineParts);
|
|
6790
|
+
break;
|
|
6791
|
+
}
|
|
6792
|
+
}
|
|
6793
|
+
}
|
|
6794
|
+
|
|
6795
|
+
if (validStyle) {
|
|
6796
|
+
styles.set(styleSelector, cue);
|
|
6797
|
+
}
|
|
6798
|
+
}
|
|
6799
|
+
}
|
|
6800
|
+
/**
|
|
6801
|
+
* Parses a text block into a Cue object.
|
|
6802
|
+
*
|
|
6803
|
+
* @param {!Array<string>} text
|
|
6804
|
+
* @param {number} timeOffset
|
|
6805
|
+
* @param {!Array<!shaka.text.CueRegion>} regions
|
|
6806
|
+
* @param {!Map<string, !shaka.text.Cue>} styles
|
|
6807
|
+
* @return {shaka.text.Cue}
|
|
6808
|
+
* @private
|
|
6809
|
+
*/
|
|
6810
|
+
|
|
6811
|
+
|
|
6812
|
+
static parseCue_(text, timeOffset, regions, styles) {
|
|
6813
|
+
// Skip empty blocks.
|
|
6814
|
+
if (text.length == 1 && !text[0]) {
|
|
6815
|
+
return null;
|
|
6816
|
+
} // Skip comment blocks.
|
|
6817
|
+
|
|
6818
|
+
|
|
6819
|
+
if (/^NOTE($|[ \t])/.test(text[0])) {
|
|
6820
|
+
return null;
|
|
6821
|
+
} // Skip style and region blocks.
|
|
6822
|
+
|
|
6823
|
+
|
|
6824
|
+
if (text[0] == 'STYLE' || text[0] == 'REGION') {
|
|
6825
|
+
return null;
|
|
6826
|
+
}
|
|
6827
|
+
|
|
6828
|
+
let id = null;
|
|
6829
|
+
|
|
6830
|
+
if (!text[0].includes('-->')) {
|
|
6831
|
+
id = text[0];
|
|
6832
|
+
text.splice(0, 1);
|
|
6833
|
+
} // Parse the times.
|
|
6834
|
+
|
|
6835
|
+
|
|
6836
|
+
let [start, end] = text[0].split('-->').map(part => parseTime(part.trim()));
|
|
6837
|
+
|
|
6838
|
+
if (start == null || end == null) {
|
|
6839
|
+
shaka.log.alwaysWarn('Failed to parse VTT time code. Cue skipped:', id, text);
|
|
6840
|
+
return null;
|
|
6841
|
+
}
|
|
6842
|
+
|
|
6843
|
+
start += timeOffset;
|
|
6844
|
+
end += timeOffset; // Get the payload.
|
|
6845
|
+
|
|
6846
|
+
const payload = text.slice(1).join('\n').trim();
|
|
6847
|
+
let cue = null;
|
|
6848
|
+
|
|
6849
|
+
if (styles.has('global')) {
|
|
6850
|
+
cue = styles.get('global').clone();
|
|
6851
|
+
cue.startTime = start;
|
|
6852
|
+
cue.endTime = end;
|
|
6853
|
+
cue.payload = payload;
|
|
6854
|
+
} else {
|
|
6855
|
+
cue = new shaka.text.Cue(start, end, payload);
|
|
6856
|
+
} // Parse optional settings.
|
|
6857
|
+
|
|
6858
|
+
|
|
6859
|
+
text[0].split(/\s+/g).slice(3).forEach(word => {
|
|
6860
|
+
if (!word.trim()) {
|
|
6861
|
+
return;
|
|
6862
|
+
}
|
|
6863
|
+
|
|
6864
|
+
if (!VttTextParser.parseCueSetting(cue, word, regions)) {
|
|
6865
|
+
shaka.log.warning('VTT parser encountered an invalid VTT setting: ', word, ' The setting will be ignored.');
|
|
6866
|
+
}
|
|
6867
|
+
});
|
|
6868
|
+
shaka.text.Cue.parseCuePayload(cue, styles);
|
|
6869
|
+
|
|
6870
|
+
if (id != null) {
|
|
6871
|
+
cue.id = id;
|
|
6872
|
+
}
|
|
6873
|
+
|
|
6874
|
+
return cue;
|
|
6875
|
+
}
|
|
6876
|
+
/**
|
|
6877
|
+
* Parses a WebVTT setting from the given word.
|
|
6878
|
+
*
|
|
6879
|
+
* @param {!shaka.text.Cue} cue
|
|
6880
|
+
* @param {string} word
|
|
6881
|
+
* @param {!Array<!shaka.text.CueRegion>} regions
|
|
6882
|
+
* @return {boolean} True on success.
|
|
6883
|
+
*/
|
|
6884
|
+
|
|
6885
|
+
|
|
6886
|
+
static parseCueSetting(cue, word, regions) {
|
|
6887
|
+
let results = null;
|
|
6888
|
+
|
|
6889
|
+
if (results = /^align:(start|middle|center|end|left|right)$/.exec(word)) {
|
|
6890
|
+
VttTextParser.setTextAlign_(cue, results[1]);
|
|
6891
|
+
} else if (results = /^vertical:(lr|rl)$/.exec(word)) {
|
|
6892
|
+
VttTextParser.setVerticalWritingMode_(cue, results[1]);
|
|
6893
|
+
} else if (results = /^size:([\d.]+)%$/.exec(word)) {
|
|
6894
|
+
cue.size = Number(results[1]);
|
|
6895
|
+
} else if (results = /^position:([\d.]+)%(?:,(line-left|line-right|middle|center|start|end|auto))?$/.exec(word)) {
|
|
6896
|
+
cue.position = Number(results[1]);
|
|
6897
|
+
|
|
6898
|
+
if (results[2]) {
|
|
6899
|
+
VttTextParser.setPositionAlign_(cue, results[2]);
|
|
6900
|
+
}
|
|
6901
|
+
} else if (results = /^region:(.*)$/.exec(word)) {
|
|
6902
|
+
const region = VttTextParser.getRegionById_(regions, results[1]);
|
|
6903
|
+
|
|
6904
|
+
if (region) {
|
|
6905
|
+
cue.region = region;
|
|
6906
|
+
}
|
|
6907
|
+
} else {
|
|
6908
|
+
return VttTextParser.parsedLineValueAndInterpretation_(cue, word);
|
|
6909
|
+
}
|
|
6910
|
+
|
|
6911
|
+
return true;
|
|
6912
|
+
}
|
|
6913
|
+
/**
|
|
6914
|
+
*
|
|
6915
|
+
* @param {!Array<!shaka.text.CueRegion>} regions
|
|
6916
|
+
* @param {string} id
|
|
6917
|
+
* @return {?shaka.text.CueRegion}
|
|
6918
|
+
* @private
|
|
6919
|
+
*/
|
|
6920
|
+
|
|
6921
|
+
|
|
6922
|
+
static getRegionById_(regions, id) {
|
|
6923
|
+
const regionsWithId = regions.filter(region => region.id == id);
|
|
6924
|
+
|
|
6925
|
+
if (!regionsWithId.length) {
|
|
6926
|
+
shaka.log.warning('VTT parser could not find a region with id: ', id, ' The region will be ignored.');
|
|
6927
|
+
return null;
|
|
6928
|
+
}
|
|
6929
|
+
|
|
6930
|
+
goog$1.asserts.assert(regionsWithId.length == 1, 'VTTRegion ids should be unique!');
|
|
6931
|
+
return regionsWithId[0];
|
|
6932
|
+
}
|
|
6933
|
+
/**
|
|
6934
|
+
* @param {!shaka.text.Cue} cue
|
|
6935
|
+
* @param {string} align
|
|
6936
|
+
* @private
|
|
6937
|
+
*/
|
|
6938
|
+
|
|
6939
|
+
|
|
6940
|
+
static setTextAlign_(cue, align) {
|
|
6941
|
+
const Cue = shaka.text.Cue;
|
|
6942
|
+
|
|
6943
|
+
if (align == 'middle') {
|
|
6944
|
+
cue.textAlign = Cue.textAlign.CENTER;
|
|
6945
|
+
} else {
|
|
6946
|
+
goog$1.asserts.assert(align.toUpperCase() in Cue.textAlign, `${align.toUpperCase()} Should be in Cue.textAlign values!`);
|
|
6947
|
+
cue.textAlign = Cue.textAlign[align.toUpperCase()];
|
|
6948
|
+
}
|
|
6949
|
+
}
|
|
6950
|
+
/**
|
|
6951
|
+
* @param {!shaka.text.Cue} cue
|
|
6952
|
+
* @param {string} align
|
|
6953
|
+
* @private
|
|
6954
|
+
*/
|
|
6955
|
+
|
|
6956
|
+
|
|
6957
|
+
static setPositionAlign_(cue, align) {
|
|
6958
|
+
const Cue = shaka.text.Cue;
|
|
6959
|
+
|
|
6960
|
+
if (align == 'line-left' || align == 'start') {
|
|
6961
|
+
cue.positionAlign = Cue.positionAlign.LEFT;
|
|
6962
|
+
} else if (align == 'line-right' || align == 'end') {
|
|
6963
|
+
cue.positionAlign = Cue.positionAlign.RIGHT;
|
|
6964
|
+
} else if (align == 'center' || align == 'middle') {
|
|
6965
|
+
cue.positionAlign = Cue.positionAlign.CENTER;
|
|
6966
|
+
} else {
|
|
6967
|
+
cue.positionAlign = Cue.positionAlign.AUTO;
|
|
6968
|
+
}
|
|
6969
|
+
}
|
|
6970
|
+
/**
|
|
6971
|
+
* @param {!shaka.text.Cue} cue
|
|
6972
|
+
* @param {string} value
|
|
6973
|
+
* @private
|
|
6974
|
+
*/
|
|
6975
|
+
|
|
6976
|
+
|
|
6977
|
+
static setVerticalWritingMode_(cue, value) {
|
|
6978
|
+
const Cue = shaka.text.Cue;
|
|
6979
|
+
|
|
6980
|
+
if (value == 'lr') {
|
|
6981
|
+
cue.writingMode = Cue.writingMode.VERTICAL_LEFT_TO_RIGHT;
|
|
6982
|
+
} else {
|
|
6983
|
+
cue.writingMode = Cue.writingMode.VERTICAL_RIGHT_TO_LEFT;
|
|
6984
|
+
}
|
|
6985
|
+
}
|
|
6986
|
+
/**
|
|
6987
|
+
* @param {!shaka.text.Cue} cue
|
|
6988
|
+
* @param {string} word
|
|
6989
|
+
* @return {boolean}
|
|
6990
|
+
* @private
|
|
6991
|
+
*/
|
|
6992
|
+
|
|
6993
|
+
|
|
6994
|
+
static parsedLineValueAndInterpretation_(cue, word) {
|
|
6995
|
+
const Cue = shaka.text.Cue;
|
|
6996
|
+
let results = null;
|
|
6997
|
+
|
|
6998
|
+
if (results = /^line:([\d.]+)%(?:,(start|end|center))?$/.exec(word)) {
|
|
6999
|
+
cue.lineInterpretation = Cue.lineInterpretation.PERCENTAGE;
|
|
7000
|
+
cue.line = Number(results[1]);
|
|
7001
|
+
|
|
7002
|
+
if (results[2]) {
|
|
7003
|
+
goog$1.asserts.assert(results[2].toUpperCase() in Cue.lineAlign, `${results[2].toUpperCase()} Should be in Cue.lineAlign values!`);
|
|
7004
|
+
cue.lineAlign = Cue.lineAlign[results[2].toUpperCase()];
|
|
7005
|
+
}
|
|
7006
|
+
} else if (results = /^line:(-?\d+)(?:,(start|end|center))?$/.exec(word)) {
|
|
7007
|
+
cue.lineInterpretation = Cue.lineInterpretation.LINE_NUMBER;
|
|
7008
|
+
cue.line = Number(results[1]);
|
|
7009
|
+
|
|
7010
|
+
if (results[2]) {
|
|
7011
|
+
goog$1.asserts.assert(results[2].toUpperCase() in Cue.lineAlign, `${results[2].toUpperCase()} Should be in Cue.lineAlign values!`);
|
|
7012
|
+
cue.lineAlign = Cue.lineAlign[results[2].toUpperCase()];
|
|
7013
|
+
}
|
|
7014
|
+
} else {
|
|
7015
|
+
return false;
|
|
7016
|
+
}
|
|
7017
|
+
|
|
7018
|
+
return true;
|
|
7019
|
+
}
|
|
7020
|
+
|
|
7021
|
+
}
|
|
7022
|
+
/**
|
|
7023
|
+
* @const {number}
|
|
7024
|
+
* @private
|
|
7025
|
+
*/
|
|
7026
|
+
|
|
7027
|
+
|
|
7028
|
+
VttTextParser.MPEG_TIMESCALE_ = 90000;
|
|
7029
|
+
/**
|
|
7030
|
+
* At this value, timestamps roll over in TS content.
|
|
7031
|
+
* @const {number}
|
|
7032
|
+
* @private
|
|
7033
|
+
*/
|
|
7034
|
+
|
|
7035
|
+
VttTextParser.TS_ROLLOVER_ = 0x200000000;
|
|
7036
|
+
|
|
7037
|
+
VttTextParser.register = shakaNameSpace => {
|
|
7038
|
+
shakaNameSpace.text.TextEngine.registerParser('text/vtt', () => new VttTextParser());
|
|
7039
|
+
shakaNameSpace.text.TextEngine.registerParser('text/vtt; codecs="vtt"', () => new VttTextParser());
|
|
7040
|
+
shakaNameSpace.text.TextEngine.registerParser('text/vtt; codecs="wvtt"', () => new VttTextParser());
|
|
7041
|
+
};
|
|
7042
|
+
|
|
6372
7043
|
/*! @license
|
|
6373
7044
|
* Shaka Player
|
|
6374
7045
|
* Copyright 2016 Google LLC
|
|
@@ -7258,9 +7929,13 @@ class UITextDisplayer {
|
|
|
7258
7929
|
} else if (cue.textAlign == Cue.textAlign.RIGHT || cue.textAlign == Cue.textAlign.END) {
|
|
7259
7930
|
style.width = '100%';
|
|
7260
7931
|
style.alignItems = 'end';
|
|
7261
|
-
}
|
|
7932
|
+
} // in VTT displayAlign can't be set, it defaults to 'after',
|
|
7933
|
+
// but for vertical, it should be 'before'
|
|
7934
|
+
|
|
7262
7935
|
|
|
7263
|
-
if (cue.
|
|
7936
|
+
if (/vertical/.test(cue.writingMode)) {
|
|
7937
|
+
style.justifyContent = 'flex-start';
|
|
7938
|
+
} else if (cue.displayAlign == Cue.displayAlign.BEFORE) {
|
|
7264
7939
|
style.justifyContent = 'flex-start';
|
|
7265
7940
|
} else if (cue.displayAlign == Cue.displayAlign.CENTER) {
|
|
7266
7941
|
style.justifyContent = 'center';
|
|
@@ -7633,6 +8308,7 @@ const loadShaka = async (videoElement, config = {}, options = {}) => {
|
|
|
7633
8308
|
return getQualityItem(activeTrack);
|
|
7634
8309
|
};
|
|
7635
8310
|
|
|
8311
|
+
VttTextParser.register(shaka);
|
|
7636
8312
|
HttpFetchPlugin.register(shaka);
|
|
7637
8313
|
const networkEngine = player.getNetworkingEngine();
|
|
7638
8314
|
networkEngine.registerRequestFilter((type, request) => extensionOptions.requestHandlers.reduce((merged, handler) => handler(type, merged, player, extensionOptions), request));
|
|
@@ -8093,8 +8769,8 @@ const shouldPause = ({
|
|
|
8093
8769
|
|
|
8094
8770
|
|
|
8095
8771
|
const menuClasses = {
|
|
8096
|
-
default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8IGNvbnRyb2xzRGlzcGxheSA9PT0gJ2hpZGRlbicpICYmIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICBoYXZlUG9pbnRlcigpICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICBjb25zdCB7c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX0gPSBsaW5rTWVkaWFWb2x1bWUoKCkgPT4gKHtcbiAgICB2aWRlbzogdmlkZW9SZWYuY3VycmVudCxcbiAgICBnZXRQbGF5ZXI6ICgpID0+IHBsYXllclJlZi5jdXJyZW50LFxuICB9KSlcbiAgY29uc3QgY2hhbmdlUHJldmlvdXMgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VQcmV2aW91cyhldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG4gIGNvbnN0IGNoYW5nZU5leHQgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VOZXh0KGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cblxuICB1c2VFZmZlY3QoZmV0Y2hTZXR0aW5ncywgW2FwcFNldHRpbmdzXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgYWRDb250YWluZXIgc2hvdWxkIGJlIHNldCBiZWZvcmUgYGxvYWRgIGJlY2F1c2UgSW1hRGFpLmxvYWQgbmVlZHMgaXQuXG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uc2V0QWRDb250YWluZXI/LihhZENvbnRhaW5lclJlZi5jdXJyZW50KSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaENoYXB0ZXJFdmVudHMoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgY2hhcHRlcnMsXG4gICAgICAgIGdldFRpbWU6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUsXG4gICAgICB9KSxcbiAgICBbY2hhcHRlcnNdXG4gIClcblxuICBjb25zdCBpc0VuZCA9IHBsYXliYWNrU3RhdGUgPT09ICdlbmRlZCdcbiAgY29uc3QgY2FuU2VlayA9ICFpc0VuZCAmJiBwbGF5YmFja1RpbWUuZHVyYXRpb24gPiAwXG4gIGNvbnN0IGRlcml2ZWRQbGF5YmFja1N0YXRlID1cbiAgICAodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgfHwgc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICAgID8gJ3BhdXNlZCdcbiAgICAgIDogdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZVxuICBjb25zdCBhY3RpdmVUaHVtYm5haWxzVXJsID1cbiAgICAoIXVzZXJGb2N1cyB8fCB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJykgJiZcbiAgICAoZ2V0VGh1bWJuYWlsc1VybChzb3VyY2UpIHx8IHRodW1ibmFpbHNVcmwpXG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHtcbiAgICAnLS1wbGF5aW5nJzogcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnID8gJzEnIDogJzAnLFxuICB9XG4gIGNvbnN0IG9uUmV3aW5kID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcbiAgY29uc3Qgc2VsZWN0ZWRBdWRpb1RyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5hdWRpbyB8fCBhcHBBdWRpb1RyYWNrXG4gIGNvbnN0IHNlbGVjdGVkVGV4dFRyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5zdWJ0aXRsZXMgfHwgYXBwVGV4dFRyYWNrXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW9UcmFjaz17c2VsZWN0ZWRBdWRpb1RyYWNrfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZWxlY3RlZFRleHRUcmFja31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
|
|
8097
|
-
desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgYnV0dG9uSWNvbj1cInN1YnRpdGxlXCI+XG4gICAgICA8c2xvdHMuTGFuZ3VhZ2VNZW51XG4gICAgICAgIHVpVHlwZT17dWlUeXBlfVxuICAgICAgICBjbGFzc2VzPXttZW51Q2xhc3Nlc31cbiAgICAgICAgc2VjdGlvbk9wdGlvbnM9e1tvcHRpb25zLmF1ZGlvVHJhY2tzLCBvcHRpb25zLnRleHRUcmFja3NdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICA8L092ZXJsYXlQYW5lbD5cbiAgICApXG4gIClcbn1cblxuY29uc3QgUHJlbWl1bVBsYXllciA9ICh7XG4gIHNvdXJjZSxcbiAgc3RhcnRUaW1lLFxuICBxdWFsaXR5ID0ge30sXG4gIHRpdGxlLFxuICBtZXRhZGF0YSxcbiAgY2hhbm5lbFRpdGxlLFxuICBjaGFwdGVycyxcbiAgcGxheWJhY2tTdGF0ZTogYXBwUGxheWJhY2tTdGF0ZSxcbiAgY3VycmVudFRpbWU6IGFwcEN1cnJlbnRUaW1lLFxuICBwbGF5YmFja1JhdGU6IGFwcFBsYXliYWNrUmF0ZSxcbiAgbG9vcCxcbiAgdm9sdW1lOiBhcHBWb2x1bWUsXG4gIGF1ZGlvVHJhY2s6IGFwcEF1ZGlvVHJhY2ssXG4gIHRleHRUcmFjazogYXBwVGV4dFRyYWNrLFxuICB0aHVtYm5haWxzVXJsLFxuICBjb250cm9scyA9IHthdXRvaGlkZTogMzAwMH0sXG4gIG1hcmtzID0gW10sXG4gIC8vIFRPRE8gc2VjdGlvbklkXG4gIGludGwsXG4gIHNldHRpbmdzOiBhcHBTZXR0aW5ncyA9IGRlZmF1bHRTZXR0aW5ncyxcbiAgYmxvY2tpbmcsXG4gIHBsdWdpbnMgPSBbXSxcbiAgbW9kdWxlc0NvbmZpZyxcblxuICB1aVR5cGUgPSBpc0Rlc2t0b3AoKSA/ICdkZXNrdG9wJyA6ICdtb2JpbGUnLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIHVpTW9kZSA9ICdzdGFuZGFsb25lJyxcbiAgY2FzdDogY2FzdE9wdGlvbnMgPSAnY29tcGF0aWJsZScsXG4gIHNsb3RzLFxuICBzbG90UHJvcHMgPSB7fSxcbiAgb25FcnJvcixcbiAgb25QbGF5YmFja1N0YXRlQ2hhbmdlLFxuICBvbkJhY2ssXG4gIG9uQ2FzdCxcbiAgb25DaGFuZ2VOZXh0LFxuICBvbkNoYW5nZVByZXZpb3VzLFxuICBvbk9wZW5TZXR0aW5ncyxcbiAgb25DaGFuZ2VTZXR0aW5ncyxcbiAgb25QbGF5ZXJMb2FkZWQsXG4gIG9uQmxvY2tlZEF1dG9wbGF5LFxuICBvblBsYXlsb2dGaXJlZCxcbiAgLi4udmlkZW9Qcm9wc1xufSkgPT4ge1xuICBjb25zdCBjb21wb25lbnRzID0ge1xuICAgIFZvbHVtZUNvbnRyb2wsXG4gICAgQ2FzdFVpLFxuICAgIERpc3BsYXlUaW1lLFxuICAgIExpdmVCdXR0b24sXG4gICAgU2Vla2JhcixcbiAgICBTZXR0aW5ncyxcbiAgICAuLi5zbG90cyxcbiAgfVxuICBjb25zdCB2aWRlb1JlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IHBsYXllclJlZiA9IHVzZVJlZigpXG4gIGNvbnN0IGFkQ29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcmVmcyA9IHVzZVJlZih7fSlcbiAgLy8gVE9ETyBtb3ZlIFJXRCByZWxhdGVkIHRvIExheW91dFxuICBjb25zdCB7XG4gICAgY3VycmVudEJyZWFrcG9pbnQ6IHNpemUsXG4gICAgd2lkdGgsXG4gICAgb2JzZXJ2ZSxcbiAgfSA9IHVzZURpbWVuc2lvbnMoe1xuICAgIHBvbHlmaWxsOiBSZXNpemVPYnNlcnZlcixcbiAgICBicmVha3BvaW50czogc2l6ZXMsXG4gIH0pXG4gIGNvbnN0IFtpc1VzZXJBY3RpdmUsIHNldElzVXNlckFjdGl2ZV0gPSB1c2VTdGF0ZShcbiAgICB1aU1vZGUgPT09ICdzdGFuZGFsb25lJyA/IHRydWUgOiB2aWRlb1Byb3BzLmF1dG9wbGF5XG4gIClcbiAgY29uc3QgW3VzZXJGb2N1cywgc2V0VXNlckZvY3VzXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGFyZ2V0U3RhdGUsIHNldFRhcmdldFN0YXRlXSA9IHVzZVN0YXRlKCgpID0+ICh7XG4gICAgcGxheWJhY2tTdGF0ZTpcbiAgICAgIGFwcFBsYXliYWNrU3RhdGUgfHwgKHZpZGVvUHJvcHMuYXV0b3BsYXkgPyAncGxheWluZycgOiAncGF1c2VkJyksXG4gICAgY3VycmVudFRpbWU6IHN0YXJ0VGltZSxcbiAgfSkpXG4gIGNvbnN0IFtwbGF5YmFja1RpbWUsIHNldFBsYXliYWNrVGltZV0gPSB1c2VTdGF0ZSh7XG4gICAgY3VycmVudFRpbWU6IDAsXG4gICAgYnVmZmVyVGltZTogMCxcbiAgfSlcbiAgY29uc3QgdG9nZ2xlUGxheSA9IChvdmVycmlkZVN0YXRlLCB7dHJpZ2dlcmVkQnl9ID0ge30pID0+IHtcbiAgICBpZiAodGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZSAhPT0gb3ZlcnJpZGVTdGF0ZSkge1xuICAgICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBsYXliYWNrU3RhdGU6IG92ZXJyaWRlU3RhdGUgfHwgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgICBhbmltYXRpb246XG4gICAgICAgICAgdHJpZ2dlcmVkQnkgPT09ICd1c2VyLWFjdGlvbicgJiYgZmxpcFN0YXRlKHN0YXRlLnBsYXliYWNrU3RhdGUpLFxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXBwUGxheWJhY2tTdGF0ZSkge1xuICAgICAgdG9nZ2xlUGxheShhcHBQbGF5YmFja1N0YXRlKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrU3RhdGVdKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1aVR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB0b2dnbGVQbGF5KCdwYXVzZWQnKSlcbiAgICB9XG4gIH0sIFt1aVR5cGUsIHRhcmdldFN0YXRlLnBsYXliYWNrU3RhdGVdKVxuICBjb25zdCB1cGRhdGVQbGF5YmFja1RpbWUgPSBldmVudCA9PlxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShcbiAgICAgICgpID0+XG4gICAgICAgIChldmVudD8udHlwZSAhPT0gJ3RpbWV1cGRhdGUnIHx8IGlzQnVmZmVyZWQodmlkZW9SZWYuY3VycmVudCkpICYmXG4gICAgICAgIHNldFBsYXliYWNrVGltZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIC4uLmdldE1lZGlhVGltZSh2aWRlb1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICBwbGF5ZXI6IHBsYXllclJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcGx1Z2lucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oZXZlbnQ/LnR5cGUgPT09ICdkdXJhdGlvbmNoYW5nZScgJiYge1xuICAgICAgICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSlcbiAgICApXG4gIGNvbnN0IHNldFRhcmdldFRpbWUgPSB0aW1lID0+IHtcbiAgICBjb25zdCB0cmltbWVkID0gTWF0aC5taW4oXG4gICAgICB0aW1lLFxuICAgICAgdmlkZW9SZWYuY3VycmVudD8uaW5pdGlhbER1cmF0aW9uIHx8IEluZmluaXR5XG4gICAgKVxuICAgIHNldFRhcmdldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC8vIHNlZWsgdG8gMCByZXBlYXRlZGx5IGVkZ2UgY2FzZVxuICAgICAgY3VycmVudFRpbWU6IHN0YXRlLmN1cnJlbnRUaW1lICE9PSB0cmltbWVkID8gdHJpbW1lZCA6IHRyaW1tZWQgKyAwLjAxLFxuICAgIH0pKVxuICAgIHVwZGF0ZVBsYXliYWNrVGltZSgpXG4gIH1cbiAgY29uc3QgW3BsYXliYWNrU3RhdGUsIHNldFBsYXliYWNrU3RhdGVdID0gdXNlU3RhdGUoJ2luaXQnKVxuICBjb25zdCBbY2FzdFN0YXRlLCBzZXRDYXN0U3RhdGVdID0gdXNlU3RhdGUoJycpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcHBDdXJyZW50VGltZSA9PT0gJ251bWJlcicpIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWUgfHwgMClcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnb2JqZWN0JylcbiAgICAgIHNldFRhcmdldFRpbWUoYXBwQ3VycmVudFRpbWU/LnZhbHVlIHx8IDApXG4gIH0sIFthcHBDdXJyZW50VGltZV0pXG4gIGNvbnN0IFtlcnJvckRhdGEsIHNldEVycm9yRGF0YV0gPSB1c2VTdGF0ZSgpXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlYWN0RXZlbnQgPT4ge1xuICAgIG9uRXJyb3I/LihyZWFjdEV2ZW50Lm5hdGl2ZUV2ZW50KVxuICAgIGhhbmRsZUVycm9yKHJlYWN0RXZlbnQsIHtcbiAgICAgIG1lZGlhOiB2aWRlb1JlZi5jdXJyZW50LFxuICAgICAgZGlzcGxheUVycm9yOiBkYXRhID0+IHtcbiAgICAgICAgc2V0UGxheWJhY2tTdGF0ZSgnZXJyb3InKVxuICAgICAgICBzZXRFcnJvckRhdGEoY3VycmVudCA9PiAoY3VycmVudD8uY29kZSA/IGN1cnJlbnQgOiBkYXRhKSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBpc0xpdmUgPSBwbGF5YmFja1RpbWUuc3RyZWFtVHlwZSA9PT0gJ2xpdmUnXG4gIGNvbnN0IFtzZXR0aW5ncywgc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBzZWN0aW9uczogW10sXG4gICAgdmFsdWVzOiB7c3BlZWQ6IDF9LFxuICB9KSlcbiAgY29uc3QgZmV0Y2hTZXR0aW5ncyA9ICgpID0+IHtcbiAgICBpZiAoIXBsYXllclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc3BlZWRJdGVtcyA9IGFwcFNldHRpbmdzLnNwZWVkSXRlbXMgfHwgKGlzTGl2ZSA/IFtdIDogdW5kZWZpbmVkKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlcywgc2VjdGlvbnN9ID0gZ2V0U2V0dGluZ3NEYXRhKHtcbiAgICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgcXVhbGl0eSxcbiAgICAgICAgc3BlZWRJdGVtcyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcHJlZmVycmVkOiBjdXJyZW50LnByZWZlcnJlZCxcbiAgICAgICAgb3RoZXJTZWN0aW9uczogYXBwU2V0dGluZ3Muc2VjdGlvbnMsXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLCB2YWx1ZXMsIHNlY3Rpb25zfVxuICAgIH0pXG4gIH1cbiAgY29uc3QgbGFzdFN0YXRlID0gdXNlUmVmKHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGhhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2UgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnZXJyb3InKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25QbGF5YmFja1N0YXRlQ2hhbmdlPy4oZXZlbnQsIHN0YXRlKVxuICAgIC8vIHByZXZpb3VzbHkgVUkgcGxheWJhY2sgc3RhdGUgd2FzIHN5bmNlZCBvbmx5IHdoZW5cbiAgICAvLyBleGl0aW5nIGlPUyB2aWRlbyBvbmx5IGZ1bGxzY3JlZW4od2Via2l0ZW5kZnVsbHNjcmVlbilcbiAgICBpZiAoXG4gICAgICAvcGxheWluZ3xwYXVzZWQvLnRlc3Qoc3RhdGUpICYmXG4gICAgICAhKHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgYmxvY2tpbmcpICYmXG4gICAgICAhc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICApIHtcbiAgICAgIHRvZ2dsZVBsYXkoc3RhdGUpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ2VuZGVkJykge1xuICAgICAgdG9nZ2xlUGxheSgncGF1c2VkJylcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnbG9hZGluZycgJiYgbGFzdFN0YXRlLmN1cnJlbnQgIT09ICdpbml0Jykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0b2dnbGVQbGF5KCdwbGF5aW5nJyksIDEpXG4gICAgfVxuICAgIGlmIChzdGF0ZSA9PT0gJ3BsYXlpbmcnKSB7XG4gICAgICBzZXRJc1VzZXJBY3RpdmUodHJ1ZSlcbiAgICB9XG4gICAgaWYgKGxhc3RTdGF0ZS5jdXJyZW50ID09PSAnbG9hZGluZycpIHtcbiAgICAgIGZldGNoU2V0dGluZ3MoKVxuICAgIH1cbiAgICBsYXN0U3RhdGUuY3VycmVudCA9IHN0YXRlXG4gICAgc2V0UGxheWJhY2tTdGF0ZShzdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZVNldHRpbmdzID0gKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59ID0ge30pID0+IHtcbiAgICAvLyBUT0RPIGNvbnNpZGVyIG1lcmdlIGludG8gdXNlUmVkdWNlcj9cbiAgICBvbkNoYW5nZVNldHRpbmdzPy4oe25hbWUsIHZhbHVlfSlcbiAgICBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSlcbiAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIFtuYW1lXTogdmFsdWV9LFxuICAgICAgcHJlZmVycmVkOiB7Li4uY3VycmVudC5wcmVmZXJyZWQsIFtuYW1lXTogdmFsdWV9LFxuICAgIH0pKVxuICAgIGlmICgha2VlcE9wZW4pIHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICB9XG4gIH1cbiAgY29uc3Qgb3BlblNldHRpbmdzID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IGFuaW1hdGlvbkZyYW1lID1cbiAgICAgIHVzZXJGb2N1cyAhPT0gJ3NldHRpbmdzJyAmJlxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgb25PcGVuU2V0dGluZ3M/LihldmVudCwgc2V0dGluZ3MpXG4gICAgICAgIC8vIEluIGlPUyBTYWZhcmksIHdlIG5lZWQgdG8gdXBkYXRlIHNldHRpbmdzIGRhdGFcbiAgICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgICB9KVxuICAgIHNldFVzZXJGb2N1cyhjdXJyZW50ID0+IChjdXJyZW50ID09PSAnc2V0dGluZ3MnID8gJycgOiAnc2V0dGluZ3MnKSlcbiAgICByZXR1cm4gYW5pbWF0aW9uRnJhbWVcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1JhdGUgPiAwKSB7XG4gICAgICBzZXRTZXR0aW5ncyhjdXJyZW50ID0+ICh7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHZhbHVlczogey4uLmN1cnJlbnQudmFsdWVzLCBzcGVlZDogYXBwUGxheWJhY2tSYXRlfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfSwgW2FwcFBsYXliYWNrUmF0ZV0pXG5cbiAgY29uc3QgcXVhbGl0eU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFF1YWxpdHlPcHRpb25zKHNldHRpbmdzKSxcbiAgICBbc2V0dGluZ3MudmFsdWVzLnF1YWxpdHldXG4gIClcbiAgY29uc3Qgdmlld01vZGUgPSB1c2VMaW5rU3RhdGUodXBkYXRlID0+XG4gICAgb25WaWV3TW9kZUNoYW5nZSh2aWRlb1JlZi5jdXJyZW50LCB1cGRhdGUpXG4gIClcbiAgY29uc3Qgc291cmNlT3ZlcnJpZGUgPSB1c2VMaW5rU3RhdGUoXG4gICAgYXN5bmMgdXBkYXRlID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgIHNvdXJjZSAmJiAoYXdhaXQgcXVhbGl0eS5yZXdyaXRlTWFuaWZlc3Q/Lihzb3VyY2UsIHF1YWxpdHlPcHRpb25zKSlcbiAgICAgIHVwZGF0ZShyZXN1bHQgfHwgc291cmNlKVxuICAgIH0sXG4gICAgW3NvdXJjZSwgcXVhbGl0eU9wdGlvbnNdXG4gIClcbiAgY29uc3Qgd2FpdGluZyA9IC9lbXB0aWVkfGxvYWRpbmd8YnVmZmVyaW5nLy50ZXN0KHBsYXliYWNrU3RhdGUpXG4gIGNvbnN0IGFjdGl2ZVBsYXliYWNrID1cbiAgICBwbGF5YmFja1N0YXRlID09PSAncGxheWluZycgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ3dhaXRpbmcnXG4gIGNvbnN0IHtcbiAgICBtb2RlOiBhdXRvSGlkZU1vZGUsXG4gICAgb25DbGljayxcbiAgICBvbk1vdXNlTW92ZSxcbiAgfSA9IHVzZUF1dG9IaWRlKHtcbiAgICBwaW5uZWQ6ICFjb250cm9scy5hdXRvaGlkZSB8fCB3YWl0aW5nIHx8ICFhY3RpdmVQbGF5YmFjayB8fCB1c2VyRm9jdXMsXG4gICAgdGFwVG9IaWRlOiB1aVR5cGUgPT09ICdtb2JpbGUnLFxuICAgIGhpZGVUaW1lTXM6IGNvbnRyb2xzLmF1dG9oaWRlLFxuICB9KVxuICBjb25zdCBtb2RlID1cbiAgICB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJ1xuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiBjb250cm9scy5hdXRvaGlkZVxuICAgICAgPyBhdXRvSGlkZU1vZGVcbiAgICAgIDogY29udHJvbHNcbiAgICAgID8gJ3Nob3duJ1xuICAgICAgOiAnaGlkZGVuJ1xuICBjb25zdCBjb250cm9sc0Rpc3BsYXkgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdzZWVrYmFyLW9ubHknXG4gICAgICA6IGNvbnRyb2xzID09PSAndGl0bGUtb25seScgfHwgcGxheWJhY2tTdGF0ZSA9PT0gJ2VtcHRpZWQnXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IG1vZGVcbiAgY29uc3Qgc2hvdWxkSGlkZVBhbmVscyA9XG4gICAgKGNvbnRyb2xzID09PSAnbm8tcGFuZWwnIHx8IGNvbnRyb2xzRGlzcGxheSA9PT0gJ2hpZGRlbicpICYmIHVzZXJGb2N1c1xuICBjb25zdCBoYXZlUGxheVBhbmVsID1cbiAgICAhYmxvY2tpbmcgJiZcbiAgICBoYXZlUG9pbnRlcigpICYmXG4gICAgdWlUeXBlID09PSAnZGVza3RvcCcgJiZcbiAgICAhd2FpdGluZyAmJlxuICAgICEvdm9sdW1lfCcnLy50ZXN0KHVzZXJGb2N1cykgJiZcbiAgICAhL3RpdGxlLW9ubHl8bm8tcGFuZWwvLnRlc3QoY29udHJvbHMpICYmXG4gICAgKGNvbnRyb2xzLmF1dG9oaWRlIHx8IG1vZGUgPT09ICdzaG93bicpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdWxkSGlkZVBhbmVscykge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfSwgW3Nob3VsZEhpZGVQYW5lbHNdKVxuICBjb25zdCB7c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX0gPSBsaW5rTWVkaWFWb2x1bWUoKCkgPT4gKHtcbiAgICB2aWRlbzogdmlkZW9SZWYuY3VycmVudCxcbiAgICBnZXRQbGF5ZXI6ICgpID0+IHBsYXllclJlZi5jdXJyZW50LFxuICB9KSlcbiAgY29uc3QgY2hhbmdlUHJldmlvdXMgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VQcmV2aW91cyhldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG4gIGNvbnN0IGNoYW5nZU5leHQgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VOZXh0KGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cblxuICB1c2VFZmZlY3QoZmV0Y2hTZXR0aW5ncywgW2FwcFNldHRpbmdzXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgYWRDb250YWluZXIgc2hvdWxkIGJlIHNldCBiZWZvcmUgYGxvYWRgIGJlY2F1c2UgSW1hRGFpLmxvYWQgbmVlZHMgaXQuXG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uc2V0QWRDb250YWluZXI/LihhZENvbnRhaW5lclJlZi5jdXJyZW50KSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaENoYXB0ZXJFdmVudHMoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgY2hhcHRlcnMsXG4gICAgICAgIGdldFRpbWU6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUsXG4gICAgICB9KSxcbiAgICBbY2hhcHRlcnNdXG4gIClcblxuICBjb25zdCBpc0VuZCA9IHBsYXliYWNrU3RhdGUgPT09ICdlbmRlZCdcbiAgY29uc3QgY2FuU2VlayA9ICFpc0VuZCAmJiBwbGF5YmFja1RpbWUuZHVyYXRpb24gPiAwXG4gIGNvbnN0IGRlcml2ZWRQbGF5YmFja1N0YXRlID1cbiAgICAodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgfHwgc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICAgID8gJ3BhdXNlZCdcbiAgICAgIDogdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZVxuICBjb25zdCBhY3RpdmVUaHVtYm5haWxzVXJsID1cbiAgICAoIXVzZXJGb2N1cyB8fCB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJykgJiZcbiAgICAoZ2V0VGh1bWJuYWlsc1VybChzb3VyY2UpIHx8IHRodW1ibmFpbHNVcmwpXG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHtcbiAgICAnLS1wbGF5aW5nJzogcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnID8gJzEnIDogJzAnLFxuICB9XG4gIGNvbnN0IG9uUmV3aW5kID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcbiAgY29uc3Qgc2VsZWN0ZWRBdWRpb1RyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5hdWRpbyB8fCBhcHBBdWRpb1RyYWNrXG4gIGNvbnN0IHNlbGVjdGVkVGV4dFRyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5zdWJ0aXRsZXMgfHwgYXBwVGV4dFRyYWNrXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW9UcmFjaz17c2VsZWN0ZWRBdWRpb1RyYWNrfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZWxlY3RlZFRleHRUcmFja31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
|
|
8772
|
+
default: /*#__PURE__*/css$1(LanguageMenu.styles, process.env.NODE_ENV === "production" ? "" : ";label:default;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUVXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgdGl0bGU9XCLlrZfluZXjg7vpn7Plo7DjgpLliIfjgormm7/jgYjjgotcIiBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICAgIClcbiAgKVxufVxuXG5jb25zdCBQcmVtaXVtUGxheWVyID0gKHtcbiAgc291cmNlLFxuICBzdGFydFRpbWUsXG4gIHF1YWxpdHkgPSB7fSxcbiAgdGl0bGUsXG4gIG1ldGFkYXRhLFxuICBjaGFubmVsVGl0bGUsXG4gIGNoYXB0ZXJzLFxuICBwbGF5YmFja1N0YXRlOiBhcHBQbGF5YmFja1N0YXRlLFxuICBjdXJyZW50VGltZTogYXBwQ3VycmVudFRpbWUsXG4gIHBsYXliYWNrUmF0ZTogYXBwUGxheWJhY2tSYXRlLFxuICBsb29wLFxuICB2b2x1bWU6IGFwcFZvbHVtZSxcbiAgYXVkaW9UcmFjazogYXBwQXVkaW9UcmFjayxcbiAgdGV4dFRyYWNrOiBhcHBUZXh0VHJhY2ssXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgICBvdGhlclNlY3Rpb25zOiBhcHBTZXR0aW5ncy5zZWN0aW9ucyxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnY2xvc2VkJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ21lbnUnID8gJycgOiBjdXJyZW50KSlcbiAgICAgIH1cbiAgICB9KVxuICAsIFtdKVxuICBjb25zdCB7c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX0gPSBsaW5rTWVkaWFWb2x1bWUoKCkgPT4gKHtcbiAgICB2aWRlbzogdmlkZW9SZWYuY3VycmVudCxcbiAgICBnZXRQbGF5ZXI6ICgpID0+IHBsYXllclJlZi5jdXJyZW50LFxuICB9KSlcbiAgY29uc3QgY2hhbmdlUHJldmlvdXMgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VQcmV2aW91cyhldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG4gIGNvbnN0IGNoYW5nZU5leHQgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VOZXh0KGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cblxuICB1c2VFZmZlY3QoZmV0Y2hTZXR0aW5ncywgW2FwcFNldHRpbmdzXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgYWRDb250YWluZXIgc2hvdWxkIGJlIHNldCBiZWZvcmUgYGxvYWRgIGJlY2F1c2UgSW1hRGFpLmxvYWQgbmVlZHMgaXQuXG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uc2V0QWRDb250YWluZXI/LihhZENvbnRhaW5lclJlZi5jdXJyZW50KSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaENoYXB0ZXJFdmVudHMoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgY2hhcHRlcnMsXG4gICAgICAgIGdldFRpbWU6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUsXG4gICAgICB9KSxcbiAgICBbY2hhcHRlcnNdXG4gIClcblxuICBjb25zdCBpc0VuZCA9IHBsYXliYWNrU3RhdGUgPT09ICdlbmRlZCdcbiAgY29uc3QgY2FuU2VlayA9ICFpc0VuZCAmJiBwbGF5YmFja1RpbWUuZHVyYXRpb24gPiAwXG4gIGNvbnN0IGRlcml2ZWRQbGF5YmFja1N0YXRlID1cbiAgICAodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgfHwgc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICAgID8gJ3BhdXNlZCdcbiAgICAgIDogdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZVxuICBjb25zdCBhY3RpdmVUaHVtYm5haWxzVXJsID1cbiAgICAoIXVzZXJGb2N1cyB8fCB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJykgJiZcbiAgICAoZ2V0VGh1bWJuYWlsc1VybChzb3VyY2UpIHx8IHRodW1ibmFpbHNVcmwpXG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHtcbiAgICAnLS1wbGF5aW5nJzogcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnID8gJzEnIDogJzAnLFxuICB9XG4gIGNvbnN0IG9uUmV3aW5kID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcbiAgY29uc3Qgc2VsZWN0ZWRBdWRpb1RyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5hdWRpbyB8fCBhcHBBdWRpb1RyYWNrXG4gIGNvbnN0IHNlbGVjdGVkVGV4dFRyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5zdWJ0aXRsZXMgfHwgYXBwVGV4dFRyYWNrXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW9UcmFjaz17c2VsZWN0ZWRBdWRpb1RyYWNrfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZWxlY3RlZFRleHRUcmFja31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */"),
|
|
8773
|
+
desktop: /*#__PURE__*/css$1(LanguageMenu.styles, LanguageMenu.desktopStyles, process.env.NODE_ENV === "production" ? "" : ";label:desktop;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByZW1pdW1QbGF5ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0VXIiwiZmlsZSI6IlByZW1pdW1QbGF5ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtjc3N9IGZyb20gJ0BlbW90aW9uL2NzcydcbmltcG9ydCB1c2VEaW1lbnNpb25zIGZyb20gJ3JlYWN0LWNvb2wtZGltZW5zaW9ucydcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJ9IGZyb20gJ0BqdWdnbGUvcmVzaXplLW9ic2VydmVyJ1xuXG5pbXBvcnQge2hhbmRsZUVycm9yfSBmcm9tICdwbGF5ZXJDb3JlL2Vycm9ycydcbmltcG9ydCB7b259IGZyb20gJ3V0aWwvZXZlbnRzJ1xuaW1wb3J0IHtoYXZlUG9pbnRlciwgaXNEZXNrdG9wfSBmcm9tICd1dGlsL2Vudmlyb25tZW50J1xuaW1wb3J0IG11bHRpUmVmIGZyb20gJ3V0aWwvbXVsdGlSZWYnXG5pbXBvcnQge29uVmlld01vZGVDaGFuZ2UsIHRvZ2dsZUZ1bGxzY3JlZW59IGZyb20gJ3V0aWwvdmlld01vZGVzJ1xuaW1wb3J0IHt1c2VBdXRvSGlkZX0gZnJvbSAnaG9va3MnXG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAnY29udGV4dC9JMThuJ1xuaW1wb3J0IHtnZXRNZWRpYVRpbWUsIGlzQnVmZmVyZWR9IGZyb20gJ3BsYXllckNvcmUvbWVkaWFCaW5kaW5ncydcbmltcG9ydCBFcnJvciBmcm9tICdwbGF5ZXJVaS9FcnJvcidcbmltcG9ydCBMYXlvdXQgZnJvbSAncGxheWVyVWkvRGVmYXVsdExheW91dCdcbmltcG9ydCB7XG4gIEJ1dHRvbixcbiAgTGl2ZUJ1dHRvbixcbiAgRnVsbHNjcmVlbkJ1dHRvbixcbiAgUGxheUJ1dHRvbixcbiAgRm9yd2FyZEJ1dHRvbixcbn0gZnJvbSAncGxheWVyVWkvYnV0dG9ucydcbmltcG9ydCBTZWVrYmFyIGZyb20gJ3BsYXllclVpL1NlZWtiYXInXG5pbXBvcnQgRGlzcGxheVRpbWUgZnJvbSAncGxheWVyVWkvRGlzcGxheVRpbWUnXG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAncGxheWVyVWkvTG9hZGluZ1NwaW5uZXInXG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAncGxheWVyVWkvQmFja2Ryb3AnXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSAncGxheWVyVWkvU2V0dGluZ3MnXG5pbXBvcnQgT3ZlcmxheVBhbmVsIGZyb20gJ3BsYXllclVpL092ZXJsYXlQYW5lbCdcbmltcG9ydCBMYW5ndWFnZU1lbnUgZnJvbSAncGxheWVyVWkvTGFuZ3VhZ2VNZW51J1xuaW1wb3J0IFBsYXlQYW5lbCBmcm9tICdwbGF5ZXJVaS9QbGF5UGFuZSdcbmltcG9ydCBWb2x1bWVDb250cm9sIGZyb20gJ2NvbXBvbmVudC9Wb2x1bWVDb250cm9sJ1xuaW1wb3J0IENhc3RVaSBmcm9tICdjYXN0L0Nhc3RVaSdcbmltcG9ydCB7bGlua0Nhc3R9IGZyb20gJ2Nhc3QvZnJhbWV3b3JrJ1xuaW1wb3J0IHtDYXN0U3RhdGV9IGZyb20gJ0VudW0nXG5pbXBvcnQge2Rpc3BhdGNoQ2hhcHRlckV2ZW50c30gZnJvbSAnLi90aW1lbGluZSdcbmltcG9ydCBWaWRlbyBmcm9tICcuLi9WaWRlbydcbmltcG9ydCB7Z2V0TGFuZ3VhZ2VPcHRpb25zLCBnZXRRdWFsaXR5T3B0aW9ucywgZ2V0U2V0dGluZ3NEYXRhfSBmcm9tICcuL3NldHRpbmdzJ1xuaW1wb3J0IHtsaW5rTWVkaWFWb2x1bWUsIHN5bmNWb2x1bWV9IGZyb20gJy4vdm9sdW1lJ1xuaW1wb3J0IFNlZWtQcmV2aWV3IGZyb20gJy4vU2Vla1ByZXZpZXcnXG5cbmNvbnN0IHNpemVzID0ge1xuICAnc21hbGwtZW1iZWQnOiAyMDAsXG4gIGVtYmVkOiA0MDAsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiA2MDAsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogOTAwLFxuICBkZXNrdG9wOiAxMjAwLFxufVxuXG5jb25zdCB1c2VMaW5rU3RhdGUgPSAocmVxdWVzdCwgZGVwZW5kZW5jaWVzID0gW10pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSgpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVxdWVzdChzZXRTdGF0ZSlcbiAgfSwgZGVwZW5kZW5jaWVzKVxuICByZXR1cm4gc3RhdGVcbn1cblxuY29uc3QgZmxpcFN0YXRlID0gc3RhdGUgPT4gKHN0YXRlID09PSAncGxheWluZycgPyAncGF1c2VkJyA6ICdwbGF5aW5nJylcblxuLy8gRklYTUU6IHRvbyBmZXcgbGluZXMgdG8gc3BsaXQgYSBmaWxlLCBsb29raW5nIGEgYmV0dGVyIHBsYWNlXG5jb25zdCBnZXRUaHVtYm5haWxzVXJsID0gc291cmNlID0+XG4gIFtdLmNvbmNhdChzb3VyY2UpLmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICd0aHVtYm5haWwnKT8uc3JjXG5cbmNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9XG5cbmNvbnN0IHNob3VsZFBhdXNlID0gKHt1c2VyRm9jdXMsIHVpVHlwZX0pID0+XG4gICh1aVR5cGUgPT09ICdtb2JpbGUnICYmIC9zZXR0aW5nc3xjaGFwdGVyLWxpc3QvLnRlc3QodXNlckZvY3VzKSkgfHxcbiAgL2Jsb2NraW5nfHNlZWtiYXJ8c2hhcmUtaW5uZXIvLnRlc3QodXNlckZvY3VzKVxuXG4vLyBUT0RPIGV4dHJhY3QgdG8gc29tZXdoZXJlIGVsc2VcbmNvbnN0IG1lbnVDbGFzc2VzID0ge1xuICBkZWZhdWx0OiBjc3MoTGFuZ3VhZ2VNZW51LnN0eWxlcyksXG4gIGRlc2t0b3A6IGNzcyhMYW5ndWFnZU1lbnUuc3R5bGVzLCBMYW5ndWFnZU1lbnUuZGVza3RvcFN0eWxlcyksXG59XG5cbmNvbnN0IExhbmd1YWdlU2V0dGluZ3MgPSAoe1xuICB1aVR5cGUsXG4gIGF1ZGlvVHJhY2tzID0gW10sXG4gIHRleHRUcmFja3MgPSBbXSxcbiAgZ2V0UGxheWVyLFxuICBvbkNoYW5nZSxcbiAgc2xvdHMgPSB7TGFuZ3VhZ2VNZW51fSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZ2V0TGFuZ3VhZ2VPcHRpb25zKGdldFBsYXllcigpLCB7YXVkaW9UcmFja3MsIHRleHRUcmFja3N9KVxuICByZXR1cm4gKFxuICAgIGF1ZGlvVHJhY2tzLmxlbmd0aCA+IDAgJiZcbiAgICB0ZXh0VHJhY2tzLmxlbmd0aCA+IDAgJiYgKFxuICAgIDxPdmVybGF5UGFuZWwgdGl0bGU9XCLlrZfluZXjg7vpn7Plo7DjgpLliIfjgormm7/jgYjjgotcIiBidXR0b25JY29uPVwic3VidGl0bGVcIj5cbiAgICAgIDxzbG90cy5MYW5ndWFnZU1lbnVcbiAgICAgICAgdWlUeXBlPXt1aVR5cGV9XG4gICAgICAgIGNsYXNzZXM9e21lbnVDbGFzc2VzfVxuICAgICAgICBzZWN0aW9uT3B0aW9ucz17W29wdGlvbnMuYXVkaW9UcmFja3MsIG9wdGlvbnMudGV4dFRyYWNrc119XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgIDwvT3ZlcmxheVBhbmVsPlxuICAgIClcbiAgKVxufVxuXG5jb25zdCBQcmVtaXVtUGxheWVyID0gKHtcbiAgc291cmNlLFxuICBzdGFydFRpbWUsXG4gIHF1YWxpdHkgPSB7fSxcbiAgdGl0bGUsXG4gIG1ldGFkYXRhLFxuICBjaGFubmVsVGl0bGUsXG4gIGNoYXB0ZXJzLFxuICBwbGF5YmFja1N0YXRlOiBhcHBQbGF5YmFja1N0YXRlLFxuICBjdXJyZW50VGltZTogYXBwQ3VycmVudFRpbWUsXG4gIHBsYXliYWNrUmF0ZTogYXBwUGxheWJhY2tSYXRlLFxuICBsb29wLFxuICB2b2x1bWU6IGFwcFZvbHVtZSxcbiAgYXVkaW9UcmFjazogYXBwQXVkaW9UcmFjayxcbiAgdGV4dFRyYWNrOiBhcHBUZXh0VHJhY2ssXG4gIHRodW1ibmFpbHNVcmwsXG4gIGNvbnRyb2xzID0ge2F1dG9oaWRlOiAzMDAwfSxcbiAgbWFya3MgPSBbXSxcbiAgLy8gVE9ETyBzZWN0aW9uSWRcbiAgaW50bCxcbiAgc2V0dGluZ3M6IGFwcFNldHRpbmdzID0gZGVmYXVsdFNldHRpbmdzLFxuICBibG9ja2luZyxcbiAgcGx1Z2lucyA9IFtdLFxuICBtb2R1bGVzQ29uZmlnLFxuXG4gIHVpVHlwZSA9IGlzRGVza3RvcCgpID8gJ2Rlc2t0b3AnIDogJ21vYmlsZScsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgdWlNb2RlID0gJ3N0YW5kYWxvbmUnLFxuICBjYXN0OiBjYXN0T3B0aW9ucyA9ICdjb21wYXRpYmxlJyxcbiAgc2xvdHMsXG4gIHNsb3RQcm9wcyA9IHt9LFxuICBvbkVycm9yLFxuICBvblBsYXliYWNrU3RhdGVDaGFuZ2UsXG4gIG9uQmFjayxcbiAgb25DYXN0LFxuICBvbkNoYW5nZU5leHQsXG4gIG9uQ2hhbmdlUHJldmlvdXMsXG4gIG9uT3BlblNldHRpbmdzLFxuICBvbkNoYW5nZVNldHRpbmdzLFxuICBvblBsYXllckxvYWRlZCxcbiAgb25CbG9ja2VkQXV0b3BsYXksXG4gIG9uUGxheWxvZ0ZpcmVkLFxuICAuLi52aWRlb1Byb3BzXG59KSA9PiB7XG4gIGNvbnN0IGNvbXBvbmVudHMgPSB7XG4gICAgVm9sdW1lQ29udHJvbCxcbiAgICBDYXN0VWksXG4gICAgRGlzcGxheVRpbWUsXG4gICAgTGl2ZUJ1dHRvbixcbiAgICBTZWVrYmFyLFxuICAgIFNldHRpbmdzLFxuICAgIC4uLnNsb3RzLFxuICB9XG4gIGNvbnN0IHZpZGVvUmVmID0gdXNlUmVmKClcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgcGxheWVyUmVmID0gdXNlUmVmKClcbiAgY29uc3QgYWRDb250YWluZXJSZWYgPSB1c2VSZWYoKVxuICBjb25zdCByZWZzID0gdXNlUmVmKHt9KVxuICAvLyBUT0RPIG1vdmUgUldEIHJlbGF0ZWQgdG8gTGF5b3V0XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50QnJlYWtwb2ludDogc2l6ZSxcbiAgICB3aWR0aCxcbiAgICBvYnNlcnZlLFxuICB9ID0gdXNlRGltZW5zaW9ucyh7XG4gICAgcG9seWZpbGw6IFJlc2l6ZU9ic2VydmVyLFxuICAgIGJyZWFrcG9pbnRzOiBzaXplcyxcbiAgfSlcbiAgY29uc3QgW2lzVXNlckFjdGl2ZSwgc2V0SXNVc2VyQWN0aXZlXSA9IHVzZVN0YXRlKFxuICAgIHVpTW9kZSA9PT0gJ3N0YW5kYWxvbmUnID8gdHJ1ZSA6IHZpZGVvUHJvcHMuYXV0b3BsYXlcbiAgKVxuICBjb25zdCBbdXNlckZvY3VzLCBzZXRVc2VyRm9jdXNdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt0YXJnZXRTdGF0ZSwgc2V0VGFyZ2V0U3RhdGVdID0gdXNlU3RhdGUoKCkgPT4gKHtcbiAgICBwbGF5YmFja1N0YXRlOlxuICAgICAgYXBwUGxheWJhY2tTdGF0ZSB8fCAodmlkZW9Qcm9wcy5hdXRvcGxheSA/ICdwbGF5aW5nJyA6ICdwYXVzZWQnKSxcbiAgICBjdXJyZW50VGltZTogc3RhcnRUaW1lLFxuICB9KSlcbiAgY29uc3QgW3BsYXliYWNrVGltZSwgc2V0UGxheWJhY2tUaW1lXSA9IHVzZVN0YXRlKHtcbiAgICBjdXJyZW50VGltZTogMCxcbiAgICBidWZmZXJUaW1lOiAwLFxuICB9KVxuICBjb25zdCB0b2dnbGVQbGF5ID0gKG92ZXJyaWRlU3RhdGUsIHt0cmlnZ2VyZWRCeX0gPSB7fSkgPT4ge1xuICAgIGlmICh0YXJnZXRTdGF0ZS5wbGF5YmFja1N0YXRlICE9PSBvdmVycmlkZVN0YXRlKSB7XG4gICAgICBzZXRUYXJnZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcGxheWJhY2tTdGF0ZTogb3ZlcnJpZGVTdGF0ZSB8fCBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICAgIGFuaW1hdGlvbjpcbiAgICAgICAgICB0cmlnZ2VyZWRCeSA9PT0gJ3VzZXItYWN0aW9uJyAmJiBmbGlwU3RhdGUoc3RhdGUucGxheWJhY2tTdGF0ZSksXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcHBQbGF5YmFja1N0YXRlKSB7XG4gICAgICB0b2dnbGVQbGF5KGFwcFBsYXliYWNrU3RhdGUpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tTdGF0ZV0pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVpVHlwZSA9PT0gJ21vYmlsZScpIHtcbiAgICAgIG9uKGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScsICgpID0+IHRvZ2dsZVBsYXkoJ3BhdXNlZCcpKVxuICAgIH1cbiAgfSwgW3VpVHlwZSwgdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZV0pXG4gIGNvbnN0IHVwZGF0ZVBsYXliYWNrVGltZSA9IGV2ZW50ID0+XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxuICAgICAgKCkgPT5cbiAgICAgICAgKGV2ZW50Py50eXBlICE9PSAndGltZXVwZGF0ZScgfHwgaXNCdWZmZXJlZCh2aWRlb1JlZi5jdXJyZW50KSkgJiZcbiAgICAgICAgc2V0UGxheWJhY2tUaW1lKHN0YXRlID0+ICh7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgLi4uZ2V0TWVkaWFUaW1lKHZpZGVvUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBsYXllcjogcGxheWVyUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBwbHVnaW5zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihldmVudD8udHlwZSA9PT0gJ2R1cmF0aW9uY2hhbmdlJyAmJiB7XG4gICAgICAgICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgIClcbiAgY29uc3Qgc2V0VGFyZ2V0VGltZSA9IHRpbWUgPT4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBNYXRoLm1pbihcbiAgICAgIHRpbWUsXG4gICAgICB2aWRlb1JlZi5jdXJyZW50Py5pbml0aWFsRHVyYXRpb24gfHwgSW5maW5pdHlcbiAgICApXG4gICAgc2V0VGFyZ2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLy8gc2VlayB0byAwIHJlcGVhdGVkbHkgZWRnZSBjYXNlXG4gICAgICBjdXJyZW50VGltZTogc3RhdGUuY3VycmVudFRpbWUgIT09IHRyaW1tZWQgPyB0cmltbWVkIDogdHJpbW1lZCArIDAuMDEsXG4gICAgfSkpXG4gICAgdXBkYXRlUGxheWJhY2tUaW1lKClcbiAgfVxuICBjb25zdCBbcGxheWJhY2tTdGF0ZSwgc2V0UGxheWJhY2tTdGF0ZV0gPSB1c2VTdGF0ZSgnaW5pdCcpXG4gIGNvbnN0IFtjYXN0U3RhdGUsIHNldENhc3RTdGF0ZV0gPSB1c2VTdGF0ZSgnJylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGFwcEN1cnJlbnRUaW1lID09PSAnbnVtYmVyJykgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZSB8fCAwKVxuICAgIGlmICh0eXBlb2YgYXBwQ3VycmVudFRpbWUgPT09ICdvYmplY3QnKVxuICAgICAgc2V0VGFyZ2V0VGltZShhcHBDdXJyZW50VGltZT8udmFsdWUgfHwgMClcbiAgfSwgW2FwcEN1cnJlbnRUaW1lXSlcbiAgY29uc3QgW2Vycm9yRGF0YSwgc2V0RXJyb3JEYXRhXSA9IHVzZVN0YXRlKClcbiAgY29uc3QgZXJyb3JIYW5kbGVyID0gcmVhY3RFdmVudCA9PiB7XG4gICAgb25FcnJvcj8uKHJlYWN0RXZlbnQubmF0aXZlRXZlbnQpXG4gICAgaGFuZGxlRXJyb3IocmVhY3RFdmVudCwge1xuICAgICAgbWVkaWE6IHZpZGVvUmVmLmN1cnJlbnQsXG4gICAgICBkaXNwbGF5RXJyb3I6IGRhdGEgPT4ge1xuICAgICAgICBzZXRQbGF5YmFja1N0YXRlKCdlcnJvcicpXG4gICAgICAgIHNldEVycm9yRGF0YShjdXJyZW50ID0+IChjdXJyZW50Py5jb2RlID8gY3VycmVudCA6IGRhdGEpKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IGlzTGl2ZSA9IHBsYXliYWNrVGltZS5zdHJlYW1UeXBlID09PSAnbGl2ZSdcbiAgY29uc3QgW3NldHRpbmdzLCBzZXRTZXR0aW5nc10gPSB1c2VTdGF0ZSgoKSA9PiAoe1xuICAgIHNlY3Rpb25zOiBbXSxcbiAgICB2YWx1ZXM6IHtzcGVlZDogMX0sXG4gIH0pKVxuICBjb25zdCBmZXRjaFNldHRpbmdzID0gKCkgPT4ge1xuICAgIGlmICghcGxheWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzcGVlZEl0ZW1zID0gYXBwU2V0dGluZ3Muc3BlZWRJdGVtcyB8fCAoaXNMaXZlID8gW10gOiB1bmRlZmluZWQpXG4gICAgc2V0U2V0dGluZ3MoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCB7dmFsdWVzLCBzZWN0aW9uc30gPSBnZXRTZXR0aW5nc0RhdGEoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgcGxheWVyOiBwbGF5ZXJSZWYuY3VycmVudCxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBxdWFsaXR5LFxuICAgICAgICBzcGVlZEl0ZW1zLFxuICAgICAgICBsb29wLFxuICAgICAgICBwcmVmZXJyZWQ6IGN1cnJlbnQucHJlZmVycmVkLFxuICAgICAgICBvdGhlclNlY3Rpb25zOiBhcHBTZXR0aW5ncy5zZWN0aW9ucyxcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge3ByZWZlcnJlZDogY3VycmVudC5wcmVmZXJyZWQsIHZhbHVlcywgc2VjdGlvbnN9XG4gICAgfSlcbiAgfVxuICBjb25zdCBsYXN0U3RhdGUgPSB1c2VSZWYocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgaGFuZGxlUGxheWJhY2tTdGF0ZUNoYW5nZSA9IChldmVudCwgc3RhdGUpID0+IHtcbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdlcnJvcicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U/LihldmVudCwgc3RhdGUpXG4gICAgLy8gcHJldmlvdXNseSBVSSBwbGF5YmFjayBzdGF0ZSB3YXMgc3luY2VkIG9ubHkgd2hlblxuICAgIC8vIGV4aXRpbmcgaU9TIHZpZGVvIG9ubHkgZnVsbHNjcmVlbih3ZWJraXRlbmRmdWxsc2NyZWVuKVxuICAgIGlmIChcbiAgICAgIC9wbGF5aW5nfHBhdXNlZC8udGVzdChzdGF0ZSkgJiZcbiAgICAgICEodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgJiZcbiAgICAgICFzaG91bGRQYXVzZSh7dXNlckZvY3VzLCB1aVR5cGV9KVxuICAgICkge1xuICAgICAgdG9nZ2xlUGxheShzdGF0ZSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnZW5kZWQnKSB7XG4gICAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdsb2FkaW5nJyAmJiBsYXN0U3RhdGUuY3VycmVudCAhPT0gJ2luaXQnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRvZ2dsZVBsYXkoJ3BsYXlpbmcnKSwgMSlcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIHNldElzVXNlckFjdGl2ZSh0cnVlKVxuICAgIH1cbiAgICBpZiAobGFzdFN0YXRlLmN1cnJlbnQgPT09ICdsb2FkaW5nJykge1xuICAgICAgZmV0Y2hTZXR0aW5ncygpXG4gICAgfVxuICAgIGxhc3RTdGF0ZS5jdXJyZW50ID0gc3RhdGVcbiAgICBzZXRQbGF5YmFja1N0YXRlKHN0YXRlKVxuICB9XG5cbiAgY29uc3QgY2hhbmdlU2V0dGluZ3MgPSAobmFtZSwgdmFsdWUsIHtrZWVwT3Blbn0gPSB7fSkgPT4ge1xuICAgIC8vIFRPRE8gY29uc2lkZXIgbWVyZ2UgaW50byB1c2VSZWR1Y2VyP1xuICAgIG9uQ2hhbmdlU2V0dGluZ3M/Lih7bmFtZSwgdmFsdWV9KVxuICAgIHNldFRhcmdldFRpbWUocGxheWJhY2tUaW1lLmN1cnJlbnRUaW1lKVxuICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICB2YWx1ZXM6IHsuLi5jdXJyZW50LnZhbHVlcywgW25hbWVdOiB2YWx1ZX0sXG4gICAgICBwcmVmZXJyZWQ6IHsuLi5jdXJyZW50LnByZWZlcnJlZCwgW25hbWVdOiB2YWx1ZX0sXG4gICAgfSkpXG4gICAgaWYgKCFrZWVwT3Blbikge1xuICAgICAgc2V0VXNlckZvY3VzKCcnKVxuICAgIH1cbiAgfVxuICBjb25zdCBvcGVuU2V0dGluZ3MgPSBldmVudCA9PiB7XG4gICAgY29uc3QgYW5pbWF0aW9uRnJhbWUgPVxuICAgICAgdXNlckZvY3VzICE9PSAnc2V0dGluZ3MnICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBvbk9wZW5TZXR0aW5ncz8uKGV2ZW50LCBzZXR0aW5ncylcbiAgICAgICAgLy8gSW4gaU9TIFNhZmFyaSwgd2UgbmVlZCB0byB1cGRhdGUgc2V0dGluZ3MgZGF0YVxuICAgICAgICBmZXRjaFNldHRpbmdzKClcbiAgICAgIH0pXG4gICAgc2V0VXNlckZvY3VzKGN1cnJlbnQgPT4gKGN1cnJlbnQgPT09ICdzZXR0aW5ncycgPyAnJyA6ICdzZXR0aW5ncycpKVxuICAgIHJldHVybiBhbmltYXRpb25GcmFtZVxuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwcFBsYXliYWNrUmF0ZSA+IDApIHtcbiAgICAgIHNldFNldHRpbmdzKGN1cnJlbnQgPT4gKHtcbiAgICAgICAgLi4uY3VycmVudCxcbiAgICAgICAgdmFsdWVzOiB7Li4uY3VycmVudC52YWx1ZXMsIHNwZWVkOiBhcHBQbGF5YmFja1JhdGV9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYXBwUGxheWJhY2tSYXRlXSlcblxuICBjb25zdCBxdWFsaXR5T3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UXVhbGl0eU9wdGlvbnMoc2V0dGluZ3MpLFxuICAgIFtzZXR0aW5ncy52YWx1ZXMucXVhbGl0eV1cbiAgKVxuICBjb25zdCB2aWV3TW9kZSA9IHVzZUxpbmtTdGF0ZSh1cGRhdGUgPT5cbiAgICBvblZpZXdNb2RlQ2hhbmdlKHZpZGVvUmVmLmN1cnJlbnQsIHVwZGF0ZSlcbiAgKVxuICBjb25zdCBzb3VyY2VPdmVycmlkZSA9IHVzZUxpbmtTdGF0ZShcbiAgICBhc3luYyB1cGRhdGUgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgc291cmNlICYmIChhd2FpdCBxdWFsaXR5LnJld3JpdGVNYW5pZmVzdD8uKHNvdXJjZSwgcXVhbGl0eU9wdGlvbnMpKVxuICAgICAgdXBkYXRlKHJlc3VsdCB8fCBzb3VyY2UpXG4gICAgfSxcbiAgICBbc291cmNlLCBxdWFsaXR5T3B0aW9uc11cbiAgKVxuICBjb25zdCB3YWl0aW5nID0gL2VtcHRpZWR8bG9hZGluZ3xidWZmZXJpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSlcbiAgY29uc3QgYWN0aXZlUGxheWJhY2sgPVxuICAgIHBsYXliYWNrU3RhdGUgPT09ICdwbGF5aW5nJyB8fCBwbGF5YmFja1N0YXRlID09PSAnd2FpdGluZydcbiAgY29uc3Qge1xuICAgIG1vZGU6IGF1dG9IaWRlTW9kZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uTW91c2VNb3ZlLFxuICB9ID0gdXNlQXV0b0hpZGUoe1xuICAgIHBpbm5lZDogIWNvbnRyb2xzLmF1dG9oaWRlIHx8IHdhaXRpbmcgfHwgIWFjdGl2ZVBsYXliYWNrIHx8IHVzZXJGb2N1cyxcbiAgICB0YXBUb0hpZGU6IHVpVHlwZSA9PT0gJ21vYmlsZScsXG4gICAgaGlkZVRpbWVNczogY29udHJvbHMuYXV0b2hpZGUsXG4gIH0pXG4gIGNvbnN0IG1vZGUgPVxuICAgIHVzZXJGb2N1cyA9PT0gJ3NlZWtiYXInXG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IGNvbnRyb2xzLmF1dG9oaWRlXG4gICAgICA/IGF1dG9IaWRlTW9kZVxuICAgICAgOiBjb250cm9sc1xuICAgICAgPyAnc2hvd24nXG4gICAgICA6ICdoaWRkZW4nXG4gIGNvbnN0IGNvbnRyb2xzRGlzcGxheSA9XG4gICAgdXNlckZvY3VzID09PSAnc2Vla2JhcidcbiAgICAgID8gJ3NlZWtiYXItb25seSdcbiAgICAgIDogY29udHJvbHMgPT09ICd0aXRsZS1vbmx5JyB8fCBwbGF5YmFja1N0YXRlID09PSAnZW1wdGllZCdcbiAgICAgID8gJ2hpZGRlbidcbiAgICAgIDogbW9kZVxuICBjb25zdCBzaG91bGRIaWRlUGFuZWxzID1cbiAgICAoY29udHJvbHMgPT09ICduby1wYW5lbCcgfHwgY29udHJvbHNEaXNwbGF5ID09PSAnaGlkZGVuJykgJiYgdXNlckZvY3VzXG4gIGNvbnN0IGhhdmVQbGF5UGFuZWwgPVxuICAgICFibG9ja2luZyAmJlxuICAgIGhhdmVQb2ludGVyKCkgJiZcbiAgICB1aVR5cGUgPT09ICdkZXNrdG9wJyAmJlxuICAgICF3YWl0aW5nICYmXG4gICAgIS92b2x1bWV8JycvLnRlc3QodXNlckZvY3VzKSAmJlxuICAgICEvdGl0bGUtb25seXxuby1wYW5lbC8udGVzdChjb250cm9scykgJiZcbiAgICAoY29udHJvbHMuYXV0b2hpZGUgfHwgbW9kZSA9PT0gJ3Nob3duJylcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRIaWRlUGFuZWxzKSB7XG4gICAgICBzZXRVc2VyRm9jdXMoJycpXG4gICAgfVxuICB9LCBbc2hvdWxkSGlkZVBhbmVsc10pXG4gIHVzZUVmZmVjdCgoKSA9PiBcbiAgICBvbihjb250YWluZXJSZWYuY3VycmVudCwgJ2ZvY3VzLW1lbnUnLCBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQuZGV0YWlsPy5zdGF0dXMgPT09ICdvcGVuJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoJ21lbnUnKVxuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmRldGFpbD8uc3RhdHVzID09PSAnY2xvc2VkJykge1xuICAgICAgICBzZXRVc2VyRm9jdXMoY3VycmVudCA9PiAoY3VycmVudCA9PT0gJ21lbnUnID8gJycgOiBjdXJyZW50KSlcbiAgICAgIH1cbiAgICB9KVxuICAsIFtdKVxuICBjb25zdCB7c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX0gPSBsaW5rTWVkaWFWb2x1bWUoKCkgPT4gKHtcbiAgICB2aWRlbzogdmlkZW9SZWYuY3VycmVudCxcbiAgICBnZXRQbGF5ZXI6ICgpID0+IHBsYXllclJlZi5jdXJyZW50LFxuICB9KSlcbiAgY29uc3QgY2hhbmdlUHJldmlvdXMgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VQcmV2aW91cyhldmVudClcbiAgICB0b2dnbGVQbGF5KCdwYXVzZWQnKVxuICAgIHZpZGVvUmVmLmN1cnJlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2xvYWRzdGFydCcpKVxuICB9XG4gIGNvbnN0IGNoYW5nZU5leHQgPSBldmVudCA9PiB7XG4gICAgb25DaGFuZ2VOZXh0KGV2ZW50KVxuICAgIHRvZ2dsZVBsYXkoJ3BhdXNlZCcpXG4gICAgdmlkZW9SZWYuY3VycmVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbG9hZHN0YXJ0JykpXG4gIH1cblxuICB1c2VFZmZlY3QoZmV0Y2hTZXR0aW5ncywgW2FwcFNldHRpbmdzXSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgYWRDb250YWluZXIgc2hvdWxkIGJlIHNldCBiZWZvcmUgYGxvYWRgIGJlY2F1c2UgSW1hRGFpLmxvYWQgbmVlZHMgaXQuXG4gICAgcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uc2V0QWRDb250YWluZXI/LihhZENvbnRhaW5lclJlZi5jdXJyZW50KSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBkaXNwYXRjaENoYXB0ZXJFdmVudHMoe1xuICAgICAgICBtZWRpYTogdmlkZW9SZWYuY3VycmVudCxcbiAgICAgICAgY2hhcHRlcnMsXG4gICAgICAgIGdldFRpbWU6ICgpID0+IHZpZGVvUmVmLmN1cnJlbnQuY3VycmVudFRpbWUsXG4gICAgICB9KSxcbiAgICBbY2hhcHRlcnNdXG4gIClcblxuICBjb25zdCBpc0VuZCA9IHBsYXliYWNrU3RhdGUgPT09ICdlbmRlZCdcbiAgY29uc3QgY2FuU2VlayA9ICFpc0VuZCAmJiBwbGF5YmFja1RpbWUuZHVyYXRpb24gPiAwXG4gIGNvbnN0IGRlcml2ZWRQbGF5YmFja1N0YXRlID1cbiAgICAodWlUeXBlID09PSAnbW9iaWxlJyAmJiBibG9ja2luZykgfHwgc2hvdWxkUGF1c2Uoe3VzZXJGb2N1cywgdWlUeXBlfSlcbiAgICAgID8gJ3BhdXNlZCdcbiAgICAgIDogdGFyZ2V0U3RhdGUucGxheWJhY2tTdGF0ZVxuICBjb25zdCBhY3RpdmVUaHVtYm5haWxzVXJsID1cbiAgICAoIXVzZXJGb2N1cyB8fCB1c2VyRm9jdXMgPT09ICdzZWVrYmFyJykgJiZcbiAgICAoZ2V0VGh1bWJuYWlsc1VybChzb3VyY2UpIHx8IHRodW1ibmFpbHNVcmwpXG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHtcbiAgICAnLS1wbGF5aW5nJzogcGxheWJhY2tTdGF0ZSA9PT0gJ3BsYXlpbmcnID8gJzEnIDogJzAnLFxuICB9XG4gIGNvbnN0IG9uUmV3aW5kID1cbiAgICAoIWlzTGl2ZSB8fCBwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgPCAwKSAmJlxuICAgIGNhblNlZWsgJiZcbiAgICAoKCkgPT4gc2V0VGFyZ2V0VGltZShwbGF5YmFja1RpbWUuY3VycmVudFRpbWUgLSAxMCwgJ3Jld2luZCcpKVxuICBjb25zdCBvbkZvcndhcmQgPVxuICAgICghaXNMaXZlIHx8IHBsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDApICYmXG4gICAgY2FuU2VlayAmJlxuICAgICgoKSA9PiBzZXRUYXJnZXRUaW1lKHBsYXliYWNrVGltZS5jdXJyZW50VGltZSArIDEwLCAnZm9yd2FyZCcpKVxuICBjb25zdCBvbkNsaWNrQmxhbmsgPVxuICAgIGhhdmVQbGF5UGFuZWwgJiYgKCgpID0+IHRvZ2dsZVBsYXkoJycsIHt0cmlnZ2VyZWRCeTogJ3VzZXItYWN0aW9uJ30pKVxuXG4gIGNvbnN0IHVpSGFuZGxlcnMgPSB7XG4gICAgb25QbGF5OiAoKSA9PiB7XG4gICAgICB0b2dnbGVQbGF5KCcnLCB7dHJpZ2dlcmVkQnk6ICd1c2VyLWFjdGlvbid9KVxuICAgICAgc2V0SXNVc2VyQWN0aXZlKHRydWUpXG4gICAgfSxcbiAgICBvbkNsaWNrTGl2ZTogaXNMaXZlICYmICgoKSA9PiBzZXRUYXJnZXRUaW1lKDAsICdzZWVrVG9MaXZlJykpLFxuICAgIG9uQ2xpY2tTZWVrYmFyOiAoKSA9PiB7XG4gICAgICByZWZzLmN1cnJlbnQuZGVmZXJlZFNlZWtGb2N1cyA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHNldFVzZXJGb2N1cygnc2Vla2JhcicpLFxuICAgICAgICA2NlxuICAgICAgKVxuICAgIH0sXG4gICAgb25TZWVrOiB0aW1lID0+IHtcbiAgICAgIHNldFRhcmdldFRpbWUodGltZSwgJ3NlZWsnKVxuICAgICAgY2xlYXJUaW1lb3V0KHJlZnMuY3VycmVudC5kZWZlcmVkU2Vla0ZvY3VzKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRVc2VyRm9jdXMoJycpLCA2NilcbiAgICB9LFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICh7bmFtZSwgdmFsdWUsIGtlZXBPcGVufSkgPT5cbiAgICAgIGNoYW5nZVNldHRpbmdzKG5hbWUsIHZhbHVlLCB7a2VlcE9wZW59KSxcbiAgICBvbkNsb3NlU2V0dGluZ3M6IGV2ZW50ID0+IHtcbiAgICAgIHNldFVzZXJGb2N1cygnJylcbiAgICAgIHNsb3RQcm9wcz8uc2V0dGluZ3M/Lm9uQ2xvc2U/LihldmVudClcbiAgICB9LFxuICB9XG5cbiAgY29uc3QgdWlFbGVtZW50cyA9IHtcbiAgICBsaXZlQnV0dG9uOiB1aUhhbmRsZXJzLm9uQ2xpY2tMaXZlICYmIChcbiAgICAgIDxjb21wb25lbnRzLkxpdmVCdXR0b25cbiAgICAgICAgdXNpbmdTdGFydE92ZXI9e3BsYXliYWNrVGltZS5jdXJyZW50VGltZSA8IDB9XG4gICAgICAgIG9uQ2xpY2s9e3VpSGFuZGxlcnMub25DbGlja0xpdmV9XG4gICAgICAvPlxuICAgICksXG4gICAgY29udHJvbEJ1dHRvbnM6IHtcbiAgICAgIHBsYXlCdXR0b246IChcbiAgICAgICAgPFBsYXlCdXR0b25cbiAgICAgICAgICBwbGF5YmFja1N0YXRlPXtkZXJpdmVkUGxheWJhY2tTdGF0ZX1cbiAgICAgICAgICBlbmRlZD17aXNFbmR9XG4gICAgICAgICAgaGlkZGVuPXtcbiAgICAgICAgICAgIHVpVHlwZSA9PT0gJ21vYmlsZScgJiYgKHdhaXRpbmcgfHwgL2xvYWRpbmcvLnRlc3QocGxheWJhY2tTdGF0ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHZhcmlhbnQ9eyFpc1VzZXJBY3RpdmUgJiYgJ2ZpcnN0cGxheSd9XG4gICAgICAgICAgb25DbGljaz17dWlIYW5kbGVycy5vblBsYXl9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcmV3aW5kQnV0dG9uOiBvblJld2luZCAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJyZXdpbmQxMFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlJFV0lORFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRW5kfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmV3aW5kfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICAgIGZvcndhcmRCdXR0b246IG9uRm9yd2FyZCAmJiAoXG4gICAgICAgIDxGb3J3YXJkQnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwiZm9yd2FyZDEwXCJcbiAgICAgICAgICB0aXRsZT1cIktLUy5QTEFZRVIuRk9SV0FSRFwiXG4gICAgICAgICAgZGlzYWJsZWQ9eyFjYW5TZWVrfVxuICAgICAgICAgIG9uQ2xpY2s9e29uRm9yd2FyZH1cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgICBuZXh0RXBpc29kZUJ1dHRvbjogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3RhcnRJY29uPVwibmV4dFwiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLk5FWFRcIlxuICAgICAgICAgIGRpc2FibGVkPXshb25DaGFuZ2VOZXh0fVxuICAgICAgICAgIG9uQ2xpY2s9e2NoYW5nZU5leHR9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgICAgcHJldmlvdXNFcGlzb2RlQnV0dG9uOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdGFydEljb249XCJwcmV2aW91c1wiXG4gICAgICAgICAgdGl0bGU9XCJLS1MuUExBWUVSLlBSRVZJT1VTXCJcbiAgICAgICAgICBkaXNhYmxlZD17IW9uQ2hhbmdlUHJldmlvdXN9XG4gICAgICAgICAgb25DbGljaz17Y2hhbmdlUHJldmlvdXN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgc2Vla2JhcjogKFxuICAgICAgPGNvbXBvbmVudHMuU2Vla2JhclxuICAgICAgICBzdHlsZT17L3ZvbHVtZS8udGVzdCh1c2VyRm9jdXMpICYmIHtvcGFjaXR5OiAnMCd9fVxuICAgICAgICBzdGFydFRpbWU9e3BsYXliYWNrVGltZS5zdGFydFRpbWV9XG4gICAgICAgIGN1cnJlbnRUaW1lPXtwbGF5YmFja1RpbWUuY3VycmVudFRpbWV9XG4gICAgICAgIGJ1ZmZlclRpbWU9e3BsYXliYWNrVGltZS5idWZmZXJUaW1lfVxuICAgICAgICBkdXJhdGlvbj17cGxheWJhY2tUaW1lLmR1cmF0aW9ufVxuICAgICAgICBjaGFwdGVycz17Y2hhcHRlcnN9XG4gICAgICAgIG9uQ2hhbmdlPXt1aUhhbmRsZXJzLm9uQ2xpY2tTZWVrYmFyfVxuICAgICAgICBvbkNoYW5nZUNvbW1pdHRlZD17dWlIYW5kbGVycy5vblNlZWt9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgey4uLnNsb3RQcm9wcy5zZWVrYmFyfVxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGh1bWJuYWlsc1VybCAmJiAoXG4gICAgICAgICAgPFNlZWtQcmV2aWV3XG4gICAgICAgICAgICB0aHVtYm5haWxzVXJsPXthY3RpdmVUaHVtYm5haWxzVXJsfVxuICAgICAgICAgICAgZHVyYXRpb249e3BsYXliYWNrVGltZS5kdXJhdGlvbn1cbiAgICAgICAgICAgIGNoYXB0ZXJzPXtjaGFwdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9jb21wb25lbnRzLlNlZWtiYXI+XG4gICAgKSxcbiAgICBkaXNwbGF5VGltZTogPGNvbXBvbmVudHMuRGlzcGxheVRpbWUgey4uLnBsYXliYWNrVGltZX0gLz4sXG4gICAgZnVsbHNjcmVlbkJ1dHRvbjogKFxuICAgICAgPEZ1bGxzY3JlZW5CdXR0b25cbiAgICAgICAgdmlld01vZGU9e3ZpZXdNb2RlfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVGdWxsc2NyZWVuKGNvbnRhaW5lclJlZi5jdXJyZW50KX1cbiAgICAgIC8+XG4gICAgKSxcbiAgICB2b2x1bWVDb250cm9sOiB3aWR0aCA+PSBzaXplc1snc21hbGwtZW1iZWQnXSAmJiAoXG4gICAgICA8Y29tcG9uZW50cy5Wb2x1bWVDb250cm9sXG4gICAgICAgIHsuLi57c3Vic2NyaWJlLCBvbkNoYW5nZSwgdG9nZ2xlTXV0ZX19XG4gICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRVc2VyRm9jdXMoJ3ZvbHVtZScpfVxuICAgICAgICBvbk1vdXNlT3V0PXsoKSA9PiBzZXRVc2VyRm9jdXMoJycpfVxuICAgICAgICB7Li4uc2xvdFByb3BzPy52b2x1bWVDb250cm9sfVxuICAgICAgLz5cbiAgICApLFxuICAgIGJhY2tJdGVtczogKFxuICAgICAgPFBsYXlQYW5lbCBhbmltYXRpb249e3RhcmdldFN0YXRlLmFuaW1hdGlvbn0gb25DbGljaz17b25DbGlja0JsYW5rfSAvPlxuICAgICksXG4gIH1cbiAgY29uc3QgY29tcGF0aWJpbGl0eUNhc3RQcm9wcyA9IGNhc3RPcHRpb25zID09PSAnY29tcGF0aWJsZScgJiYge1xuICAgIHNvdXJjZSxcbiAgICB2YWx1ZXM6IHt0aXRsZSwgLi4uc2V0dGluZ3MudmFsdWVzLCAuLi5pbnRsLCBtb2R1bGVzQ29uZmlnfSxcbiAgICBvbkxvYWQ6IG9uQ2FzdCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhc3RPcHRpb25zICYmIGNhc3RPcHRpb25zICE9PSAnY29tcGF0aWJsZScpIHtcbiAgICAgIHJldHVybiBsaW5rQ2FzdCh7c291cmNlLCAuLi5jYXN0T3B0aW9uc30pXG4gICAgfSAvLyBUT0RPIHBsYXlsaXN0LCBhdWRpbyAvIHN1YnRpdGxlIHNldHRpbmdcbiAgfSwgW3NvdXJjZSwgY2FzdE9wdGlvbnMuY29udGVudElkLCBjYXN0T3B0aW9ucy5jdXN0b21EYXRhXSlcbiAgY29uc3Qgc2VsZWN0ZWRBdWRpb1RyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5hdWRpbyB8fCBhcHBBdWRpb1RyYWNrXG4gIGNvbnN0IHNlbGVjdGVkVGV4dFRyYWNrID0gc2V0dGluZ3MucHJlZmVycmVkPy5zdWJ0aXRsZXMgfHwgYXBwVGV4dFRyYWNrXG5cbiAgcmV0dXJuIChcbiAgICA8SW50bFByb3ZpZGVyIHsuLi5pbnRsfT5cbiAgICAgIDxMYXlvdXRcbiAgICAgICAgc3R5bGU9e3suLi5zdHlsZSwgY3NzVmFyaWFibGVzfX1cbiAgICAgICAgdHlwZT17dWlUeXBlfVxuICAgICAgICBkaXNwbGF5PXttb2RlfVxuICAgICAgICBjb250cm9sc0Rpc3BsYXk9e2NvbnRyb2xzRGlzcGxheX1cbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdmlkZW89e1xuICAgICAgICAgIDxWaWRlb1xuICAgICAgICAgICAgey4uLnZpZGVvUHJvcHN9XG4gICAgICAgICAgICB2aWRlb1JlZj17bXVsdGlSZWYodmlkZW9SZWYsIHZpZGVvUHJvcHMudmlkZW9SZWYpfVxuICAgICAgICAgICAgc291cmNlPXtcbiAgICAgICAgICAgICAgY2FzdFN0YXRlICE9PSBDYXN0U3RhdGUuQ09OTkVDVEVEICYmXG4gICAgICAgICAgICAgIHBsYXliYWNrU3RhdGUgIT09ICdlcnJvcicgJiZcbiAgICAgICAgICAgICAgc291cmNlT3ZlcnJpZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBsYXliYWNrU3RhdGU9e2Rlcml2ZWRQbGF5YmFja1N0YXRlfVxuICAgICAgICAgICAgY3VycmVudFRpbWU9e3RhcmdldFN0YXRlLmN1cnJlbnRUaW1lfVxuICAgICAgICAgICAgey4uLihhcHBWb2x1bWUgPj0gMCAmJiB7dm9sdW1lOiBhcHBWb2x1bWUsIG11dGVkOiBhcHBWb2x1bWUgPD0gMH0pfVxuICAgICAgICAgICAgcGxheWJhY2tSYXRlPXtzZXR0aW5ncy52YWx1ZXMuc3BlZWR9XG4gICAgICAgICAgICB2aWRlb1Jlc29sdXRpb249e3F1YWxpdHlPcHRpb25zfVxuICAgICAgICAgICAgYXVkaW9UcmFjaz17c2VsZWN0ZWRBdWRpb1RyYWNrfVxuICAgICAgICAgICAgdGV4dFRyYWNrPXtzZWxlY3RlZFRleHRUcmFja31cbiAgICAgICAgICAgIGxvb3A9e3NldHRpbmdzLnZhbHVlcy5sb29wfVxuICAgICAgICAgICAgcGx1Z2lucz17cGx1Z2luc31cbiAgICAgICAgICAgIG1vZHVsZXNDb25maWc9e21vZHVsZXNDb25maWd9XG4gICAgICAgICAgICBvblBsYXlsb2dGaXJlZD17b25QbGF5bG9nRmlyZWR9XG4gICAgICAgICAgICBvbkVycm9yPXtlcnJvckhhbmRsZXJ9XG4gICAgICAgICAgICBvblBsYXliYWNrU3RhdGVDaGFuZ2U9e2hhbmRsZVBsYXliYWNrU3RhdGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsb2NrZWRBdXRvcGxheT17ZXJyb3IgPT4gb25CbG9ja2VkQXV0b3BsYXk/LihlcnJvcil9XG4gICAgICAgICAgICBvbkNhblBsYXk9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlUGxheWJhY2tUaW1lKGV2ZW50KVxuICAgICAgICAgICAgICB2aWRlb1Byb3BzLm9uQ2FuUGxheT8uKGV2ZW50KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uVGltZVVwZGF0ZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25EdXJhdGlvbkNoYW5nZT17dXBkYXRlUGxheWJhY2tUaW1lfVxuICAgICAgICAgICAgb25QbGF5ZXJMb2FkZWQ9e3BsYXllciA9PiB7XG4gICAgICAgICAgICAgIHBsYXllclJlZi5jdXJyZW50ID0gcGxheWVyXG4gICAgICAgICAgICAgIG9uUGxheWVyTG9hZGVkPy4ocGxheWVyKVxuICAgICAgICAgICAgICBzeW5jVm9sdW1lKHZpZGVvUmVmLmN1cnJlbnQsIHZpZGVvUHJvcHMubXV0ZWQgPyAwIDogYXBwVm9sdW1lKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lclJlZj17ZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBlbGVtZW50XG4gICAgICAgICAgb2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICB9fVxuICAgICAgICBiYWNrUmVmPXthZENvbnRhaW5lclJlZn1cbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBjaGFubmVsVGl0bGU9e2NoYW5uZWxUaXRsZX1cbiAgICAgICAgYmFja0J1dHRvbj17b25CYWNrICYmIDxCdXR0b24gc3RhcnRJY29uPVwiYmFja1wiIG9uQ2xpY2s9e29uQmFja30gLz59XG4gICAgICAgIHsuLi4oaXNVc2VyQWN0aXZlICYmIHVpRWxlbWVudHMpfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbk1vdXNlTW92ZT17b25Nb3VzZU1vdmV9XG4gICAgICA+XG4gICAgICAgIDxMb2FkaW5nU3Bpbm5lciBhY3RpdmU9e3dhaXRpbmd9IC8+XG4gICAgICAgIHtlcnJvckRhdGEgJiYgPEVycm9yIGVycm9yPXtlcnJvckRhdGF9IG9uQmFjaz17b25CYWNrfSAvPn1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogVE9ETyBzeW5jIENhc3QgbGFzdCBwbGF5ZWQgdGltZSBiYWNrICovfVxuICAgICAgICB7aXNVc2VyQWN0aXZlICYmIChcbiAgICAgICAgICA8Y29tcG9uZW50cy5DYXN0VWlcbiAgICAgICAgICAgIG9uQmFjaz17b25CYWNrfVxuICAgICAgICAgICAgb25TdGF0ZUNoYW5nZT17c2V0Q2FzdFN0YXRlfVxuICAgICAgICAgICAgb25Mb2FkPXtvbkNhc3R9XG4gICAgICAgICAgICB7Li4uY29tcGF0aWJpbGl0eUNhc3RQcm9wc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHMuY2FzdFVpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtpc1VzZXJBY3RpdmUgJiYgKCAvLyBUT0RPOiBEZXNpZ24gPEV4dGVuc3Rpb24gLz4gZmxhZ1xuICAgICAgICAgIDxjb21wb25lbnRzLlNldHRpbmdzXG4gICAgICAgICAgICB0eXBlPXt1aVR5cGV9XG4gICAgICAgICAgICBzZWN0aW9ucz17c2V0dGluZ3Muc2VjdGlvbnN9XG4gICAgICAgICAgICAvLyBUT0RPIGhhc0JvdHRvbVBhbmVsIGJvdHRvbTogOGVtXG4gICAgICAgICAgICBvcGVuPXt1c2VyRm9jdXMgPT09ICdzZXR0aW5ncyd9XG4gICAgICAgICAgICB2YWx1ZXM9e3NldHRpbmdzLnZhbHVlc31cbiAgICAgICAgICAgIG9uT3Blbj17b3BlblNldHRpbmdzfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VpSGFuZGxlcnMub25DaGFuZ2VTZXR0aW5nc31cbiAgICAgICAgICAgIHsuLi5zbG90UHJvcHM/LnNldHRpbmdzfVxuICAgICAgICAgICAgb25DbG9zZT17dWlIYW5kbGVycy5vbkNsb3NlU2V0dGluZ3N9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPExhbmd1YWdlU2V0dGluZ3NcbiAgICAgICAgICB1aVR5cGU9e3VpVHlwZX1cbiAgICAgICAgICBnZXRQbGF5ZXI9eygpID0+IHBsYXllclJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXsoX2V2ZW50LCBpdGVtKSA9PiBjaGFuZ2VTZXR0aW5ncyhpdGVtLnR5cGUsIGl0ZW0udmFsdWUpfVxuICAgICAgICAgIHsuLi5zbG90UHJvcHMubGFuZ3VhZ2VTZXR0aW5nc31cbiAgICAgICAgLz5cbiAgICAgICAgPEJhY2tkcm9wIG9wZW49eyFwbGF5YmFja1N0YXRlIHx8IHBsYXliYWNrU3RhdGUgPT09ICdsb2FkaW5nJ30+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvQmFja2Ryb3A+XG4gICAgICA8L0xheW91dD5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmVtaXVtUGxheWVyXG4iXX0= */")
|
|
8098
8774
|
};
|
|
8099
8775
|
|
|
8100
8776
|
const LanguageSettings = ({
|
|
@@ -8113,6 +8789,7 @@ const LanguageSettings = ({
|
|
|
8113
8789
|
textTracks
|
|
8114
8790
|
});
|
|
8115
8791
|
return audioTracks.length > 0 && textTracks.length > 0 && /*#__PURE__*/jsx(OverlayPanel, {
|
|
8792
|
+
title: "\u5B57\u5E55\u30FB\u97F3\u58F0\u3092\u5207\u308A\u66FF\u3048\u308B",
|
|
8116
8793
|
buttonIcon: "subtitle",
|
|
8117
8794
|
children: /*#__PURE__*/jsx(slots.LanguageMenu, {
|
|
8118
8795
|
uiType: uiType,
|
|
@@ -8411,6 +9088,17 @@ const PremiumPlayer = ({
|
|
|
8411
9088
|
setUserFocus('');
|
|
8412
9089
|
}
|
|
8413
9090
|
}, [shouldHidePanels]);
|
|
9091
|
+
useEffect(() => on(containerRef.current, 'focus-menu', event => {
|
|
9092
|
+
var _event$detail, _event$detail2;
|
|
9093
|
+
|
|
9094
|
+
if (((_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.status) === 'open') {
|
|
9095
|
+
setUserFocus('menu');
|
|
9096
|
+
}
|
|
9097
|
+
|
|
9098
|
+
if (((_event$detail2 = event.detail) === null || _event$detail2 === void 0 ? void 0 : _event$detail2.status) === 'closed') {
|
|
9099
|
+
setUserFocus(current => current === 'menu' ? '' : current);
|
|
9100
|
+
}
|
|
9101
|
+
}), []);
|
|
8414
9102
|
const {
|
|
8415
9103
|
subscribe,
|
|
8416
9104
|
onChange,
|