@appello/common
Version:
Common package with many useful features for web and mobile development
2 lines • 233 kB
JavaScript
import{useRef as t,useMemo as e,useState as n,useEffect as r,useCallback as a}from"react";import{Buffer as o}from"buffer";function i(n){const r=t(n);r.current=e((()=>n),[n]);const a=t();return a.current||(a.current=function(...t){return r.current.apply(this,t)}),a.current}function u({fn:e,delay:o=1e3,onStop:u,immediateStart:s=!1,immediateCallFn:c=!1}){const[d,l]=n(s),f=t(null),h=i(e);r((()=>{l(s)}),[s]),r((()=>d?(c&&h(),f.current=setInterval(h,o),()=>{f.current&&(clearInterval(f.current),u?.(),l(!1))}):()=>{f.current&&(clearInterval(f.current),u?.())}),[d,o,c]);return{start:a((()=>l(!0)),[]),stop:a((()=>l(!1)),[]),setState:l}}function s(){const[t,e]=n(0),{start:r,stop:a}=u({fn:()=>{e((t=>{const e=t>0?t-1:t;return 0===e&&a(),e}))}});return{seconds:t,inProgress:!!t,sendCode:(t,n=59)=>{e(n),a(),r(),t?.()}}}const c=()=>"undefined"==typeof window,d=()=>"undefined"!=typeof navigator,l=t=>!!t&&t.constructor===Object;function f(t,e=0,n){let r,a,o,i,u,s=0,c=0,d=!1,f=!1,h=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function m(e){const n=r,i=a;return r=a=void 0,c=e,o=t.apply(i,n),o}function g(t,e){return setTimeout(t,e)}function w(t){const n=t-u;return void 0===u||n>=e||n<0||f&&t-c>=s}function b(){const t=Date.now();if(w(t))return y(t);i=g(b,function(t){const n=t-c,r=e-(t-u);return f?Math.min(r,s-n):r}(t))}function y(t){return i=void 0,h&&r?m(t):(r=a=void 0,o)}function p(...t){const n=Date.now(),s=w(n);if(r=t,a=this,u=n,s){if(void 0===i)return function(t){return c=t,i=g(b,e),d?m(t):o}(u);if(f)return i=g(b,e),m(u)}return void 0===i&&(i=g(b,e)),o}return l(n)&&(d=!!n.leading,f="maxWait"in n,s=f?Math.max(n?.maxWait||0,e):s,h="trailing"in n?!!n.trailing:h),p.cancel=function(){void 0!==i&&clearTimeout(i),c=0,r=u=a=i=void 0},p.flush=function(){return void 0===i?o:y(Date.now())},p.pending=function(){return void 0!==i},p}const h=Object.keys,m=(t,e)=>{const n={...t};return l(t)&&l(e)&&h(e).forEach((r=>{"__proto__"!==r&&(l(e[r])?n[r]=r in t?m(n[r],e[r]):e[r]:n[r]=e[r])})),n},g=Object.entries;function w(t,e){return Object.keys(t).reduce(((n,r)=>t[r]?(n[r]="object"==typeof t[r]?w(t[r],e[r]):e[r],n):n),{})}const b=t=>t.split(".").pop()?.toLowerCase();function y(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}function p(t){const e=Object.prototype.toString.call(t);return t instanceof Date||"object"==typeof t&&"[object Date]"===e?new t.constructor(+t):"number"==typeof t||"[object Number]"===e||"string"==typeof t||"[object String]"===e?new Date(t):new Date(NaN)}function v(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}const M=6048e5;let S={};function k(){return S}function P(t,e){const n=k(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=p(t),o=a.getDay(),i=(o<r?7:0)+o-r;return a.setDate(a.getDate()-i),a.setHours(0,0,0,0),a}function x(t){return P(t,{weekStartsOn:1})}function D(t){const e=p(t),n=e.getFullYear(),r=v(t,0);r.setFullYear(n+1,0,4),r.setHours(0,0,0,0);const a=x(r),o=v(t,0);o.setFullYear(n,0,4),o.setHours(0,0,0,0);const i=x(o);return e.getTime()>=a.getTime()?n+1:e.getTime()>=i.getTime()?n:n-1}function O(t){const e=p(t);return e.setHours(0,0,0,0),e}function j(t){const e=p(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function W(t){if(!(e=t,e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)||"number"==typeof t))return!1;var e;const n=p(t);return!isNaN(Number(n))}function T(t,e){const n=k(),r=n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=p(t),o=a.getDay(),i=6+(o<r?-7:0)-(o-r);return a.setDate(a.getDate()+i),a.setHours(23,59,59,999),a}const E={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function N(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const C={date:N({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:N({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:N({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},F={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function q(t){return(e,n)=>{let r;if("formatting"===(n?.context?String(n.context):"standalone")&&t.formattingValues){const e=t.defaultFormattingWidth||t.defaultWidth,a=n?.width?String(n.width):e;r=t.formattingValues[a]||t.formattingValues[e]}else{const e=t.defaultWidth,a=n?.width?String(n.width):t.defaultWidth;r=t.values[a]||t.values[e]}return r[t.argumentCallback?t.argumentCallback(e):e]}}function Y(t){return(e,n={})=>{const r=n.width,a=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],o=e.match(a);if(!o)return null;const i=o[0],u=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],s=Array.isArray(u)?function(t,e){for(let n=0;n<t.length;n++)if(e(t[n]))return n;return}(u,(t=>t.test(i))):function(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n;return}(u,(t=>t.test(i)));let c;c=t.valueCallback?t.valueCallback(s):s,c=n.valueCallback?n.valueCallback(c):c;return{value:c,rest:e.slice(i.length)}}}var I;const H={code:"en-US",formatDistance:(t,e,n)=>{let r;const a=E[t];return r="string"==typeof a?a:1===e?a.one:a.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r},formatLong:C,formatRelative:(t,e,n,r)=>F[t],localize:{ordinalNumber:(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:q({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:q({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:t=>t-1}),month:q({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:q({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:q({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(I={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:t=>parseInt(t,10)},(t,e={})=>{const n=t.match(I.matchPattern);if(!n)return null;const r=n[0],a=t.match(I.parsePattern);if(!a)return null;let o=I.valueCallback?I.valueCallback(a[0]):a[0];return o=e.valueCallback?e.valueCallback(o):o,{value:o,rest:t.slice(r.length)}}),era:Y({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:Y({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:t=>t+1}),month:Y({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:Y({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:Y({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function z(t){const e=p(t),n=function(t,e){const n=O(t),r=O(e),a=+n-j(n),o=+r-j(r);return Math.round((a-o)/864e5)}(e,function(t){const e=p(t),n=v(t,0);return n.setFullYear(e.getFullYear(),0,1),n.setHours(0,0,0,0),n}(e));return n+1}function A(t){const e=p(t),n=+x(e)-+function(t){const e=D(t),n=v(t,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),x(n)}(e);return Math.round(n/M)+1}function $(t,e){const n=p(t),r=n.getFullYear(),a=k(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,i=v(t,0);i.setFullYear(r+1,0,o),i.setHours(0,0,0,0);const u=P(i,e),s=v(t,0);s.setFullYear(r,0,o),s.setHours(0,0,0,0);const c=P(s,e);return n.getTime()>=u.getTime()?r+1:n.getTime()>=c.getTime()?r:r-1}function L(t,e){const n=p(t),r=+P(n,e)-+function(t,e){const n=k(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=$(t,e),o=v(t,0);return o.setFullYear(a,0,r),o.setHours(0,0,0,0),P(o,e)}(n,e);return Math.round(r/M)+1}function Q(t,e){return(t<0?"-":"")+Math.abs(t).toString().padStart(e,"0")}const B={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Q("yy"===e?r%100:r,e.length)},M(t,e){const n=t.getMonth();return"M"===e?String(n+1):Q(n+1,2)},d:(t,e)=>Q(t.getDate(),e.length),a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(t,e)=>Q(t.getHours()%12||12,e.length),H:(t,e)=>Q(t.getHours(),e.length),m:(t,e)=>Q(t.getMinutes(),e.length),s:(t,e)=>Q(t.getSeconds(),e.length),S(t,e){const n=e.length,r=t.getMilliseconds();return Q(Math.trunc(r*Math.pow(10,n-3)),e.length)}},G="midnight",X="noon",U="morning",J="afternoon",R="evening",_="night",V={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if("yo"===e){const e=t.getFullYear(),r=e>0?e:1-e;return n.ordinalNumber(r,{unit:"year"})}return B.y(t,e)},Y:function(t,e,n,r){const a=$(t,r),o=a>0?a:1-a;if("YY"===e){return Q(o%100,2)}return"Yo"===e?n.ordinalNumber(o,{unit:"year"}):Q(o,e.length)},R:function(t,e){return Q(D(t),e.length)},u:function(t,e){return Q(t.getFullYear(),e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Q(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Q(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return B.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Q(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const a=L(t,r);return"wo"===e?n.ordinalNumber(a,{unit:"week"}):Q(a,e.length)},I:function(t,e,n){const r=A(t);return"Io"===e?n.ordinalNumber(r,{unit:"week"}):Q(r,e.length)},d:function(t,e,n){return"do"===e?n.ordinalNumber(t.getDate(),{unit:"date"}):B.d(t,e)},D:function(t,e,n){const r=z(t);return"Do"===e?n.ordinalNumber(r,{unit:"dayOfYear"}):Q(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const a=t.getDay(),o=(a-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(o);case"ee":return Q(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const a=t.getDay(),o=(a-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(o);case"cc":return Q(o,e.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),a=0===r?7:r;switch(e){case"i":return String(a);case"ii":return Q(a,e.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const r=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let a;switch(a=12===r?X:0===r?G:r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let a;switch(a=r>=17?R:r>=12?J:r>=4?U:_,e){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(t,e,n){if("ho"===e){let e=t.getHours()%12;return 0===e&&(e=12),n.ordinalNumber(e,{unit:"hour"})}return B.h(t,e)},H:function(t,e,n){return"Ho"===e?n.ordinalNumber(t.getHours(),{unit:"hour"}):B.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return"Ko"===e?n.ordinalNumber(r,{unit:"hour"}):Q(r,e.length)},k:function(t,e,n){let r=t.getHours();return 0===r&&(r=24),"ko"===e?n.ordinalNumber(r,{unit:"hour"}):Q(r,e.length)},m:function(t,e,n){return"mo"===e?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):B.m(t,e)},s:function(t,e,n){return"so"===e?n.ordinalNumber(t.getSeconds(),{unit:"second"}):B.s(t,e)},S:function(t,e){return B.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(0===r)return"Z";switch(e){case"X":return Z(r);case"XXXX":case"XX":return tt(r);default:return tt(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return Z(r);case"xxxx":case"xx":return tt(r);default:return tt(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+K(r,":");default:return"GMT"+tt(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+K(r,":");default:return"GMT"+tt(r,":")}},t:function(t,e,n){return Q(Math.trunc(t.getTime()/1e3),e.length)},T:function(t,e,n){return Q(t.getTime(),e.length)}};function K(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),a=Math.trunc(r/60),o=r%60;return 0===o?n+String(a):n+String(a)+e+Q(o,2)}function Z(t,e){if(t%60==0){return(t>0?"-":"+")+Q(Math.abs(t)/60,2)}return tt(t,e)}function tt(t,e=""){const n=t>0?"-":"+",r=Math.abs(t);return n+Q(Math.trunc(r/60),2)+e+Q(r%60,2)}const et=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}},nt=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}},rt={p:nt,P:(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],a=n[2];if(!a)return et(t,e);let o;switch(r){case"P":o=e.dateTime({width:"short"});break;case"PP":o=e.dateTime({width:"medium"});break;case"PPP":o=e.dateTime({width:"long"});break;default:o=e.dateTime({width:"full"})}return o.replace("{{date}}",et(r,e)).replace("{{time}}",nt(a,e))}},at=/^D+$/,ot=/^Y+$/,it=["D","DD","YY","YYYY"];const ut=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,st=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ct=/^'([^]*?)'?$/,dt=/''/g,lt=/[a-zA-Z]/;function ft(t,e,n){const r=k(),a=r.locale??H,o=r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,i=r.weekStartsOn??r.locale?.options?.weekStartsOn??0,u=p(t);if(!W(u))throw new RangeError("Invalid time value");let s=e.match(st).map((t=>{const e=t[0];if("p"===e||"P"===e){return(0,rt[e])(t,a.formatLong)}return t})).join("").match(ut).map((t=>{if("''"===t)return{isToken:!1,value:"'"};const e=t[0];if("'"===e)return{isToken:!1,value:ht(t)};if(V[e])return{isToken:!0,value:t};if(e.match(lt))throw new RangeError("Format string contains an unescaped latin alphabet character `"+e+"`");return{isToken:!1,value:t}}));a.localize.preprocessor&&(s=a.localize.preprocessor(u,s));const c={firstWeekContainsDate:o,weekStartsOn:i,locale:a};return s.map((n=>{if(!n.isToken)return n.value;const r=n.value;(function(t){return ot.test(t)}(r)||function(t){return at.test(t)}(r))&&function(t,e,n){const r=function(t,e,n){const r="Y"===t[0]?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(t,e,n);if(console.warn(r),it.includes(t))throw new RangeError(r)}(r,e,String(t));return(0,V[r[0]])(u,r,a.localize,c)})).join("")}function ht(t){const e=t.match(ct);return e?e[1].replace(dt,"'"):t}function mt(t={}){return function(t){const e=p(t.start),n=p(t.end);let r=+e>+n;const a=r?+e:+n,o=r?n:e;o.setHours(0,0,0,0);const i=[];for(;+o<=a;)i.push(p(o)),o.setDate(o.getDate()+1),o.setHours(0,0,0,0);return r?i.reverse():i}({start:P(new Date),end:T(new Date)}).map((e=>ft(e,t.longFormat?"iiii":"E")))}const gt=Array.isArray,wt=t=>"[object Date]"===y(t),bt=t=>!!(t&&t.constructor&&t.call&&t.apply);function yt(t){return void 0===t||null==t}const pt=t=>{try{return Number(t)===t}catch{return!1}},vt=t=>!!t&&t.constructor===Symbol,Mt=t=>{if(!0===t||!1===t)return!0;if(yt(t))return!0;if(pt(t))return 0===t;if(wt(t))return Number.isNaN(t.getTime());if(bt(t))return!1;if(vt(t))return!1;const e=t.length;if(pt(e))return 0===e;const n=t.size;if(pt(n))return 0===n;return 0===Object.keys(t).length},St=t=>pt(t)&&t%1!=0,kt=t=>pt(t)&&t%1==0,Pt=t=>null==t||"object"!=typeof t&&"function"!=typeof t,xt=t=>!!t&&(!!t.then&&bt(t.then)),Dt=t=>"string"==typeof t||t instanceof String;function Ot(t,e=new FormData,n){if(void 0===t)return e;if(Array.isArray(t))t.length?t.forEach(((t,r)=>Ot(t,e,`${n}[${r}]`))):Ot("",e,`${n}`);else if(l(t))Object.entries(t).forEach((([t,r])=>{t=n&&/\[\d+\]$/.test(n)?n?`${n}${t}`:t:n?`${n}.${t}`:t,Ot(r,e,t)}));else if(null!==t){let r=t;"boolean"==typeof r&&(r=Number(r)),e.append(`${n}`,r)}return e}function jt(t,e={}){const{withPrefix:n=!0}=e;return Object.entries(t).filter((t=>void 0!==t[1])).map((([t,e],r)=>`${0===r&&n?"?":""}${encodeURIComponent(t)}=${encodeURIComponent(e)}`)).join("&")}function Wt(t,e){const n=function(t){if("_parts"in t)return t._parts;if("entries"in t)return[...t.entries()];throw new Error("You are trying to map not a FormData object")}(t);return n.reduce(((t,n)=>(t.append(...e(n)),t)),new FormData)}const Tt=(t,e,n="push",r="id")=>{const a=new Map,o=t=>String(bt(r)?r(t):t[r]);return("push"===n?t:e).forEach((t=>{a.set(o(t),t)})),("push"===n?e:t).forEach((t=>{a.set(o(t),"push"===n?{...a.get(o(t)),...t}:{...t,...a.get(o(t))})})),Array.from(a.values())};function Et(){}function Nt(t,e){return e.reduce(((t,e)=>(Object.prototype.hasOwnProperty.call(t,e)&&delete t[e],t)),{...t})}function Ct(t,e){return e.reduce(((e,n)=>({...e,[n]:t[n]})),{})}function Ft(t){return new Promise((e=>{setTimeout(e,t)}))}function qt(t,e=0,n){let r=!0,a=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return l(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),f(t,e,{leading:r,trailing:a,maxWait:e})}const Yt=t=>t?new Promise(((e,n)=>{const r=new FileReader;r.readAsDataURL(t),r.onload=()=>e(r.result),r.onerror=t=>n(t)})):Promise.reject(new Error("File not found")),It=1/0;function Ht(t){if(!t)return 0===t?t:0;if((t=Number(t))===It||t===-1/0){return 17976931348623157e292*(t<0?-1:1)}return t}function zt(...t){return a((e=>{t.forEach((t=>{bt(t)?t(e):null!==t&&(t.current=e)}))}),t)}function At(e){const n=t(e);return n.current=e,n}const $t=t=>{const e=At(t);r((()=>()=>{e.current()}),[])};function Lt(t,n){const r=At(t),a=n?.wait??600,o=e((()=>f(((...t)=>r.current(...t)),a,n)),[]);return $t((()=>{o.cancel()})),{debounce:o,cancel:o.cancel,flush:o.flush}}function Qt(){const e=t(!0);return e.current?(e.current=!1,!0):e.current}function Bt(t,e){const n=Qt();r((()=>n?()=>{}:t()),e)}function Gt(t,e,a){const[o,i]=n({}),{debounce:u}=Lt((()=>{i({})}),a);r((()=>u()),e),Bt(t,[o])}function Xt(t,e){const[r,a]=n(e);return yt(r)?[t,a]:[r,a]}const Ut=({key:t,storage:e,excludeFields:n=[],includeFields:r=[]})=>{if(!e)throw new Error("useFormPersist: storage is required. Try using one of the provided storage engines: sessionStorage / localStorage / AsyncStorage (react-native) ");const a=function(t){if("undefined"==typeof document&&xt(t.getItem("useFormPersist test object"))){const e=t;return{getItem:e.getItem,setItem:e.setItem,removeItem:e.removeItem}}const e=t;return{getItem:async(...t)=>e.getItem(...t),setItem:async(...t)=>e.setItem(...t),removeItem:async(...t)=>e.removeItem(...t)}}(e);return{syncFromStorage:async({defaultValues:e,syncPolicy:o="storage-first"})=>{const i=await a.getItem(t)||"{}",u=JSON.parse(i),s=r?.length?Object.fromEntries(Object.entries(u).filter((([t])=>r.includes(t)))):u,c={};return Object.keys(s).forEach((t=>{!n?.includes(t)&&(c[t]=s[t])})),e?"default-values-first"===o?Object.keys(e??{}).length?e:c:Object.keys(c??{}).length?c:e||{}:c},syncToStorage:e=>{const r=n.length?Object.entries(e).filter((([t])=>!n.includes(t))).reduce(((t,[e,n])=>Object.assign(t,{[e]:n})),{}):{...e};Object.entries(r).length&&a.setItem(t,JSON.stringify(r))},clear:()=>a.removeItem(t)}},Jt=t=>{r((()=>{t?.()}),[])};function Rt(){const[t,e]=n(!1);return Jt((()=>{e(!0)})),t}function _t(){const e=t(!1);return r((()=>(e.current=!0,()=>{e.current=!1})),[]),a((()=>e.current),[])}function Vt(){const[,t]=n({});return a((()=>t({})),[])}const Kt=(t,e)=>!Object.is(t,e);function Zt(e,n=Kt){const r=t(),a=t();return n(a.current,e)&&(r.current=a.current,a.current=e),r.current}function te(t){const[r,o]=n(t),i=a((()=>{o(!0)}),[]),u=a((()=>{o(!1)}),[]),s=a((()=>{o((t=>!t))}),[]);return e((()=>({value:r,on:i,off:u,toggle:s,set:o})),[r,i,u,s])}const ee=({requestCb:e,defaultParams:r,options:a={wait:600}})=>{const o=t(!1),{value:i,on:u,off:s}=te(!1),[c,d]=n(r),l=async t=>{u();try{await e(t)}finally{s()}},f=Lt((t=>l(t)),a);Jt((()=>{l(c)})),Bt((()=>{o.current?f.debounce(c):l(c)}),[JSON.stringify(c)]);return{loading:i,queryParams:c,updateQueryParams:(t,e=!1)=>{o.current=e,d((e=>({...e,...t})))},reset:()=>d(r)}};function ne(t,e){return e.split(".").reduce((function(t,e){return null==t?void 0:t[e]}),t)}function re(t,n,r){const a=e((()=>n.label),[n.label]),o=e((()=>n.value),[n.value]);return e((()=>t?.map((t=>({value:ne(t,o),label:ne(t,a),...r?.(t)||{}})))??[]),[t,o,a,r])}function ae(t){const[e,r]=n(t);return{state:e,handleUpdate:a((t=>{bt(t)&&r((e=>{const n=t(e);return l(n)?{...e,...n}:e})),l(t)&&r((e=>({...e,...t})))}),[])}}function oe(t=0){const[e,r]=n(t);return{step:e,increment:a((()=>{r((t=>t+1))}),[]),decrement:a((()=>{r((t=>t-1))}),[]),reset:a((()=>{r(t)}),[t]),setStep:r}}class ie{constructor(t,e){if(Object.defineProperty(this,"awsUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"awsBucket",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),!t)throw new Error("AWS url link is required.");if(!e)throw new Error("AWS bucket link is required.");this.awsUrl=t,this.awsBucket=e}static initialize(t,e){return ie.instance||(ie.instance=new ie(t,e)),ie.instance}static getInstance(){if(!ie.instance)throw new Error("AwsImageService is not initialized. Call AwsImageService.initialize() first in your root.");return ie.instance}static genAwsImgUrl(t,e){const n=ie.getInstance(),r=e??{};if(!t)throw new Error("Key is required to generate an image URL.");const a={...r,resize:{...r.resize,fit:r.resize?.fit||"cover"}},i=JSON.stringify({bucket:n.awsBucket,key:t,edits:a}),u=o.from(i).toString("base64");return`${n.awsUrl}/${u}`}}export{ie as AwsImageService,c as checkIsServer,d as checkNavigator,f as debounce,m as deepMergeObjects,g as entries,w as getDirtyValues,b as getFileExtension,y as getProto,mt as getWeekdaysNames,gt as isArray,wt as isDate,Mt as isEmpty,St as isFloat,bt as isFunction,kt as isInt,yt as isNil,pt as isNumber,l as isObject,Pt as isPrimitive,xt as isPromise,Dt as isString,vt as isSymbol,h as keys,Ot as makeFormData,jt as makeQueryString,Wt as mapFormData,Tt as mergeCollectionByKey,Et as noop,Nt as omit,Ct as pick,Ft as sleep,qt as throttle,Yt as toBase64,Ht as toFinite,s as useCodeTimer,zt as useCombinedRef,Lt as useDebounceCallback,Gt as useDebounceEffect,Xt as useDefault,Qt as useFirstMountState,Ut as useHookFormPersist,u as useInterval,Rt as useIsClient,_t as useIsMounted,At as useLatest,Vt as useManualUpdate,i as useMemoCallback,Jt as useMountEffect,Zt as usePrevious,ee as useQueryParamsBuilder,re as useSelectOptions,ae as useStateObject,oe as useStep,te as useSwitchValue,$t as useUnmountEffect,Bt as useUpdateEffect};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VNZW1vQ2FsbGJhY2svdXNlTWVtb0NhbGxiYWNrLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUludGVydmFsL3VzZUludGVydmFsLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUNvZGVUaW1lci91c2VDb2RlVGltZXIudHMiLCIuLi8uLi9zcmMvdXRpbHMvY2hlY2tJc1NlcnZlci9jaGVja0lzU2VydmVyLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2NoZWNrTmF2aWdhdG9yL2NoZWNrTmF2aWdhdG9yLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzT2JqZWN0L2lzT2JqZWN0LnRzIiwiLi4vLi4vc3JjL3V0aWxzL2RlYm91bmNlL2RlYm91bmNlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2tleXMva2V5cy50cyIsIi4uLy4uL3NyYy91dGlscy9kZWVwTWVyZ2VPYmplY3RzL2RlZXBNZXJnZU9iamVjdHMudHMiLCIuLi8uLi9zcmMvdXRpbHMvZW50cmllcy9lbnRyaWVzLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2dldERpcnR5VmFsdWVzL2dldERpcnR5VmFsdWVzLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2dldEZpbGVFeHRlbnNpb24vZ2V0RmlsZUV4dGVuc2lvbi50cyIsIi4uLy4uL3NyYy91dGlscy9nZXRQcm90by9nZXRQcm90by50cyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy90b0RhdGUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0YW50cy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9kZWZhdWx0T3B0aW9ucy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZJU09XZWVrLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRJU09XZWVrWWVhci5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZkRheS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc1ZhbGlkLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9pc0RhdGUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VuZE9mV2Vlay5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0RGlzdGFuY2UubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRMb25nLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRSZWxhdGl2ZS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL19saWIvYnVpbGRMb2NhbGl6ZUZuLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvX2xpYi9idWlsZE1hdGNoRm4ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9fbGliL2J1aWxkTWF0Y2hQYXR0ZXJuRm4ubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9lbi1VUy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL2VuLVVTL19saWIvbG9jYWxpemUubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9lbi1VUy9fbGliL21hdGNoLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXREYXlPZlllYXIubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2RpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZlllYXIubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldElTT1dlZWsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZJU09XZWVrWWVhci5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvZ2V0V2Vla1llYXIubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZXZWVrWWVhci5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9hZGRMZWFkaW5nWmVyb3MubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZm9ybWF0L2xpZ2h0Rm9ybWF0dGVycy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9mb3JtYXQvZm9ybWF0dGVycy5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvcHJvdGVjdGVkVG9rZW5zLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9mb3JtYXQubWpzIiwiLi4vLi4vc3JjL3V0aWxzL2dldFdlZWtkYXlzTmFtZXMvZ2V0V2Vla2RheXNOYW1lcy50cyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9lYWNoRGF5T2ZJbnRlcnZhbC5tanMiLCIuLi8uLi9zcmMvdXRpbHMvaXNBcnJheS9pc0FycmF5LnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzRGF0ZS9pc0RhdGUudHMiLCIuLi8uLi9zcmMvdXRpbHMvaXNGdW5jdGlvbi9pc0Z1bmN0aW9uLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzTmlsL2lzTmlsLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzTnVtYmVyL2lzTnVtYmVyLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzU3ltYm9sL2lzU3ltYm9sLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2lzRW1wdHkvaXNFbXB0eS50cyIsIi4uLy4uL3NyYy91dGlscy9pc0Zsb2F0L2lzRmxvYXQudHMiLCIuLi8uLi9zcmMvdXRpbHMvaXNJbnQvaXNJbnQudHMiLCIuLi8uLi9zcmMvdXRpbHMvaXNQcmltaXRpdmUvaXNQcmltaXRpdmUudHMiLCIuLi8uLi9zcmMvdXRpbHMvaXNQcm9taXNlL2lzUHJvbWlzZS50cyIsIi4uLy4uL3NyYy91dGlscy9pc1N0cmluZy9pc1N0cmluZy50cyIsIi4uLy4uL3NyYy91dGlscy9tYWtlRm9ybURhdGEvbWFrZUZvcm1EYXRhLnRzIiwiLi4vLi4vc3JjL3V0aWxzL21ha2VRdWVyeVN0cmluZy9tYWtlUXVlcnlTdHJpbmcudHMiLCIuLi8uLi9zcmMvdXRpbHMvbWFwRm9ybURhdGEvbWFwRm9ybURhdGEudHMiLCIuLi8uLi9zcmMvdXRpbHMvbWVyZ2VDb2xsZWN0aW9uQnlLZXkvbWVyZ2VDb2xsZWN0aW9uQnlLZXkudHMiLCIuLi8uLi9zcmMvdXRpbHMvbm9vcC9ub29wLnRzIiwiLi4vLi4vc3JjL3V0aWxzL29taXQvb21pdC50cyIsIi4uLy4uL3NyYy91dGlscy9waWNrL3BpY2sudHMiLCIuLi8uLi9zcmMvdXRpbHMvc2xlZXAvc2xlZXAudHMiLCIuLi8uLi9zcmMvdXRpbHMvdGhyb3R0bGUvdGhyb3R0bGUudHMiLCIuLi8uLi9zcmMvdXRpbHMvdG9CYXNlNjQvdG9CYXNlNjQudHMiLCIuLi8uLi9zcmMvdXRpbHMvdG9GaW5pdGUvdG9GaW5pdGUudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlQ29tYmluZWRSZWYvdXNlQ29tYmluZWRSZWYudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlTGF0ZXN0L3VzZUxhdGVzdC50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VVbm1vdW50RWZmZWN0L3VzZVVubW91bnRFZmZlY3QudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlRGVib3VuY2UvdXNlRGVib3VuY2VDYWxsYmFjay50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VGaXJzdE1vdW50U3RhdGUvdXNlRmlyc3RNb3VudFN0YXRlLnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZVVwZGF0ZUVmZmVjdC91c2VVcGRhdGVFZmZlY3QudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlRGVib3VuY2UvdXNlRGVib3VuY2VFZmZlY3QudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlRGVmYXVsdC91c2VEZWZhdWx0LnRzeCIsIi4uLy4uL3NyYy9ob29rcy91c2VIb29rRm9ybVBlcnNpc3QvdXNlSG9va0Zvcm1QZXJzaXN0LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZU1vdW50RWZmZWN0L3VzZU1vdW50RWZmZWN0LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUlzQ2xpZW50L3VzZUlzQ2xpZW50LnRzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZUlzTW91bnRlZC91c2VJc01vdW50ZWQudHMiLCIuLi8uLi9zcmMvaG9va3MvdXNlTWFudWFsVXBkYXRlL3VzZU1hbnVhbFVwZGF0ZS50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VQcmV2aW91cy91c2VQcmV2aW91cy50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VTd2l0Y2hWYWx1ZS91c2VTd2l0Y2hWYWx1ZS50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VRdWVyeVBhcmFtc0J1aWxkZXIvdXNlUXVlcnlQYXJhbXNCdWlsZGVyLnRzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2RvdC1wYXRoLXZhbHVlL2Rpc3QvaW5kZXguZXNtLmpzIiwiLi4vLi4vc3JjL2hvb2tzL3VzZVNlbGVjdE9wdGlvbnMvdXNlU2VsZWN0T3B0aW9ucy50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VTdGF0ZU9iamVjdC91c2VTdGF0ZU9iamVjdC50cyIsIi4uLy4uL3NyYy9ob29rcy91c2VTdGVwL3VzZVN0ZXAudHN4IiwiLi4vLi4vc3JjL3NlcnZpY2VzL0F3c0ltYWdlU2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiAmJiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlPERhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgPD0gbWF4VGltZSAmJiB0aW1lID49IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSA8PSBtYXhUaW1lO1xuICogLy89PiBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89PiBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxID49IG1pblRpbWU7XG4gKiAvLz0+IGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz0+IEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIiwibGV0IGRlZmF1bHRPcHRpb25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdE9wdGlvbnMobmV3T3B0aW9ucykge1xuICBkZWZhdWx0T3B0aW9ucyA9IG5ld09wdGlvbnM7XG59XG4iLCJpbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUubWpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMubWpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgMiBTZXB0ZW1iZXIgMjAxNCAxMTo1NTowMDpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrKG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFN1biBBdWcgMzEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJZiB0aGUgd2VlayBzdGFydHMgb24gTW9uZGF5LCB0aGUgc3RhcnQgb2YgdGhlIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApLCB7IHdlZWtTdGFydHNPbjogMSB9KVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCB3ZWVrU3RhcnRzT24gPVxuICAgIG9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICAwO1xuXG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCBkYXkgPSBfZGF0ZS5nZXREYXkoKTtcbiAgY29uc3QgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG5cbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgLSBkaWZmKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mV2VlaztcbiIsImltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsubWpzXCI7XG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZklTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhbiBJU08gd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZJU09XZWVrKGRhdGUpIHtcbiAgcmV0dXJuIHN0YXJ0T2ZXZWVrKGRhdGUsIHsgd2Vla1N0YXJ0c09uOiAxIH0pO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZJU09XZWVrO1xuIiwiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuL2NvbnN0cnVjdEZyb20ubWpzXCI7XG5pbXBvcnQgeyBzdGFydE9mSVNPV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrLm1qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLm1qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGdldElTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUsXG4gKiB3aGljaCBhbHdheXMgc3RhcnRzIDMgZGF5cyBiZWZvcmUgdGhlIHllYXIncyBmaXJzdCBUaHVyc2RheS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSB