From 2892f59540e5f439459d74bd5d909945686c82cf Mon Sep 17 00:00:00 2001 From: ComBatVision Date: Thu, 28 Sep 2023 18:32:25 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20WorldWin?= =?UTF-8?q?dEarth/WorldWindKotlin@464cfe6820c05147f0f8b3c584bfb80b2dfc3abe?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldwind-tutorials.js | 2 +- worldwind-tutorials.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worldwind-tutorials.js b/worldwind-tutorials.js index 0940f0c8b..25c508d7c 100644 --- a/worldwind-tutorials.js +++ b/worldwind-tutorials.js @@ -1,3 +1,3 @@ /*! For license information please see worldwind-tutorials.js.LICENSE.txt */ -!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["worldwind-tutorials"]=n():t["worldwind-tutorials"]=n()}(this,(()=>(()=>{var __webpack_modules__={135:(t,n,i)=>{"use strict";function e(t,n,i){function e(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,n&&n.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===i&&(i=Error),e.prototype=Object.create(i.prototype),e.prototype.name=t,e.prototype.constructor=e,e}i.r(n),i.d(n,{ArithmeticException:()=>u,ChronoField:()=>S,ChronoLocalDate:()=>Y,ChronoLocalDateTime:()=>_n,ChronoUnit:()=>z,ChronoZonedDateTime:()=>rn,Clock:()=>wn,DateTimeException:()=>r,DateTimeFormatter:()=>Wt,DateTimeFormatterBuilder:()=>Ut,DateTimeParseException:()=>s,DayOfWeek:()=>M,DecimalStyle:()=>mt,Duration:()=>j,IllegalArgumentException:()=>a,IllegalStateException:()=>h,Instant:()=>vn,IsoChronology:()=>nn,IsoFields:()=>rt,LocalDate:()=>hn,LocalDateTime:()=>ln,LocalTime:()=>fn,Month:()=>N,MonthDay:()=>Gt,NullPointerException:()=>_,OffsetDateTime:()=>on,OffsetTime:()=>en,Period:()=>P,ResolverStyle:()=>U,SignStyle:()=>gt,Temporal:()=>V,TemporalAccessor:()=>O,TemporalAdjuster:()=>H,TemporalAdjusters:()=>Xt,TemporalAmount:()=>b,TemporalField:()=>E,TemporalQueries:()=>q,TemporalQuery:()=>I,TemporalUnit:()=>k,TextStyle:()=>$t,UnsupportedTemporalTypeException:()=>o,ValueRange:()=>C,Year:()=>Jt,YearConstants:()=>x,YearMonth:()=>Kt,ZoneId:()=>G,ZoneOffset:()=>Q,ZoneOffsetTransition:()=>gn,ZoneRegion:()=>Mt,ZoneRules:()=>K,ZoneRulesProvider:()=>Dt,ZonedDateTime:()=>sn,_:()=>On,convert:()=>zn,nativeJs:()=>Cn,use:()=>An});var r=e("DateTimeException",(function(t,n){void 0===n&&(n=null);var i=t||this.name;null!==n&&n instanceof Error&&(i+="\n-------\nCaused by: "+n.stack+"\n-------\n"),this.message=i})),s=e("DateTimeParseException",(function(t,n,i,e){void 0===n&&(n=""),void 0===i&&(i=0),void 0===e&&(e=null);var r=t||this.name;r+=": "+n+", at index: "+i,null!==e&&e instanceof Error&&(r+="\n-------\nCaused by: "+e.stack+"\n-------\n"),this.message=r,this.parsedString=function(){return n},this.errorIndex=function(){return i}})),o=e("UnsupportedTemporalTypeException",null,r),u=e("ArithmeticException"),a=e("IllegalArgumentException"),h=e("IllegalStateException"),_=e("NullPointerException");function l(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t,n,i){if(!t)throw i?new i(n):new Error(n)}function v(t,n){if(null==t)throw new _(n+" must not be null");return t}function w(t,n,i){if(!(t instanceof n))throw new a(i+" must be an instance of "+(n.name?n.name:n)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function d(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var p=Object.freeze({__proto__:null,assert:c,requireNonNull:v,requireInstance:w,abstractMethodFail:d}),m=9007199254740991,g=-9007199254740991,$=function(){function t(){}return t.intDiv=function(n,i){var e=n/i;return e=t.roundDown(e),t.safeZero(e)},t.intMod=function(n,i){var e=n-t.intDiv(n,i)*i;return e=t.roundDown(e),t.safeZero(e)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(n,i){var e=Math.floor(n/i);return t.safeZero(e)},t.floorMod=function(n,i){var e=n-t.floorDiv(n,i)*i;return t.safeZero(e)},t.safeAdd=function(n,i){if(t.verifyInt(n),t.verifyInt(i),0===n)return t.safeZero(i);if(0===i)return t.safeZero(n);var e=t.safeToInt(n+i);if(e===n||e===i)throw new u("Invalid addition beyond MAX_SAFE_INTEGER!");return e},t.safeSubtract=function(n,i){return t.verifyInt(n),t.verifyInt(i),0===n&&0===i?0:0===n?t.safeZero(-1*i):0===i?t.safeZero(n):t.safeToInt(n-i)},t.safeMultiply=function(n,i){if(t.verifyInt(n),t.verifyInt(i),1===n)return t.safeZero(i);if(1===i)return t.safeZero(n);if(0===n||0===i)return 0;var e=t.safeToInt(n*i);if(e/i!==n||n===g&&-1===i||i===g&&-1===n)throw new u("Multiplication overflows: "+n+" * "+i);return e},t.parseInt=function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n}((function(n){var i=parseInt(n);return t.safeToInt(i)})),t.safeToInt=function(n){return t.verifyInt(n),t.safeZero(n)},t.verifyInt=function(t){if(null==t)throw new u("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new u("Invalid int value, using NaN as argument");if(t%1!=0)throw new u("Invalid value: '"+t+"' is a float");if(t>m||tn?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(n){if(n!=n||n===1/0)return 0;for(var i=n;n>4294967295;)i^=n/=4294967295;return t.smi(i)},t.hashCode=function(){for(var n=17,i=arguments.length,e=new Array(i),r=0;r0&&e<0)e+=fn.NANOS_PER_SECOND;else if(i<0&&e>0)e-=fn.NANOS_PER_SECOND;else if(0===i&&0!==e){var s=n.with(S.NANO_OF_SECOND,r);i=t.until(s,z.SECONDS)}}catch(t){}return this.ofSeconds(i,e)},n.parse=function(t){v(t,"text");var i=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==i&&"T"===i[3]==0){var e="-"===i[1],r=i[2],o=i[4],u=i[5],a=i[6],h=i[7];if(null!=r||null!=o||null!=u||null!=a){var _=n._parseNumber(t,r,fn.SECONDS_PER_DAY,"days"),l=n._parseNumber(t,o,fn.SECONDS_PER_HOUR,"hours"),f=n._parseNumber(t,u,fn.SECONDS_PER_MINUTE,"minutes"),c=n._parseNumber(t,a,1,"seconds"),w=null!=a&&"-"===a.charAt(0),d=n._parseFraction(t,h,w?-1:1);try{return n._create(e,_,l,f,c,d)}catch(n){throw new s("Text cannot be parsed to a Duration: overflow",t,0,n)}}}throw new s("Text cannot be parsed to a Duration",t,0)},n._parseNumber=function(t,n,i,e){if(null==n)return 0;try{return"+"===n[0]&&(n=n.substring(1)),$.safeMultiply(parseFloat(n),i)}catch(n){throw new s("Text cannot be parsed to a Duration: "+e,t,0,n)}},n._parseFraction=function(t,n,i){return null==n||0===n.length?0:(n=(n+"000000000").substring(0,9),parseFloat(n)*i)},n._create=function(){return arguments.length<=2?n._createSecondsNanos(arguments[0],arguments[1]):n._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},n._createNegateDaysHoursMinutesSecondsNanos=function(t,i,e,r,s,o){var u=$.safeAdd(i,$.safeAdd(e,$.safeAdd(r,s)));return t?n.ofSeconds(u,o).negated():n.ofSeconds(u,o)},n._createSecondsNanos=function(t,i){return void 0===t&&(t=0),void 0===i&&(i=0),0===t&&0===i?n.ZERO:new n(t,i)};var i=n.prototype;return i.get=function(t){if(t===z.SECONDS)return this._seconds;if(t===z.NANOS)return this._nanos;throw new o("Unsupported unit: "+t)},i.units=function(){return[z.SECONDS,z.NANOS]},i.isZero=function(){return 0===this._seconds&&0===this._nanos},i.isNegative=function(){return this._seconds<0},i.seconds=function(){return this._seconds},i.nano=function(){return this._nanos},i.withSeconds=function(t){return n._create(t,this._nanos)},i.withNanos=function(t){return S.NANO_OF_SECOND.checkValidIntValue(t),n._create(this._seconds,t)},i.plusDuration=function(t){return v(t,"duration"),this.plus(t.seconds(),t.nano())},i.plus=function(t,n){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&n instanceof k?this.plusAmountUnit(t,n):this.plusSecondsNanos(t,n)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n===z.DAYS)return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_DAY),0);if(n.isDurationEstimated())throw new o("Unit must not have an estimated duration");if(0===t)return this;if(n instanceof z){switch(n){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this.plusSecondsNanos(1e3*$.intDiv(t,1e9),1e3*$.intMod(t,1e9));case z.MILLIS:return this.plusMillis(t);case z.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos($.safeMultiply(n.duration().seconds(),t),0)}var i=n.duration().multipliedBy(t);return this.plusSecondsNanos(i.seconds(),i.nano())},i.plusDays=function(t){return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_DAY),0)},i.plusHours=function(t){return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_HOUR),0)},i.plusMinutes=function(t){return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_MINUTE),0)},i.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},i.plusMillis=function(t){return this.plusSecondsNanos($.intDiv(t,1e3),1e6*$.intMod(t,1e3))},i.plusNanos=function(t){return this.plusSecondsNanos(0,t)},i.plusSecondsNanos=function(t,i){if(v(t,"secondsToAdd"),v(i,"nanosToAdd"),0===t&&0===i)return this;var e=$.safeAdd(this._seconds,t);e=$.safeAdd(e,$.intDiv(i,fn.NANOS_PER_SECOND)),i=$.intMod(i,fn.NANOS_PER_SECOND);var r=$.safeAdd(this._nanos,i);return n.ofSeconds(e,r)},i.minus=function(t,n){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,n)},i.minusDuration=function(t){v(t,"duration");var n=t.seconds(),i=t.nano();return n===g?this.plus(m,-i):this.plus(-n,-i)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),t===g?this.plusAmountUnit(m,n):this.plusAmountUnit(-t,n)},i.minusDays=function(t){return t===g?this.plusDays(m):this.plusDays(-t)},i.minusHours=function(t){return t===g?this.plusHours(m):this.plusHours(-t)},i.minusMinutes=function(t){return t===g?this.plusMinutes(m):this.plusMinutes(-t)},i.minusSeconds=function(t){return t===g?this.plusSeconds(m):this.plusSeconds(-t)},i.minusMillis=function(t){return t===g?this.plusMillis(m):this.plusMillis(-t)},i.minusNanos=function(t){return t===g?this.plusNanos(m):this.plusNanos(-t)},i.multipliedBy=function(t){if(0===t)return n.ZERO;if(1===t)return this;var i=$.safeMultiply(this._seconds,t),e=$.safeMultiply(this._nanos,t);return i+=$.intDiv(e,fn.NANOS_PER_SECOND),e=$.intMod(e,fn.NANOS_PER_SECOND),n.ofSeconds(i,e)},i.dividedBy=function(t){if(0===t)throw new u("Cannot divide by zero");if(1===t)return this;var i=$.intDiv(this._seconds,t),e=$.roundDown((this._seconds/t-i)*fn.NANOS_PER_SECOND),r=$.intDiv(this._nanos,t);return r=e+r,n.ofSeconds(i,r)},i.negated=function(){return this.multipliedBy(-1)},i.abs=function(){return this.isNegative()?this.negated():this},i.addTo=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,z.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,z.NANOS)),t},i.subtractFrom=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,z.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,z.NANOS)),t},i.toDays=function(){return $.intDiv(this._seconds,fn.SECONDS_PER_DAY)},i.toHours=function(){return $.intDiv(this._seconds,fn.SECONDS_PER_HOUR)},i.toMinutes=function(){return $.intDiv(this._seconds,fn.SECONDS_PER_MINUTE)},i.toMillis=function(){var t=Math.round($.safeMultiply(this._seconds,1e3));return $.safeAdd(t,$.intDiv(this._nanos,1e6))},i.toNanos=function(){var t=$.safeMultiply(this._seconds,fn.NANOS_PER_SECOND);return $.safeAdd(t,this._nanos)},i.compareTo=function(t){v(t,"otherDuration"),w(t,n,"otherDuration");var i=$.compareNumbers(this._seconds,t.seconds());return 0!==i?i:this._nanos-t.nano()},i.equals=function(t){return this===t||t instanceof n&&this.seconds()===t.seconds()&&this.nano()===t.nano()},i.toString=function(){if(this===n.ZERO)return"PT0S";var t,i=$.intDiv(this._seconds,fn.SECONDS_PER_HOUR),e=$.intDiv($.intMod(this._seconds,fn.SECONDS_PER_HOUR),fn.SECONDS_PER_MINUTE),r=$.intMod(this._seconds,fn.SECONDS_PER_MINUTE),s="PT";if(0!==i&&(s+=i+"H"),0!==e&&(s+=e+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*fn.NANOS_PER_SECOND-this._nanos):""+(fn.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+"S"},i.toJSON=function(){return this.toString()},n}(b),x=function(){},z=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return this.isDateBased()||this===n.FOREVER},i.isDateBased=function(){return this.compareTo(n.DAYS)>=0&&this!==n.FOREVER},i.isTimeBased=function(){return this.compareTo(n.DAYS)<0},i.isSupportedBy=function(t){if(this===n.FOREVER)return!1;try{return t.plus(1,this),!0}catch(n){try{return t.plus(-1,this),!0}catch(t){return!1}}},i.addTo=function(t,n){return t.plus(n,this)},i.between=function(t,n){return t.until(n,this)},i.toString=function(){return this._name},i.compareTo=function(t){return this.duration().compareTo(t.duration())},n}(k),E=function(){function t(){}var n=t.prototype;return n.isDateBased=function(){d("isDateBased")},n.isTimeBased=function(){d("isTimeBased")},n.baseUnit=function(){d("baseUnit")},n.rangeUnit=function(){d("rangeUnit")},n.range=function(){d("range")},n.rangeRefinedBy=function(t){d("rangeRefinedBy")},n.getFrom=function(t){d("getFrom")},n.adjustInto=function(t,n){d("adjustInto")},n.isSupportedBy=function(t){d("isSupportedBy")},n.displayName=function(){d("displayName")},n.equals=function(t){d("equals")},n.name=function(){d("name")},t}(),C=function(){function t(t,n,i,e){c(!(t>n),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+n+"'",a),c(!(i>e),"Smallest maximum value '"+i+"' must be less than largest maximum value '"+e+"'",a),c(!(n>e),"Minimum value '"+n+"' must be less than maximum value '"+e+"'",a),this._minSmallest=t,this._minLargest=n,this._maxLargest=e,this._maxSmallest=i}var n=t.prototype;return n.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},n.minimum=function(){return this._minSmallest},n.largestMinimum=function(){return this._minLargest},n.maximum=function(){return this._maxLargest},n.smallestMaximum=function(){return this._maxSmallest},n.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},n.checkValidValue=function(t,n){return this.isValidValue(t)?t:c(!1,null!=n?"Invalid value for "+n+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,r)},n.checkValidIntValue=function(t,n){if(!1===this.isValidIntValue(t))throw new r("Invalid int value for "+n+": "+t);return t},n.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},n.isIntValue=function(){return this.minimum()>=$.MIN_SAFE_INTEGER&&this.maximum()<=$.MAX_SAFE_INTEGER},n.equals=function(n){return n===this||n instanceof t&&this._minSmallest===n._minSmallest&&this._minLargest===n._minLargest&&this._maxSmallest===n._maxSmallest&&this._maxLargest===n._maxLargest},n.hashCode=function(){return $.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},n.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return(t+=" - ")+(this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():""))},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):c(!1,"Invalid number of arguments "+arguments.length,a)},t}(),S=function(t){function n(n,i,e,r){var s;return(s=t.call(this)||this)._name=n,s._baseUnit=i,s._rangeUnit=e,s._range=r,s}l(n,t),n.byName=function(t){for(var i in n)if(n[i]&&n[i]instanceof n&&n[i].name()===t)return n[i]};var i=n.prototype;return i.name=function(){return this._name},i.baseUnit=function(){return this._baseUnit},i.rangeUnit=function(){return this._rangeUnit},i.range=function(){return this._range},i.displayName=function(){return this.toString()},i.checkValidValue=function(t){return this.range().checkValidValue(t,this)},i.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},i.isDateBased=function(){return this===n.DAY_OF_WEEK||this===n.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===n.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===n.DAY_OF_MONTH||this===n.DAY_OF_YEAR||this===n.EPOCH_DAY||this===n.ALIGNED_WEEK_OF_MONTH||this===n.ALIGNED_WEEK_OF_YEAR||this===n.MONTH_OF_YEAR||this===n.YEAR_OF_ERA||this===n.YEAR||this===n.ERA},i.isTimeBased=function(){return this===n.NANO_OF_SECOND||this===n.NANO_OF_DAY||this===n.MICRO_OF_SECOND||this===n.MICRO_OF_DAY||this===n.MILLI_OF_SECOND||this===n.MILLI_OF_DAY||this===n.SECOND_OF_MINUTE||this===n.SECOND_OF_DAY||this===n.MINUTE_OF_HOUR||this===n.MINUTE_OF_DAY||this===n.HOUR_OF_AMPM||this===n.CLOCK_HOUR_OF_AMPM||this===n.HOUR_OF_DAY||this===n.CLOCK_HOUR_OF_DAY||this===n.AMPM_OF_DAY},i.rangeRefinedBy=function(t){return t.range(this)},i.getFrom=function(t){return t.getLong(this)},i.toString=function(){return this.name()},i.equals=function(t){return this===t},i.adjustInto=function(t,n){return t.with(this,n)},i.isSupportedBy=function(t){return t.isSupported(this)},n}(E),q=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),O=function(){function t(){}var n=t.prototype;return n.query=function(t){return t===q.zoneId()||t===q.chronology()||t===q.precision()?null:t.queryFrom(this)},n.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},n.range=function(t){if(t instanceof S){if(this.isSupported(t))return t.range();throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},t}(),I=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n.prototype.queryFrom=function(t){d("queryFrom")},n}(y);function A(t,n){var i=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n}(I);return i.prototype.queryFrom=n,new i(t)}var T,D,M=function(t){function n(n,i){var e;return(e=t.call(this)||this)._ordinal=n,e._name=i,e}l(n,t);var i=n.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},n.values=function(){return T.slice()},n.valueOf=function(t){for(var i=0;i7)throw new r("Invalid value for DayOfWeek: "+t);return T[t-1]},n.from=function(t){if(c(null!=t,"temporal",_),t instanceof n)return t;try{return n.of(t.get(S.DAY_OF_WEEK))}catch(n){throw n instanceof r?new r("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),n):n}},i.value=function(){return this._ordinal+1},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof S?t===S.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===S.DAY_OF_WEEK)return t.range();if(t instanceof S)throw new o("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===S.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===S.DAY_OF_WEEK)return this.value();if(t instanceof S)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=$.floorMod(t,7);return T[$.floorMod(this._ordinal+(n+7),7)]},i.minus=function(t){return this.plus(-1*$.floorMod(t,7))},i.query=function(t){return t===q.precision()?z.DAYS:t===q.localDate()||t===q.localTime()||t===q.chronology()||t===q.zone()||t===q.zoneId()||t===q.offset()?null:(c(null!=t,"query",_),t.queryFrom(this))},i.adjustInto=function(t){return v(t,"temporal"),t.with(S.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},n}(O),N=function(t){function n(n,i){var e;return(e=t.call(this)||this)._value=$.safeToInt(n),e._name=i,e}l(n,t);var i=n.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof S?t===S.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===S.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===S.MONTH_OF_YEAR)return this.value();if(t instanceof S)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var i=$.intMod(t,12)+12,e=$.intMod(this.value()+i,12);return e=0===e?12:e,n.of(e)},i.minus=function(t){return this.plus(-1*$.intMod(t,12))},i.length=function(t){switch(this){case n.FEBRUARY:return t?29:28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case n.FEBRUARY:return 28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case n.FEBRUARY:return 29;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var i=t?1:0;switch(this){case n.JANUARY:return 1;case n.FEBRUARY:return 32;case n.MARCH:return 60+i;case n.APRIL:return 91+i;case n.MAY:return 121+i;case n.JUNE:return 152+i;case n.JULY:return 182+i;case n.AUGUST:return 213+i;case n.SEPTEMBER:return 244+i;case n.OCTOBER:return 274+i;case n.NOVEMBER:return 305+i;case n.DECEMBER:default:return 335+i}},i.firstMonthOfQuarter=function(){switch(this){case n.JANUARY:case n.FEBRUARY:case n.MARCH:return n.JANUARY;case n.APRIL:case n.MAY:case n.JUNE:return n.APRIL;case n.JULY:case n.AUGUST:case n.SEPTEMBER:return n.JULY;case n.OCTOBER:case n.NOVEMBER:case n.DECEMBER:default:return n.OCTOBER}},i.query=function(n){return c(null!=n,"query() parameter must not be null",r),n===q.chronology()?nn.INSTANCE:n===q.precision()?z.MONTHS:t.prototype.query.call(this,n)},i.toString=function(){switch(this){case n.JANUARY:return"JANUARY";case n.FEBRUARY:return"FEBRUARY";case n.MARCH:return"MARCH";case n.APRIL:return"APRIL";case n.MAY:return"MAY";case n.JUNE:return"JUNE";case n.JULY:return"JULY";case n.AUGUST:return"AUGUST";case n.SEPTEMBER:return"SEPTEMBER";case n.OCTOBER:return"OCTOBER";case n.NOVEMBER:return"NOVEMBER";case n.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(S.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._value-t._value},i.equals=function(t){return this===t},n.valueOf=function(t){for(var i=0;i12)&&c(!1,"Invalid value for MonthOfYear: "+t,r),D[t-1]},n.from=function(t){if(t instanceof n)return t;try{return n.of(t.get(S.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),n)}},n}(O),R=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,P=function(t){function n(i,e,r){var s;s=t.call(this)||this;var o=$.safeToInt(i),u=$.safeToInt(e),a=$.safeToInt(r);return 0===o&&0===u&&0===a?(n.ZERO||(s._years=o,s._months=u,s._days=a,n.ZERO=f(s)),n.ZERO||f(s)):(s._years=o,s._months=u,s._days=a,s)}l(n,t),n.ofYears=function(t){return n.create(t,0,0)},n.ofMonths=function(t){return n.create(0,t,0)},n.ofWeeks=function(t){return n.create(0,0,$.safeMultiply(t,7))},n.ofDays=function(t){return n.create(0,0,t)},n.of=function(t,i,e){return n.create(t,i,e)},n.from=function(t){if(t instanceof n)return t;v(t,"amount");for(var i=0,e=0,s=0,o=t.units(),u=0;un.MAX_SECONDS)throw new r("Zone offset not in valid range: -18:00 to +18:00")},n._validate=function(t,n,i){if(t<-18||t>18)throw new r("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(n<0||i<0)throw new r("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(n>0||i>0)throw new r("Zone offset minutes and seconds must be negative because hours is negative")}else if(n>0&&i<0||n<0&&i>0)throw new r("Zone offset minutes and seconds must have the same sign");if(Math.abs(n)>59)throw new r("Zone offset minutes not in valid range: abs(value) "+Math.abs(n)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new r("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(n)>0||Math.abs(i)>0))throw new r("Zone offset not in valid range: -18:00 to +18:00")},n.of=function(t){v(t,"offsetId");var i,e,s,o=Z[t];if(null!=o)return o;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=n._parseNumber(t,1,!1),e=0,s=0;break;case 5:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=0;break;case 6:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=0;break;case 7:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=n._parseNumber(t,5,!1);break;case 9:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=n._parseNumber(t,7,!0);break;default:throw new r("Invalid ID for ZoneOffset, invalid format: "+t)}var u=t[0];if("+"!==u&&"-"!==u)throw new r("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===u?n.ofHoursMinutesSeconds(-i,-e,-s):n.ofHoursMinutesSeconds(i,e,s)},n._parseNumber=function(t,n,i){if(i&&":"!==t[n-1])throw new r("Invalid ID for ZoneOffset, colon not found when expected: "+t);var e=t[n],s=t[n+1];if(e<"0"||e>"9"||s<"0"||s>"9")throw new r("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(e.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},n.ofHours=function(t){return n.ofHoursMinutesSeconds(t,0,0)},n.ofHoursMinutes=function(t,i){return n.ofHoursMinutesSeconds(t,i,0)},n.ofHoursMinutesSeconds=function(t,i,e){n._validate(t,i,e);var r=t*fn.SECONDS_PER_HOUR+i*fn.SECONDS_PER_MINUTE+e;return n.ofTotalSeconds(r)},n.ofTotalMinutes=function(t){var i=t*fn.SECONDS_PER_MINUTE;return n.ofTotalSeconds(i)},n.ofTotalSeconds=function(t){if(t%(15*fn.SECONDS_PER_MINUTE)==0){var i=t,e=X[i];return null==e&&(e=new n(t),X[i]=e,Z[e.id()]=e),e}return new n(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===S.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof S)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return v(t,"query"),t===q.offset()||t===q.zone()?this:t===q.localDate()||t===q.localTime()||t===q.precision()||t===q.chronology()||t===q.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(S.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return v(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof n&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},n}(G),tt=function(t){function n(){var n;return(n=t.call(this)||this).fieldValues=new F,n.chrono=null,n.zone=null,n.date=null,n.time=null,n.leapSecond=!1,n.excessDays=null,n}l(n,t),n.create=function(t,i){var e=new n;return e._addFieldValue(t,i),e};var i=n.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,n){v(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==n)throw new r("Conflict found: "+t+" "+i+" differs from "+t+" "+n+": "+this);return this._putFieldValue0(t,n)},i._putFieldValue0=function(t,n){return this.fieldValues.put(t,n),this},i.resolve=function(t,n){return null!=n&&this.fieldValues.retainAll(n),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=P.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(nn.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var n in this._addObject(t),this.fieldValues.keySet()){var i=S.byName(n);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var e=void 0;try{e=t.getLong(i)}catch(t){if(t instanceof r)continue;throw t}var s=this.fieldValues.get(i);if(e!==s)throw new r("Conflict found: Field "+i+" "+e+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(S.CLOCK_HOUR_OF_DAY)){var n=this.fieldValues.remove(S.CLOCK_HOUR_OF_DAY);t!==U.LENIENT&&(t===U.SMART&&0===n||S.CLOCK_HOUR_OF_DAY.checkValidValue(n)),this._addFieldValue(S.HOUR_OF_DAY,24===n?0:n)}if(this.fieldValues.containsKey(S.CLOCK_HOUR_OF_AMPM)){var i=this.fieldValues.remove(S.CLOCK_HOUR_OF_AMPM);t!==U.LENIENT&&(t===U.SMART&&0===i||S.CLOCK_HOUR_OF_AMPM.checkValidValue(i)),this._addFieldValue(S.HOUR_OF_AMPM,12===i?0:i)}if(t!==U.LENIENT&&(this.fieldValues.containsKey(S.AMPM_OF_DAY)&&S.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(S.AMPM_OF_DAY)),this.fieldValues.containsKey(S.HOUR_OF_AMPM)&&S.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(S.HOUR_OF_AMPM))),this.fieldValues.containsKey(S.AMPM_OF_DAY)&&this.fieldValues.containsKey(S.HOUR_OF_AMPM)){var e=this.fieldValues.remove(S.AMPM_OF_DAY),r=this.fieldValues.remove(S.HOUR_OF_AMPM);this._addFieldValue(S.HOUR_OF_DAY,12*e+r)}if(this.fieldValues.containsKey(S.NANO_OF_DAY)){var s=this.fieldValues.remove(S.NANO_OF_DAY);t!==U.LENIENT&&S.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(S.SECOND_OF_DAY,$.intDiv(s,1e9)),this._addFieldValue(S.NANO_OF_SECOND,$.intMod(s,1e9))}if(this.fieldValues.containsKey(S.MICRO_OF_DAY)){var o=this.fieldValues.remove(S.MICRO_OF_DAY);t!==U.LENIENT&&S.MICRO_OF_DAY.checkValidValue(o),this._addFieldValue(S.SECOND_OF_DAY,$.intDiv(o,1e6)),this._addFieldValue(S.MICRO_OF_SECOND,$.intMod(o,1e6))}if(this.fieldValues.containsKey(S.MILLI_OF_DAY)){var u=this.fieldValues.remove(S.MILLI_OF_DAY);t!==U.LENIENT&&S.MILLI_OF_DAY.checkValidValue(u),this._addFieldValue(S.SECOND_OF_DAY,$.intDiv(u,1e3)),this._addFieldValue(S.MILLI_OF_SECOND,$.intMod(u,1e3))}if(this.fieldValues.containsKey(S.SECOND_OF_DAY)){var a=this.fieldValues.remove(S.SECOND_OF_DAY);t!==U.LENIENT&&S.SECOND_OF_DAY.checkValidValue(a),this._addFieldValue(S.HOUR_OF_DAY,$.intDiv(a,3600)),this._addFieldValue(S.MINUTE_OF_HOUR,$.intMod($.intDiv(a,60),60)),this._addFieldValue(S.SECOND_OF_MINUTE,$.intMod(a,60))}if(this.fieldValues.containsKey(S.MINUTE_OF_DAY)){var h=this.fieldValues.remove(S.MINUTE_OF_DAY);t!==U.LENIENT&&S.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(S.HOUR_OF_DAY,$.intDiv(h,60)),this._addFieldValue(S.MINUTE_OF_HOUR,$.intMod(h,60))}if(t!==U.LENIENT&&(this.fieldValues.containsKey(S.MILLI_OF_SECOND)&&S.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(S.MILLI_OF_SECOND)),this.fieldValues.containsKey(S.MICRO_OF_SECOND)&&S.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(S.MICRO_OF_SECOND))),this.fieldValues.containsKey(S.MILLI_OF_SECOND)&&this.fieldValues.containsKey(S.MICRO_OF_SECOND)){var _=this.fieldValues.remove(S.MILLI_OF_SECOND),l=this.fieldValues.get(S.MICRO_OF_SECOND);this._putFieldValue0(S.MICRO_OF_SECOND,1e3*_+$.intMod(l,1e3))}if(this.fieldValues.containsKey(S.MICRO_OF_SECOND)&&this.fieldValues.containsKey(S.NANO_OF_SECOND)){var f=this.fieldValues.get(S.NANO_OF_SECOND);this._putFieldValue0(S.MICRO_OF_SECOND,$.intDiv(f,1e3)),this.fieldValues.remove(S.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(S.MILLI_OF_SECOND)&&this.fieldValues.containsKey(S.NANO_OF_SECOND)){var c=this.fieldValues.get(S.NANO_OF_SECOND);this._putFieldValue0(S.MILLI_OF_SECOND,$.intDiv(c,1e6)),this.fieldValues.remove(S.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(S.MICRO_OF_SECOND)){var v=this.fieldValues.remove(S.MICRO_OF_SECOND);this._putFieldValue0(S.NANO_OF_SECOND,1e3*v)}else if(this.fieldValues.containsKey(S.MILLI_OF_SECOND)){var w=this.fieldValues.remove(S.MILLI_OF_SECOND);this._putFieldValue0(S.NANO_OF_SECOND,1e6*w)}},i._resolveTimeInferZeroes=function(t){var n=this.fieldValues.get(S.HOUR_OF_DAY),i=this.fieldValues.get(S.MINUTE_OF_HOUR),e=this.fieldValues.get(S.SECOND_OF_MINUTE),r=this.fieldValues.get(S.NANO_OF_SECOND);if(null!=n&&(null!=i||null==e&&null==r)&&(null==i||null!=e||null==r)){if(t!==U.LENIENT){if(null!=n){t!==U.SMART||24!==n||null!=i&&0!==i||null!=e&&0!==e||null!=r&&0!==r||(n=0,this.excessDays=P.ofDays(1));var s=S.HOUR_OF_DAY.checkValidIntValue(n);if(null!=i){var o=S.MINUTE_OF_HOUR.checkValidIntValue(i);if(null!=e){var u=S.SECOND_OF_MINUTE.checkValidIntValue(e);if(null!=r){var a=S.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(fn.of(s,o,u,a))}else this._addObject(fn.of(s,o,u))}else null==r&&this._addObject(fn.of(s,o))}else null==e&&null==r&&this._addObject(fn.of(s,0))}}else if(null!=n){var h=n;if(null!=i)if(null!=e){null==r&&(r=0);var _=$.safeMultiply(h,36e11);_=$.safeAdd(_,$.safeMultiply(i,6e10)),_=$.safeAdd(_,$.safeMultiply(e,1e9)),_=$.safeAdd(_,r);var l=$.floorDiv(_,864e11),f=$.floorMod(_,864e11);this._addObject(fn.ofNanoOfDay(f)),this.excessDays=P.ofDays(l)}else{var c=$.safeMultiply(h,3600);c=$.safeAdd(c,$.safeMultiply(i,60));var v=$.floorDiv(c,86400),w=$.floorMod(c,86400);this._addObject(fn.ofSecondOfDay(w)),this.excessDays=P.ofDays(v)}else{var d=$.safeToInt($.floorDiv(h,24));h=$.floorMod(h,24),this._addObject(fn.of(h,0)),this.excessDays=P.ofDays(d)}}this.fieldValues.remove(S.HOUR_OF_DAY),this.fieldValues.remove(S.MINUTE_OF_HOUR),this.fieldValues.remove(S.SECOND_OF_MINUTE),this.fieldValues.remove(S.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof Y?this.date=t:t instanceof fn&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(S.OFFSET_SECONDS);if(null!=t){var n=Q.ofTotalSeconds(t),i=this.date.atTime(this.time).atZone(n).getLong(S.INSTANT_SECONDS);this.fieldValues.put(S.INSTANT_SECONDS,i)}else if(null!=this.zone){var e=this.date.atTime(this.time).atZone(this.zone).getLong(S.INSTANT_SECONDS);this.fieldValues.put(S.INSTANT_SECONDS,e)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){v(t,"field");var n=this.getFieldValue0(t);if(null==n){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new r("Field not found: "+t)}return n},i.query=function(t){return t===q.zoneId()?this.zone:t===q.chronology()?this.chrono:t===q.localDate()?null!=this.date?hn.from(this.date):null:t===q.localTime()?this.time:t===q.zone()||t===q.offset()?t.queryFrom(this):t===q.precision()?null:t.queryFrom(this)},n}(O),nt=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new it(this)]}var n=t.prototype;return n._constructorParam=function(t,n,i){this._locale=t,this._symbols=n,this._overrideChronology=i},n._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},n._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new it(this)]},n.copy=function(){return new t(this)},n.symbols=function(){return this._symbols},n.isStrict=function(){return this._strict},n.setStrict=function(t){this._strict=t},n.locale=function(){return this._locale},n.setLocale=function(t){this._locale=t},n.startOptional=function(){this._parsed.push(this.currentParsed().copy())},n.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},n.isCaseSensitive=function(){return this._caseSensitive},n.setCaseSensitive=function(t){this._caseSensitive=t},n.subSequenceEquals=function(t,n,i,e,r){if(n+r>t.length||e+r>i.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),i=i.toLowerCase());for(var s=0;s0)return null;throw t}},n.temporal=function(){return this._temporal},n.locale=function(){return this._locale},n.setDateTime=function(t){this._temporal=t},n.setLocale=function(t){this._locale=t},t}(),rt={},st=[0,90,181,273,0,91,182,274],ot=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i._isIso=function(){return!0},n._getWeekRangeByLocalDate=function(t){var i=n._getWeekBasedYear(t);return C.of(1,n._getWeekRangeByYear(i))},n._getWeekRangeByYear=function(t){var n=hn.of(t,1,1);return n.dayOfWeek()===M.THURSDAY||n.dayOfWeek()===M.WEDNESDAY&&n.isLeapYear()?53:52},n._getWeek=function(t){var i=t.dayOfWeek().ordinal(),e=t.dayOfYear()-1,r=e+(3-i),s=r-7*$.intDiv(r,7)-3;if(s<-3&&(s+=7),e=363){var e=t.dayOfWeek().ordinal();(i=i-363-(t.isLeapYear()?1:0))-e>=0&&n++}return n},i.displayName=function(){return this.toString()},i.resolve=function(){return null},i.name=function(){return this.toString()},n}(E),ut=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"DayOfQuarter"},i.baseUnit=function(){return z.DAYS},i.rangeUnit=function(){return pt},i.range=function(){return C.of(1,90,92)},i.isSupportedBy=function(t){return t.isSupported(S.DAY_OF_YEAR)&&t.isSupported(S.MONTH_OF_YEAR)&&t.isSupported(S.YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.getLong(ct);if(1===n){var i=t.getLong(S.YEAR);return nn.isLeapYear(i)?C.of(1,91):C.of(1,90)}return 2===n?C.of(1,91):3===n||4===n?C.of(1,92):this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.get(S.DAY_OF_YEAR),i=t.get(S.MONTH_OF_YEAR),e=t.getLong(S.YEAR);return n-st[$.intDiv(i-1,3)+(nn.isLeapYear(e)?4:0)]},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(S.DAY_OF_YEAR,t.getLong(S.DAY_OF_YEAR)+(n-i))},i.resolve=function(t,n,i){var e=t.get(S.YEAR),r=t.get(ct);if(null==e||null==r)return null;var s,o=S.YEAR.checkValidIntValue(e),u=t.get(ft);if(i===U.LENIENT){var a=r;s=(s=(s=hn.of(o,1,1)).plusMonths($.safeMultiply($.safeSubtract(a,1),3))).plusDays($.safeSubtract(u,1))}else{var h=ct.range().checkValidIntValue(r,ct);if(i===U.STRICT){var _=92;1===h?_=nn.isLeapYear(o)?91:90:2===h&&(_=91),C.of(1,_).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,3*(h-1)+1,1).plusDays(u-1)}return t.remove(this),t.remove(S.YEAR),t.remove(ct),s},n}(ot),at=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"QuarterOfYear"},i.baseUnit=function(){return pt},i.rangeUnit=function(){return z.YEARS},i.range=function(){return C.of(1,4)},i.isSupportedBy=function(t){return t.isSupported(S.MONTH_OF_YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){return this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: QuarterOfYear");var n=t.getLong(S.MONTH_OF_YEAR);return $.intDiv(n+2,3)},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(S.MONTH_OF_YEAR,t.getLong(S.MONTH_OF_YEAR)+3*(n-i))},n}(ot),ht=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekOfWeekBasedYear"},i.baseUnit=function(){return z.WEEKS},i.rangeUnit=function(){return dt},i.range=function(){return C.of(1,52,53)},i.isSupportedBy=function(t){return t.isSupported(S.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeekRangeByLocalDate(hn.from(t))},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeek(hn.from(t))},i.adjustInto=function(t,n){return this.range().checkValidValue(n,this),t.plus($.safeSubtract(n,this.getFrom(t)),z.WEEKS)},i.resolve=function(t,n,i){var e=t.get(wt),r=t.get(S.DAY_OF_WEEK);if(null==e||null==r)return null;var s,o=wt.range().checkValidIntValue(e,wt),u=t.get(vt);if(i===U.LENIENT){var a=r,h=0;a>7?(h=$.intDiv(a-1,7),a=$.intMod(a-1,7)+1):a<1&&(h=$.intDiv(a,7)-1,a=$.intMod(a,7)+7),s=hn.of(o,1,4).plusWeeks(u-1).plusWeeks(h).with(S.DAY_OF_WEEK,a)}else{var _=S.DAY_OF_WEEK.checkValidIntValue(r);if(i===U.STRICT){var l=hn.of(o,1,4);ot._getWeekRangeByLocalDate(l).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,1,4).plusWeeks(u-1).with(S.DAY_OF_WEEK,_)}return t.remove(this),t.remove(wt),t.remove(S.DAY_OF_WEEK),s},i.displayName=function(){return"Week"},n}(ot),_t=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekBasedYear"},i.baseUnit=function(){return dt},i.rangeUnit=function(){return z.FOREVER},i.range=function(){return S.YEAR.range()},i.isSupportedBy=function(t){return t.isSupported(S.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){return S.YEAR.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekBasedYear");return ot._getWeekBasedYear(hn.from(t))},i.adjustInto=function(t,n){if(!1===this.isSupportedBy(t))throw new o("Unsupported field: WeekBasedYear");var i=this.range().checkValidIntValue(n,wt),e=hn.from(t),r=e.get(S.DAY_OF_WEEK),s=ot._getWeek(e);53===s&&52===ot._getWeekRangeByYear(i)&&(s=52);var u=hn.of(i,1,4),a=r-u.get(S.DAY_OF_WEEK)+7*(s-1);return u=u.plusDays(a),t.with(u)},n}(ot),lt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return!0},i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i.isSupportedBy=function(t){return t.isSupported(S.EPOCH_DAY)},i.addTo=function(t,n){switch(this){case dt:var i=$.safeAdd(t.get(wt),n);return t.with(wt,i);case pt:return t.plus($.intDiv(n,256),z.YEARS).plus(3*$.intMod(n,256),z.MONTHS);default:throw new h("Unreachable")}},i.between=function(t,n){switch(this){case dt:return $.safeSubtract(n.getLong(wt),t.getLong(wt));case pt:return $.intDiv(t.until(n,z.MONTHS),3);default:throw new h("Unreachable")}},i.toString=function(){return name},n}(k),ft=null,ct=null,vt=null,wt=null,dt=null,pt=null,mt=function(){function t(t,n,i,e){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=n,this._negativeSign=i,this._decimalSeparator=e}var n=t.prototype;return n.positiveSign=function(){return this._positiveSign},n.withPositiveSign=function(n){return n===this._positiveSign?this:new t(this._zeroDigit,n,this._negativeSign,this._decimalSeparator)},n.negativeSign=function(){return this._negativeSign},n.withNegativeSign=function(n){return n===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,n,this._decimalSeparator)},n.zeroDigit=function(){return this._zeroDigit},n.withZeroDigit=function(n){return n===this._zeroDigit?this:new t(n,this._positiveSign,this._negativeSign,this._decimalSeparator)},n.decimalSeparator=function(){return this._decimalSeparator},n.withDecimalSeparator=function(n){return n===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,n)},n.convertToDigit=function(t){var n=t.charCodeAt(0)-this._zeroDigitCharCode;return n>=0&&n<=9?n:-1},n.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var n=this._zeroDigitCharCode-"0".charCodeAt(0),i="",e=0;e1)throw new a('invalid literal, too long: "'+t+'"');this._literal=t}var n=t.prototype;return n.print=function(t,n){return n.append(this._literal),!0},n.parse=function(t,n,i){if(i===n.length)return~i;var e=n.charAt(i);return!1===t.charEquals(this._literal,e)?~i:i+this._literal.length},n.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),bt=function(){function t(t,n){this._printerParsers=t,this._optional=n}var n=t.prototype;return n.withOptional=function(n){return n===this._optional?this:new t(this._printerParsers,n)},n.print=function(t,n){var i=n.length();this._optional&&t.startOptional();try{for(var e=0;e9)throw new a("Minimum width must be from 0 to 9 inclusive but was "+n);if(i<1||i>9)throw new a("Maximum width must be from 1 to 9 inclusive but was "+i);if(i0){this.decimalPoint&&n.append(e.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var u=s;u=e.convertNumberToI18N(u),this.decimalPoint&&n.append(e.decimalSeparator()),n.append(u)}return!0},n.parse=function(t,n,i){var e=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=n.length;if(i===s)return e>0?~i:i;if(this.decimalPoint){if(n[i]!==t.symbols().decimalSeparator())return e>0?~i:i;i++}var o=i+e;if(o>s)return~i;for(var u=Math.min(i+r,s),a=0,h=i;h0&&this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE},n.print=function(t,n){var i=t.getValue(this._field);if(null==i)return!1;var e=this._getValue(t,i),s=t.symbols(),o=""+Math.abs(e);if(o.length>this._maxWidth)throw new r("Field "+this._field+" cannot be printed as the value "+e+" exceeds the maximum print width of "+this._maxWidth);if(o=s.convertNumberToI18N(o),e>=0)switch(this._signStyle){case gt.EXCEEDS_PAD:this._minWidth<15&&e>=jt[this._minWidth]&&n.append(s.positiveSign());break;case gt.ALWAYS:n.append(s.positiveSign())}else switch(this._signStyle){case gt.NORMAL:case gt.EXCEEDS_PAD:case gt.ALWAYS:n.append(s.negativeSign());break;case gt.NOT_NEGATIVE:throw new r("Field "+this._field+" cannot be printed as the value "+e+" cannot be negative according to the SignStyle")}for(var u=0;u=0&&ie)return~i;for(var _=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),l=0,f=i,v=0;v<2;v++){for(var w=Math.min(f+_,e);f15)throw new u("number text exceeds length");l=10*l+p}if(!(this._subsequentWidth>0&&0===v))break;var m=f-i;_=Math.max(a,m-this._subsequentWidth),f=i,l=0}if(s){if(0===l&&t.isStrict())return~(i-1);0!==l&&(l=-l)}else if(this._signStyle===gt.EXCEEDS_PAD&&t.isStrict()){var g=f-i;if(o){if(g<=this._minWidth)return~(i-1)}else if(g>this._minWidth)return~i}return this._setValue(t,l,i,f)},n._getValue=function(t,n){return n},n._setValue=function(t,n,i,e){return t.setParsedField(this._field,n,i,e)},n.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===gt.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),zt=function(t){function n(n,i,e,s,o){var u;if(u=t.call(this,n,i,e,gt.NOT_NEGATIVE)||this,i<1||i>10)throw new a("The width must be from 1 to 10 inclusive but was "+i);if(e<1||e>10)throw new a("The maxWidth must be from 1 to 10 inclusive but was "+e);if(e$.MAX_SAFE_INTEGER)throw new r("Unable to add printer-parser as the range exceeds the capacity of an int")}return u._baseValue=s,u._baseDate=o,u}l(n,t);var i=n.prototype;return i._getValue=function(t,n){var i=Math.abs(n),e=this._baseValue;return null!==this._baseDate&&(t.temporal(),e=nn.INSTANCE.date(this._baseDate).get(this._field)),n>=e&&n=0){var s=jt[this._minWidth],o=r-r%s;(n=r>0?o+n:o-n)=3||this.type>=1&&s>0)&&(n.append(this.type%2==0?":":"").appendChar($.intDiv(s,10)+"0").appendChar(s%10+"0"),a+=s,(this.type>=7||this.type>=5&&o>0)&&(n.append(this.type%2==0?":":"").appendChar($.intDiv(o,10)+"0").appendChar(o%10+"0"),a+=o)),0===a&&(n.setLength(u),n.append(this.noOffsetText))}return!0},n.parse=function(t,n,i){var e=n.length,r=this.noOffsetText.length;if(0===r){if(i===e)return t.setParsedField(S.OFFSET_SECONDS,0,i,i)}else{if(i===e)return~i;if(t.subSequenceEquals(n,i,this.noOffsetText,0,r))return t.setParsedField(S.OFFSET_SECONDS,0,i,i+r)}var s=n[i];if("+"===s||"-"===s){var o="-"===s?-1:1,u=[0,0,0,0];if(u[0]=i+1,!1===(this._parseNumber(u,1,n,!0)||this._parseNumber(u,2,n,this.type>=3)||this._parseNumber(u,3,n,!1))){var a=$.safeZero(o*(3600*u[1]+60*u[2]+u[3]));return t.setParsedField(S.OFFSET_SECONDS,a,i,u[0])}}return 0===r?t.setParsedField(S.OFFSET_SECONDS,0,i,i+r):~i},n._parseNumber=function(t,n,i,e){if((this.type+3)/21){if(r+1>i.length||":"!==i[r])return e;r++}if(r+2>i.length)return e;var s=i[r++],o=i[r++];if(s<"0"||s>"9"||o<"0"||o>"9")return e;var u=10*(s.charCodeAt(0)-48)+(o.charCodeAt(0)-48);return u<0||u>59?e:(t[n]=u,t[0]=r,!1)},n.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+Et[this.type]+",'"+t+"')"},t}();Ct.INSTANCE_ID=new Ct("Z","+HH:MM:ss"),Ct.PATTERNS=Et;var St=function(){function t(t,n,i){this._printerParser=t,this._padWidth=n,this._padChar=i}var n=t.prototype;return n.print=function(t,n){var i=n.length();if(!1===this._printerParser.print(t,n))return!1;var e=n.length()-i;if(e>this._padWidth)throw new r("Cannot print as output of "+e+" characters exceeds pad width of "+this._padWidth);for(var s=0;sn.length)),c(i>=0),i===n.length)return~i;var s=i+this._padWidth;if(s>n.length){if(e)return~i;s=n.length}for(var o=i;on.length||i<0)),!1===t.subSequenceEquals(n,i,this._literal,0,this._literal.length)?~i:i+this._literal.length},n.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),Dt=function(){function t(){}return t.getRules=function(t){throw new r("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),Mt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._id=n,e._rules=i,e}l(n,t),n.ofId=function(t){return new n(t,Dt.getRules(t))};var i=n.prototype;return i.id=function(){return this._id},i.rules=function(){return this._rules},n}(G),Nt=function(){function t(t,n){this.query=t,this.description=n}var n=t.prototype;return n.print=function(t,n){var i=t.getValueQuery(this.query);return null!=i&&(n.append(i.id()),!0)},n.parse=function(t,n,i){var e=n.length;if(i>e)return~i;if(i===e)return~i;var r=n.charAt(i);if("+"===r||"-"===r){var s=t.copy(),o=Ct.INSTANCE_ID.parse(s,n,i);if(o<0)return o;var u=s.getParsed(S.OFFSET_SECONDS),a=Q.ofTotalSeconds(u);return t.setParsedZone(a),o}if(e>=i+2){var h=n.charAt(i+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return e>=i+3&&t.charEquals(n.charAt(i+2),"C")?this._parsePrefixedOffset(t,n,i,i+3):this._parsePrefixedOffset(t,n,i,i+2);if(t.charEquals(r,"G")&&e>=i+3&&t.charEquals(h,"M")&&t.charEquals(n.charAt(i+2),"T"))return this._parsePrefixedOffset(t,n,i,i+3)}if("SYSTEM"===n.substr(i,6))return t.setParsedZone(G.systemDefault()),i+6;if(t.charEquals(r,"Z"))return t.setParsedZone(Q.UTC),i+1;var _=Dt.getAvailableZoneIds();Lt.size!==_.length&&(Lt=Rt.createTreeMap(_));for(var l=e-i,f=Lt.treeMap,c=null,v=0;null!=f;){var w=n.substr(i,Math.min(f.length,l));null!=(f=f.get(w))&&f.isLeaf&&(c=w,v=f.length)}return null!=c?(t.setParsedZone(Mt.ofId(c)),i+v):~i},n._parsePrefixedOffset=function(t,n,i,e){var r=n.substring(i,e).toUpperCase(),s=t.copy();if(ethis.length){var e=n.substr(0,this.length),r=this._treeMap[e];null==r&&(r=new t(i,!1),this._treeMap[e]=r),r.add(n)}},n.get=function(t){return this._treeMap[t]},t}(),Lt=new Rt([]),Ft=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(n,i){v(n,"parent"),v(i,"optional");var e=new t;return e._parent=n,e._optional=i,e};var n=t.prototype;return n.parseCaseSensitive=function(){return this._appendInternalPrinterParser(qt.SENSITIVE),this},n.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(qt.INSENSITIVE),this},n.parseStrict=function(){return this._appendInternalPrinterParser(qt.STRICT),this},n.parseLenient=function(){return this._appendInternalPrinterParser(qt.LENIENT),this},n.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},n._appendValue1=function(t){return v(t),this._appendValuePrinterParser(new xt(t,1,Ft,gt.NORMAL)),this},n._appendValue2=function(t,n){if(v(t),n<1||n>Ft)throw new a("The width must be from 1 to 15 inclusive but was "+n);var i=new xt(t,n,n,gt.NOT_NEGATIVE);return this._appendValuePrinterParser(i),this},n._appendValue4=function(t,n,i,e){if(v(t),v(e),n===i&&e===gt.NOT_NEGATIVE)return this._appendValue2(t,i);if(n<1||n>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+n);if(i<1||i>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+i);if(i=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof xt){var n=this._active._valueParserIndex,i=this._active._printerParsers[n];t.minWidth()===t.maxWidth()&&t.signStyle()===gt.NOT_NEGATIVE?(i=i.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=n):(i=i.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[n]=i}else this._active._valueParserIndex=this._appendInternal(t);return this},n.appendFraction=function(t,n,i,e){return this._appendInternal(new kt(t,n,i,e)),this},n.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new a("Invalid fractional digits: "+t);return this._appendInternal(new Bt(t)),this},n.appendOffsetId=function(){return this._appendInternal(Ct.INSTANCE_ID),this},n.appendOffset=function(t,n){return this._appendInternalPrinterParser(new Ct(n,t)),this},n.appendZoneId=function(){return this._appendInternal(new Nt(q.zoneId(),"ZoneId()")),this},n.appendPattern=function(t){return v(t,"pattern"),this._parsePattern(t),this},n.appendZoneText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendLocalizedOffset=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendWeekField=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n._parsePattern=function(t){for(var n={G:S.ERA,y:S.YEAR_OF_ERA,u:S.YEAR,Q:rt.QUARTER_OF_YEAR,q:rt.QUARTER_OF_YEAR,M:S.MONTH_OF_YEAR,L:S.MONTH_OF_YEAR,D:S.DAY_OF_YEAR,d:S.DAY_OF_MONTH,F:S.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:S.DAY_OF_WEEK,c:S.DAY_OF_WEEK,e:S.DAY_OF_WEEK,a:S.AMPM_OF_DAY,H:S.HOUR_OF_DAY,k:S.CLOCK_HOUR_OF_DAY,K:S.HOUR_OF_AMPM,h:S.CLOCK_HOUR_OF_AMPM,m:S.MINUTE_OF_HOUR,s:S.SECOND_OF_MINUTE,S:S.NANO_OF_SECOND,A:S.MILLI_OF_DAY,n:S.NANO_OF_SECOND,N:S.NANO_OF_DAY},i=0;i="A"&&e<="Z"||e>="a"&&e<="z"){for(var r=i++;i="A"&&e<="Z"||e>="a"&&e<="z")){for(o=s,r=i++;i4)throw new a("Too many pattern letters: "+e);4===s?this.appendZoneText($t.FULL):this.appendZoneText($t.SHORT)}else if("V"===e){if(2!==s)throw new a("Pattern letter count must be 2: "+e);this.appendZoneId()}else if("Z"===e)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset($t.FULL);else{if(5!==s)throw new a("Too many pattern letters: "+e);this.appendOffset("+HH:MM:ss","Z")}else if("O"===e)if(1===s)this.appendLocalizedOffset($t.SHORT);else{if(4!==s)throw new a("Pattern letter count must be 1 or 4: "+e);this.appendLocalizedOffset($t.FULL)}else if("X"===e){if(s>5)throw new a("Too many pattern letters: "+e);this.appendOffset(Ct.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===e){if(s>5)throw new a("Too many pattern letters: "+e);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(Ct.PATTERNS[s+(1===s?0:1)],h)}else if("W"===e){if(s>1)throw new a("Too many pattern letters: "+e);this.appendWeekField("W",s)}else if("w"===e){if(s>2)throw new a("Too many pattern letters: "+e);this.appendWeekField("w",s)}else{if("Y"!==e)throw new a("Unknown pattern letter: "+e);this.appendWeekField("Y",s)}i--}else if("'"===e){for(var _=i++;i=t.length)throw new a("Pattern ends with an incomplete string literal: "+t);var l=t.substring(_+1,i);0===l.length?this.appendLiteral("'"):this.appendLiteral(l.replace("''","'"))}else if("["===e)this.optionalStart();else if("]"===e){if(null===this._active._parent)throw new a("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===e||"}"===e||"#"===e)throw new a("Pattern includes reserved character: '"+e+"'");this.appendLiteral(e)}}},n._parseField=function(t,n,i){switch(t){case"u":case"y":2===n?this.appendValueReduced(i,2,2,zt.BASE_DATE):n<4?this.appendValue(i,n,Ft,gt.NORMAL):this.appendValue(i,n,Ft,gt.EXCEEDS_PAD);break;case"M":case"Q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,$t.SHORT);break;case 4:this.appendText(i,$t.FULL);break;case 5:this.appendText(i,$t.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"L":case"q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,$t.SHORT_STANDALONE);break;case 4:this.appendText(i,$t.FULL_STANDALONE);break;case 5:this.appendText(i,$t.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"e":switch(n){case 1:case 2:this.appendWeekField("e",n);break;case 3:this.appendText(i,$t.SHORT);break;case 4:this.appendText(i,$t.FULL);break;case 5:this.appendText(i,$t.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"c":switch(n){case 1:this.appendWeekField("c",n);break;case 2:throw new a("Invalid number of pattern letters: "+t);case 3:this.appendText(i,$t.SHORT_STANDALONE);break;case 4:this.appendText(i,$t.FULL_STANDALONE);break;case 5:this.appendText(i,$t.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"a":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendText(i,$t.SHORT);break;case"E":case"G":switch(n){case 1:case 2:case 3:this.appendText(i,$t.SHORT);break;case 4:this.appendText(i,$t.FULL);break;case 5:this.appendText(i,$t.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"S":this.appendFraction(S.NANO_OF_SECOND,n,n,!1);break;case"F":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===n)this.appendValue(i);else{if(2!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;case"D":if(1===n)this.appendValue(i);else{if(!(n<=3))throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;default:1===n?this.appendValue(i):this.appendValue(i,n)}},n.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},n._padNext1=function(t){return this._padNext2(t," ")},n._padNext2=function(t,n){if(t<1)throw new a("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=n,this._active._valueParserIndex=-1,this},n.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},n.optionalEnd=function(){if(null==this._active._parent)throw new h("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new bt(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},n._appendInternal=function(t){return c(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new St(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.appendLiteral=function(t){return c(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new yt(t.charAt(0))):this._appendInternalPrinterParser(new Tt(t))),this},n._appendInternalPrinterParser=function(t){return c(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new St(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.append=function(t){return v(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},n.toFormatter=function(t){for(void 0===t&&(t=U.SMART);null!=this._active._parent;)this.optionalEnd();var n=new bt(this._printerParsers,!1);return new Wt(n,null,mt.STANDARD,t,null,null,null)},t}(),Ht=31556952e4,Vt=62167219200,Bt=function(){function t(t){this.fractionalDigits=t}var n=t.prototype;return n.print=function(t,n){var i=t.getValue(S.INSTANT_SECONDS),e=0;if(t.temporal().isSupported(S.NANO_OF_SECOND)&&(e=t.temporal().getLong(S.NANO_OF_SECOND)),null==i)return!1;var r=i,s=S.NANO_OF_SECOND.checkValidIntValue(e);if(r>=-62167219200){var o=r-Ht+Vt,u=$.floorDiv(o,Ht)+1,a=$.floorMod(o,Ht),h=ln.ofEpochSecond(a-Vt,0,Q.UTC);u>0&&n.append("+").append(u),n.append(h),0===h.second()&&n.append(":00")}else{var _=r+Vt,l=$.intDiv(_,Ht),f=$.intMod(_,Ht),c=ln.ofEpochSecond(f-Vt,0,Q.UTC),v=n.length();n.append(c),0===c.second()&&n.append(":00"),l<0&&(-1e4===c.year()?n.replace(v,v+2,""+(l-1)):0===f?n.insert(v,l):n.insert(v+1,Math.abs(l)))}if(-2===this.fractionalDigits)0!==s&&(n.append("."),0===$.intMod(s,1e6)?n.append((""+($.intDiv(s,1e6)+1e3)).substring(1)):0===$.intMod(s,1e3)?n.append((""+($.intDiv(s,1e3)+1e6)).substring(1)):n.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){n.append(".");for(var w=1e8,d=0;-1===this.fractionalDigits&&s>0||d64?t.substring(0,64)+"...":t,new s("Text '"+i+"' could not be parsed: "+n.message,t,0,n)},n._parseToBuilder=function(t,n){var i=null!=n?n:new L(0),e=this._parseUnresolved0(t,i);if(null==e||i.getErrorIndex()>=0||null==n&&i.getIndex()64?t.substr(0,64).toString()+"...":t,i.getErrorIndex()>=0?new s("Text '"+r+"' could not be parsed at index "+i.getErrorIndex(),t,i.getErrorIndex()):new s("Text '"+r+"' could not be parsed, unparsed text found at index "+i.getIndex(),t,i.getIndex())}return e.toBuilder()},n.parseUnresolved=function(t,n){return this._parseUnresolved0(t,n)},n._parseUnresolved0=function(t,n){c(null!=t,"text",_),c(null!=n,"position",_);var i=new nt(this),e=n.getIndex();return(e=this._printerParser.parse(i,t,e))<0?(n.setErrorIndex(~e),null):(n.setIndex(e),i.toParsed())},n._toPrinterParser=function(t){return this._printerParser.withOptional(t)},n.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}(),Gt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._month=$.safeToInt(n),e._day=$.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return this.nowClock(wn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),this.nowClock(wn.system(t))},n.nowClock=function(t){v(t,"clock");var i=hn.now(t);return n.of(i.month(),i.dayOfMonth())},n.of=function(t,i){return 2===arguments.length&&t instanceof N?n.ofMonthNumber(t,i):n.ofNumberNumber(t,i)},n.ofMonthNumber=function(t,i){if(v(t,"month"),S.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new r("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new n(t.value(),i)},n.ofNumberNumber=function(t,i){return v(t,"month"),v(i,"dayOfMonth"),n.of(N.of(t),i)},n.from=function(t){if(v(t,"temporal"),w(t,O,"temporal"),t instanceof n)return t;try{return n.of(t.get(S.MONTH_OF_YEAR),t.get(S.DAY_OF_MONTH))}catch(n){throw new r("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,Ot)},n.parseStringFormatter=function(t,i){return v(t,"text"),v(i,"formatter"),w(i,Wt,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof S?t===S.MONTH_OF_YEAR||t===S.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===S.MONTH_OF_YEAR?n.range():n===S.DAY_OF_MONTH?C.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof S){switch(t){case S.DAY_OF_MONTH:return this._day;case S.MONTH_OF_YEAR:return this._month}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return 0==(29===this._day&&2===this._month&&!1===Jt.isLeap(t))},i.withMonth=function(t){return this.with(N.of(t))},i.with=function(t){if(v(t,"month"),t.value()===this._month)return this;var i=Math.min(this._day,t.maxLength());return new n(t.value(),i)},i.withDayOfMonth=function(t){return t===this._day?this:n.of(this._month,t)},i.query=function(n){return v(n,"query"),w(n,I,"query"),n===q.chronology()?nn.INSTANCE:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),(t=t.with(S.MONTH_OF_YEAR,this._month)).with(S.DAY_OF_MONTH,Math.min(t.range(S.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return hn.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){v(t,"other"),w(t,n,"other");var i=this._month-t.monthValue();return 0===i&&(i=this._day-t.dayOfMonth()),i},i.isAfter=function(t){return v(t,"other"),w(t,n,"other"),this.compareTo(t)>0},i.isBefore=function(t){return v(t,"other"),w(t,n,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.monthValue()===i.monthValue()&&this.dayOfMonth()===i.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),w(t,Wt,"formatter"),t.format(this)},n}(O),Kt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._year=$.safeToInt(n),e._month=$.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(wn.systemDefaultZone())},n.nowZoneId=function(t){return n.nowClock(wn.system(t))},n.nowClock=function(t){var i=hn.now(t);return n.of(i.year(),i.month())},n.of=function(t,i){return 2===arguments.length&&i instanceof N?n.ofNumberMonth(t,i):n.ofNumberNumber(t,i)},n.ofNumberMonth=function(t,i){return v(i,"month"),w(i,N,"month"),n.ofNumberNumber(t,i.value())},n.ofNumberNumber=function(t,i){return v(t,"year"),v(i,"month"),S.YEAR.checkValidValue(t),S.MONTH_OF_YEAR.checkValidValue(i),new n(t,i)},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;try{return n.of(t.get(S.YEAR),t.get(S.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,It)},n.parseStringFormatter=function(t,i){return v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof E?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof S?t===S.YEAR||t===S.MONTH_OF_YEAR||t===S.PROLEPTIC_MONTH||t===S.YEAR_OF_ERA||t===S.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof z?t===z.MONTHS||t===z.YEARS||t===z.DECADES||t===z.CENTURIES||t===z.MILLENNIA||t===z.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===S.YEAR_OF_ERA?this.year()<=0?C.of(1,Jt.MAX_VALUE+1):C.of(1,Jt.MAX_VALUE):t.prototype.range.call(this,n)},i.get=function(t){return v(t,"field"),w(t,E,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),w(t,E,"field"),t instanceof S){switch(t){case S.MONTH_OF_YEAR:return this._month;case S.PROLEPTIC_MONTH:return this._getProlepticMonth();case S.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case S.YEAR:return this._year;case S.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return $.safeAdd($.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,n){return 1===arguments.length?this.withAdjuster(t):this.withFieldValue(t,n)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,n){if(v(t,"field"),w(t,E,"field"),t instanceof S){var i=t;switch(i.checkValidValue(n),i){case S.MONTH_OF_YEAR:return this.withMonth(n);case S.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(S.PROLEPTIC_MONTH));case S.YEAR_OF_ERA:return this.withYear(this._year<1?1-n:n);case S.YEAR:return this.withYear(n);case S.ERA:return this.getLong(S.ERA)===n?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return S.YEAR.checkValidValue(t),new n(t,this._month)},i.withMonth=function(t){return S.MONTH_OF_YEAR.checkValidValue(t),new n(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),w(t,b,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),w(n,k,"unit"),n instanceof z){switch(n){case z.MONTHS:return this.plusMonths(t);case z.YEARS:return this.plusYears(t);case z.DECADES:return this.plusYears($.safeMultiply(t,10));case z.CENTURIES:return this.plusYears($.safeMultiply(t,100));case z.MILLENNIA:return this.plusYears($.safeMultiply(t,1e3));case z.ERAS:return this.with(S.ERA,$.safeAdd(this.getLong(S.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=S.YEAR.checkValidIntValue(this._year+t);return this.withYear(n)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t;return new n(S.YEAR.checkValidIntValue($.floorDiv(i,12)),$.floorMod(i,12)+1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return t===$.MIN_SAFE_INTEGER?this.plusAmountUnit($.MAX_SAFE_INTEGER,n).plusAmountUnit(1,n):this.plusAmountUnit(-t,n)},i.minusYears=function(t){return t===$.MIN_SAFE_INTEGER?this.plusYears($.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===$.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(n){return v(n,"query"),w(n,I,"query"),n===q.chronology()?nn.INSTANCE:n===q.precision()?z.MONTHS:n===q.localDate()||n===q.localTime()||n===q.zone()||n===q.zoneId()||n===q.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),w(t,V,"temporal"),t.with(S.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit"),w(t,V,"endExclusive"),w(i,k,"unit");var e=n.from(t);if(i instanceof z){var r=e._getProlepticMonth()-this._getProlepticMonth();switch(i){case z.MONTHS:return r;case z.YEARS:return r/12;case z.DECADES:return r/120;case z.CENTURIES:return r/1200;case z.MILLENNIA:return r/12e3;case z.ERAS:return e.getLong(S.ERA)-this.getLong(S.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDay=function(t){return hn.of(this._year,this._month,t)},i.atEndOfMonth=function(){return hn.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){v(t,"other"),w(t,n,"other");var i=this._year-t.year();return 0===i&&(i=this._month-t.monthValue()),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.year()===i.year()&&this.monthValue()===i.monthValue()}return!1},i.toString=function(){return It.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V),Jt=function(t){function n(n){var i;return(i=t.call(this)||this)._year=$.safeToInt(n),i}l(n,t);var i=n.prototype;return i.value=function(){return this._year},n.now=function(t){return void 0===t&&(t=void 0),void 0===t?n.now0():t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(wn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),w(t,G,"zone"),n.nowClock(wn.system(t))},n.nowClock=function(t){v(t,"clock"),w(t,wn,"clock");var i=hn.now(t);return n.of(i.year())},n.of=function(t){return v(t,"isoYear"),S.YEAR.checkValidValue(t),new n(t)},n.from=function(t){if(v(t,"temporal"),w(t,O,"temporal"),t instanceof n)return t;try{return n.of(t.get(S.YEAR))}catch(n){throw new r("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return arguments.length<=1?n.parseText(t):n.parseTextFormatter(t,i)},n.parseText=function(t){return v(t,"text"),n.parse(t,At)},n.parseTextFormatter=function(t,i){return void 0===i&&(i=At),v(t,"text"),v(i,"formatter"),w(i,Wt,"formatter"),i.parse(t,n.FROM)},n.isLeap=function(t){return 0===$.intMod(t,4)&&(0!==$.intMod(t,100)||0===$.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof E?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof S?t===S.YEAR||t===S.YEAR_OF_ERA||t===S.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof z?t===z.YEARS||t===z.DECADES||t===z.CENTURIES||t===z.MILLENNIA||t===z.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){if(this.isSupported(n))return n.range();if(n instanceof S)throw new o("Unsupported field: "+n);return t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof S){switch(t){case S.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case S.YEAR:return this._year;case S.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return n.isLeap(this._year)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),w(t,E,"field"),t instanceof S){switch(t.checkValidValue(i),t){case S.YEAR_OF_ERA:return n.of(this._year<1?1-i:i);case S.YEAR:return n.of(i);case S.ERA:return this.getLong(S.ERA)===i?this:n.of(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.plusAmount=function(t){return v(t,"amount"),w(t,b,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),w(n,k,"unit"),n instanceof z){switch(n){case z.YEARS:return this.plusYears(t);case z.DECADES:return this.plusYears($.safeMultiply(t,10));case z.CENTURIES:return this.plusYears($.safeMultiply(t,100));case z.MILLENNIA:return this.plusYears($.safeMultiply(t,1e3));case z.ERAS:return this.with(S.ERA,$.safeAdd(this.getLong(S.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){return 0===t?this:n.of(S.YEAR.checkValidIntValue($.safeAdd(this._year,t)))},i.minusAmount=function(t){return v(t,"amount"),w(t,b,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),w(n,k,"unit"),t===$.MIN_SAFE_INTEGER?this.plus($.MAX_SAFE_INTEGER,n).plus(1,n):this.plus(-t,n)},i.minusYears=function(t){return t===$.MIN_SAFE_INTEGER?this.plusYears($.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return v(t,"temporal"),t.with(S.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return hn.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof N?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return v(t,"month"),w(t,N,"month"),Kt.of(this._year,t)},i.atMonthNumber=function(t){return v(t,"month"),Kt.of(this._year,t)},i.atMonthDay=function(t){return v(t,"monthDay"),w(t,Gt,"monthDay"),t.atYear(this._year)},i.query=function(n){return v(n,"query()"),w(n,I,"query()"),n===q.chronology()?nn.INSTANCE:n===q.precision()?z.YEARS:n===q.localDate()||n===q.localTime()||n===q.zone()||n===q.zoneId()||n===q.offset()?null:t.prototype.query.call(this,n)},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._year-t._year},i.isAfter=function(t){return v(t,"other"),w(t,n,"other"),this._year>t._year},i.isBefore=function(t){return v(t,"other"),w(t,n,"other"),this._year=0){var n=t.with(S.DAY_OF_MONTH,1),i=n.get(S.DAY_OF_WEEK),e=$.intMod(this._dowValue-i+7,7);return e+=7*(this._ordinal-1),n.plus(e,z.DAYS)}var r=t.with(S.DAY_OF_MONTH,t.range(S.DAY_OF_MONTH).maximum()),s=r.get(S.DAY_OF_WEEK),o=this._dowValue-s;return o=0===o?0:o>0?o-7:o,o-=7*(-this._ordinal-1),r.plus(o,z.DAYS)},n}(H),tn=function(t){function n(n,i){var e;return e=t.call(this)||this,v(i,"dayOfWeek"),e._relative=n,e._dowValue=i.value(),e}return l(n,t),n.prototype.adjustInto=function(t){var n=t.get(S.DAY_OF_WEEK);if(this._relative<2&&n===this._dowValue)return t;if(0==(1&this._relative)){var i=n-this._dowValue;return t.plus(i>=0?7-i:-i,z.DAYS)}var e=this._dowValue-n;return t.minus(e>=0?7-e:-e,z.DAYS)},n}(H),nn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t),n.isLeapYear=function(t){return 0==(3&t)&&(t%100!=0||t%400==0)};var i=n.prototype;return i._updateResolveMap=function(t,n,i){v(t,"fieldValues"),v(n,"field");var e=t.get(n);if(null!=e&&e!==i)throw new r("Invalid state, field: "+n+" "+e+" conflicts with "+n+" "+i);t.put(n,i)},i.resolveDate=function(t,n){if(t.containsKey(S.EPOCH_DAY))return hn.ofEpochDay(t.remove(S.EPOCH_DAY));var i=t.remove(S.PROLEPTIC_MONTH);null!=i&&(n!==U.LENIENT&&S.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,S.MONTH_OF_YEAR,$.floorMod(i,12)+1),this._updateResolveMap(t,S.YEAR,$.floorDiv(i,12)));var e=t.remove(S.YEAR_OF_ERA);if(null!=e){n!==U.LENIENT&&S.YEAR_OF_ERA.checkValidValue(e);var s=t.remove(S.ERA);if(null==s){var o=t.get(S.YEAR);n===U.STRICT?null!=o?this._updateResolveMap(t,S.YEAR,o>0?e:$.safeSubtract(1,e)):t.put(S.YEAR_OF_ERA,e):this._updateResolveMap(t,S.YEAR,null==o||o>0?e:$.safeSubtract(1,e))}else if(1===s)this._updateResolveMap(t,S.YEAR,e);else{if(0!==s)throw new r("Invalid value for era: "+s);this._updateResolveMap(t,S.YEAR,$.safeSubtract(1,e))}}else t.containsKey(S.ERA)&&S.ERA.checkValidValue(t.get(S.ERA));if(t.containsKey(S.YEAR)){if(t.containsKey(S.MONTH_OF_YEAR)&&t.containsKey(S.DAY_OF_MONTH)){var u=S.YEAR.checkValidIntValue(t.remove(S.YEAR)),a=t.remove(S.MONTH_OF_YEAR),h=t.remove(S.DAY_OF_MONTH);if(n===U.LENIENT){var _=a-1,l=h-1;return hn.of(u,1,1).plusMonths(_).plusDays(l)}return n===U.SMART?(S.DAY_OF_MONTH.checkValidValue(h),4===a||6===a||9===a||11===a?h=Math.min(h,30):2===a&&(h=Math.min(h,N.FEBRUARY.length(Jt.isLeap(u)))),hn.of(u,a,h)):hn.of(u,a,h)}if(t.containsKey(S.DAY_OF_YEAR)){var f=S.YEAR.checkValidIntValue(t.remove(S.YEAR));if(n===U.LENIENT){var c=$.safeSubtract(t.remove(S.DAY_OF_YEAR),1);return hn.ofYearDay(f,1).plusDays(c)}var v=S.DAY_OF_YEAR.checkValidIntValue(t.remove(S.DAY_OF_YEAR));return hn.ofYearDay(f,v)}if(t.containsKey(S.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(S.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var w=S.YEAR.checkValidIntValue(t.remove(S.YEAR));if(n===U.LENIENT){var d=$.safeSubtract(t.remove(S.ALIGNED_WEEK_OF_YEAR),1),p=$.safeSubtract(t.remove(S.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return hn.of(w,1,1).plusWeeks(d).plusDays(p)}var m=S.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(S.ALIGNED_WEEK_OF_YEAR)),g=S.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(S.ALIGNED_DAY_OF_WEEK_IN_YEAR)),y=hn.of(w,1,1).plusDays(7*(m-1)+(g-1));if(n===U.STRICT&&y.get(S.YEAR)!==w)throw new r("Strict mode rejected date parsed to a different year");return y}if(t.containsKey(S.DAY_OF_WEEK)){var b=S.YEAR.checkValidIntValue(t.remove(S.YEAR));if(n===U.LENIENT){var k=$.safeSubtract(t.remove(S.ALIGNED_WEEK_OF_YEAR),1),j=$.safeSubtract(t.remove(S.DAY_OF_WEEK),1);return hn.of(b,1,1).plusWeeks(k).plusDays(j)}var x=S.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(S.ALIGNED_WEEK_OF_YEAR)),z=S.DAY_OF_WEEK.checkValidIntValue(t.remove(S.DAY_OF_WEEK)),E=hn.of(b,1,1).plusWeeks(x-1).with(Xt.nextOrSame(M.of(z)));if(n===U.STRICT&&E.get(S.YEAR)!==b)throw new r("Strict mode rejected date parsed to a different month");return E}}}return null},i.date=function(t){return hn.from(t)},n}(y),en=function(t){function n(n,i){var e;return e=t.call(this)||this,v(n,"time"),w(n,fn,"time"),v(i,"offset"),w(i,Q,"offset"),e._time=n,e._offset=i,e}l(n,t),n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof on)return t.toOffsetTime();try{return new n(fn.from(t),Q.from(t))}catch(n){throw new r("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.now=function(t){return 0===arguments.length?n._now(wn.systemDefaultZone()):t instanceof wn?n._now(t):n._now(wn.system(t))},n._now=function(t){v(t,"clock");var i=t.instant();return n.ofInstant(i,t.zone().rules().offset(i))},n.of=function(){return arguments.length<=2?n.ofTimeAndOffset.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s){return new n(fn.of(t,i,e,r),s)},n.ofTimeAndOffset=function(t,i){return new n(t,i)},n.ofInstant=function(t,i){v(t,"instant"),w(t,vn,"instant"),v(i,"zone"),w(i,G,"zone");var e=i.rules().offset(t),r=t.epochSecond()%fn.SECONDS_PER_DAY;return(r=(r+e.totalSeconds())%fn.SECONDS_PER_DAY)<0&&(r+=fn.SECONDS_PER_DAY),new n(fn.ofSecondOfDay(r,t.nano()),e)},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_OFFSET_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.adjustInto=function(t){return t.with(S.NANO_OF_DAY,this._time.toNanoOfDay()).with(S.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return on.of(t,this._time,this._offset)},i.format=function(t){return v(t,"formatter"),t.format(this,n.FROM)},i.get=function(n){return t.prototype.get.call(this,n)},i.getLong=function(t){return t instanceof S?t===S.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return v(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return v(t,"other"),this._toEpochNano()i?1:0),e},i.isAfter=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return n>i||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ni||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ns.firstDayOfYear(e)+s.length(e)-1&&(s=s.plus(1));var o=i-s.firstDayOfYear(e)+1;return new n(t,s.value(),o)},n.ofEpochDay=function(t){var i,e,r,s,o;void 0===t&&(t=0),o=t+an,i=0,(o-=60)<0&&(i=400*(e=$.intDiv(o+1,un)-1),o+=-e*un),(r=o-(365*(s=$.intDiv(400*o+591,un))+$.intDiv(s,4)-$.intDiv(s,100)+$.intDiv(s,400)))<0&&(r=o-(365*--s+$.intDiv(s,4)-$.intDiv(s,100)+$.intDiv(s,400))),s+=i;var u=r,a=$.intDiv(5*u+2,153),h=(a+2)%12+1,_=u-$.intDiv(306*a+5,10)+1;return new n(s+=$.intDiv(a,10),h,_)},n.from=function(t){v(t,"temporal");var n=t.query(q.localDate());if(null==n)throw new r("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE),c(null!=i,"formatter",_),i.parse(t,n.FROM)},n._resolvePreviousValid=function(t,i,e){switch(i){case 2:e=Math.min(e,nn.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:e=Math.min(e,30)}return n.of(t,i,e)},n._validate=function(t,n,i){var e;if(S.YEAR.checkValidValue(t),S.MONTH_OF_YEAR.checkValidValue(n),S.DAY_OF_MONTH.checkValidValue(i),i>28){switch(e=31,n){case 2:e=nn.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:e=30}i>e&&c(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+n+"' '"+i+"'",r)}};var i=n.prototype;return i.isSupported=function(n){return t.prototype.isSupported.call(this,n)},i.range=function(t){if(t instanceof S){if(t.isDateBased()){switch(t){case S.DAY_OF_MONTH:return C.of(1,this.lengthOfMonth());case S.DAY_OF_YEAR:return C.of(1,this.lengthOfYear());case S.ALIGNED_WEEK_OF_MONTH:return C.of(1,this.month()===N.FEBRUARY&&!1===this.isLeapYear()?4:5);case S.YEAR_OF_ERA:return this._year<=0?C.of(1,Jt.MAX_VALUE+1):C.of(1,Jt.MAX_VALUE)}return t.range()}throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return c(null!=t,"",_),t instanceof S?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case S.DAY_OF_WEEK:return this.dayOfWeek().value();case S.ALIGNED_DAY_OF_WEEK_IN_MONTH:return $.intMod(this._day-1,7)+1;case S.ALIGNED_DAY_OF_WEEK_IN_YEAR:return $.intMod(this.dayOfYear()-1,7)+1;case S.DAY_OF_MONTH:return this._day;case S.DAY_OF_YEAR:return this.dayOfYear();case S.EPOCH_DAY:return this.toEpochDay();case S.ALIGNED_WEEK_OF_MONTH:return $.intDiv(this._day-1,7)+1;case S.ALIGNED_WEEK_OF_YEAR:return $.intDiv(this.dayOfYear()-1,7)+1;case S.MONTH_OF_YEAR:return this._month;case S.PROLEPTIC_MONTH:return this._prolepticMonth();case S.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case S.YEAR:return this._year;case S.ERA:return this._year>=1?1:0}throw new o("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return nn.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=$.floorMod(this.toEpochDay()+3,7);return M.of(t+1)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(c("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(c(null!=t,"field",_),t instanceof S){var e=t;switch(e.checkValidValue(i),e){case S.DAY_OF_WEEK:return this.plusDays(i-this.dayOfWeek().value());case S.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(i-this.getLong(S.ALIGNED_DAY_OF_WEEK_IN_MONTH));case S.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(i-this.getLong(S.ALIGNED_DAY_OF_WEEK_IN_YEAR));case S.DAY_OF_MONTH:return this.withDayOfMonth(i);case S.DAY_OF_YEAR:return this.withDayOfYear(i);case S.EPOCH_DAY:return n.ofEpochDay(i);case S.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(i-this.getLong(S.ALIGNED_WEEK_OF_MONTH));case S.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(i-this.getLong(S.ALIGNED_WEEK_OF_YEAR));case S.MONTH_OF_YEAR:return this.withMonth(i);case S.PROLEPTIC_MONTH:return this.plusMonths(i-this.getLong(S.PROLEPTIC_MONTH));case S.YEAR_OF_ERA:return this.withYear(this._year>=1?i:1-i);case S.YEAR:return this.withYear(i);case S.ERA:return this.getLong(S.ERA)===i?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withYear=function(t){return this._year===t?this:(S.YEAR.checkValidValue(t),n._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var i=t instanceof N?t.value():t;return this._month===i?this:(S.MONTH_OF_YEAR.checkValidValue(i),n._resolvePreviousValid(this._year,i,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:n.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:n.ofYearDay(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n instanceof z){switch(n){case z.DAYS:return this.plusDays(t);case z.WEEKS:return this.plusWeeks(t);case z.MONTHS:return this.plusMonths(t);case z.YEARS:return this.plusYears(t);case z.DECADES:return this.plusYears($.safeMultiply(t,10));case z.CENTURIES:return this.plusYears($.safeMultiply(t,100));case z.MILLENNIA:return this.plusYears($.safeMultiply(t,1e3));case z.ERAS:return this.with(S.ERA,$.safeAdd(this.getLong(S.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var i=S.YEAR.checkValidIntValue(this._year+t);return n._resolvePreviousValid(i,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t,e=S.YEAR.checkValidIntValue($.floorDiv(i,12)),r=$.floorMod(i,12)+1;return n._resolvePreviousValid(e,r,this._day)},i.plusWeeks=function(t){return this.plusDays($.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var i=$.safeAdd(this.toEpochDay(),t);return n.ofEpochDay(i)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(n){return v(n,"query"),n===q.localDate()?this:t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,n){return arguments.length<2?this.until1(t):this.until2(t,n)},i.until2=function(t,i){var e=n.from(t);if(i instanceof z){switch(i){case z.DAYS:return this.daysUntil(e);case z.WEEKS:return $.intDiv(this.daysUntil(e),7);case z.MONTHS:return this._monthsUntil(e);case z.YEARS:return $.intDiv(this._monthsUntil(e),12);case z.DECADES:return $.intDiv(this._monthsUntil(e),120);case z.CENTURIES:return $.intDiv(this._monthsUntil(e),1200);case z.MILLENNIA:return $.intDiv(this._monthsUntil(e),12e3);case z.ERAS:return e.getLong(S.ERA)-this.getLong(S.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var n=32*this._prolepticMonth()+this.dayOfMonth(),i=32*t._prolepticMonth()+t.dayOfMonth();return $.intDiv(i-n,32)},i.until1=function(t){var i=n.from(t),e=i._prolepticMonth()-this._prolepticMonth(),r=i._day-this._day;if(e>0&&r<0){e--;var s=this.plusMonths(e);r=i.toEpochDay()-s.toEpochDay()}else e<0&&r>0&&(e++,r-=i.lengthOfMonth());var o=$.intDiv(e,12),u=$.intMod(e,12);return P.of(o,u,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(v(t,"time"),t instanceof fn)return ln.of(this,t);if(t instanceof en)return this._atTimeOffsetTime(t);throw new a("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,n,i,e){return void 0===i&&(i=0),void 0===e&&(e=0),this.atTime1(fn.of(t,n,i,e))},i._atTimeOffsetTime=function(t){return on.of(ln.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this.atStartOfDayWithZone(t):ln.of(this,fn.MIDNIGHT)},i.atStartOfDayWithZone=function(t){v(t,"zone");var n=this.atTime(fn.MIDNIGHT);if(t instanceof Q==0){var i=t.rules().transition(n);null!=i&&i.isGap()&&(n=i.dateTimeAfter())}return sn.of(n,t)},i.toEpochDay=function(){var t=this._year,n=this._month,i=0;return i+=365*t,t>=0?i+=$.intDiv(t+3,4)-$.intDiv(t+99,100)+$.intDiv(t+399,400):i-=$.intDiv(t,-4)-$.intDiv(t,-100)+$.intDiv(t,-400),i+=$.intDiv(367*n-362,12),i+=this.dayOfMonth()-1,n>2&&(i--,nn.isLeapYear(t)||i--),i-an},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._year-t._year;return 0===n&&0==(n=this._month-t._month)&&(n=this._day-t._day),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,n=this._month,i=this._day;return $.hash(4294965248&t^(t<<11)+(n<<6)+i)},i.toString=function(){var t=this._year,n=this._month,i=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(n<10?"-0"+n:"-"+n)+(i<10?"-0"+i:"-"+i)},i.toJSON=function(){return this.toString()},i.format=function(n){return v(n,"formatter"),w(n,Wt,"formatter"),t.prototype.format.call(this,n)},n}(Y),_n=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.chronology=function(){return this.toLocalDate().chronology()},i.query=function(n){return n===q.chronology()?this.chronology():n===q.precision()?z.NANOS:n===q.localDate()?hn.ofEpochDay(this.toLocalDate().toEpochDay()):n===q.localTime()?this.toLocalTime():n===q.zone()||n===q.zoneId()||n===q.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return t.with(S.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(S.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},i.toInstant=function(t){return w(t,Q,"zoneId"),vn.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},i.toEpochSecond=function(t){v(t,"offset");var n=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return n-=t.totalSeconds(),$.safeToInt(n)},n}(B),ln=function(t){function n(n,i){var e;return e=t.call(this)||this,w(n,hn,"date"),w(i,fn,"time"),e._date=n,e._time=i,e}l(n,t),n.now=function(t){return null==t?n._now(wn.systemDefaultZone()):t instanceof wn?n._now(t):n._now(wn.system(t))},n._now=function(t){return v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n._ofEpochMillis=function(t,i){var e=$.floorDiv(t,1e3)+i.totalSeconds(),r=$.floorDiv(e,fn.SECONDS_PER_DAY),s=$.floorMod(e,fn.SECONDS_PER_DAY),o=1e6*$.floorMod(t,1e3);return new n(hn.ofEpochDay(r),fn.ofSecondOfDay(s,o))},n.of=function(){return arguments.length<=2?n.ofDateAndTime.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s,o,u){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===o&&(o=0),void 0===u&&(u=0),new n(hn.of(t,i,e),fn.of(r,s,o,u))},n.ofDateAndTime=function(t,i){return v(t,"date"),v(i,"time"),new n(t,i)},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault()),v(t,"instant"),w(t,vn,"instant"),v(i,"zone");var e=i.rules().offset(t);return n.ofEpochSecond(t.epochSecond(),t.nano(),e)},n.ofEpochSecond=function(t,i,e){void 0===t&&(t=0),void 0===i&&(i=0),2===arguments.length&&i instanceof Q&&(e=i,i=0),v(e,"offset");var r=t+e.totalSeconds(),s=$.floorDiv(r,fn.SECONDS_PER_DAY),o=$.floorMod(r,fn.SECONDS_PER_DAY);return new n(hn.ofEpochDay(s),fn.ofSecondOfDay(o,i))},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof sn)return t.toLocalDateTime();try{return new n(hn.from(t),fn.from(t))}catch(n){throw new r("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i._withDateTime=function(t,i){return this._date.equals(t)&&this._time.equals(i)?this:new n(t,i)},i.isSupported=function(t){return t instanceof S||t instanceof z?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof S?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(n){return n instanceof S?n.isTimeBased()?this._time.get(n):this._date.get(n):t.prototype.get.call(this,n)},i.getLong=function(t){return v(t,"field"),t instanceof S?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof hn?this._withDateTime(t,this._time):t instanceof fn?this._withDateTime(this._date,t):t instanceof n?t:(c("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,n){return v(t,"field"),t instanceof S?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,n)):this._withDateTime(this._date.with(t,n),this._time):t.adjustInto(this,n)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var n=this._time.withHour(t);return this._withDateTime(this._date,n)},i.withMinute=function(t){var n=this._time.withMinute(t);return this._withDateTime(this._date,n)},i.withSecond=function(t){var n=this._time.withSecond(t);return this._withDateTime(this._date,n)},i.withNano=function(t){var n=this._time.withNano(t);return this._withDateTime(this._date,n)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),n instanceof z){switch(n){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this.plusDays($.intDiv(t,fn.MICROS_PER_DAY)).plusNanos(1e3*$.intMod(t,fn.MICROS_PER_DAY));case z.MILLIS:return this.plusDays($.intDiv(t,fn.MILLIS_PER_DAY)).plusNanos(1e6*$.intMod(t,fn.MILLIS_PER_DAY));case z.SECONDS:return this.plusSeconds(t);case z.MINUTES:return this.plusMinutes(t);case z.HOURS:return this.plusHours(t);case z.HALF_DAYS:return this.plusDays($.intDiv(t,256)).plusHours(12*$.intMod(t,256))}return this._withDateTime(this._date.plus(t,n),this._time)}return n.addTo(this,t)},i.plusYears=function(t){var n=this._date.plusYears(t);return this._withDateTime(n,this._time)},i.plusMonths=function(t){var n=this._date.plusMonths(t);return this._withDateTime(n,this._time)},i.plusWeeks=function(t){var n=this._date.plusWeeks(t);return this._withDateTime(n,this._time)},i.plusDays=function(t){var n=this._date.plusDays(t);return this._withDateTime(n,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,n,i,e,r,s){if(0===n&&0===i&&0===e&&0===r)return this._withDateTime(t,this._time);var o=$.intDiv(r,fn.NANOS_PER_DAY)+$.intDiv(e,fn.SECONDS_PER_DAY)+$.intDiv(i,fn.MINUTES_PER_DAY)+$.intDiv(n,fn.HOURS_PER_DAY);o*=s;var u=$.intMod(r,fn.NANOS_PER_DAY)+$.intMod(e,fn.SECONDS_PER_DAY)*fn.NANOS_PER_SECOND+$.intMod(i,fn.MINUTES_PER_DAY)*fn.NANOS_PER_MINUTE+$.intMod(n,fn.HOURS_PER_DAY)*fn.NANOS_PER_HOUR,a=this._time.toNanoOfDay();u=u*s+a,o+=$.floorDiv(u,fn.NANOS_PER_DAY);var h=$.floorMod(u,fn.NANOS_PER_DAY),_=h===a?this._time:fn.ofNanoOfDay(h);return this._withDateTime(t.plusDays(o),_)},i.query=function(n){return v(n,"query"),n===q.localDate()?this.toLocalDate():t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof z){if(i.isTimeBased()){var r=this._date.daysUntil(e._date),s=e._time.toNanoOfDay()-this._time.toNanoOfDay();r>0&&s<0?(r--,s+=fn.NANOS_PER_DAY):r<0&&s>0&&(r++,s-=fn.NANOS_PER_DAY);var u=r;switch(i){case z.NANOS:return u=$.safeMultiply(u,fn.NANOS_PER_DAY),$.safeAdd(u,s);case z.MICROS:return u=$.safeMultiply(u,fn.MICROS_PER_DAY),$.safeAdd(u,$.intDiv(s,1e3));case z.MILLIS:return u=$.safeMultiply(u,fn.MILLIS_PER_DAY),$.safeAdd(u,$.intDiv(s,1e6));case z.SECONDS:return u=$.safeMultiply(u,fn.SECONDS_PER_DAY),$.safeAdd(u,$.intDiv(s,fn.NANOS_PER_SECOND));case z.MINUTES:return u=$.safeMultiply(u,fn.MINUTES_PER_DAY),$.safeAdd(u,$.intDiv(s,fn.NANOS_PER_MINUTE));case z.HOURS:return u=$.safeMultiply(u,fn.HOURS_PER_DAY),$.safeAdd(u,$.intDiv(s,fn.NANOS_PER_HOUR));case z.HALF_DAYS:return u=$.safeMultiply(u,2),$.safeAdd(u,$.intDiv(s,12*fn.NANOS_PER_HOUR))}throw new o("Unsupported unit: "+i)}var a=e._date,h=e._time;return a.isAfter(this._date)&&h.isBefore(this._time)?a=a.minusDays(1):a.isBefore(this._date)&&h.isAfter(this._time)&&(a=a.plusDays(1)),this._date.until(a,i)}return i.between(this,e)},i.atOffset=function(t){return on.of(this,t)},i.atZone=function(t){return sn.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._date.compareTo(t.toLocalDate());return 0===n&&(n=this._time.compareTo(t.toLocalTime())),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&this._date.equals(t._date)&&this._time.equals(t._time)},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(_n),fn=function(t){function n(i,e,r,s){var o;void 0===i&&(i=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===s&&(s=0),o=t.call(this)||this;var u=$.safeToInt(i),a=$.safeToInt(e),h=$.safeToInt(r),_=$.safeToInt(s);return n._validate(u,a,h,_),0===a&&0===h&&0===_?(n.HOURS[u]||(o._hour=u,o._minute=a,o._second=h,o._nano=_,n.HOURS[u]=f(o)),n.HOURS[u]||f(o)):(o._hour=u,o._minute=a,o._second=h,o._nano=_,o)}l(n,t),n.now=function(t){return null==t?n._now(wn.systemDefaultZone()):t instanceof wn?n._now(t):n._now(wn.system(t))},n._now=function(t){return void 0===t&&(t=wn.systemDefaultZone()),v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault());var e=i.rules().offset(t),r=$.intMod(t.epochSecond(),n.SECONDS_PER_DAY);return(r=$.intMod(r+e.totalSeconds(),n.SECONDS_PER_DAY))<0&&(r+=n.SECONDS_PER_DAY),n.ofSecondOfDay(r,t.nano())},n.of=function(t,i,e,r){return new n(t,i,e,r)},n.ofSecondOfDay=function(t,i){void 0===t&&(t=0),void 0===i&&(i=0),S.SECOND_OF_DAY.checkValidValue(t),S.NANO_OF_SECOND.checkValidValue(i);var e=$.intDiv(t,n.SECONDS_PER_HOUR);t-=e*n.SECONDS_PER_HOUR;var r=$.intDiv(t,n.SECONDS_PER_MINUTE);return new n(e,r,t-=r*n.SECONDS_PER_MINUTE,i)},n.ofNanoOfDay=function(t){void 0===t&&(t=0),S.NANO_OF_DAY.checkValidValue(t);var i=$.intDiv(t,n.NANOS_PER_HOUR);t-=i*n.NANOS_PER_HOUR;var e=$.intDiv(t,n.NANOS_PER_MINUTE);t-=e*n.NANOS_PER_MINUTE;var r=$.intDiv(t,n.NANOS_PER_SECOND);return new n(i,e,r,t-=r*n.NANOS_PER_SECOND)},n.from=function(t){v(t,"temporal");var n=t.query(q.localTime());if(null==n)throw new r("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_TIME),v(i,"formatter"),i.parse(t,n.FROM)},n._validate=function(t,n,i,e){S.HOUR_OF_DAY.checkValidValue(t),S.MINUTE_OF_HOUR.checkValidValue(n),S.SECOND_OF_MINUTE.checkValidValue(i),S.NANO_OF_SECOND.checkValidValue(e)};var i=n.prototype;return i.isSupported=function(t){return t instanceof S||t instanceof z?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(n){return v(n),t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return v(t,"field"),t instanceof S?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case S.NANO_OF_SECOND:return this._nano;case S.NANO_OF_DAY:return this.toNanoOfDay();case S.MICRO_OF_SECOND:return $.intDiv(this._nano,1e3);case S.MICRO_OF_DAY:return $.intDiv(this.toNanoOfDay(),1e3);case S.MILLI_OF_SECOND:return $.intDiv(this._nano,1e6);case S.MILLI_OF_DAY:return $.intDiv(this.toNanoOfDay(),1e6);case S.SECOND_OF_MINUTE:return this._second;case S.SECOND_OF_DAY:return this.toSecondOfDay();case S.MINUTE_OF_HOUR:return this._minute;case S.MINUTE_OF_DAY:return 60*this._hour+this._minute;case S.HOUR_OF_AMPM:return $.intMod(this._hour,12);case S.CLOCK_HOUR_OF_AMPM:var n=$.intMod(this._hour,12);return n%12==0?12:n;case S.HOUR_OF_DAY:return this._hour;case S.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case S.AMPM_OF_DAY:return $.intDiv(this._hour,12)}throw new o("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(c("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(v(t,"field"),w(t,E,"field"),t instanceof S){switch(t.checkValidValue(i),t){case S.NANO_OF_SECOND:return this.withNano(i);case S.NANO_OF_DAY:return n.ofNanoOfDay(i);case S.MICRO_OF_SECOND:return this.withNano(1e3*i);case S.MICRO_OF_DAY:return n.ofNanoOfDay(1e3*i);case S.MILLI_OF_SECOND:return this.withNano(1e6*i);case S.MILLI_OF_DAY:return n.ofNanoOfDay(1e6*i);case S.SECOND_OF_MINUTE:return this.withSecond(i);case S.SECOND_OF_DAY:return this.plusSeconds(i-this.toSecondOfDay());case S.MINUTE_OF_HOUR:return this.withMinute(i);case S.MINUTE_OF_DAY:return this.plusMinutes(i-(60*this._hour+this._minute));case S.HOUR_OF_AMPM:return this.plusHours(i-$.intMod(this._hour,12));case S.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===i?0:i)-$.intMod(this._hour,12));case S.HOUR_OF_DAY:return this.withHour(i);case S.CLOCK_HOUR_OF_DAY:return this.withHour(24===i?0:i);case S.AMPM_OF_DAY:return this.plusHours(12*(i-$.intDiv(this._hour,12)))}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new n(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new n(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new n(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new n(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(v(t,"unit"),t===z.NANOS)return this;var i=t.duration();if(i.seconds()>n.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var e=i.toNanos();if(0!==$.intMod(n.NANOS_PER_DAY,e))throw new r("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return n.ofNanoOfDay($.intDiv(s,e)*e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,i){if(v(i,"unit"),i instanceof z){switch(i){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this.plusNanos(1e3*$.intMod(t,n.MICROS_PER_DAY));case z.MILLIS:return this.plusNanos(1e6*$.intMod(t,n.MILLIS_PER_DAY));case z.SECONDS:return this.plusSeconds(t);case z.MINUTES:return this.plusMinutes(t);case z.HOURS:return this.plusHours(t);case z.HALF_DAYS:return this.plusHours(12*$.intMod(t,2))}throw new o("Unsupported unit: "+i)}return i.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new n($.intMod($.intMod(t,n.HOURS_PER_DAY)+this._hour+n.HOURS_PER_DAY,n.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var i=this._hour*n.MINUTES_PER_HOUR+this._minute,e=$.intMod($.intMod(t,n.MINUTES_PER_DAY)+i+n.MINUTES_PER_DAY,n.MINUTES_PER_DAY);return i===e?this:new n($.intDiv(e,n.MINUTES_PER_HOUR),$.intMod(e,n.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var i=this._hour*n.SECONDS_PER_HOUR+this._minute*n.SECONDS_PER_MINUTE+this._second,e=$.intMod($.intMod(t,n.SECONDS_PER_DAY)+i+n.SECONDS_PER_DAY,n.SECONDS_PER_DAY);return i===e?this:new n($.intDiv(e,n.SECONDS_PER_HOUR),$.intMod($.intDiv(e,n.SECONDS_PER_MINUTE),n.MINUTES_PER_HOUR),$.intMod(e,n.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var i=this.toNanoOfDay(),e=$.intMod($.intMod(t,n.NANOS_PER_DAY)+i+n.NANOS_PER_DAY,n.NANOS_PER_DAY);return i===e?this:new n($.intDiv(e,n.NANOS_PER_HOUR),$.intMod($.intDiv(e,n.NANOS_PER_MINUTE),n.MINUTES_PER_HOUR),$.intMod($.intDiv(e,n.NANOS_PER_SECOND),n.SECONDS_PER_MINUTE),$.intMod(e,n.NANOS_PER_SECOND))},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusHours=function(t){return this.plusHours(-1*$.intMod(t,n.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*$.intMod(t,n.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*$.intMod(t,n.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*$.intMod(t,n.NANOS_PER_DAY))},i.query=function(t){return v(t,"query"),t===q.precision()?z.NANOS:t===q.localTime()?this:t===q.chronology()||t===q.zoneId()||t===q.zone()||t===q.offset()||t===q.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(n.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof z){var r=e.toNanoOfDay()-this.toNanoOfDay();switch(i){case z.NANOS:return r;case z.MICROS:return $.intDiv(r,1e3);case z.MILLIS:return $.intDiv(r,1e6);case z.SECONDS:return $.intDiv(r,n.NANOS_PER_SECOND);case z.MINUTES:return $.intDiv(r,n.NANOS_PER_MINUTE);case z.HOURS:return $.intDiv(r,n.NANOS_PER_HOUR);case z.HALF_DAYS:return $.intDiv(r,12*n.NANOS_PER_HOUR)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDate=function(t){return ln.of(t,this)},i.toSecondOfDay=function(){var t=this._hour*n.SECONDS_PER_HOUR;return(t+=this._minute*n.SECONDS_PER_MINUTE)+this._second},i.toNanoOfDay=function(){var t=this._hour*n.NANOS_PER_HOUR;return t+=this._minute*n.NANOS_PER_MINUTE,(t+=this._second*n.NANOS_PER_SECOND)+this._nano},i.compareTo=function(t){v(t,"other"),w(t,n,"other");var i=$.compareNumbers(this._hour,t._hour);return 0===i&&0===(i=$.compareNumbers(this._minute,t._minute))&&0===(i=$.compareNumbers(this._second,t._second))&&(i=$.compareNumbers(this._nano,t._nano)),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano},i.hashCode=function(){var t=this.toNanoOfDay();return $.hash(t)},i.toString=function(){var t="",n=this._hour,i=this._minute,e=this._second,r=this._nano;return t+=n<10?"0":"",t+=n,t+=i<10?":0":":",t+=i,(e>0||r>0)&&(t+=e<10?":0":":",t+=e,r>0&&(t+=".",0===$.intMod(r,1e6)?t+=(""+($.intDiv(r,1e6)+1e3)).substring(1):0===$.intMod(r,1e3)?t+=(""+($.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V);fn.HOURS_PER_DAY=24,fn.MINUTES_PER_HOUR=60,fn.MINUTES_PER_DAY=fn.MINUTES_PER_HOUR*fn.HOURS_PER_DAY,fn.SECONDS_PER_MINUTE=60,fn.SECONDS_PER_HOUR=fn.SECONDS_PER_MINUTE*fn.MINUTES_PER_HOUR,fn.SECONDS_PER_DAY=fn.SECONDS_PER_HOUR*fn.HOURS_PER_DAY,fn.MILLIS_PER_DAY=1e3*fn.SECONDS_PER_DAY,fn.MICROS_PER_DAY=1e6*fn.SECONDS_PER_DAY,fn.NANOS_PER_SECOND=1e9,fn.NANOS_PER_MINUTE=fn.NANOS_PER_SECOND*fn.SECONDS_PER_MINUTE,fn.NANOS_PER_HOUR=fn.NANOS_PER_MINUTE*fn.MINUTES_PER_HOUR,fn.NANOS_PER_DAY=fn.NANOS_PER_HOUR*fn.HOURS_PER_DAY;var cn=1e6,vn=function(t){function n(i,e){var r;return r=t.call(this)||this,n._validate(i,e),r._seconds=$.safeToInt(i),r._nanos=$.safeToInt(e),r}l(n,t),n.now=function(t){return void 0===t&&(t=wn.systemUTC()),t.instant()},n.ofEpochSecond=function(t,i){void 0===i&&(i=0);var e=t+$.floorDiv(i,fn.NANOS_PER_SECOND),r=$.floorMod(i,fn.NANOS_PER_SECOND);return n._create(e,r)},n.ofEpochMilli=function(t){var i=$.floorDiv(t,1e3),e=$.floorMod(t,1e3);return n._create(i,1e6*e)},n.from=function(t){try{var i=t.getLong(S.INSTANT_SECONDS),e=t.get(S.NANO_OF_SECOND);return n.ofEpochSecond(i,e)}catch(n){throw new r("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,n)}},n.parse=function(t){return Wt.ISO_INSTANT.parse(t,n.FROM)},n._create=function(t,i){return 0===t&&0===i?n.EPOCH:new n(t,i)},n._validate=function(t,i){if(tn.MAX_SECONDS)throw new r("Instant exceeds minimum or maximum instant");if(i<0||i>fn.NANOS_PER_SECOND)throw new r("Instant exceeds minimum or maximum instant")};var i=n.prototype;return i.isSupported=function(t){return t instanceof S?t===S.INSTANT_SECONDS||t===S.NANO_OF_SECOND||t===S.MICRO_OF_SECOND||t===S.MILLI_OF_SECOND:t instanceof z?t.isTimeBased()||t===z.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof S){switch(t){case S.NANO_OF_SECOND:return this._nanos;case S.MICRO_OF_SECOND:return $.intDiv(this._nanos,1e3);case S.MILLI_OF_SECOND:return $.intDiv(this._nanos,cn);case S.INSTANT_SECONDS:return this._seconds}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),t instanceof S){switch(t.checkValidValue(i),t){case S.MILLI_OF_SECOND:var e=i*cn;return e!==this._nanos?n._create(this._seconds,e):this;case S.MICRO_OF_SECOND:var r=1e3*i;return r!==this._nanos?n._create(this._seconds,r):this;case S.NANO_OF_SECOND:return i!==this._nanos?n._create(this._seconds,i):this;case S.INSTANT_SECONDS:return i!==this._seconds?n._create(i,this._nanos):this}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.truncatedTo=function(t){if(v(t,"unit"),t===z.NANOS)return this;var n=t.duration();if(n.seconds()>fn.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var i=n.toNanos();if(0!==$.intMod(fn.NANOS_PER_DAY,i))throw new r("Unit must divide into a standard day without remainder");var e=$.intMod(this._seconds,fn.SECONDS_PER_DAY)*fn.NANOS_PER_SECOND+this._nanos,s=$.intDiv(e,i)*i;return this.plusNanos(s-e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),w(n,k),n instanceof z){switch(n){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this._plus($.intDiv(t,1e6),1e3*$.intMod(t,1e6));case z.MILLIS:return this.plusMillis(t);case z.SECONDS:return this.plusSeconds(t);case z.MINUTES:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_MINUTE));case z.HOURS:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_HOUR));case z.HALF_DAYS:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_DAY/2));case z.DAYS:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_DAY))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus($.intDiv(t,1e3),$.intMod(t,1e3)*cn)},i.plusNanos=function(t){return this._plus(0,t)},i._plus=function(t,i){if(0===t&&0===i)return this;var e=this._seconds+t;e+=$.intDiv(i,fn.NANOS_PER_SECOND);var r=this._nanos+i%fn.NANOS_PER_SECOND;return n.ofEpochSecond(e,r)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return this.plusAmountUnit(-1*t,n)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.query=function(t){return v(t,"query"),t===q.precision()?z.NANOS:t===q.localDate()||t===q.localTime()||t===q.chronology()||t===q.zoneId()||t===q.zone()||t===q.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return v(t,"temporal"),t.with(S.INSTANT_SECONDS,this._seconds).with(S.NANO_OF_SECOND,this._nanos)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof z){switch(i){case z.NANOS:return this._nanosUntil(e);case z.MICROS:return $.intDiv(this._nanosUntil(e),1e3);case z.MILLIS:return $.safeSubtract(e.toEpochMilli(),this.toEpochMilli());case z.SECONDS:return this._secondsUntil(e);case z.MINUTES:return $.intDiv(this._secondsUntil(e),fn.SECONDS_PER_MINUTE);case z.HOURS:return $.intDiv(this._secondsUntil(e),fn.SECONDS_PER_HOUR);case z.HALF_DAYS:return $.intDiv(this._secondsUntil(e),12*fn.SECONDS_PER_HOUR);case z.DAYS:return $.intDiv(this._secondsUntil(e),fn.SECONDS_PER_DAY)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i._nanosUntil=function(t){var n=$.safeSubtract(t.epochSecond(),this.epochSecond()),i=$.safeMultiply(n,fn.NANOS_PER_SECOND);return $.safeAdd(i,t.nano()-this.nano())},i._secondsUntil=function(t){var n=$.safeSubtract(t.epochSecond(),this.epochSecond()),i=t.nano()-this.nano();return n>0&&i<0?n--:n<0&&i>0&&n++,n},i.atOffset=function(t){return on.ofInstant(this,t)},i.atZone=function(t){return sn.ofInstant(this,t)},i.toEpochMilli=function(){return $.safeMultiply(this._seconds,1e3)+$.intDiv(this._nanos,cn)},i.compareTo=function(t){v(t,"otherInstant"),w(t,n,"otherInstant");var i=$.compareNumbers(this._seconds,t._seconds);return 0!==i?i:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this.epochSecond()===t.epochSecond()&&this.nano()===t.nano()},i.hashCode=function(){return $.hashCode(this._seconds,this._nanos)},i.toString=function(){return Wt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},n}(V),wn=function(){function t(){}t.systemUTC=function(){return new dn(Q.UTC)},t.systemDefaultZone=function(){return new dn(G.systemDefault())},t.system=function(t){return new dn(t)},t.fixed=function(t,n){return new pn(t,n)},t.offset=function(t,n){return new mn(t,n)};var n=t.prototype;return n.millis=function(){d("Clock.millis")},n.instant=function(){d("Clock.instant")},n.zone=function(){d("Clock.zone")},n.withZone=function(){d("Clock.withZone")},t}(),dn=function(t){function n(n){var i;return v(n,"zone"),(i=t.call(this)||this)._zone=n,i}l(n,t);var i=n.prototype;return i.zone=function(){return this._zone},i.millis=function(){return(new Date).getTime()},i.instant=function(){return vn.ofEpochMilli(this.millis())},i.equals=function(t){return t instanceof n&&this._zone.equals(t._zone)},i.withZone=function(t){return t.equals(this._zone)?this:new n(t)},i.toString=function(){return"SystemClock["+this._zone.toString()+"]"},n}(wn),pn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._instant=n,e._zoneId=i,e}l(n,t);var i=n.prototype;return i.instant=function(){return this._instant},i.millis=function(){return this._instant.toEpochMilli()},i.zone=function(){return this._zoneId},i.toString=function(){return"FixedClock[]"},i.equals=function(t){return t instanceof n&&this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId)},i.withZone=function(t){return t.equals(this._zoneId)?this:new n(this._instant,t)},n}(wn),mn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._baseClock=n,e._offset=i,e}l(n,t);var i=n.prototype;return i.zone=function(){return this._baseClock.zone()},i.withZone=function(t){return t.equals(this._baseClock.zone())?this:new n(this._baseClock.withZone(t),this._offset)},i.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},i.instant=function(){return this._baseClock.instant().plus(this._offset)},i.equals=function(t){return t instanceof n&&this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset)},i.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},n}(wn),gn=function(){function t(t,n,i){if(v(t,"transition"),v(n,"offsetBefore"),v(i,"offsetAfter"),n.equals(i))throw new a("Offsets must not be equal");if(0!==t.nano())throw new a("Nano-of-second must be zero");this._transition=t instanceof ln?t:ln.ofEpochSecond(t,0,n),this._offsetBefore=n,this._offsetAfter=i}t.of=function(n,i,e){return new t(n,i,e)};var n=t.prototype;return n.instant=function(){return this._transition.toInstant(this._offsetBefore)},n.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},n.dateTimeBefore=function(){return this._transition},n.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},n.offsetBefore=function(){return this._offsetBefore},n.offsetAfter=function(){return this._offsetAfter},n.duration=function(){return j.ofSeconds(this.durationSeconds())},n.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},n.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},n.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},n.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}(),$n=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var n=new Date(t.toEpochMilli()).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfEpochMilli=function(t){var n=new Date(t).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfLocalDateTime=function(t){var n=1e3*t.toEpochSecond(Q.UTC),i=new Date(n).getTimezoneOffset(),e=new Date(n+6e4*i).getTimezoneOffset();return Q.ofTotalMinutes(-1*e)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,n){return this.offsetOfLocalDateTime(t).equals(n)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new r("not supported operation")},i.equals=function(t){return this===t||t instanceof n},i.toString=function(){return"SYSTEM"},n}(K),yn=function(t){function n(){var n;return(n=t.call(this)||this)._rules=new $n,n}l(n,t);var i=n.prototype;return i.rules=function(){return this._rules},i.equals=function(t){return this===t},i.id=function(){return"SYSTEM"},n}(G),bn=function(){function t(){}return t.systemDefault=function(){return kn},t.getAvailableZoneIds=function(){return Dt.getAvailableZoneIds()},t.of=function(t){if(v(t,"zoneId"),"Z"===t)return Q.UTC;if(1===t.length)throw new r("Invalid zone: "+t);if(W.startsWith(t,"+")||W.startsWith(t,"-"))return Q.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new Mt(t,Q.UTC.rules());if(W.startsWith(t,"UTC+")||W.startsWith(t,"GMT+")||W.startsWith(t,"UTC-")||W.startsWith(t,"GMT-")){var n=Q.of(t.substring(3));return 0===n.totalSeconds()?new Mt(t.substring(0,3),n.rules()):new Mt(t.substring(0,3)+n.id(),n.rules())}if(W.startsWith(t,"UT+")||W.startsWith(t,"UT-")){var i=Q.of(t.substring(2));return 0===i.totalSeconds()?new Mt("UT",i.rules()):new Mt("UT"+i.id(),i.rules())}return"SYSTEM"===t?G.systemDefault():Mt.ofId(t)},t.ofOffset=function(t,n){if(v(t,"prefix"),v(n,"offset"),0===t.length)return n;if("GMT"===t||"UTC"===t||"UT"===t)return 0===n.totalSeconds()?new Mt(t,n.rules()):new Mt(t+n.id(),n.rules());throw new a("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){v(t,"temporal");var n=t.query(q.zone());if(null==n)throw new r("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},t}(),kn=null,jn=!1;jn||(jn=!0,x.MIN_VALUE=-999999,x.MAX_VALUE=999999,j.ZERO=new j(0,0),z.NANOS=new z("Nanos",j.ofNanos(1)),z.MICROS=new z("Micros",j.ofNanos(1e3)),z.MILLIS=new z("Millis",j.ofNanos(1e6)),z.SECONDS=new z("Seconds",j.ofSeconds(1)),z.MINUTES=new z("Minutes",j.ofSeconds(60)),z.HOURS=new z("Hours",j.ofSeconds(3600)),z.HALF_DAYS=new z("HalfDays",j.ofSeconds(43200)),z.DAYS=new z("Days",j.ofSeconds(86400)),z.WEEKS=new z("Weeks",j.ofSeconds(604800)),z.MONTHS=new z("Months",j.ofSeconds(2629746)),z.YEARS=new z("Years",j.ofSeconds(31556952)),z.DECADES=new z("Decades",j.ofSeconds(315569520)),z.CENTURIES=new z("Centuries",j.ofSeconds(3155695200)),z.MILLENNIA=new z("Millennia",j.ofSeconds(31556952e3)),z.ERAS=new z("Eras",j.ofSeconds(31556952*(x.MAX_VALUE+1))),z.FOREVER=new z("Forever",j.ofSeconds($.MAX_SAFE_INTEGER,999999999)),S.NANO_OF_SECOND=new S("NanoOfSecond",z.NANOS,z.SECONDS,C.of(0,999999999)),S.NANO_OF_DAY=new S("NanoOfDay",z.NANOS,z.DAYS,C.of(0,86399999999999)),S.MICRO_OF_SECOND=new S("MicroOfSecond",z.MICROS,z.SECONDS,C.of(0,999999)),S.MICRO_OF_DAY=new S("MicroOfDay",z.MICROS,z.DAYS,C.of(0,86399999999)),S.MILLI_OF_SECOND=new S("MilliOfSecond",z.MILLIS,z.SECONDS,C.of(0,999)),S.MILLI_OF_DAY=new S("MilliOfDay",z.MILLIS,z.DAYS,C.of(0,86399999)),S.SECOND_OF_MINUTE=new S("SecondOfMinute",z.SECONDS,z.MINUTES,C.of(0,59)),S.SECOND_OF_DAY=new S("SecondOfDay",z.SECONDS,z.DAYS,C.of(0,86399)),S.MINUTE_OF_HOUR=new S("MinuteOfHour",z.MINUTES,z.HOURS,C.of(0,59)),S.MINUTE_OF_DAY=new S("MinuteOfDay",z.MINUTES,z.DAYS,C.of(0,1439)),S.HOUR_OF_AMPM=new S("HourOfAmPm",z.HOURS,z.HALF_DAYS,C.of(0,11)),S.CLOCK_HOUR_OF_AMPM=new S("ClockHourOfAmPm",z.HOURS,z.HALF_DAYS,C.of(1,12)),S.HOUR_OF_DAY=new S("HourOfDay",z.HOURS,z.DAYS,C.of(0,23)),S.CLOCK_HOUR_OF_DAY=new S("ClockHourOfDay",z.HOURS,z.DAYS,C.of(1,24)),S.AMPM_OF_DAY=new S("AmPmOfDay",z.HALF_DAYS,z.DAYS,C.of(0,1)),S.DAY_OF_WEEK=new S("DayOfWeek",z.DAYS,z.WEEKS,C.of(1,7)),S.ALIGNED_DAY_OF_WEEK_IN_MONTH=new S("AlignedDayOfWeekInMonth",z.DAYS,z.WEEKS,C.of(1,7)),S.ALIGNED_DAY_OF_WEEK_IN_YEAR=new S("AlignedDayOfWeekInYear",z.DAYS,z.WEEKS,C.of(1,7)),S.DAY_OF_MONTH=new S("DayOfMonth",z.DAYS,z.MONTHS,C.of(1,28,31),"day"),S.DAY_OF_YEAR=new S("DayOfYear",z.DAYS,z.YEARS,C.of(1,365,366)),S.EPOCH_DAY=new S("EpochDay",z.DAYS,z.FOREVER,C.of(Math.floor(365.25*x.MIN_VALUE),Math.floor(365.25*x.MAX_VALUE))),S.ALIGNED_WEEK_OF_MONTH=new S("AlignedWeekOfMonth",z.WEEKS,z.MONTHS,C.of(1,4,5)),S.ALIGNED_WEEK_OF_YEAR=new S("AlignedWeekOfYear",z.WEEKS,z.YEARS,C.of(1,53)),S.MONTH_OF_YEAR=new S("MonthOfYear",z.MONTHS,z.YEARS,C.of(1,12),"month"),S.PROLEPTIC_MONTH=new S("ProlepticMonth",z.MONTHS,z.FOREVER,C.of(12*x.MIN_VALUE,12*x.MAX_VALUE+11)),S.YEAR_OF_ERA=new S("YearOfEra",z.YEARS,z.FOREVER,C.of(1,x.MAX_VALUE,x.MAX_VALUE+1)),S.YEAR=new S("Year",z.YEARS,z.FOREVER,C.of(x.MIN_VALUE,x.MAX_VALUE),"year"),S.ERA=new S("Era",z.ERAS,z.FOREVER,C.of(0,1)),S.INSTANT_SECONDS=new S("InstantSeconds",z.SECONDS,z.FOREVER,C.of(g,m)),S.OFFSET_SECONDS=new S("OffsetSeconds",z.SECONDS,z.FOREVER,C.of(-64800,64800)),function(){fn.HOURS=[];for(var t=0;t<24;t++)fn.of(t,0,0,0);fn.MIN=fn.HOURS[0],fn.MAX=new fn(23,59,59,999999999),fn.MIDNIGHT=fn.HOURS[0],fn.NOON=fn.HOURS[12],fn.FROM=A("LocalTime.FROM",(function(t){return fn.from(t)}))}(),ft=new ut,ct=new at,vt=new ht,wt=new _t,dt=new lt("WeekBasedYears",j.ofSeconds(31556952)),pt=new lt("QuarterYears",j.ofSeconds(7889238)),rt.DAY_OF_QUARTER=ft,rt.QUARTER_OF_YEAR=ct,rt.WEEK_OF_WEEK_BASED_YEAR=vt,rt.WEEK_BASED_YEAR=wt,rt.WEEK_BASED_YEARS=dt,rt.QUARTER_YEARS=pt,hn.prototype.isoWeekOfWeekyear=function(){return this.get(rt.WEEK_OF_WEEK_BASED_YEAR)},hn.prototype.isoWeekyear=function(){return this.get(rt.WEEK_BASED_YEAR)},q.ZONE_ID=A("ZONE_ID",(function(t){return t.query(q.ZONE_ID)})),q.CHRONO=A("CHRONO",(function(t){return t.query(q.CHRONO)})),q.PRECISION=A("PRECISION",(function(t){return t.query(q.PRECISION)})),q.OFFSET=A("OFFSET",(function(t){return t.isSupported(S.OFFSET_SECONDS)?Q.ofTotalSeconds(t.get(S.OFFSET_SECONDS)):null})),q.ZONE=A("ZONE",(function(t){var n=t.query(q.ZONE_ID);return null!=n?n:t.query(q.OFFSET)})),q.LOCAL_DATE=A("LOCAL_DATE",(function(t){return t.isSupported(S.EPOCH_DAY)?hn.ofEpochDay(t.getLong(S.EPOCH_DAY)):null})),q.LOCAL_TIME=A("LOCAL_TIME",(function(t){return t.isSupported(S.NANO_OF_DAY)?fn.ofNanoOfDay(t.getLong(S.NANO_OF_DAY)):null})),M.MONDAY=new M(0,"MONDAY"),M.TUESDAY=new M(1,"TUESDAY"),M.WEDNESDAY=new M(2,"WEDNESDAY"),M.THURSDAY=new M(3,"THURSDAY"),M.FRIDAY=new M(4,"FRIDAY"),M.SATURDAY=new M(5,"SATURDAY"),M.SUNDAY=new M(6,"SUNDAY"),M.FROM=A("DayOfWeek.FROM",(function(t){return M.from(t)})),T=[M.MONDAY,M.TUESDAY,M.WEDNESDAY,M.THURSDAY,M.FRIDAY,M.SATURDAY,M.SUNDAY],vn.MIN_SECONDS=-31619119219200,vn.MAX_SECONDS=31494816403199,vn.EPOCH=new vn(0,0),vn.MIN=vn.ofEpochSecond(vn.MIN_SECONDS,0),vn.MAX=vn.ofEpochSecond(vn.MAX_SECONDS,999999999),vn.FROM=A("Instant.FROM",(function(t){return vn.from(t)})),hn.MIN=hn.of(x.MIN_VALUE,1,1),hn.MAX=hn.of(x.MAX_VALUE,12,31),hn.EPOCH_0=hn.ofEpochDay(0),hn.FROM=A("LocalDate.FROM",(function(t){return hn.from(t)})),ln.MIN=ln.of(hn.MIN,fn.MIN),ln.MAX=ln.of(hn.MAX,fn.MAX),ln.FROM=A("LocalDateTime.FROM",(function(t){return ln.from(t)})),Jt.MIN_VALUE=x.MIN_VALUE,Jt.MAX_VALUE=x.MAX_VALUE,At=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).toFormatter(),Jt.FROM=A("Year.FROM",(function(t){return Jt.from(t)})),N.JANUARY=new N(1,"JANUARY"),N.FEBRUARY=new N(2,"FEBRUARY"),N.MARCH=new N(3,"MARCH"),N.APRIL=new N(4,"APRIL"),N.MAY=new N(5,"MAY"),N.JUNE=new N(6,"JUNE"),N.JULY=new N(7,"JULY"),N.AUGUST=new N(8,"AUGUST"),N.SEPTEMBER=new N(9,"SEPTEMBER"),N.OCTOBER=new N(10,"OCTOBER"),N.NOVEMBER=new N(11,"NOVEMBER"),N.DECEMBER=new N(12,"DECEMBER"),D=[N.JANUARY,N.FEBRUARY,N.MARCH,N.APRIL,N.MAY,N.JUNE,N.JULY,N.AUGUST,N.SEPTEMBER,N.OCTOBER,N.NOVEMBER,N.DECEMBER],It=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(S.MONTH_OF_YEAR,2).toFormatter(),Kt.FROM=A("YearMonth.FROM",(function(t){return Kt.from(t)})),Ot=(new Ut).appendLiteral("--").appendValue(S.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(S.DAY_OF_MONTH,2).toFormatter(),Gt.FROM=A("MonthDay.FROM",(function(t){return Gt.from(t)})),P.ofDays(0),Q.MAX_SECONDS=18*fn.SECONDS_PER_HOUR,Q.UTC=Q.ofTotalSeconds(0),Q.MIN=Q.ofTotalSeconds(-Q.MAX_SECONDS),Q.MAX=Q.ofTotalSeconds(Q.MAX_SECONDS),sn.FROM=A("ZonedDateTime.FROM",(function(t){return sn.from(t)})),kn=new yn,G.systemDefault=bn.systemDefault,G.getAvailableZoneIds=bn.getAvailableZoneIds,G.of=bn.of,G.ofOffset=bn.ofOffset,G.from=bn.from,Q.from=bn.from,G.SYSTEM=kn,G.UTC=Q.ofTotalSeconds(0),nn.INSTANCE=new nn("IsoChronology"),Wt.ISO_LOCAL_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(S.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(S.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_LOCAL_TIME=(new Ut).appendValue(S.HOUR_OF_DAY,2).appendLiteral(":").appendValue(S.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(S.SECOND_OF_MINUTE,2).optionalStart().appendFraction(S.NANO_OF_SECOND,0,9,!0).toFormatter(U.STRICT),Wt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendLiteral("T").append(Wt.ISO_LOCAL_TIME).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(U.STRICT),Wt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ZONED_DATE_TIME=(new Ut).append(Wt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.BASIC_ISO_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendValue(S.MONTH_OF_YEAR,2).appendValue(S.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ORDINAL_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(S.DAY_OF_YEAR).toFormatter(U.STRICT),Wt.ISO_WEEK_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-W").appendValue(S.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(S.DAY_OF_WEEK).toFormatter(U.STRICT),Wt.PARSED_EXCESS_DAYS=A("PARSED_EXCESS_DAYS",(function(t){return t instanceof tt?t.excessDays:P.ZERO})),Wt.PARSED_LEAP_SECOND=A("PARSED_LEAP_SECOND",(function(t){return t instanceof tt&&t.leapSecond})),zt.BASE_DATE=hn.of(2e3,1,1),Ut.CompositePrinterParser=bt,Ut.PadPrinterParserDecorator=St,Ut.SettingsParser=qt,Ut.CharLiteralPrinterParser=Tt,Ut.StringLiteralPrinterParser=Tt,Ut.CharLiteralPrinterParser=yt,Ut.NumberPrinterParser=xt,Ut.ReducedPrinterParser=zt,Ut.FractionPrinterParser=kt,Ut.OffsetIdPrinterParser=Ct,Ut.ZoneIdPrinterParser=Nt,on.MIN=ln.MIN.atOffset(Q.MAX),on.MAX=ln.MAX.atOffset(Q.MIN),on.FROM=A("OffsetDateTime.FROM",(function(t){return on.from(t)})),en.MIN=en.ofNumbers(0,0,0,0,Q.MAX),en.MAX=en.ofNumbers(23,59,59,999999999,Q.MIN),en.FROM=A("OffsetTime.FROM",(function(t){return en.from(t)})));var xn=function(){function t(t,n){var i;if(t instanceof hn)n=null==n?G.systemDefault():n,i=t.atStartOfDay(n);else if(t instanceof ln)n=null==n?G.systemDefault():n,i=t.atZone(n);else{if(!(t instanceof sn))throw new a("unsupported instance for convert operation:"+t);i=null==n?t:t.withZoneSameInstant(n)}this.instant=i.toInstant()}var n=t.prototype;return n.toDate=function(){return new Date(this.instant.toEpochMilli())},n.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function zn(t,n){return new xn(t,n)}var En=function(t){function n(n,i){var e;return void 0===i&&(i=G.systemDefault()),(e=t.call(this)||this)._zone=i,n instanceof Date?(e._epochMilli=n.getTime(),f(e)):"function"==typeof n.toDate&&n.toDate()instanceof Date?(e._epochMilli=n.toDate().getTime(),f(e)):(c(!1,"date must be either a javascript date or a moment"),e)}l(n,t);var i=n.prototype;return i.query=function(n){return v(n,"query"),n===q.localDate()?hn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===q.localTime()?fn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===q.zone()?this._zone:t.prototype.query.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(v(t,"field"),t instanceof S){switch(t){case S.NANO_OF_SECOND:return 1e6*$.floorMod(this._epochMilli,1e3);case S.INSTANT_SECONDS:return $.floorDiv(this._epochMilli,1e3)}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isSupported=function(t){return t===S.INSTANT_SECONDS||t===S.NANO_OF_SECOND},n}(O);function Cn(t,n){return new En(t,n)}var Sn,qn,On={assert:p,DateTimeBuilder:tt,DateTimeParseContext:nt,DateTimePrintContext:et,MathUtil:$,StringUtil:W,StringBuilder:Yt},In={_:On,convert:zn,nativeJs:Cn,ArithmeticException:u,DateTimeException:r,DateTimeParseException:s,IllegalArgumentException:a,IllegalStateException:h,UnsupportedTemporalTypeException:o,NullPointerException:_,Clock:wn,DayOfWeek:M,Duration:j,Instant:vn,LocalDate:hn,LocalTime:fn,LocalDateTime:ln,OffsetTime:en,OffsetDateTime:on,Month:N,MonthDay:Gt,Period:P,Year:Jt,YearConstants:x,YearMonth:Kt,ZonedDateTime:sn,ZoneOffset:Q,ZoneId:G,ZoneRegion:Mt,ZoneOffsetTransition:gn,ZoneRules:K,ZoneRulesProvider:Dt,ChronoLocalDate:Y,ChronoLocalDateTime:_n,ChronoZonedDateTime:rn,IsoChronology:nn,ChronoField:S,ChronoUnit:z,IsoFields:rt,Temporal:V,TemporalAccessor:O,TemporalAdjuster:H,TemporalAdjusters:Xt,TemporalAmount:b,TemporalField:E,TemporalQueries:q,TemporalQuery:I,TemporalUnit:k,ValueRange:C,DateTimeFormatter:Wt,DateTimeFormatterBuilder:Ut,DecimalStyle:mt,ResolverStyle:U,SignStyle:gt,TextStyle:$t},An=(Sn=In,qn=[],function(t){return~qn.indexOf(t)||(t(Sn),qn.push(t)),Sn});In.use=An},868:function(t,n,i){var e,r,s;r=[n,i(744)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e=n.$_$.ta,r=n.$_$.sa,s=n.$_$.ng,o=n.$_$.ua,u=n.$_$.l9,a=n.$_$.kg;function h(){i=this,l.call(this)}function _(){return null==i&&new h,i}function l(){}function f(t){this.kotlinx$atomicfu$value=t}function c(t){this.kotlinx$atomicfu$value=t}function v(t){this.kotlinx$atomicfu$value=t}function w(t){this.kotlinx$atomicfu$value=t}return o(l,"TraceBase",u),o(h,"None",r,l),o(f,"AtomicRef",u),o(c,"AtomicBoolean",u),o(v,"AtomicInt",u),o(w,"AtomicLong",u),e(l).atomicfu$Trace$append$1=function(t){},e(l).atomicfu$Trace$append$2=function(t,n){},e(l).atomicfu$Trace$append$3=function(t,n,i){},e(l).atomicfu$Trace$append$4=function(t,n,i,e){},e(f).dk=function(t){this.kotlinx$atomicfu$value=t},e(f).ek=function(){return this.kotlinx$atomicfu$value},e(f).atomicfu$compareAndSet=function(t,n){return this.kotlinx$atomicfu$value===t&&(this.kotlinx$atomicfu$value=n,!0)},e(f).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(f).toString=function(){return a(this.kotlinx$atomicfu$value)},e(c).fk=function(t){this.kotlinx$atomicfu$value=t},e(c).ek=function(){return this.kotlinx$atomicfu$value},e(c).atomicfu$compareAndSet=function(t,n){return this.kotlinx$atomicfu$value===t&&(this.kotlinx$atomicfu$value=n,!0)},e(c).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(c).toString=function(){return this.kotlinx$atomicfu$value.toString()},e(v).gk=function(t){this.kotlinx$atomicfu$value=t},e(v).ek=function(){return this.kotlinx$atomicfu$value},e(v).atomicfu$compareAndSet=function(t,n){return this.kotlinx$atomicfu$value===t&&(this.kotlinx$atomicfu$value=n,!0)},e(v).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(v).atomicfu$getAndIncrement=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t+1|0,t},e(v).atomicfu$getAndDecrement=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t-1|0,t},e(v).atomicfu$getAndAdd=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value+t|0,n},e(v).atomicfu$addAndGet=function(t){return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value+t|0,this.kotlinx$atomicfu$value},e(v).atomicfu$incrementAndGet=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value+1|0,t.kotlinx$atomicfu$value},e(v).atomicfu$decrementAndGet=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value-1|0,t.kotlinx$atomicfu$value},e(v).toString=function(){return this.kotlinx$atomicfu$value.toString()},e(w).hk=function(t){this.kotlinx$atomicfu$value=t},e(w).ek=function(){return this.kotlinx$atomicfu$value},e(w).atomicfu$compareAndSet=function(t,n){return!!this.kotlinx$atomicfu$value.equals(t)&&(this.kotlinx$atomicfu$value=n,!0)},e(w).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(w).atomicfu$getAndIncrement$long=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t.ui(),t},e(w).atomicfu$getAndDecrement$long=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t.vi(),t},e(w).atomicfu$getAndAdd$long=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value.o7(t),n},e(w).atomicfu$addAndGet$long=function(t){return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value.o7(t),this.kotlinx$atomicfu$value},e(w).atomicfu$incrementAndGet$long=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value.ui(),t.kotlinx$atomicfu$value},e(w).atomicfu$decrementAndGet$long=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value.vi(),t.kotlinx$atomicfu$value},e(w).toString=function(){return this.kotlinx$atomicfu$value.toString()},t.$_$=t.$_$||{},t.$_$.a=function(t){return function(t,n){return n=n===s?_():n,new c(t)}(t,_())},t.$_$.b=function(t){return function(t,n){return n=n===s?_():n,new w(t)}(t,_())},t.$_$.c=function(t){return function(t,n){return n=n===s?_():n,new f(t)}(t,_())},t.$_$.d=function(t){return function(t,n){return n=n===s?_():n,new v(t)}(t,_())},t})?e.apply(n,r):e)||(t.exports=s)},817:function(t,n,i){var e,r,s;r=[n,i(135),i(744),i(645)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W=n.Instant,G=n.Clock,K=n.OffsetDateTime,J=n.Duration,X=n.LocalDate,Z=n.LocalDateTime,Q=n.ZoneOffset,tt=n.ZoneId,nt=i.$_$.ta,it=i.$_$.sa,et=i.$_$.ng,rt=i.$_$.ua,st=i.$_$.u4,ot=i.$_$.ya,ut=i.$_$.r1,at=i.$_$.m5,ht=i.$_$.n1,_t=i.$_$.ra,lt=i.$_$.f9,ft=i.$_$.xe,ct=i.$_$.l9,vt=i.$_$.d2,wt=i.$_$.gf,dt=i.$_$.af,pt=e.$_$.h,mt=e.$_$.e1,gt=e.$_$.p2,$t=e.$_$.c,yt=i.$_$.ue,bt=i.$_$.oa,kt=i.$_$.m2,jt=i.$_$.vc,xt=i.$_$.j9,zt=i.$_$.i9,Et=i.$_$.qe,Ct=i.$_$.o9,St=i.$_$.wa,qt=i.$_$.pe,Ot=i.$_$.pa,It=i.$_$.m4,At=i.$_$.na,Tt=i.$_$.g,Dt=i.$_$.ne,Mt=i.$_$.f,Nt=i.$_$.l2,Rt=i.$_$.hf,Pt=i.$_$.re,Lt=i.$_$.o1,Ft=i.$_$.f1;function Ut(){r=this}function Ht(t){if(Vt(),!(1<=t&&t<=7))throw ut(ot("Failed requirement."));return(Vt(),s).h(t-1|0)}function Vt(){o||(o=!0,s=at([ln(),fn(),cn(),vn(),wn(),dn(),pn()]))}function Bt(t){var n=function(t,n){return ht(t,n),Yt.call(n),n}(t,_t(nt(Yt)));return lt(n,Bt),n}function Yt(){lt(this,Yt)}function Wt(t){var n=function(t,n){return ht(t,n),Gt.call(n),n}(t,_t(nt(Gt)));return lt(n,Wt),n}function Gt(){lt(this,Gt)}function Kt(t){var n=function(t,n){return vt(t,n),Jt.call(n),n}(t,_t(nt(Jt)));return lt(n,Kt),n}function Jt(){lt(this,Jt)}function Xt(t){if(Zt(),!(1<=t&&t<=12))throw ut(ot("Failed requirement."));return(Zt(),h).h(t-1|0)}function Zt(){_||(_=!0,h=at([On(),In(),An(),Tn(),Dn(),Mn(),Nn(),Rn(),Pn(),Ln(),Fn(),Un()]))}function Qt(){return l}function tn(){return f}function nn(){return c}function en(){v=this,this.e3i_1=mt("Instant",pt())}function rn(){w=this,this.f3i_1=mt("LocalDate",pt())}function sn(){d=this,this.i3i_1=mt("LocalDateTime",pt())}function on(){p=this,this.l3i_1=mt("TimeZone",pt())}function un(){m=this,this.o3i_1=mt("FixedOffsetTimeZone",pt())}function an(){g=this,this.p3i_1=mt("UtcOffset",pt())}function hn(){if(E)return st();E=!0,$=new _n("MONDAY",0),y=new _n("TUESDAY",1),b=new _n("WEDNESDAY",2),k=new _n("THURSDAY",3),j=new _n("FRIDAY",4),x=new _n("SATURDAY",5),z=new _n("SUNDAY",6)}function _n(t,n){yt.call(this,t,n)}function ln(){return hn(),$}function fn(){return hn(),y}function cn(){return hn(),b}function vn(){return hn(),k}function wn(){return hn(),j}function dn(){return hn(),x}function pn(){return hn(),z}function mn(){C=this,this.w3h_1=new $n(W.ofEpochSecond(u,999999999)),this.x3h_1=new $n(W.ofEpochSecond(a,0)),this.y3h_1=new $n(W.MIN),this.z3h_1=new $n(W.MAX)}function gn(){return null==C&&new mn,C}function $n(t){gn(),this.t3i_1=t}function yn(t){return"DateTimeException"==t.name}function bn(t){return"DateTimeParseException"==t.name}function kn(){S=this,this.g3i_1=new xn(X.MIN),this.h3i_1=new xn(X.MAX)}function jn(){return null==S&&new kn,S}function xn(t){jn(),this.a3i_1=t}function zn(){q=this,this.j3i_1=new Cn(Z.MIN),this.k3i_1=new Cn(Z.MAX)}function En(){return null==q&&new zn,q}function Cn(t){En(),this.a3j_1=t}function Sn(){if(H)return st();H=!0,O=new qn("JANUARY",0),I=new qn("FEBRUARY",1),A=new qn("MARCH",2),T=new qn("APRIL",3),D=new qn("MAY",4),M=new qn("JUNE",5),N=new qn("JULY",6),R=new qn("AUGUST",7),P=new qn("SEPTEMBER",8),L=new qn("OCTOBER",9),F=new qn("NOVEMBER",10),U=new qn("DECEMBER",11)}function qn(t,n){yt.call(this,t,n)}function On(){return Sn(),O}function In(){return Sn(),I}function An(){return Sn(),A}function Tn(){return Sn(),T}function Dn(){return Sn(),D}function Mn(){return Sn(),M}function Nn(){return Sn(),N}function Rn(){return Sn(),R}function Pn(){return Sn(),P}function Ln(){return Sn(),L}function Fn(){return Sn(),F}function Un(){return Sn(),U}function Hn(t,n){var i;if(n instanceof Q)i=Wn(new Qn(n));else if(n.rules().isFixedOffset()){var e=n.normalized();i=new Kn(new Qn(e instanceof Q?e:Rt()),n)}else i=new Yn(n);return i}function Vn(){V=this,this.m3i_1=Wn(new Qn(Q.UTC))}function Bn(){return null==V&&new Vn,V}function Yn(t){Bn(),this.k3j_1=t}function Wn(t){return function(t,n){return Kn.call(n,t,t.l3j_1),n}(t,_t(nt(Kn)))}function Gn(){B=this}function Kn(t,n){null==B&&new Gn,Yn.call(this,n),this.n3j_1=t}function Jn(t,n){return new Qn(t.k3j_1.rules().offsetOfInstant(n.t3i_1))}function Xn(){Y=this,this.q3i_1=new Qn(Q.UTC)}function Zn(){return null==Y&&new Xn,Y}function Qn(t){Zn(),this.l3j_1=t}return rt(Ut,"System",it),rt(Yt,"DateTimeFormatException",ct,ft),rt(Gt,"IllegalTimeZoneException",ct,ft),rt(Jt,"DateTimeArithmeticException",ct,wt),rt(en,"InstantIso8601Serializer",it,et,[gt]),rt(rn,"LocalDateIso8601Serializer",it,et,[gt]),rt(sn,"LocalDateTimeIso8601Serializer",it,et,[gt]),rt(on,"TimeZoneSerializer",it,et,[gt]),rt(un,"FixedOffsetTimeZoneSerializer",it,et,[gt]),rt(an,"UtcOffsetSerializer",it,et,[gt]),rt(_n,"DayOfWeek",ct,yt),rt(mn,"Companion",it),rt($n,"Instant",ct,et,[Pt],et,{0:function(){return null==v&&new en,v}}),rt(kn,"Companion",it),rt(xn,"LocalDate",ct,et,[Pt],et,{0:function(){return null==w&&new rn,w}}),rt(zn,"Companion",it),rt(Cn,"LocalDateTime",ct,et,[Pt],et,{0:function(){return null==d&&new sn,d}}),rt(qn,"Month",ct,yt),rt(Vn,"Companion",it),rt(Yn,"TimeZone",ct,et,et,et,{0:function(){return null==p&&new on,p}}),rt(Gn,"Companion",it),rt(Kn,"FixedOffsetTimeZone",ct,Yn,et,et,{0:function(){return null==m&&new un,m}}),rt(Xn,"Companion",it),rt(Qn,"UtcOffset",ct,et,et,et,{0:function(){return null==g&&new an,g}}),nt(Ut).v3h=function(){return gn().v3h()},nt(en).i32=function(){return this.e3i_1},nt(en).j32=function(t){return gn().q1s(t.f35())},nt(rn).i32=function(){return this.f3i_1},nt(rn).j32=function(t){return jn().q1s(t.f35())},nt(sn).i32=function(){return this.i3i_1},nt(sn).j32=function(t){return En().q1s(t.f35())},nt(on).i32=function(){return this.l3i_1},nt(on).j32=function(t){return Bn().n3i(t.f35())},nt(un).i32=function(){return this.o3i_1},nt(un).j32=function(t){var n=Bn().n3i(t.f35());if(n instanceof Kn)return n;throw $t("Timezone identifier '"+n+"' does not correspond to a fixed-offset timezone")},nt(an).i32=function(){return this.p3i_1},nt(an).j32=function(t){return Zn().q1s(t.f35())},nt(mn).v3h=function(){return new $n(G.systemUTC().instant())},nt(mn).r3i=function(t){var n;try{var i,e=tn(),r=t.m7(St(e)),s=tn(),o=t.j8(St(s)),u=Qt();i=o.n7(St(u)),n=this.s3i(r,i)}catch(i){if(!(i instanceof Error))throw i;var a=i;if(!yn(a))throw a;n=t.w(new dt(0,0))>0?this.z3h_1:this.y3h_1}return n},nt(mn).q1s=function(t){var n;try{n=new $n(K.parse(function(t,n){var i,e=jt(n,kt(84),et,!0);if(-1===e)return n;t:{var r=xt(n)-1|0;if(0<=r)do{var s=r;r=r+-1|0;var o=zt(n,s);if(Ct(new Et(o),new Et(kt(43)))||Ct(new Et(o),new Et(kt(45)))){i=s;break t}}while(0<=r);i=-1}var u=i;return u=0)throw Ft("Addition overflows a long: "+ot(t)+" + "+ot(n));return i}(t,r),o=St(nn()),u=n.j8(o),a=u.o7(o.z9(u.h8(o).z9(u.xi(u.l7())).b8(63))).c8();i=new $n(W.ofEpochSecond(s,a))}catch(n){if(!(n instanceof Error))throw n;var h=n;if(!(yn(h)||h instanceof qt))throw h;i=t.w(new dt(0,0))>0?this.z3h_1:this.y3h_1}return i},nt($n).u3i=function(){return Ot(this.t3i_1.epochSecond())},nt($n).v3i=function(){return bt(this.t3i_1.nano())},nt($n).w3i=function(){var t=this.u3i(),n=tn(),i=t.n7(St(n)),e=this.v3i()/Qt()|0;return i.o7(St(e))},nt($n).x3i=function(t){var n,i=J.between(t.t3i_1,this.t3i_1),e=(It(),At(i.seconds())),r=Dt(e,Tt()),s=(It(),At(i.nano()));return n=Dt(s,Mt()),Nt(r,n)},nt($n).y3i=function(t){return bt(this.t3i_1.compareTo(t.t3i_1))},nt($n).p8=function(t){return this.y3i(t instanceof $n?t:Rt())},nt($n).equals=function(t){return this===t||t instanceof $n&&Ct(this.t3i_1,t.t3i_1)},nt($n).hashCode=function(){return bt(this.t3i_1.hashCode())},nt($n).toString=function(){return this.t3i_1.toString()},nt(kn).q1s=function(t){var n;try{n=new xn(X.parse(t))}catch(t){if(t instanceof Error){var i=t;if(bn(i))throw Bt(i);throw i}throw t}return n},nt(xn).b3i=function(){return bt(this.a3i_1.year())},nt(xn).c3i=function(){return bt(this.a3i_1.monthValue())},nt(xn).d3i=function(){return bt(this.a3i_1.dayOfMonth())},nt(xn).equals=function(t){return this===t||t instanceof xn&&Ct(this.a3i_1,t.a3i_1)},nt(xn).hashCode=function(){return bt(this.a3i_1.hashCode())},nt(xn).toString=function(){return this.a3i_1.toString()},nt(xn).z3i=function(t){return bt(this.a3i_1.compareTo(t.a3i_1))},nt(xn).p8=function(t){return this.z3i(t instanceof xn?t:Rt())},nt(zn).q1s=function(t){var n;try{n=new Cn(Z.parse(t))}catch(t){if(t instanceof Error){var i=t;if(bn(i))throw Bt(i);throw i}throw t}return n},nt(Cn).b3i=function(){return bt(this.a3j_1.year())},nt(Cn).c3i=function(){return bt(this.a3j_1.monthValue())},nt(Cn).b3j=function(){return t=this.a3j_1.month(),Xt(bt(t.value()));var t},nt(Cn).d3i=function(){return bt(this.a3j_1.dayOfMonth())},nt(Cn).c3j=function(){return t=this.a3j_1.dayOfWeek(),Ht(bt(t.value()));var t},nt(Cn).d3j=function(){return bt(this.a3j_1.dayOfYear())},nt(Cn).e3j=function(){return bt(this.a3j_1.hour())},nt(Cn).f3j=function(){return bt(this.a3j_1.minute())},nt(Cn).g3j=function(){return bt(this.a3j_1.second())},nt(Cn).h3j=function(){return bt(this.a3j_1.nano())},nt(Cn).equals=function(t){return this===t||t instanceof Cn&&Ct(this.a3j_1,t.a3j_1)},nt(Cn).hashCode=function(){return bt(this.a3j_1.hashCode())},nt(Cn).toString=function(){return this.a3j_1.toString()},nt(Cn).i3j=function(t){return bt(this.a3j_1.compareTo(t.a3j_1))},nt(Cn).p8=function(t){return this.i3j(t instanceof Cn?t:Rt())},nt(Vn).j3j=function(){return Hn(0,tt.systemDefault())},nt(Vn).n3i=function(t){var n;try{n=Hn(0,tt.of(t))}catch(t){if(t instanceof Error){var i=t;if(yn(i))throw Wt(i);throw i}throw t}return n},nt(Yn).equals=function(t){return this===t||t instanceof Yn&&Ct(this.k3j_1,t.k3j_1)},nt(Yn).hashCode=function(){return bt(this.k3j_1.hashCode())},nt(Yn).toString=function(){return this.k3j_1.toString()},nt(Xn).q1s=function(t){var n;try{n=new Qn(Q.of(t))}catch(t){if(t instanceof Error){var i=t;if(yn(i))throw Bt(i);throw i}throw t}return n},nt(Qn).o3j=function(){return bt(this.l3j_1.totalSeconds())},nt(Qn).hashCode=function(){return bt(this.l3j_1.hashCode())},nt(Qn).equals=function(t){return t instanceof Qn&&Ct(this.l3j_1,t.l3j_1)},nt(Qn).toString=function(){return this.l3j_1.toString()},u=new dt(-931914497,-750),a=new dt(1151527680,720),l=1e6,f=1e3,c=1e9,t.$_$=t.$_$||{},t.$_$.a=function(){return null==r&&new Ut,r},t.$_$.b=gn,t.$_$.c=Bn,t.$_$.d=$n,t.$_$.e=Cn,t.$_$.f=xn,t.$_$.g=function(t,n,i,e,r){return e=e===et?0:e,r=r===et?0:r,function(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){var a;s=s===et?0:s,o=o===et?0:o;try{a=Z.of(t,n,i,e,r,s,o)}catch(t){if(t instanceof Error){var h=t;if(yn(h))throw Lt(h);throw h}throw t}return Cn.call(u,a),u}(t,n,i,e,r,s,o,_t(nt(Cn)))}(t.b3i(),t.c3i(),t.d3i(),n,i,e,r)},t.$_$.h=function(t){return Vt(),t.l6_1+1|0},t.$_$.i=function(t){return Zt(),t.l6_1+1|0},t.$_$.j=Jn,t.$_$.k=function(t,n){return Jn(n,t)},t.$_$.l=function(t,n){return new $n(t.a3j_1.atZone(n.k3j_1).toInstant())},t.$_$.m=function(t,n){var i;try{i=new Cn(Z.ofInstant(t.t3i_1,n.k3j_1))}catch(t){if(t instanceof Error){var e=t;if(yn(e))throw Kt(e);throw e}throw t}return i},t})?e.apply(n,r):e)||(t.exports=s)},960:function(t,n,i){var e,r,s;r=[n,i(744),i(426),i(817),i(585),i(646)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o){"use strict";var u,a=n.$_$.hf,h=e.$_$.b,_=n.$_$.ta,l=n.$_$.sa,f=n.$_$.ng,c=n.$_$.ua,v=n.$_$.l9,w=r.$_$.a,d=s.$_$.p,p=n.$_$.u4,m=s.$_$.m,g=s.$_$.l1,$=s.$_$.j1,y=s.$_$.d1,b=s.$_$.r,k=s.$_$.u,j=s.$_$.e1,x=s.$_$.t,z=s.$_$.v,E=s.$_$.k1,C=s.$_$.g1,S=s.$_$.i1,q=s.$_$.h1,O=s.$_$.a,I=s.$_$.n,A=n.$_$.e7,T=s.$_$.y,D=s.$_$.q1,M=s.$_$.z,N=s.$_$.r1,R=s.$_$.p1,P=s.$_$.a1,L=n.$_$.i6,F=s.$_$.s,U=s.$_$.x,H=s.$_$.b,V=s.$_$.m1,B=s.$_$.b1,Y=n.$_$.z8,W=o.$_$.y,G=n.$_$.ea,K=s.$_$.n1,J=n.$_$.d7,X=n.$_$.l8,Z=s.$_$.t1,Q=o.$_$.k1,tt=s.$_$.s1,nt=n.$_$.we,it=o.$_$.m1,et=s.$_$.o1,rt=s.$_$.c1,st=n.$_$.lg,ot=n.$_$.g7,ut=s.$_$.q,at=s.$_$.f1,ht=s.$_$.o,_t=s.$_$.l,lt=n.$_$.q6,ft=s.$_$.w,ct=s.$_$.d,vt=s.$_$.c,wt=s.$_$.j,dt=s.$_$.i,pt=s.$_$.h,mt=s.$_$.e,gt=s.$_$.f,$t=s.$_$.g,yt=s.$_$.k;function bt(){u=this;var t=i(897),n=null!=t&&"string"==typeof t?t:a();this.q8q_1=new h("aircraft_fighter.png",n);var e=i(760),r=null!=e&&"string"==typeof e?e:a();this.r8q_1=new h("aircraft_fixwing.png",r);var s=i(245),o=null!=s&&"string"==typeof s?s:a();this.s8q_1=new h("airport_terminal.png",o);var _=i(954),l=null!=_&&"string"==typeof _?_:a();this.t8q_1=new h("ehipcc.png",l);var f=i(959),c=null!=f&&"string"==typeof f?f:a();this.u8q_1=new h("pattern_sample_houndstooth.png",c);var v=i(481),w=null!=v&&"string"==typeof v?v:a();this.v8q_1=new h("worldwind_logo.png",w)}function kt(){return null==u&&new bt,u}function jt(){this.w8q_1=null}function xt(t){jt.call(this),this.c8r_1=t,this.d8r_1=null,this.e8r_1=null}function zt(t){jt.call(this),this.g8r_1=t}function Et(t){jt.call(this),this.i8r_1=t;var n,i,e,r=new b("Ellipses"),s=new k(g().u5l(45,-120,0),5e5,3e5);s.h6e(j()),s.g6e(!0),i=s,r.m65(i);var o,u=new k(g().u5l(45,-100,0),5e5,3e5),a=u.r28();a.r7t(new x(1,1,1,.5)),a.f6k_1=3,u.h6e(j()),u.g6e(!0),e=u,r.m65(e);var h,_,l=new k(g().u5l(35,-120,0),5e5,3e5);l.h6e(j()),l.g6e(!0),h=$().e55(45),l.d7l(h),o=l,r.m65(o);var f,c=new k(g().u5l(35,-100,0),4e5,4e5);c.h6e(j()),c.g6e(!0),_=c,r.m65(_),r.m65(new k(g().u5l(25,-120,2e5),5e5,3e5));var v=new k(g().u5l(25,-100,2e5),5e5,3e5),w=v.r28();w.r7t(new x(1,1,1,.5)),w.b6k_1=!0,v.v7i(!0),f=v,r.m65(f),n=r,this.j8r_1=n}function Ct(t){jt.call(this),this.l8r_1=t;var n,i,e,r=new b("Labels"),s=new z(g().u5l(38.8977,-77.0365,0),"The White House");s.h6e(j()),i=s,r.m65(i);var o=new z(g().u5l(38.881389,-77.036944,0),"Thomas Jefferson Memorial");o.h6e(j());var u,a=o.p6e_1;a.v6j(new x(0,0,0,1)),a.w6j(new x(1,1,1,1)),a.n6j_1=5,e=o,r.m65(e);var h,_=new z(g().u5l(38.8893,-77.050111,0),"Lincoln Memorial");_.h6e(j()),_.p6e_1.a7u(E().m5l()),u=_,r.m65(u);var l,f=new z(g().u5l(38.889803,-77.009114,0),"United States Capitol");f.h6e(j()),f.p6e_1.a7u(E().k5l()),h=f,r.m65(h);var c,v=new z(g().u5l(38.907192,-77.036871,0),"Washington");v.h6e(j()),v.p6e_1.x6j(S("arial",C(),28)),l=v,r.m65(l);var w=new z(g().u5l(38.89,-77.023611,0),"National Mall");w.h6e(j()),w.t6e_1=q(),c=w,r.m65(c),n=r,this.m8r_1=n}function St(t){jt.call(this),this.o8r_1=t}function qt(t){jt.call(this),this.q8r_1=t,this.r8r_1=new I}function Ot(t){jt.call(this),this.t8r_1=t;var n,i,e=new b("Paths");e.m65(new T(A([g().u5l(50,-180,1e5),g().u5l(30,-100,1e6),g().u5l(50,-40,1e5)])));var r,s=new T(A([g().u5l(40,-180,0),g().u5l(20,-100,0),g().u5l(40,-40,0)]));s.h6e(j()),s.g6e(!0),i=s,e.m65(i);var o,u=new T(A([g().u5l(30,-180,1e5),g().u5l(10,-100,1e6),g().u5l(30,-40,1e5)]));u.v7i(!0),r=u,e.m65(r);var a=new T(A([g().u5l(20,-180,1e5),g().u5l(0,-100,1e6),g().u5l(20,-40,1e5)])),h=a.r28();h.b6k_1=!0,h.r7t(new x(1,1,1,.5)),h.f6k_1=3,a.v7i(!0),o=a,e.m65(o),n=e,this.u8r_1=n}function It(t){jt.call(this),this.w8r_1=t;var n,i,e,r=new b("Placemarks"),s=D().s7o(g().u5l(34.281,-119.293,0),new x(0,1,1,1),20);s.h6e(j()),i=s,r.m65(i);var o,u,a=new M(g().u5l(34.26,-119.2,5e3)),h=a,_=N().p7q(R().i64(kt().r8q_1));_.u7o_1=1.5,o=_,h.j7p_1=o,e=a,r.m65(e);var l=new M(g().u5l(34.2,-119.208,0));l.h6e(j());var f,c,v=l,w=N().o7q(R().i64(kt().s8q_1));w.q7q(E().l5l()),w.u7o_1=2,f=w,v.j7p_1=f,l.n7d("Oxnard Airport"),u=l,r.m65(u);var d=new M(g().u5l(34.3,-119.25,0));d.h6e(j());var p,m=d,$=N().o7q(R().i64(kt().t8q_1));$.q7q(E().l5l()),p=$,m.j7p_1=p,c=d,r.m65(c),n=r,this.x8r_1=n}function At(t){jt.call(this),this.z8r_1=t;var n,i,e=new b("Polygons");e.m65(new P(A([g().u5l(40,-135,5e5),g().u5l(45,-140,7e5),g().u5l(50,-130,9e5),g().u5l(45,-120,7e5),g().u5l(40,-125,5e5)])));var r,s=new P(A([g().u5l(40,-105,0),g().u5l(45,-110,0),g().u5l(50,-100,0),g().u5l(45,-90,0),g().u5l(40,-95,0)]));s.h6e(j()),s.g6e(!0),i=s,e.m65(i);var o,u=new P(A([g().u5l(20,-135,5e5),g().u5l(25,-140,7e5),g().u5l(30,-130,9e5),g().u5l(25,-120,7e5),g().u5l(20,-125,5e5)]));u.v7i(!0),r=u,e.m65(r);var a,h=new P(A([g().u5l(20,-105,5e5),g().u5l(25,-110,7e5),g().u5l(30,-100,9e5),g().u5l(25,-90,7e5),g().u5l(20,-95,5e5)])),_=h.r28();_.b6k_1=!0,_.r7t(new x(1,1,1,.5)),_.f6k_1=3,h.v7i(!0),o=h,e.m65(o);var l,f=new P;f.g7t(A([g().u5l(0,-135,5e5),g().u5l(5,-140,7e5),g().u5l(10,-130,9e5),g().u5l(5,-120,7e5),g().u5l(0,-125,5e5)])),f.g7t(A([g().u5l(2.5,-130,6e5),g().u5l(5,-135,7e5),g().u5l(7.5,-130,8e5),g().u5l(5,-125,7e5)])),a=f,e.m65(a);var c=new P(L()),v=c.r28();v.b6k_1=!0,v.r7t(new x(1,1,1,.5)),v.f6k_1=3,c.g7t(A([g().u5l(0,-105,5e5),g().u5l(5,-110,7e5),g().u5l(10,-100,9e5),g().u5l(5,-90,7e5),g().u5l(0,-95,5e5)])),c.g7t(A([g().u5l(2.5,-100,6e5),g().u5l(5,-105,7e5),g().u5l(7.5,-100,8e5),g().u5l(5,-95,7e5)])),c.v7i(!0),l=c,e.m65(l),n=e,this.a8s_1=n}function Tt(t){jt.call(this),this.c8s_1=t,this.d8s_1=new F}function Dt(t){jt.call(this),this.f8s_1=t;var n,i,e,r=new b("Sightline"),s=g().u5l(46.23,-122.19,2500),o=new U(s,1e4);o.r28().r7t(new x(0,1,0,.5)),o.l7m_1.r7t(new x(.1,.1,.1,.8)),i=o,r.m65(i);var u=new M(s),a=u.j7p_1;a.t7o_1=R().i64(kt().r8q_1),a.q7q(E().l5l()),a.u7o_1=2,a.x7o_1=!0,e=u,r.m65(e),n=r,this.g8s_1=n}function Mt(t){jt.call(this),this.i8s_1=t;var n,i=new b("Surface image");i.m65(new B(V().y5l(37.46,15.5,.5,.6),R().i64(kt().v8q_1))),i.m65(new B(V().y5l(37.46543388598137,14.60128369746704,.45360804083528,.75704283995502),R().t6t("https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg"))),n=i,this.j8s_1=n}function Nt(t,n){this.s8s_1=t,Y.call(this,n)}function Rt(t,n){jt.call(this),this.v8s_1=t,this.w8s_1=n,this.x8s_1=null,this.y8s_1=null}function Pt(t,n){this.h8t_1=t,Y.call(this,n)}function Lt(t,n){jt.call(this),this.k8t_1=t,this.l8t_1=n,this.m8t_1=null,this.n8t_1=null}function Ft(){window.onload=Ut}function Ut(t){var n,i,e,r,s=document.getElementById("WorldWindow"),o=new rt(s instanceof HTMLCanvasElement?s:a()),u=document.getElementById("Tutorials"),h=u instanceof HTMLSelectElement?u:a(),_=document.getElementById("Actions"),l=_ instanceof HTMLDivElement?_:a(),f=ot([st("Basic globe",new xt(o.n88())),st("Set camera view",new zt(o.n88())),st("Set Look At",new St(o.n88())),st("Placemarks",new It(o.n88())),st("Paths",new Ot(o.n88())),st("Polygons",new At(o.n88())),st("Ellipses",new Et(o.n88())),st("Labels",new Ct(o.n88())),st("Sight line",new Dt(o.n88())),st("Surface image",new Mt(o.n88())),st("Show tessellation",new Tt(o.n88())),st("MGRS Graticule",new qt(o.n88())),st("WMS Layer",new Rt(o.n88(),o.n8c())),st("WMTS Layer",new Lt(o.n88(),o.n8c()))]),c={_v:null},v=o.n88().k4v_1;v.p65(new ut),v.p65(new ht(at())),v.p65(new d),v.p65(new m),o.n88().g4v_1.k4x_1.x5w(new _t),o.o8c().t8g_1=new Bt;for(var w=f.h2().d();w.e();){var g=w.f(),$=document.createElement("option"),y=$ instanceof HTMLOptionElement?$:a();y.value=g,y.innerHTML=g,h.append(y)}return h.onchange=(n=c,i=f,e=l,r=o,function(t){var s=t.target;return Vt(n,i,e,r,(s instanceof HTMLSelectElement?s:a()).value),p()}),Vt(c,f,l,o,lt(f.h2())),p()}function Ht(t,n,i,e){var r,s,o,u=document.createElement("button"),h=u instanceof HTMLButtonElement?u:a();h.innerHTML=e,t.append(h),h.onclick=(r=e,s=n,o=i,function(t){return function(t,n,i){var e=t._v;if(null==e);else{var r=n.g2(e);null!=r&&(r.y8q(i),p())}}(s,o,r),p()})}function Vt(t,n,i,e,r){var s=t._v;if(null==s);else{var o=n.g2(s);null!=o&&(o.a8r(),p())}t._v=r;var u=n.g2(r);if(null==u);else{u.z8q(),i.innerHTML="";var a=u.x8q();if(null==a);else for(var h=a.d();h.e();)Ht(i,t,n,h.f());var _=u.x8q();i.hidden=!(!1===(null==_?null:_.m())),p()}e.c4v()}function Bt(){}return c(bt,"images",l),c(jt,"AbstractTutorial",v),c(xt,"BasicTutorial",v,jt),c(zt,"CameraViewTutorial",v,jt),c(Et,"EllipsesTutorial",v,jt),c(Ct,"LabelsTutorial",v,jt),c(St,"LookAtViewTutorial",v,jt),c(qt,"MGRSGraticuleTutorial",v,jt),c(Ot,"PathsTutorial",v,jt),c(It,"PlacemarksTutorial",v,jt),c(At,"PolygonsTutorial",v,jt),c(Tt,"ShowTessellationTutorial",v,jt),c(Dt,"SightlineTutorial",v,jt),c(Mt,"SurfaceImageTutorial",v,jt),c(Nt,"WmsLayerTutorial$start$slambda",v,Y,f,f,f,[1]),c(Rt,"WmsLayerTutorial",v,jt),c(Pt,"WmtsLayerTutorial$start$slambda",v,Y,f,f,f,[1]),c(Lt,"WmtsLayerTutorial",v,jt),c(Bt,f,v,f,[yt]),_(jt).x8q=function(){return this.w8q_1},_(jt).y8q=function(t){},_(jt).z8q=function(){},_(jt).a8r=function(){},_(xt).z8q=function(){_(jt).z8q.call(this);var t,n=this.c8r_1.k4v_1,i=w().v3h(),e=n.n65(n.o65("StarField")),r=e instanceof d?e:a();r.r6u_1=i,t=r,this.d8r_1=t;var s,o=n.n65(n.o65("Atmosphere")),u=o instanceof m?o:a();u.m68_1=i,s=u,this.e8r_1=s,p()},_(xt).a8r=function(){_(jt).a8r.call(this);var t=this.d8r_1;null==t||(t.r6u_1=null);var n=this.e8r_1;null==n||(n.m68_1=null)},_(zt).z8q=function(){var t,n,i,e,r,s,o,u,a;_(jt).z8q.call(this),t=this,n=g().u5l(34.2,-119.2,3e3),i=g().u5l(34.1192744,-119.119585,4),e=n.g5k(i),r=n.h5k(i)*t.g8r_1.g4v_1.j5w(n.j4w_1,n.k4w_1),s=$(),o=r/n.n4w_1,u=Math.atan(o),a=s.r51(u),t.g8r_1.l4v_1.l5j(n.j4w_1,n.k4w_1,n.n4w_1,y(),e,a,$().s50_1)},_(Et).z8q=function(){_(jt).z8q.call(this),this.i8r_1.k4v_1.p65(this.j8r_1);var t,n=this.i8r_1.l4v_1,i=$().e55(30);t=$().e55(-110),n.l5j(i,t,1.1*this.i8r_1.c4w(),y(),$().s50_1,$().s50_1,$().s50_1)},_(Et).a8r=function(){_(jt).a8r.call(this),this.i8r_1.k4v_1.q65(this.j8r_1)},_(Ct).z8q=function(){_(jt).z8q.call(this),this.l8r_1.k4v_1.p65(this.m8r_1);var t,n=this.l8r_1.l4v_1,i=$().e55(38.89);t=$().e55(-77.023611),n.l5j(i,t,1e4,y(),$().s50_1,$().s50_1,$().s50_1)},_(Ct).a8r=function(){_(jt).a8r.call(this),this.l8r_1.k4v_1.q65(this.m8r_1)},_(St).z8q=function(){var t,n,i,e,r,s,o,u,a,h,l,f;_(jt).z8q.call(this),t=this,n=g().u5l(34.0158333,-118.4513056,2500),i=g().u5l(33.9424368,-118.4081222,38.7),e=n.g5k(i),r=n.h5k(i)*t.o8r_1.g4v_1.j5w(n.j4w_1,n.k4w_1),s=n.n4w_1-i.n4w_1,o=s*s+r*r,u=Math.sqrt(o),a=$(),h=r/n.n4w_1,l=Math.atan(h),f=a.r51(l),t.o8r_1.l50(new O(i,y(),u,e,f,$().s50_1))},_(qt).z8q=function(){_(jt).z8q.call(this),this.q8r_1.k4v_1.p65(this.r8r_1)},_(qt).a8r=function(){_(jt).a8r.call(this),this.q8r_1.k4v_1.q65(this.r8r_1)},_(Ot).z8q=function(){_(jt).z8q.call(this),this.t8r_1.k4v_1.p65(this.u8r_1);var t,n=this.t8r_1.l4v_1,i=$().e55(30);t=$().e55(-100),n.l5j(i,t,1.1*this.t8r_1.c4w(),y(),$().s50_1,$().s50_1,$().s50_1)},_(Ot).a8r=function(){_(jt).a8r.call(this),this.t8r_1.k4v_1.q65(this.u8r_1)},_(It).z8q=function(){_(jt).z8q.call(this),this.w8r_1.k4v_1.p65(this.x8r_1);var t,n=g().u5l(34.2,-119.208,0),i=y(),e=$().s50_1;t=$().e55(80),this.w8r_1.l50(new O(n,i,1e4,e,t,$().s50_1))},_(It).a8r=function(){_(jt).a8r.call(this),this.w8r_1.k4v_1.q65(this.x8r_1)},_(At).z8q=function(){_(jt).z8q.call(this),this.z8r_1.k4v_1.p65(this.a8s_1);var t,n=this.z8r_1.l4v_1,i=$().e55(30);t=$().e55(-115),n.l5j(i,t,1.1*this.z8r_1.c4w(),y(),$().s50_1,$().s50_1,$().s50_1)},_(At).a8r=function(){_(jt).a8r.call(this),this.z8r_1.k4v_1.q65(this.a8s_1)},_(Tt).z8q=function(){_(jt).z8q.call(this),this.c8s_1.k4v_1.p65(this.d8s_1)},_(Tt).a8r=function(){_(jt).a8r.call(this),this.c8s_1.k4v_1.q65(this.d8s_1)},_(Dt).z8q=function(){_(jt).z8q.call(this),this.f8s_1.k4v_1.p65(this.g8s_1);var t,n=$().e55(46.23);t=$().e55(-122.19);var i,e=new H(n,t,500),r=y(),s=$().e55(45),o=$().e55(70);i=$().e55(0),this.f8s_1.l50(new O(e,r,15e3,s,o,i))},_(Dt).a8r=function(){_(jt).a8r.call(this),this.f8s_1.k4v_1.q65(this.g8s_1)},_(Mt).z8q=function(){_(jt).z8q.call(this),this.i8s_1.k4v_1.p65(this.j8s_1);var t,n=this.i8s_1.l4v_1,i=$().e55(37.46543388598137);t=$().e55(14.97980511744455),n.l5j(i,t,4e5,y(),$().s50_1,$().s50_1,$().s50_1)},_(Mt).a8r=function(){_(jt).a8r.call(this),this.i8s_1.k4v_1.q65(this.j8s_1)},_(Nt).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=p(),i.kj_1=null,i.qj()},_(Nt).ck=function(t,n){return this.n1f(null!=t&&G(t,W)?t:a(),n)},_(Nt).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.ij_1=2,this.hj_1=1,(t=K().q70("https://neo.gsfc.nasa.gov/wms/wms",J("MOD_LSTD_CLIM_M"),this))===X())return t;continue t;case 1:var n=t;Q(this.t8s_1)&&(this.s8s_1.x8s_1=n,this.s8s_1.v8s_1.k4v_1.p65(n),Z().c4v()),tt().j5y(tt().s4w_1,"WMS layer creation succeeded"),this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof nt){var i=this.kj_1;tt().m8q(tt().q4w_1,"WMS layer creation failed",i),this.hj_1=4;continue t}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,p()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},_(Nt).o1f=function(t,n){var i=new Nt(this.s8s_1,n);return i.t8s_1=t,i},_(Rt).z8q=function(){var t,n;_(jt).z8q.call(this),this.y8s_1=it(this.w8s_1,f,f,(t=new Nt(this,null),(n=function(n,i){return t.n1f(n,i)}).$arity=1,n));var i=this.v8s_1.l4v_1;i.d4w_1.n4w_1=1.1*this.v8s_1.c4w(),i.f4w_1=$().s50_1,i.g4w_1=$().s50_1,i.h4w_1=$().s50_1},_(Rt).a8r=function(){_(jt).a8r.call(this);var t=this.y8s_1;null==t||t.vl();var n=this.x8s_1;null==n||this.v8s_1.k4v_1.q65(n),this.x8s_1=null},_(Pt).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=p(),i.kj_1=null,i.qj()},_(Pt).ck=function(t,n){return this.n1f(null!=t&&G(t,W)?t:a(),n)},_(Pt).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.ij_1=2,this.hj_1=1,(t=et().r75("https://tiles.geoservice.dlr.de/service/wmts","hillshade",this))===X())return t;continue t;case 1:var n=t;Q(this.i8t_1)&&(this.h8t_1.m8t_1=n,this.h8t_1.k8t_1.k4v_1.p65(n),Z().c4v()),tt().j5y(tt().s4w_1,"WMTS layer creation succeeded"),this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof nt){var i=this.kj_1;tt().m8q(tt().q4w_1,"WMTS layer creation failed",i),this.hj_1=4;continue t}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,p()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},_(Pt).o1f=function(t,n){var i=new Pt(this.h8t_1,n);return i.i8t_1=t,i},_(Lt).z8q=function(){var t,n;_(jt).z8q.call(this),this.n8t_1=it(this.l8t_1,f,f,(t=new Pt(this,null),(n=function(n,i){return t.n1f(n,i)}).$arity=1,n));var i=this.k8t_1.l4v_1;i.d4w_1.n4w_1=1.1*this.k8t_1.c4w(),i.f4w_1=$().s50_1,i.g4w_1=$().s50_1,i.h4w_1=$().s50_1},_(Lt).a8r=function(){_(jt).a8r.call(this);var t=this.n8t_1;null==t||t.vl();var n=this.m8t_1;null==n||this.k8t_1.k4v_1.q65(n),this.m8t_1=null},_(Bt).c5w=function(t){return G(t,ft)},_(Bt).f5w=function(t){return G(t,ft)},_(Bt).y5v=ct,_(Bt).z5v=vt,_(Bt).a5w=wt,_(Bt).b5w=dt,_(Bt).d5w=pt,_(Bt).e5w=mt,_(Bt).g5w=gt,_(Bt).h5w=$t,function(t){var n=t.earth||(t.earth={}),i=n.worldwind||(n.worldwind={});(i.tutorials||(i.tutorials={})).main=Ft}(t),Ft(),t})?e.apply(n,r):e)||(t.exports=s)},585:function(t,n,i){var e,r,s;r=[n,i(744),i(426),i(817),i(646),i(645),i(730),i(639),i(220),i(813),i(538),i(520)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o,u,a,h,_,l,f){"use strict";var c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ft,ct,vt,wt,dt,pt,mt,gt,$t,yt,bt,kt,jt,xt,zt,Et,Ct,St,qt,Ot,It,At,Tt,Dt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht,Vt,Bt,Yt,Wt,Gt,Kt,Jt,Xt,Zt,Qt,tn,nn,en,rn,sn,on,un,an,hn,_n,ln,fn,cn,vn,wn,dn,pn,mn,gn,$n,yn,bn,kn,jn,xn,zn,En,Cn,Sn,qn,On,In,An,Tn,Dn,Mn,Nn,Rn,Pn,Ln,Fn,Un,Hn,Vn,Bn,Yn,Wn,Gn,Kn,Jn,Xn,Zn,Qn,ti,ni,ii,ei,ri,si,oi,ui,ai,hi,_i,li,fi,ci,vi,wi,di,pi,mi,gi,$i,yi,bi,ki,ji,xi,zi,Ei,Ci,Si,qi,Oi,Ii,Ai,Ti,Di,Mi,Ni,Ri,Pi,Li,Fi,Ui,Hi,Vi,Bi,Yi,Wi,Gi,Ki,Ji,Xi,Zi,Qi,te,ne,ie,ee,re,se,oe,ue,ae,he,_e,le,fe,ce,ve,we,de,pe,me,ge,$e,ye,be,ke,je,xe,ze,Ee,Ce,Se,qe,Oe,Ie,Ae,Te,De,Me,Ne,Re,Pe,Le,Fe,Ue,He,Ve,Be,Ye,We,Ge,Ke,Je,Xe,Ze,Qe,tr,nr,ir,er,rr,sr,or,ur,ar,hr,_r,lr,fr,cr,vr,wr,dr,pr,mr,gr,$r,yr,br,kr,jr,xr,zr,Er,Cr,Sr,qr,Or,Ir,Ar,Tr,Dr,Mr,Nr,Rr,Pr,Lr,Fr,Ur,Hr=Math.imul,Vr=Math.sign,Br=Math.log10,Yr=Math.sinh,Wr=n.$_$.hf,Gr=e.$_$.b,Kr=n.$_$.ta,Jr=n.$_$.sa,Xr=n.$_$.ng,Zr=n.$_$.ua,Qr=e.$_$.a,ts=n.$_$.af,ns=r.$_$.b,is=n.$_$.l9,es=n.$_$.bb,rs=n.$_$.u4,ss=n.$_$.ya,os=n.$_$.u,us=n.$_$.m7,as=n.$_$.v6,hs=s.$_$.o,_s=s.$_$.p,ls=n.$_$.v9,fs=r.$_$.c,cs=n.$_$.r1,vs=n.$_$.xe,ws=n.$_$.xf,ds=n.$_$.lb,ps=n.$_$.za,ms=n.$_$.q9,gs=n.$_$.l,$s=n.$_$.m6,ys=n.$_$.n6,bs=n.$_$.ea,ks=n.$_$.v1,js=n.$_$.w,xs=n.$_$.sb,zs=n.$_$.rb,Es=n.$_$.ue,Cs=n.$_$.m9,Ss=n.$_$.l5,qs=n.$_$.u7,Os=n.$_$.g6,Is=n.$_$.d,As=n.$_$.g4,Ts=n.$_$.we,Ds=n.$_$.bg,Ms=n.$_$.oa,Ns=n.$_$.r9,Rs=n.$_$.o9,Ps=n.$_$.re,Ls=n.$_$.l6,Fs=n.$_$.b9,Us=n.$_$.ra,Hs=n.$_$.lg,Vs=n.$_$.g7,Bs=r.$_$.a,Ys=r.$_$.k,Ws=n.$_$.t5,Gs=n.$_$.v5,Ks=n.$_$.wa,Js=n.$_$.na,Xs=n.$_$.pa,Zs=n.$_$.i9,Qs=n.$_$.qe,to=n.$_$.ic,no=n.$_$.jg,io=n.$_$.m4,eo=n.$_$.g,ro=n.$_$.oe,so=n.$_$.mb,oo=n.$_$.j8,uo=n.$_$.t7,ao=n.$_$.c,ho=n.$_$.fg,_o=n.$_$.e,lo=n.$_$.xa,fo=n.$_$.dg,co=n.$_$.ub,vo=n.$_$.s9,wo=n.$_$.e7,po=n.$_$.o,mo=n.$_$.ha,go=n.$_$.wd,$o=n.$_$.h5,yo=n.$_$.eb,bo=n.$_$.hb,ko=n.$_$.kb,jo=n.$_$.h7,xo=n.$_$.m,zo=n.$_$.kc,Eo=n.$_$.a8,Co=n.$_$.u2,So=n.$_$.e1,qo=o.$_$.g2,Oo=o.$_$.t,Io=o.$_$.s,Ao=o.$_$.e,To=o.$_$.b2,Do=o.$_$.c2,Mo=o.$_$.j2,No=o.$_$.z1,Ro=o.$_$.r,Po=n.$_$.t9,Lo=n.$_$.u9,Fo=u.$_$.a,Uo=n.$_$.uf,Ho=n.$_$.a,Vo=o.$_$.u2,Bo=o.$_$.p2,Yo=n.$_$.h4,Wo=n.$_$.ib,Go=n.$_$.w5,Ko=n.$_$.gb,Jo=n.$_$.z8,Xo=s.$_$.y,Zo=n.$_$.j9,Qo=n.$_$.l8,tu=a.$_$.a,nu=h.$_$.d,iu=h.$_$.e,eu=h.$_$.c,ru=_.$_$.f,su=h.$_$.f,ou=h.$_$.a,uu=l.$_$.u,au=s.$_$.j,hu=s.$_$.c,_u=f.$_$.a,lu=n.$_$.f8,fu=n.$_$.e8,cu=n.$_$.x4,vu=n.$_$.gd,wu=n.$_$.q5,du=n.$_$.k,pu=n.$_$.c1,mu=f.$_$.d,gu=f.$_$.e,$u=o.$_$.w,yu=o.$_$.q,bu=n.$_$.k5,ku=n.$_$.i6,ju=f.$_$.f,xu=o.$_$.p,zu=f.$_$.b,Eu=n.$_$.d7,Cu=n.$_$.k7,Su=o.$_$.e2,qu=n.$_$.k6,Ou=f.$_$.c,Iu=n.$_$.i4,Au=n.$_$.j4,Tu=n.$_$.qa,Du=n.$_$.g8,Mu=n.$_$.fb,Nu=n.$_$.y7,Ru=n.$_$.e9,Pu=n.$_$.k2,Lu=n.$_$.v7,Fu=r.$_$.m,Uu=n.$_$.m2,Hu=n.$_$.cb,Vu=n.$_$.ab,Bu=n.$_$.r2,Yu=n.$_$.jd,Wu=n.$_$.vc,Gu=n.$_$.lc,Ku=n.$_$.g9,Ju=n.$_$.kd,Xu=r.$_$.l,Zu=r.$_$.j,Qu=n.$_$.qd,ta=r.$_$.i,na=n.$_$.de,ia=n.$_$.yd,ea=n.$_$.rd,ra=r.$_$.h,sa=r.$_$.g,oa=r.$_$.f,ua=r.$_$.e,aa=r.$_$.d,ha=n.$_$.e2,_a=n.$_$.gg,la=h.$_$.g,fa=h.$_$.b,ca=n.$_$.og,va=n.$_$.ig,wa=s.$_$.m1,da=s.$_$.a,pa=n.$_$.k4,ma=n.$_$.rc,ga=n.$_$.cf,$a=s.$_$.c1,ya=s.$_$.f1,ba=n.$_$.rf,ka=n.$_$.ga,ja=n.$_$.ld,xa=n.$_$.hg,za=n.$_$.ca;function Ea(){c=this;var t=i(939),n=null!=t&&"string"==typeof t?t:Wr();this.j4t_1=new Gr("dnb_land_ocean_ice_2012.png",n);var e=i(523),r=null!=e&&"string"==typeof e?e:Wr();this.k4t_1=new Gr("sun_texture.png",r);var s=i(49),o=null!=s&&"string"==typeof s?s:Wr();this.l4t_1=new Gr("worldwind_worldtopobathy2004053.png",o)}function Ca(){return null==c&&new Ea,c}function Sa(){v=this;var t=i(542);this.m4t_1=new Qr(null!=t&&"string"==typeof t?t:Wr())}function qa(t){this.n4t_1=t,this.o4t_1=new ts(20,0),this.p4t_1=3e3,this.q4t_1=z_(),this.r4t_1=null,this.s4t_1=null,this.t4t_1=null,this.u4t_1=null,this.v4t_1=ns().w3h_1,this.w4t_1=0,this.x4t_1=ns().w3h_1,this.y4t_1=0,this.z4t_1=0}function Oa(){w=this}function Ia(){return null==w&&new Oa,w}function Aa(t,n,i,e){Ia(),i=i===Xr?null:i,e=e===Xr?null:e,this.j4u_1=t,this.k4u_1=n,this.l4u_1=i,this.m4u_1=e,this.n4u_1=!1}function Ta(t){return!t.s().n4u_1&&!t.s().o4u()}function Da(t){return t.toString()}function Ma(){var t;t=os(),this.q4u_1=t}function Na(){d=this}function Ra(){}function Pa(){p=this,this.z4u_1=10,this.a4v_1=hs(Xr,1),this.b4v_1=_s(this.a4v_1)}function La(){return null==p&&new Pa,p}function Fa(){}function Ua(t,n,i,e,r,s){La(),i=i===Xr?new sf(d_().d4v_1,new cf):i,e=e===Xr?new pf:e,r=r===Xr?new Dh:r,s=s===Xr?null:s,this.f4v_1=n,this.g4v_1=i,this.h4v_1=e,this.i4v_1=r,this.j4v_1=s,this.k4v_1=new kf,this.l4v_1=new v_,this.m4v_1=new qa(this),this.n4v_1=fl(),this.o4v_1=!0,this.p4v_1=1,this.q4v_1=1,this.r4v_1=16e4,this.s4v_1=new Lg,this.t4v_1=new Ya(t),this.u4v_1=0,this.v4v_1=T_(),this.w4v_1=T_(),this.x4v_1=_l(),this.y4v_1=$_();var o=j_().b4w(fs().j3j()),u=1.1*this.c4w();this.l4v_1.d4w_1.o4w(o.j4w_1,o.k4w_1,u)}function Ha(){m=this}function Va(){return null==m&&new Ha,m}function Ba(){Va(),this.i55_1=Q_(),this.j55_1=_l(),this.k55_1=X_(),this.l55_1=X_(),this.m55_1=null,this.n55_1=null,this.o55_1=null,this.p55_1=null}function Ya(t){this.t4x_1=t,this.u4x_1=_l(),this.v4x_1=fl(),this.w4x_1=T_(),this.x4x_1=T_(),this.y4x_1=T_(),this.z4x_1=T_(),this.a4y_1=null,this.b4y_1=null,this.c4y_1=null,this.d4y_1=null,this.e4y_1=null,this.f4y_1=!1,this.g4y_1=Ax().o56_1,this.h4y_1=yx().p56_1,this.i4y_1=Uk();for(var n=0,i=ms(Array(32),null);n<32;){var e,r=n;e=qx().q56_1,i[r]=e,n=n+1|0}this.j4y_1=i,this.k4y_1=Ex().r56_1,this.l4y_1=Ex().r56_1,this.m4y_1=null,this.n4y_1=null,this.o4y_1=new Int8Array(4),this.p4y_1=new Int8Array(4);var s;s=gs(),this.q4y_1=s}function Wa(){g=this,this.l58_1=4}function Ga(){return null==g&&new Wa,g}function Ka(){this.m58_1=0,this.n58_1=0,this.o58_1=0,this.p58_1=0,this.q58_1=Eg(),this.r58_1=1,this.s58_1=0,this.t58_1=null,this.u58_1=q_(),this.v58_1=new Ja}function Ja(){this.w58_1=0,this.x58_1=0}function Xa(){Ga(),this.y58_1=null,this.z58_1=null,this.a59_1=null,this.b59_1=_l(),this.c59_1=0,this.d59_1=!0,this.e59_1=!0,this.f59_1=!0,this.g59_1=0,this.h59_1=Eg(),this.i59_1=1,this.j59_1=1,this.k59_1=null,this.l59_1=q_(),this.m59_1=new Ja,this.n59_1=0;var t=0;Ga();for(var n=ms(Array(4),null);t<4;){var i,e=t;i=new Ka,n[e]=i,t=t+1|0}this.o59_1=n}function Za(){if(k)return rs();k=!0,$=new Qa("BACKGROUND",0),y=new Qa("SURFACE",1),b=new Qa("SHAPE",2),new Qa("SCREEN",3)}function Qa(t,n){Es.call(this,t,n)}function th(){return Za(),$}function nh(){return Za(),y}function ih(t){this.z59_1=t}function eh(){j=this}function rh(){return null==j&&new eh,j}function sh(){rh(),this.b5a_1=null,this.c5a_1=T_(),this.d5a_1=Eg(),this.e5a_1=1,this.f5a_1=!0,this.g5a_1=null,this.h5a_1=null}function oh(){x=this,this.k5b_1=12}function uh(){return null==x&&new oh,x}function ah(){this.l5b_1=null,this.m5b_1=th(),this.n5b_1=0,this.o5b_1=0}function hh(t){this.q5b_1=t}function _h(t,n){var i=ws(t).m5b_1.m6(ws(n).m5b_1);return 0===i&&(i=Cs(t.n5b_1,n.n5b_1)),0===i&&(i=Cs(t.o5b_1,n.o5b_1)),i}function lh(){uh(),this.t56_1=0,this.u56_1=0;var t,n=this.t56_1;t=ms(Array(n),null),this.v56_1=t;var i=_h;this.w56_1=new hh(i)}function fh(){z=this}function ch(){return null==z&&new fh,z}function vh(){ch(),this.w5b_1=T_(),this.x5b_1=Eg(),this.y5b_1=1,this.z5b_1=!0,this.a5c_1=null,this.b5c_1=null,this.c5c_1=null,this.d5c_1=T_()}function wh(){E=this}function dh(){return null==E&&new wh,E}function ph(){dh(),this.n5c_1=new Xa,this.o5c_1=null,this.p5c_1=T_()}function mh(){C=this}function gh(){return null==C&&new mh,C}function $h(){gh(),this.w5c_1=T_(),this.x5c_1=0,this.y5c_1=new Og(0,0,0,0),this.z5c_1=new Og(0,0,0,0),this.a5d_1=null,this.b5d_1=null,this.c5d_1=T_(),this.d5d_1=T_(),this.e5d_1=T_();var t;t=[T_().g5d(0,0,1,Bh().u50_1).b55(1,0,0,Bh().t50_1),T_().g5d(0,0,1,Bh().t50_1).b55(1,0,0,Bh().t50_1),T_().g5d(1,0,0,Bh().t50_1),T_().g5d(0,0,1,Bh().v50_1).b55(1,0,0,Bh().t50_1),T_()],this.f5d_1=t}function yh(){S=this}function bh(){return null==S&&new yh,S}function kh(){bh(),this.d5e_1=Eg(),this.e5e_1=null,this.f5e_1=null,this.g5e_1=T_()}function jh(){q=this}function xh(){return null==q&&new jh,q}function zh(){xh(),this.i5e_1=Q_(),this.j5e_1=new Xa,this.k5e_1=null,this.l5e_1=T_(),this.m5e_1=T_(),this.n5e_1=q_(),this.o5e_1=Eg()}function Eh(){O=this}function Ch(){return null==O&&new Eh,O}function Sh(t,n){var i=t.e5f_1;return!0===(null==i?null:i.l5c(n))}function qh(){Ch(),this.a5f_1=Q_(),this.b5f_1=Eg(),this.c5f_1=1,this.d5f_1=q_(),this.e5f_1=null,this.f5f_1=null,this.g5f_1=null}function Oh(){}function Ih(){I=this}function Ah(){return null==I&&new Ih,I}function Th(){Ah(),this.i5g_1=Eg(),this.j5g_1=null,this.k5g_1=null,this.l5g_1=T_(),this.m5g_1=T_()}function Dh(){this.o5g_1=Eg(),this.p5g_1=_l(),this.q5g_1=Y_()}function Mh(){A=this}function Nh(){null==A&&new Mh,this.e52_1=fl(),this.f52_1=T_(),this.g52_1=T_(),this.h52_1=new lh,this.i52_1=new lh,this.j52_1=null,this.k52_1=null,this.l52_1=null,this.m52_1=null,this.n52_1=null,this.o52_1=!1,this.p52_1=null}function Rh(){if(M)return rs();M=!0,T=new Ph("ABSOLUTE",0),D=new Ph("CLAMP_TO_GROUND",1),new Ph("RELATIVE_TO_GROUND",2)}function Ph(t,n){Es.call(this,t,n)}function Lh(){return Rh(),T}function Fh(){return Rh(),D}function Uh(t){var n;if(Ds(t))throw n=wx().v4w(wx().q4w_1,"Angle","init","NaN is not supported!"),cs(ss(n));return t}function Hh(t){return Bh().o5h(t)}function Vh(){N=this;var t;t=this.e55(0),this.s50_1=t;var n;n=this.e55(90),this.t50_1=n;var i;i=this.e55(-90),this.u50_1=i;var e;e=this.e55(180),this.v50_1=e;var r;r=this.e55(-180),this.w50_1=r;var s;s=this.e55(360),this.x50_1=s;var o;o=this.e55(-360),this.y50_1=o;var u;u=this.e55(.016666666666666666),this.z50_1=u;var a;a=this.e55(.0002777777777777778),this.a51_1=a,this.b51_1=.017453292519943295,this.c51_1=57.29577951308232,this.d51_1=60,this.e51_1=.016666666666666666,this.f51_1=3600,this.g51_1=.0002777777777777778,this.h51_1=.017453292519943295,this.i51_1=57.29577951308232,this.j51_1=17.77777777777778,this.k51_1=.05625,this.l51_1=16.666666666666668,this.m51_1=.06,this.n51_1=17.5,this.o51_1=.06,this.p51_1=60,this.q51_1=.016666666666666666}function Bh(){return null==N&&new Vh,N}function Yh(t,n){return Bh().e55(t+n)}function Wh(t,n){return Bh().e55(t+n)}function Gh(t,n){return Bh().r51(Hh(t)+n)}function Kh(t,n){return Bh().e55(t-n)}function Jh(t,n){return Bh().e55(t-n)}function Xh(t,n){var i;if(0===n)throw i=wx().v4w(wx().q4w_1,"Angle","div","divideByZero"),cs(ss(i));return Bh().e55(t/n)}function Zh(t){return Uh(-t)}function Qh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Bh(),e=Bh().r5h(t);n=i.e55(e)}return n}function t_(t){var n;if(-90<=t&&t<=90)n=t;else{var i=Bh(),e=Bh().t5h(t);n=i.e55(e)}return n}function n_(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Bh(),e=Bh().u5h(t);n=i.e55(e)}return n}function i_(t){var n=Bh(),i=ds(t,-90,90);return n.e55(i)}function e_(t){var n=Bh(),i=ds(t,-180,180);return n.e55(i)}function r_(t,n){return Cs(t,n)}function s_(t){return Ns(t)}function o_(t){Bh(),this.y5h_1=t}function u_(t,n,i,e,r,s,o,u){var a=u.r50(n);i[0]>a&&(i[0]=a),i[1]h&&(r[0]=h),r[1]_&&(o[0]=_),o[1]<_&&(o[1]=_)}function a_(t,n,i,e,r){n.a5i(e);var s=i[0];i[0]=r[0],r[0]=s,s=i[1],i[1]=r[1],r[1]=s}function h_(t,n){var i=n.b5i_1,e=t.h5i_1.r50(i),r=Math.abs(e),s=t.i5i_1.r50(i),o=.5*(r+Math.abs(s)),u=n.r50(t.k5i_1),a=u<=-o,h=n.r50(t.l5i_1)<=-o;if(a&&h)return-1;if(a===h)return 0;var _=(o+u)/(i.m4z_1*(t.k5i_1.m4z_1-t.l5i_1.m4z_1)+i.n4z_1*(t.k5i_1.n4z_1-t.l5i_1.n4z_1)+i.q4z_1*(t.k5i_1.q4z_1-t.l5i_1.q4z_1)),l=(t.l5i_1.m4z_1-t.k5i_1.m4z_1)*_+t.k5i_1.m4z_1,f=(t.l5i_1.n4z_1-t.k5i_1.n4z_1)*_+t.k5i_1.n4z_1,c=(t.l5i_1.q4z_1-t.k5i_1.q4z_1)*_+t.k5i_1.q4z_1;return a?t.k5i_1.r57(l,f,c):t.l5i_1.r57(l,f,c),_}function __(){R=this,this.p5i_1=3,this.q5i_1=3}function l_(){return null==R&&new __,R}function f_(){l_(),this.d5i_1=new ll(0,0,0),this.e5i_1=new ll(-.5,0,0),this.f5i_1=new ll(.5,0,0),this.g5i_1=new ll(1,0,0),this.h5i_1=new ll(0,1,0),this.i5i_1=new ll(0,0,1);var t;t=Math.sqrt(3),this.j5i_1=t,this.k5i_1=_l(),this.l5i_1=_l();l_(),l_(),this.m5i_1=new Float32Array(Hr(3,3));l_(),l_(),this.n5i_1=new Float32Array(Hr(Hr(3,3),3)),this.o5i_1=-1}function c_(){this.f5j_1=_l(),this.g5j_1=1,this.h5j_1=-1}function v_(){this.d4w_1=Y_(),this.e4w_1=Lh(),this.f4w_1=Bh().s50_1,this.g4w_1=Bh().s50_1,this.h4w_1=Bh().s50_1;var t;t=Bh().e55(45),this.i4w_1=t}function w_(){P=this,this.d4v_1=new p_(6378137,298.257223563),this.e4v_1=new p_(6378245,298.3)}function d_(){return null==P&&new w_,P}function p_(t,n){d_(),this.m5j_1=t,this.n5j_1=n}function m_(){return t=Us(Kr(g_)),g_.call(t),t;var t}function g_(){this.e54_1=V_(1,0,0,1),this.f54_1=V_(-1,0,0,1),this.g54_1=V_(0,1,0,1),this.h54_1=V_(0,-1,0,1),this.i54_1=V_(0,0,-1,1),this.j54_1=V_(0,0,1,1),this.k54_1=new cl(0,0,1,1);var t;t=[this.i54_1,this.j54_1,this.e54_1,this.f54_1,this.h54_1,this.g54_1],this.l54_1=t,this.m54_1=T_()}function $_(){return t=Us(Kr(y_)),y_.call(t),t;var t}function y_(){this.e4z_1=_l(),this.f4z_1=_l()}function b_(){return t=Us(Kr(x_)),x_.call(t,Bh().s50_1,Bh().s50_1),t;var t}function k_(){L=this,this.z4v_1=1e-15,this.a4w_1=Vs([Hs(-12,-45),Hs(-11,-30),Hs(-10,20),Hs(-9,45),Hs(-8,40),Hs(-7,35),Hs(-6,30),Hs(-5,25),Hs(-4,-15),Hs(-3,0),Hs(-2,45),Hs(-1,30),Hs(0,30),Hs(1,20),Hs(2,20),Hs(3,25),Hs(4,30),Hs(5,35),Hs(6,30),Hs(7,25),Hs(8,-30),Hs(9,-30),Hs(10,-30),Hs(11,-45),Hs(12,-45)])}function j_(){return null==L&&new k_,L}function x_(t,n){j_(),this.j4w_1=t,this.k4w_1=n}function z_(){return t=Us(Kr(E_)),E_.call(t,Y_(),Lh(),0,Bh().s50_1,Bh().s50_1,Bh().s50_1),t;var t}function E_(t,n,i,e,r,s){this.r4z_1=t,this.s4z_1=n,this.t4z_1=i,this.u4z_1=e,this.v4z_1=r,this.w4z_1=s}function C_(){F=this;var t;t=new Float64Array([1,0,0,0,1,0,0,0,1]),this.o5k_1=t}function S_(){return null==F&&new C_,F}function q_(){return t=Us(Kr(O_)),n=S_().o5k_1.slice(),O_.call(t,n),t;var t,n}function O_(t){S_(),this.q59_1=t}function I_(){U=this,this.t5k_1=1e-8,this.u5k_1=1e-20,this.v5k_1=1e-10,this.w5k_1=32;var t;t=new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.x5k_1=t}function A_(){return null==U&&new I_,U}function T_(){return t=Us(Kr(D_)),n=A_().x5k_1.slice(),D_.call(t,n),t;var t,n}function D_(t){A_(),this.g4z_1=t}function M_(t){return function(t,n){return P_.call(n,t.f5l_1,t.g5l_1,t.h5l_1,t.i5l_1),n}(t,Us(Kr(P_)))}function N_(){H=this}function R_(){return null==H&&new N_,H}function P_(t,n,i,e){R_(),this.f5l_1=t,this.g5l_1=n,this.h5l_1=i,this.i5l_1=e}function L_(t,n){Es.call(this,t,n)}function F_(){return function(){if(B)return rs();B=!0,V=new L_("FRACTION",0),new L_("INSET_PIXELS",1),new L_("PIXELS",2)}(),V}function U_(){Y=this,this.r5l_1=1e-10}function H_(){return null==Y&&new U_,Y}function V_(t,n,i,e){return function(t,n,i,e,r){return B_.call(r),r.r5j(t,n,i,e),r}(t,n,i,e,Us(Kr(B_)))}function B_(){H_(),this.b5i_1=new ll(0,0,1),this.c5i_1=0}function Y_(){return t=Us(Kr(J_)),J_.call(t,Bh().s50_1,Bh().s50_1,0),t;var t}function W_(t){return function(t,n){return J_.call(n,t.j4w_1,t.k4w_1,t.n4w_1),n}(t,Us(Kr(J_)))}function G_(){W=this}function K_(){return null==W&&new G_,W}function J_(t,n,i){K_(),x_.call(this,t,n),this.n4w_1=i}function X_(){return t=Us(Kr(Z_)),Z_.call(t,0,0),t;var t}function Z_(t,n){this.j56_1=t,this.k56_1=n}function Q_(){return t=Us(Kr(el)),el.call(t,Bh().s50_1,Bh().s50_1,Bh().s50_1,Bh().s50_1),t;var t}function tl(t){return function(t,n){return el.call(n,t.r5e_1,t.s5e_1,t.t5e_1,t.u5e_1),n}(t,Us(Kr(el)))}function nl(){G=this}function il(){return null==G&&new nl,G}function el(t,n,i,e){il(),this.r5e_1=t,this.s5e_1=n,this.t5e_1=i,this.u5e_1=e}function rl(t,n,i,e,r,s){this.i5m_1=t,this.j5m_1=n,this.k5m_1=i,this.l5m_1=e,this.m5m_1=r,this.n5m_1=s}function sl(){K=this}function ol(){return null==K&&new sl,K}function ul(t,n){ol(),this.t5m_1=t,this.u5m_1=n}function al(){return t=Us(Kr(hl)),hl.call(t,0,0),t;var t}function hl(t,n){this.m4z_1=t,this.n4z_1=n}function _l(){return t=Us(Kr(ll)),ll.call(t,0,0,0),t;var t}function ll(t,n,i){hl.call(this,t,n),this.q4z_1=i}function fl(){return t=Us(Kr(cl)),cl.call(t,0,0,0,0),t;var t}function cl(t,n,i,e){this.n4x_1=t,this.o4x_1=n,this.p4x_1=i,this.q4x_1=e}function vl(){if(Z)return rs();Z=!0,J=new wl("N",0),X=new wl("S",1)}function wl(t,n){Es.call(this,t,n)}function dl(){return vl(),J}function pl(){return vl(),X}function ml(){Q=this}function gl(){return null==Q&&new ml,Q}function $l(t,n,i){gl(),this.y5n_1=t,this.z5n_1=n,this.a5o_1=i}function yl(){tt=this,this.b5o_1=0,this.c5o_1=1,this.d5o_1=2,this.e5o_1=4,this.f5o_1=8,this.g5o_1=64,this.h5o_1=128,this.i5o_1=512,this.j5o_1=1024,this.k5o_1=4096,this.l5o_1=8192,this.m5o_1=1.5707963267948966,this.n5o_1=5,this.o5o_1=-1.3962634015954636,this.p5o_1=1.4660765716752369,this.q5o_1=.017453292519943295,this.r5o_1=57.29577951308232,this.s5o_1=0,this.t5o_1=4e6,this.u5o_1=2e6,this.v5o_1=1e5,this.w5o_1="CC",this.x5o_1="CD",this.y5o_1="BR",this.z5o_1="BN",this.a5p_1=0,this.b5p_1=1,this.c5p_1=2,this.d5p_1=3,this.e5p_1=4,this.f5p_1=5,this.g5p_1=6,this.h5p_1=7,this.i5p_1=8,this.j5p_1=9,this.k5p_1=10,this.l5p_1=11,this.m5p_1=12,this.n5p_1=13,this.o5p_1=14,this.p5p_1=15,this.q5p_1=16,this.r5p_1=17,this.s5p_1=18,this.t5p_1=19,this.u5p_1=20,this.v5p_1=21,this.w5p_1=22,this.x5p_1=23,this.y5p_1=24,this.z5p_1=25,this.a5q_1=3,this.b5q_1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var t;t=[new Int32Array([0,9,25,25,8e5,8e5]),new Int32Array([1,0,17,25,2e6,8e5]),new Int32Array([24,9,25,15,8e5,13e5]),new Int32Array([25,0,9,15,2e6,13e5])],this.c5q_1=t;var n;n=[new Float64Array([2,11e5,-72,-80.5,0]),new Float64Array([3,2e6,-64,-72,2e6]),new Float64Array([4,28e5,-56,-64,2e6]),new Float64Array([5,37e5,-48,-56,2e6]),new Float64Array([6,46e5,-40,-48,4e6]),new Float64Array([7,55e5,-32,-40,4e6]),new Float64Array([9,64e5,-24,-32,6e6]),new Float64Array([10,73e5,-16,-24,6e6]),new Float64Array([11,82e5,-8,-16,8e6]),new Float64Array([12,91e5,0,-8,8e6]),new Float64Array([13,0,8,0,0]),new Float64Array([15,8e5,16,8,0]),new Float64Array([16,17e5,24,16,0]),new Float64Array([17,26e5,32,24,2e6]),new Float64Array([18,35e5,40,32,2e6]),new Float64Array([19,44e5,48,40,4e6]),new Float64Array([20,53e5,56,48,4e6]),new Float64Array([21,62e5,64,56,6e6]),new Float64Array([22,7e6,72,64,6e6]),new Float64Array([23,79e5,84.5,72,6e6])],this.d5q_1=n}function bl(){return null==tt&&new yl,tt}function kl(t,n,i,e,r,s){var o,u,a=e,h=r;bl();var _=new Int32Array(3),l=5-s|0,f=Math.pow(10,l);a=jl(0,a/f)*f,h=jl(0,h/f)*f,function(t,n){var i,e,r,s=n%6|0;0===s&&(s=6),bl(),0===Cs(t.w5n_1,"CC")?r=!0:(bl(),r=0===Cs(t.w5n_1,"CD")),r?e=!0:(bl(),e=0===Cs(t.w5n_1,"BR")),e?i=!0:(bl(),i=0===Cs(t.w5n_1,"BN"));var o,u=i?0:1;switch(s){case 1:case 4:var a=t;bl(),a.n5n_1=0;var h=t;bl(),h.o5n_1=7;break;case 2:case 5:var _=t;bl(),_.n5n_1=9;var l=t;bl(),l.o5n_1=17;break;case 3:case 6:var f=t;bl(),f.n5n_1=18;var c=t;bl(),c.o5n_1=25}o=1===u?0==(s%2|0)?5e5:0:0==(s%2|0)?15e5:1e6,t.p5n_1=o}(t,n);var c=function(t,n){bl();var i=0;bl();var e=57.29577951308232*n;if(e>=72&&e<84.5){var r=t;bl(),r.q5n_1=23}else if(e>-80.5&&e<72){bl();var s=n+1.3962634015954636;bl();var o=s/.13962634015954636+1e-12;t.q5n_1=Ms(bl().d5q_1[Ms(o)][0])}else{var u=i;bl(),i=1|u}return i}(t,i);if(_[0]=t.q5n_1,bl(),0===c){1e7===(u=h)&&(u-=1);t:for(;;){var v=u;if(bl(),!(v>=2e6))break t;var w=u;bl(),u=w-2e6}var d=u+=t.p5n_1;if(bl(),d>=2e6){var p=u;bl(),u=p-2e6}var m=u;bl(),_[2]=Ms(m/1e5);var g=_[2];bl(),g>7&&(_[2]=_[2]+1|0);var $=_[2];bl(),$>13&&(_[2]=_[2]+1|0),o=a;var y=_[0];bl(),21===y&&31===n&&5e5===o&&(o-=1);var b,k=t.n5n_1,j=o;bl(),_[1]=k+(Ms(j/1e5)-1|0)|0;var x=t.n5n_1;if(bl(),9===x){var z=_[1];bl(),b=z>13}else b=!1;b&&(_[1]=_[1]+1|0),xl(t,n,_,a,h,s)}return c}function jl(t,n){var i,e=n-(i=Math.floor(n)),r=Xs(i);return(e>.5||.5===e&&r.j8(new ts(2,0)).equals(new ts(1,0)))&&(r=r.ui()),r.ve()}function xl(t,n,i,e,r,s){var o=e,u=r;t.m5n_1=0!==n?ab("%02d",[n]):" ";var a=0;if(a<=2)do{var h=a;if(a=a+1|0,i[h]<0||i[h]>26)return rs();var _=t,l=t.m5n_1;bl(),_.m5n_1=l+new Qs(Zs("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i[h]))}while(a<=2);var f=5-s|0,c=Math.pow(10,f);(o%=1e5)>=99999.5&&(o=99999);var v=Ms(o/c),w=new to(v.toString());if(w.rb()>s)w=new to(w.lg(0,s-1|0));else{var d=0,p=s-w.rb()|0;if(d=99999.5&&(u=99999);var m=Ms(u/c),g=new to(m.toString());if(g.rb()>s)g=new to(g.lg(0,s-1|0));else{var $=0,y=s-g.rb()|0;if($1.567855942887398e-7&&o<=20;)o=o+1|0,Yf(0,u,e)1.567855942887398e-7&&a<=20))break t;a=a+1|0;var c=h.j4w_1-e,v=Vr(c),w=l.j4w_1-e;v!==Vr(w)?_=l:h=l,l=Bf(0,h,_)}r=l}return null!=r&&(r=new x_(e,r.k4w_1)),r}function Bf(t,n,i){var e=n.g5k(i),r=n.h5k(i);return n.i5k(e,r/2,b_())}function Yf(t,n,i){var e,r=n.k4w_1-i;return(e=Math.abs(r))<180?e:360-e}function Wf(t,n){var i;if(Uf(),n.x6c("look_at_latitude")?(Uf(),i=!n.x6c("look_at_longitude")):i=!0,i){var e;t.h6c_1.e4z_1.t54(n.d53_1),n.g53_1.i4z(t.h6c_1.f4z_1),n.x5g().h50(t.h6c_1,t.i6c_1)?(n.j5h().x4z(t.i6c_1.m4z_1,t.i6c_1.n4z_1,t.i6c_1.q4z_1,t.j6c_1),Uf(),n.z6c("look_at_latitude",new o_(t.j6c_1.j4w_1)),Uf(),n.z6c("look_at_longitude",new o_(t.j6c_1.k4w_1)),e=t.i6c_1.c5j(n.d53_1)):(Uf(),n.y6c("look_at_latitude"),Uf(),n.y6c("look_at_longitude"),e=n.a53_1);var r=e,s=n.b52(r);Uf(),n.z6c("graticule_pixel_size",s);var o=Bh().p5h(s/n.j5h().c52());Uf(),n.z6c("graticule_label_offset",o*n.e53_1.p4x_1/4)}}function Gf(t){Uf(),yf.call(this,t),this.f6c_1=!1,this.g6c_1=_l(),this.h6c_1=$_(),this.i6c_1=_l(),this.j6c_1=Y_(),this.k6c_1=new sc,this.l6c_1=_l(),this.m6c_1=0,this.n6c_1=0,this.o6c_1=0,this.p6c_1=0,this.a6d()}function Kf(t,n){uy.call(this,n),this.h6f_1=t,this.i6f_1=null}function Jf(){zt=this,this.n6f_1=-80,this.o6f_1=84,this.p6f_1="Graticule.UTM.100000m",this.q6f_1="Graticule.UTM.10000m",this.r6f_1="Graticule.UTM.1000m",this.s6f_1="Graticule.UTM.100m",this.t6f_1="Graticule.UTM.10m",this.u6f_1="Graticule.UTM.1m",this.v6f_1=1e5}function Xf(){return null==zt&&new Jf,zt}function Zf(t,n,i){Xf(),Gf.call(this,t);var e,r=new Sc(this);r.x6f_1=n,r.b6g(i),e=r,this.u6g_1=e;Xf(),Xf(),Xf(),Xf(),Xf(),Xf(),this.v6g_1=wo(["Graticule.UTM.100000m","Graticule.UTM.10000m","Graticule.UTM.1000m","Graticule.UTM.100m","Graticule.UTM.10m","Graticule.UTM.1m"])}function Qf(){Et=this,this.z6i_1="DrawGraticule",this.a6j_1="GraticuleLineColor",this.b6j_1="GraticuleLineWidth",this.c6j_1="DrawLabels",this.d6j_1="LabelColor",this.e6j_1="LabelFont"}function tc(){return null==Et&&new Qf,Et}function nc(){tc(),this.f6j_1=po()}function ic(t,n,i,e){if(null!=n){tc();var r=n.q1n("LabelColor");if(r instanceof Og){var s=rc(0,r,e),o=new Float32Array(3);s.m6j(o);var u=o[2]<.5?1:0;i.p6e_1.v6j(s),i.p6e_1.w6j(new Og(u,u,u,s.h4u_1))}tc(),(r=n.q1n("LabelFont"))instanceof Zj&&i.p6e_1.x6j(r)}}function ec(t,n,i,e,r){null!=i&&e.y6j(function(t,n,i,e){var r,s=t.s6c_1.g2(n);if(null==s){var o=function(t,n,i){var e=Y$();e.z6j_1=!1,e.a6k_1=!0,tc();var r=n.q1n("GraticuleLineColor");r instanceof Og&&e.w6j(rc(0,r,i)),tc();var s=n.l6j("GraticuleLineWidth");return null!=s&&(e.f6k_1=s),e}(0,i,e);t.s6c_1.f4(n,o),r=o}else r=s;return r}(t,n,i,r))}function rc(t,n,i){return i>=1?n:new Og(n.e4u_1,n.f4u_1,n.g4u_1,n.h4u_1*i)}function sc(){var t;t=os(),this.q6c_1=t;var n;n=os(),this.r6c_1=n;var i;i=os(),this.s6c_1=i,this.t6c_1=null}function oc(t,n,i){return function(t,n,i,e){return hc.call(e,t,n,i,Bh().s50_1),e}(t,n,i,Us(Kr(hc)))}function uc(){Ct=this,this.k6k_1="GridElement_Line",this.l6k_1="GridElement_LineNorth",this.m6k_1="GridElement_LineSouth",this.n6k_1="GridElement_LineWest",this.o6k_1="GridElement_LineEast",this.p6k_1="GridElement_LineNorthing",this.q6k_1="GridElement_LineEasting",this.r6k_1="GridElement_GridZoneLabel",this.s6k_1="GridElement_LongitudeLabel",this.t6k_1="GridElement_LatitudeLabel"}function ac(){return null==Ct&&new uc,Ct}function hc(t,n,i,e){ac(),this.u6k_1=t,this.v6k_1=n,this.w6k_1=i,this.x6k_1=e}function _c(t,n){for(var i=function(t,n){var i=gs(),e=n.x5g().q55(),r=function(t,n){var i=null;if(n.r5e_1<84&&n.s5e_1>-80){var e=yo(n.r5e_1,-80),r=bo(n.s5e_1,84),s=il().y5l(e,n.t5e_1,r-e,n.v5e()),o=lc(0,s.t5e_1),u=lc(0,s.u5e_1),a=fc(0,s.r5e_1),h=fc(0,s.s5e_1);a<=17&&h>=17&&30===u&&(u=31),a<=19&&h>=19&&(31===o&&(o=30),31===u&&(u=32),33===o&&(o=32),33===u&&(u=34),35===o&&(o=34),35===u&&(u=36)),i=new cl(o,a,u,h)}return i}(0,e);if(null!=r){var s=r.o4x_1,o=r.q4x_1;if(s<=o)do{var u=s;s=s+1|0;var a=r.n4x_1,h=r.p4x_1;if(a<=h)do{var _=a;if(a=a+1|0,19!==u||31!==_&&33!==_&&35!==_){var l,f=t.f6m_1[u][_];if(null==f){var c=new yc(t,cc(0,u,_));t.f6m_1[u][_]=c,l=c}else l=f;var v=l;v.k6f(n)?i.a(v):v.m6f()}}while(_!==h)}while(u!==o)}return e.s5e_1>84&&(null==t.g6m_1[2]&&(t.g6m_1[2]=new yc(t,il().y5l(84,-180,6,180))),null==t.g6m_1[3]&&(t.g6m_1[3]=new yc(t,il().y5l(84,0,6,180))),i.a(ws(t.g6m_1[2])),i.a(ws(t.g6m_1[3]))),e.r5e_1<-80&&(null==t.g6m_1[0]&&(t.g6m_1[0]=new yc(t,il().y5l(-90,-180,10,180))),null==t.g6m_1[1]&&(t.g6m_1[1]=new yc(t,il().y5l(-90,0,10,180))),i.a(ws(t.g6m_1[0])),i.a(ws(t.g6m_1[1]))),i}(t,n).d();i.e();)i.f().e6d(n)}function lc(t,n){var i,e=(n+180)/6;return i=Math.floor(e),ko(Ms(i),59)}function fc(t,n){var i,e=(n+80)/8;return i=Math.floor(e),ko(Ms(i),19)}function cc(t,n,i){var e=-80+Hr(n,8)|0,r=e+(72!==e?8:12)|0,s=-180+Hr(i,6)|0,o=s+6|0;return 17===n&&30===i?o=o-3|0:17===n&&31===i?s=s-3|0:19===n&&30===i?o=o+3|0:19===n&&31===i?(s=s+3|0,o=o-3|0):19===n&&32===i?(s=s-3|0,o=o+3|0):19===n&&33===i?(s=s+3|0,o=o-3|0):19===n&&34===i?(s=s-3|0,o=o+3|0):19===n&&35===i?(s=s+3|0,o=o-3|0):19===n&&36===i&&(s=s-3|0),il().y5l(e,s,r-e|0,o-s|0)}function vc(){St=this,this.j6m_1=1e6,this.k6m_1=5e5,this.l6m_1="Graticule.MGRS.Overview",this.m6m_1="Graticule.MGRS.GridZone",this.n6m_1=5e6}function wc(){return null==St&&new vc,St}function dc(){wc(),Zf.call(this,"MGRS graticule",1e5,1e5);for(var t=0,n=ms(Array(20),null);t<20;){var i,e=t;i=ms(Array(60),null),n[e]=i,t=t+1|0}this.f6m_1=n;var r;r=ms(Array(4),null),this.g6m_1=r,this.h6m_1=new jc(this);var s;wc(),wc();var o=jo(["Graticule.MGRS.Overview","Graticule.MGRS.GridZone"]);o.l(Kr(Zf).w6g.call(this)),s=o,this.i6m_1=s}function pc(t){for(var n=ws(t.k6l_1).d();n.e();)mc(0,n.f())}function mc(t,n){var i=Bh().p5h(1567855942887398e-21),e=null;if(n.y6m(new J_(n.v6h_1.j4w_1,n.v6h_1.k4w_1,0))?e=gl().i5n(n.v6h_1.j4w_1,n.v6h_1.k4w_1):n.y6m(n.q6h_1)?e=gl().i5n(i_(Wh(n.q6h_1.j4w_1,i)),e_(Wh(n.q6h_1.k4w_1,i))):n.y6m(n.r6h_1)?e=gl().i5n(i_(Wh(n.r6h_1.j4w_1,i)),e_(Jh(n.r6h_1.k4w_1,i))):n.y6m(n.s6h_1)?e=gl().i5n(i_(Jh(n.s6h_1.j4w_1,i)),e_(Wh(n.s6h_1.k4w_1,i))):n.y6m(n.t6h_1)&&(e=gl().i5n(i_(Jh(n.t6h_1.j4w_1,i)),e_(Jh(n.t6h_1.k4w_1,i)))),null!=e){var r,s=n;r=e.toString().substring(3,5),s.v6i_1=r}}function gc(){qt=this,this.z6m_1=1e5,this.a6n_1=2e6,this.b6n_1=3e6}function $c(){return null==qt&&new gc,qt}function yc(t,n){$c(),Kf.call(this,t,n);var i,e=n.s5e_1;if(Xf(),e>84)i=!0;else{var r=n.r5e_1;Xf(),i=r<-80}this.g6l_1=i,this.k6l_1=null;var s=gl().i5n(n.z5i(),n.a5j());if(this.g6l_1){var o;o=s.toString().substring(2,3),this.h6l_1=o,this.i6l_1=n.r5e_1>0?dl():pl(),this.j6l_1=0}else{var u;u=s.toString().substring(0,3),this.h6l_1=u;var a=Hl().i5n(n.z5i(),n.a5j());this.i6l_1=a.h5q_1,this.j6l_1=a.g5q_1}}function bc(){Ot=this;var t;t=[new Int32Array([3,56,64]),new Int32Array([6,64,72]),new Int32Array([9,72,84]),new Int32Array([21,72,84]),new Int32Array([33,72,84])],this.c6n_1=t,this.d6n_1="CDEFGHJKLMNPQRSTUVWX"}function kc(){return null==Ot&&new bc,Ot}function jc(t){kc(),Kf.call(this,t,Q_())}function xc(){this.f6n_1=1e6,this.g6n_1=0,this.h6n_1=1e7,this.i6n_1=0,this.j6n_1=dl(),this.k6n_1=pl()}function zc(t,n,i){var e=t.w6f_1.v6c(n),r=n.d53_1.c5j(i);return Cc(),r<10*e}function Ec(){It=this,this.l6n_1=-.5,this.m6n_1=-.5,this.n6n_1=10}function Cc(){return null==It&&new Ec,It}function Sc(t){Cc(),this.w6f_1=t,this.x6f_1=1e7,this.y6f_1=1e5,this.z6f_1=0,this.a6g_1=null}function qc(t,n,i,e,r,s,o){Dc.call(this,t,n,i,e,r,s,o),this.l6o_1=null}function Oc(t){return!!(t.y6m(t.s6h_1)&&t.y6m(t.t6h_1)&&t.y6m(t.q6h_1))&&t.y6m(t.r6h_1)}function Ic(t){var n=wo([t.q6h_1,t.r6h_1,t.s6h_1,t.t6h_1]);if(!function(t,n){for(var i=null,e=n.d();e.e();){var r=e.f();if(null!=i){var s=i.k4w_1,o=Vr(s),u=r.k4w_1;if(o!==Vr(u)){var a,h=i.k4w_1-r.k4w_1;if((a=Math.abs(h))>180&&a<360)return!0}}i=r}return!1}(0,n))return n;for(var i,e=0,r=n.d();r.e();){var s=r.f(),o=s.k4w_1;if(180!==Math.abs(o)){var u=s.k4w_1;e=Vr(u)}}if(0===e)return n;var a,h=t.q6h_1.k4w_1;if(180===Math.abs(h)){var _=t.q6h_1.k4w_1;i=!(Vr(_)===e)}else i=!1;i&&(t.q6h_1=new J_(t.q6h_1.j4w_1,Zh(t.q6h_1.k4w_1),t.q6h_1.n4w_1));var l,f=t.r6h_1.k4w_1;if(180===Math.abs(f)){var c=t.r6h_1.k4w_1;a=!(Vr(c)===e)}else a=!1;a&&(t.r6h_1=new J_(t.r6h_1.j4w_1,Zh(t.r6h_1.k4w_1),t.r6h_1.n4w_1));var v,w=t.s6h_1.k4w_1;if(180===Math.abs(w)){var d=t.s6h_1.k4w_1;l=!(Vr(d)===e)}else l=!1;l&&(t.s6h_1=new J_(t.s6h_1.j4w_1,Zh(t.s6h_1.k4w_1),t.s6h_1.n4w_1));var p=t.t6h_1.k4w_1;if(180===Math.abs(p)){var m=t.t6h_1.k4w_1;v=!(Vr(m)===e)}else v=!1;return v&&(t.t6h_1=new J_(t.t6h_1.j4w_1,Zh(t.t6h_1.k4w_1),t.t6h_1.n4w_1)),wo([t.q6h_1,t.r6h_1,t.s6h_1,t.t6h_1])}function Ac(){At=this,this.o6o_1=50}function Tc(){return null==At&&new Ac,At}function Dc(t,n,i,e,r,s,o){Tc(),Kf.call(this,t,Q_()),this.j6h_1=n,this.k6h_1=i,this.l6h_1=e,this.m6h_1=r,this.n6h_1=s,this.o6h_1=o,this.p6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1/2,this.n6h_1+this.o6h_1/2),this.q6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1,this.n6h_1),this.r6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1,this.n6h_1),this.s6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1,this.n6h_1+this.o6h_1),this.t6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1,this.n6h_1+this.o6h_1);var u,a=function(t,n){for(var i=Bh().t50_1,e=Bh().v50_1,r=Bh().u50_1,s=Bh().w50_1,o=n.d();o.e();){var u=o.f(),a=u.j4w_1;ar&&(r=a);var h=u.k4w_1;hs&&(s=h)}return new el(i,r,e,s)}(0,Ic(this));Oc(this)||a.c5m(this.l6h_1);var h=a;this.s60_1.i5f(h),u=h,this.u6h_1=u,this.v6h_1=this.u6h_1.a5m(b_()),this.w6h_1=!Oc(this),this.x6h_1=!(this.y6m(this.s6h_1)||this.y6m(this.t6h_1)||this.y6m(this.q6h_1)||this.y6m(this.r6h_1))}function Mc(t,n){var i=t.w6i_1;return!0===(null==i?null:i.k6f(n))}function Nc(t,n){var i=t.x6i_1;return!0===(null==i?null:i.k6f(n))}function Rc(t,n,i,e,r,s,o){Dc.call(this,t,n,i,e,r,s,o),this.v6i_1=null,this.w6i_1=null,this.x6i_1=null,this.y6i_1=null}function Pc(){Tt=this}function Lc(){return null==Tt&&new Pc,Tt}function Fc(t,n,i,e){Lc(),cx.call(this,t,n,i,e)}function Uc(){Dt=this}function Hc(){return null==Dt&&new Uc,Dt}function Vc(t,n,i,e){Hc(),el.call(this,Hc().g6q(t),Hc().g6q(n),i,e),this.z6o_1=t,this.a6p_1=n}function Bc(t){this.h6q_1=t}function Yc(t,n,i,e){Yj.call(this,t),this.s6q_1=new Bc(this);var r,s=new Vc(-1,1,Bh().w50_1,Bh().v50_1),o=new x_(s.r5e_1,s.t5e_1),u=new x_(s.w5e(),s.v5e()),a=cy(s,o,u,n,i,i),h=new Wc(this.s6q_1,a);e||h.o6r(new Zg(Xg())),h.f6r_1=1,r=h,this.z6r(r)}function Wc(t,n){ny.call(this,t,n)}function Gc(t,n,i,e,r){Es.call(this,t,n),this.e6t_1=i,this.f6t_1=e,this.g6t_1=r}function Kc(t){Yc.call(this,t.e6t_1,22,256,t.g6t_1),this.s6t_1=t.f6t_1}function Jc(){Rt=this;var t=new qo("earth.worldwind.layer.starfield.StarFieldLayer.StarMetadata",this,6);t.n3a("name",!1),t.n3a("description",!1),t.n3a("datatype",!1),t.n3a("arraysize",!1),t.n3a("unit",!1),t.n3a("ucd",!1),this.u6t_1=t}function Xc(){return null==Rt&&new Jc,Rt}function Zc(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Mo(t,63,Xc().u6t_1),a.v6t_1=n,a.w6t_1=i,a.x6t_1=e,a.y6t_1=r,a.z6t_1=s,a.a6u_1=o,a}(t,n,i,e,r,s,o,0,Us(Kr(rv)))}function Qc(){Pt=this;var t;t=[new No(Xc()),new No(new No(Ro()))],this.b6u_1=t}function tv(){return null==Pt&&new Qc,Pt}function nv(){Lt=this;var t=new qo("earth.worldwind.layer.starfield.StarFieldLayer.StarData",this,2);t.n3a("metadata",!1),t.n3a("data",!1),this.c6u_1=t}function iv(){return null==Lt&&new nv,Lt}function ev(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,iv().c6u_1),r.d6u_1=n,r.e6u_1=i,r}(t,n,i,0,Us(Kr(sv)))}function rv(){}function sv(t,n){tv(),this.d6u_1=t,this.e6u_1=n}function ov(t){t=t===Xr?(null==v&&new Sa,v).m4t_1:t,yf.call(this,"StarField"),this.m6u_1=!1,this.n6u_1=t,this.o6u_1=hx().i64(Ca().k4t_1),this.p6u_1=128,this.q6u_1=!0,this.r6u_1=null,this.s6u_1=T_(),this.t6u_1=this.s6v(),this.u6u_1=0,this.v6u_1=null;Yo(),this.w6u_1=34028235e31;Yo(),this.x6u_1=14e-46,this.y6u_1=0,this.z6u_1=!1,this.a6v_1=1e7,this.b6v_1=this.s6v(),this.c6v_1=new Float32Array(4),this.d6v_1=0}function uv(){var t,n;u$.call(this),t=["//.x = declination\n//.y = right ascension\n//.z = point size\n//.w = magnitude\nattribute vec4 vertexPoint;\n\nuniform mat4 mvpMatrix;\n/* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\nuniform float numDays;\nuniform vec2 magnitudeRange;\n\nvarying float magnitudeWeight;\n\n/* normalizes an angle between 0.0 and 359.0 */\nfloat normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n}\n\n/* transforms declination and right ascension in cartesian coordinates */\nvec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n}\n\n/* normalizes a value between 0.0 and 1.0 */\nfloat normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n}\n\nvoid main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n}","precision mediump float;\n\nuniform sampler2D textureSampler;\nuniform int textureEnabled;\n\nvarying float magnitudeWeight;\n\nconst vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\nconst vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\nvoid main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n/* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n}"],this.h6v_1=t,n=["vertexPoint"],this.i6v_1=n,this.j6v_1=jx().f67_1,this.k6v_1=jx().f67_1,this.l6v_1=jx().f67_1,this.m6v_1=jx().f67_1,this.n6v_1=jx().f67_1,this.o6v_1=new Float32Array(16)}function av(t){this.n6w_1=t}function hv(){Ft=this}function _v(){return null==Ft&&new hv,Ft}function lv(t,n,i,e,r){_v(),Vj.call(this,function(t,n,i){return ol().r5m(n,4,2,256,256,i)}(_v(),e,r),function(t,n,i,e){var r=new fv(n,i);return r.k6w_1=e,new av(jv(r))}(_v(),t,n,i))}function fv(t,n){this.f6w_1=t,this.g6w_1=n,this.h6w_1="1.3.0",this.i6w_1=null,this.j6w_1="EPSG:4326",this.k6w_1=null,this.l6w_1=!0,this.m6w_1=null}function cv(t){return t.a6x_1}function vv(t,n){var i,e=n.h(0).t6y(),r=null==e?null:e.y6y(),s=null==r?null:r.b6z_1,o=null==s?null:s.n6z_1;if(!(null!=o&&o>=n.g()))throw i=wx().s5m("WmsLayerFactory","createFromWmsAsync","The number of layers specified exceeds the services limit"),cs(ss(i));var u=t.r6z(n),a=t.s6z(n);return new ny(jv(u),function(t,n){return fy(t.a71_1,t.b71_1,t.c71_1,t.d71_1,t.e71_1,t.f71_1,n),n}(a,Us(Kr(vy))))}function wv(t){var n,i=t,e=t.x4h();return e.i4j(),n=e,i.g4h_1=n.f1c(),rs()}function dv(t){Yj.call(this,as(t,",",Xr,Xr,Xr,Xr,cv)),this.z6r(vv(kv(),t))}function pv(t,n){this.b70_1=t,Jo.call(this,n)}function mv(t,n){var i=new pv(t,n),e=function(t,n){return i.d70(t,n)};return e.$arity=1,e}function gv(t){var n=t.z6w_1;return null==n?"":n}function $v(t,n,i,e){Jo.call(this,e),this.m70_1=t,this.n70_1=n,this.o70_1=i}function yv(t,n,i){Jo.call(this,i),this.g6y_1=t,this.h6y_1=n}function bv(){Ut=this,this.o6z_1=20,this.p6z_1=wo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.q6z_1=_u(Xr,wv)}function kv(){return null==Ut&&new bv,Ut}function jv(t){return function(t,n){return xv.call(n,t.f6w_1,t.h6w_1,t.g6w_1,t.i6w_1),n.t6w_1=t.j6w_1,n.u6w_1=t.k6w_1,n.v6w_1=t.l6w_1,n.w6w_1=t.m6w_1,n}(t,Us(Kr(xv)))}function xv(t,n,i,e){this.p6w_1=t,this.q6w_1=n,this.r6w_1=i,this.s6w_1=e,this.t6w_1="EPSG:4326",this.u6w_1=null,this.v6w_1=!0,this.w6w_1=null}function zv(t,n){var i,e=function(t,n){for(var i=n.j74(),e=gs(),r=i.d();r.e();){var s=r.f();Dv().d73_1.n(s.f74_1)&&e.a(s)}for(var o=e,u=du(wu(o,10)),a=o.d();a.e();){var h;h=a.f().e74_1,u.a(h)}return u}(0,n);if(e.m())throw i=wx().s5m("WmtsLayerFactory","createWmtsLayer","Coordinate Systems Not Compatible"),cs(ss(i));var r=function(t,n,i){for(var e=new Ev,r=i.d();r.e();){var s=r.f();e.z72_1=s,e.a73_1.d3();var o=ws(n.q73(s)),u=0,a=o.i74_1.d();t:for(;a.e();){var h=a.f();if(Hr(2,h.a74_1)===h.z73_1&&0==(h.z73_1%2|0)&&0==(h.a74_1%2|0)&&h.y73_1===h.x73_1&&!(h.a74_1<2)){var _=h.w73_1,l=pu("\\s+").ch(_,0);if(2===l.g()){var f;try{f=new Float64Array([go(l.h(0)),go(l.h(1))])}catch(t){if(t instanceof Ts){wx().v4w(wx().r4w_1,"WmtsLayerFactory","determineTileSchemeCompatibleTileMatrixSet","Unable to parse TopLeftCorner values");continue t}throw t}var c=f;if("urn:ogc:def:crs:OGC:1.3:CRS84"===o.f74_1||"http://www.opengis.net/def/crs/OGC/1.3/CRS84"===o.f74_1){var v=c[0]+180;if(Math.abs(v)>1e-9)continue t;var w=c[1]-90;if(Math.abs(w)>1e-9)continue t}else{if("urn:ogc:def:crs:EPSG::4326"!==o.f74_1)continue t;var d=c[1]+180;if(Math.abs(d)>1e-9)continue t;var p=c[0]-90;if(Math.abs(p)>1e-9)continue t}(0===u||Hr(2,u)===h.a74_1)&&(u=h.a74_1,e.a73_1.a(h.u73_1))}}}if(e.a73_1.g()>2)return e}return null}(0,n.y6y(),e);if(null==r){var s=wx().s5m("WmtsLayerFactory","createWmtsLayer","Tile Schemes Not Compatible");throw ks(ss(s))}var o=r;return new ny(function(t,n,i){for(var e=n.n72_1.d();e.e();){var r=e.f();if(t.c73_1.n(r.q72_1))return new Rv(vu(vu(r.s72_1,"{style}",n.j72_1.h(0).w72_1),"{TileMatrixSet}",i.b73()),i.a73_1)}var s,o=function(t,n){var i=n.y6y().m73_1;if(null==i)return null;var e=i.l74();if(null==e)return null;var r=e.n74_1;if(r.m())return null;var s=r.h(0).p74();if(s.m())return null;var o=s.h(0).r74_1;return o.m()?null:o.h(0).t74_1.n("KVP")?s.h(0).q74_1:null}(0,n);if(null==o){var u=wx().s5m("WmtsLayerFactory","getWmtsTileFactory","No KVP Get Support");throw ks(ss(u))}t:{for(var a=t.c73_1.d();a.e();){var h=a.f();if(n.k72_1.n(h)){s=h;break t}}s=null}var _=s;if(null==_){var l=wx().s5m("WmtsLayerFactory","getWmtsTileFactory","Image Formats Not Compatible");throw ks(ss(l))}var f=_,c=n.j72_1.h(0).w72_1;return new Rv(function(t,n,i,e,r,s){var o=tu().q1s(n).q4o().s4n("VERSION","1.0.0").s4n("SERVICE","WMTS").s4n("REQUEST","GetTile").s4n("LAYER",i).s4n("STYLE",r).s4n("FORMAT",e).s4n("TILEMATRIXSET",s);Nv();var u=o.s4n("TILEMATRIX","{TileMatrix}");Nv();var a=u.s4n("TILEROW","{TileRow}");return Nv(),ss(a.s4n("TILECOL","{TileCol}").f1c())}(0,o,n.f72_1,f,c,i.b73()),i.a73_1)}(t,n,o),function(t,n,i){var e=n.h72_1,r=null==e?null:e.q55();if(null==r){var s=wx().s5m("WmtsLayerFactory","createWmtsLevelSet","WGS84BoundingBox not defined for layer: "+n.f72_1);throw ks(ss(s))}var o=r,u=n.y6y().q73(i.b73());if(null==u){var a=wx().s5m("WmtsLayerFactory","createWmtsLevelSet","Compatible TileMatrixSet not found for: "+i);throw ks(ss(a))}var h=u.i74_1.h(0).y73_1;return cy(o,new x_(Bh().u50_1,Bh().w50_1),new x_(Bh().t50_1,Bh().t50_1),i.a73_1.g(),h,h)}(0,n,o))}function Ev(){var t;t=gs(),this.a73_1=t}function Cv(t){var n,i=t,e=t.x4h();return e.i4j(),n=e,i.g4h_1=n.f1c(),rs()}function Sv(t,n){var i=t.c72_1;Yj.call(this,null==i?n:i),this.z6r(zv(Dv(),t))}function qv(t,n){this.c75_1=t,Jo.call(this,n)}function Ov(t,n){var i=new qv(t,n),e=function(t,n){return i.e75(t,n)};return e.$arity=1,e}function Iv(t,n,i,e){Jo.call(this,e),this.n75_1=t,this.o75_1=n,this.p75_1=i}function Av(t,n,i){Jo.call(this,i),this.p71_1=t,this.q71_1=n}function Tv(){Ht=this,this.c73_1=wo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.d73_1=wo(["urn:ogc:def:crs:OGC:1.3:CRS84","urn:ogc:def:crs:EPSG::4326","http://www.opengis.net/def/crs/OGC/1.3/CRS84"]),this.e73_1=_u(Xr,Cv)}function Dv(){return null==Ht&&new Tv,Ht}function Mv(){Vt=this,this.s75_1="{TileMatrix}",this.t75_1="{TileRow}",this.u75_1="{TileCol}"}function Nv(){return null==Vt&&new Mv,Vt}function Rv(t,n){Nv(),this.v75_1=t,this.w75_1=n}function Pv(){Bt=this;var t=new qo("earth.worldwind.ogc.wms.WmsAttribution",this,3);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("onlineResource",!0),t.n3a("logoURL",!0),t.p3a(new gu("Attribution","http://www.opengis.net/wms","")),this.y75_1=t}function Lv(){return null==Bt&&new Pv,Bt}function Fv(t,n,i,e,r){return function(t,n,i,e,r,s){return 0!=(0&t)&&Mo(t,0,Lv().y75_1),s.z75_1=0==(1&t)?null:n,s.a76_1=0==(2&t)?null:i,s.b76_1=0==(4&t)?null:e,s}(t,n,i,e,0,Us(Kr(Uv)))}function Uv(){}function Hv(){Yt=this;var t=new qo("earth.worldwind.ogc.wms.WmsAuthorityUrl",this,2);t.n3a("name",!1),t.n3a("onlineResource",!1),t.p3a(new gu("AuthorityURL","http://www.opengis.net/wms","")),this.c76_1=t}function Vv(){return null==Yt&&new Hv,Yt}function Bv(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,Vv().c76_1),r.d76_1=n,r.e76_1=i,r}(t,n,i,0,Us(Kr(Yv)))}function Yv(){}function Wv(){Wt=this;var t=new qo("earth.worldwind.ogc.wms.WmsBoundingBox",this,7);t.n3a("CRS",!1),t.n3a("minx",!1),t.n3a("maxx",!1),t.n3a("miny",!1),t.n3a("maxy",!1),t.n3a("resx",!0),t.n3a("resy",!0),t.p3a(new gu("BoundingBox","http://www.opengis.net/wms","")),this.f76_1=t}function Gv(){return null==Wt&&new Wv,Wt}function Kv(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 31!=(31&t)&&Mo(t,31,Gv().f76_1),h.g76_1=n,h.h76_1=i,h.i76_1=e,h.j76_1=r,h.k76_1=s,h.l76_1=0==(32&t)?null:o,h.m76_1=0==(64&t)?null:u,h}(t,n,i,e,r,s,o,u,0,Us(Kr(Jv)))}function Jv(){}function Xv(){Gt=this}function Zv(){Kt=this;var t=new qo("earth.worldwind.ogc.wms.WmsCapabilities",this,4);t.n3a("version",!0),t.n3a("updateSequence",!0),t.n3a("service",!1),t.n3a("capability",!1),t.p3a(new gu("WMS_Capabilities","http://www.opengis.net/wms","")),this.n76_1=t}function Qv(){return null==Kt&&new Zv,Kt}function tw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 12!=(12&t)&&Mo(t,12,Qv().n76_1),o.z6y_1=0==(1&t)?"1.3.0":n,o.a6z_1=0==(2&t)?null:i,o.b6z_1=e,o.c6z_1=r,o.c6z_1.x6y_1=o,o}(t,n,i,e,r,0,Us(Kr(nw)))}function nw(t,n,i,e){null==Gt&&new Xv,t=t===Xr?"1.3.0":t,n=n===Xr?null:n,this.z6y_1=t,this.a6z_1=n,this.b6z_1=i,this.c6z_1=e,this.c6z_1.x6y_1=this}function iw(){Jt=this;var t;t=[null,new No(sd()),null],this.p76_1=t}function ew(){return null==Jt&&new iw,Jt}function rw(){Xt=this;var t=new qo("earth.worldwind.ogc.wms.WmsCapability",this,3);t.n3a("request",!1),t.n3a("layers",!0),t.n3a("exception",!0),t.p3a(new gu("Capability","http://www.opengis.net/wms","")),this.q76_1=t}function sw(){return null==Xt&&new rw,Xt}function ow(t,n,i,e,r){return function(t,n,i,e,r,s){1!=(1&t)&&Mo(t,1,sw().q76_1),s.u6y_1=n,s.v6y_1=0==(2&t)?ku():i,s.w6y_1=0==(4&t)?new Fw:e;for(var o=s.v6y_1.d();o.e();)o.f().w6x_1=s;return s}(t,n,i,e,0,Us(Kr(uw)))}function uw(){}function aw(){Zt=this;var t=new qo("earth.worldwind.ogc.wms.WmsContactAddress",this,6);t.n3a("addressType",!1),t.o3a(new mu(!0)),t.o3a(new gu("AddressType","http://www.opengis.net/wms","")),t.n3a("address",!1),t.o3a(new mu(!0)),t.o3a(new gu("Address","http://www.opengis.net/wms","")),t.n3a("city",!1),t.o3a(new mu(!0)),t.o3a(new gu("City","http://www.opengis.net/wms","")),t.n3a("stateOrProvince",!1),t.o3a(new mu(!0)),t.o3a(new gu("StateOrProvince","http://www.opengis.net/wms","")),t.n3a("postCode",!1),t.o3a(new mu(!0)),t.o3a(new gu("PostCode","http://www.opengis.net/wms","")),t.n3a("country",!1),t.o3a(new mu(!0)),t.o3a(new gu("Country","http://www.opengis.net/wms","")),t.p3a(new gu("ContactAddress","http://www.opengis.net/wms","")),this.r76_1=t}function hw(){return null==Zt&&new aw,Zt}function _w(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Mo(t,63,hw().r76_1),a.s76_1=n,a.t76_1=i,a.u76_1=e,a.v76_1=r,a.w76_1=s,a.x76_1=o,a}(t,n,i,e,r,s,o,0,Us(Kr(lw)))}function lw(){}function fw(){Qt=this;var t=new qo("earth.worldwind.ogc.wms.WmsContactInformation",this,6);t.n3a("position",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactPosition","http://www.opengis.net/wms","")),t.n3a("voiceTelephone",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactVoiceTelephone","http://www.opengis.net/wms","")),t.n3a("facsimileTelephone",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactFacsimileNumber","http://www.opengis.net/wms","")),t.n3a("electronicMailAddress",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactElectronicMailAddress","http://www.opengis.net/wms","")),t.n3a("contactAddress",!0),t.n3a("contactPersonPrimary",!0),t.p3a(new gu("ContactInformation","http://www.opengis.net/wms","")),this.y76_1=t}function cw(){return null==Qt&&new fw,Qt}function vw(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Mo(t,0,cw().y76_1),a.z76_1=0==(1&t)?null:n,a.a77_1=0==(2&t)?null:i,a.b77_1=0==(4&t)?null:e,a.c77_1=0==(8&t)?null:r,a.d77_1=0==(16&t)?null:s,a.e77_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Us(Kr(ww)))}function ww(){}function dw(){tn=this;var t=new qo("earth.worldwind.ogc.wms.WmsContactPersonPrimary",this,2);t.n3a("contactPerson",!1),t.o3a(new mu(!0)),t.o3a(new gu("ContactPerson","http://www.opengis.net/wms","")),t.n3a("contactOrganization",!1),t.o3a(new mu(!0)),t.o3a(new gu("ContactOrganization","http://www.opengis.net/wms","")),t.p3a(new gu("ContactPersonPrimary","http://www.opengis.net/wms","")),this.f77_1=t}function pw(){return null==tn&&new dw,tn}function mw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,pw().f77_1),r.g77_1=n,r.h77_1=i,r}(t,n,i,0,Us(Kr(gw)))}function gw(){}function $w(){nn=this;var t=new qo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttp",this,2);t.n3a("get",!1),t.o3a(new gu("Get","http://www.opengis.net/wms","")),t.n3a("post",!0),t.o3a(new gu("Post","http://www.opengis.net/wms","")),t.p3a(new gu("HTTP","http://www.opengis.net/wms","")),this.i77_1=t}function yw(){return null==nn&&new $w,nn}function bw(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,yw().i77_1),r.j77_1=n,r.k77_1=0==(2&t)?null:i,r}(t,n,i,0,Us(Kr(zw)))}function kw(){en=this;var t=new qo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttpProtocol",this,1);t.n3a("onlineResource",!1),this.l77_1=t}function jw(){return null==en&&new kw,en}function xw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,jw().l77_1),e.m77_1=n,e}(t,n,0,Us(Kr(Ew)))}function zw(){}function Ew(){}function Cw(){rn=this;var t=new qo("earth.worldwind.ogc.wms.WmsDcpType",this,1);t.n3a("http",!1),t.p3a(new gu("DCPType","http://www.opengis.net/wms","")),this.n77_1=t}function Sw(){return null==rn&&new Cw,rn}function qw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,Sw().n77_1),e.o77_1=n,e}(t,n,0,Us(Kr(Ow)))}function Ow(){}function Iw(){sn=this;var t=new qo("earth.worldwind.ogc.wms.WmsDimension",this,8);t.n3a("name",!1),t.n3a("units",!1),t.n3a("unitSymbol",!0),t.n3a("default",!0),t.n3a("multipleValues",!0),t.n3a("nearestValue",!0),t.n3a("current",!0),t.n3a("value",!0),t.o3a(new ju(!0)),t.p3a(new gu("Dimension","http://www.opengis.net/wms","")),this.s77_1=t}function Aw(){return null==sn&&new Iw,sn}function Tw(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 3!=(3&t)&&Mo(t,3,Aw().s77_1),_.t77_1=n,_.u77_1=i,_.v77_1=0==(4&t)?null:e,_.w77_1=0==(8&t)?null:r,_.x77_1=0==(16&t)?null:s,_.y77_1=0==(32&t)?null:o,_.z77_1=0==(64&t)?null:u,_.a78_1=0==(128&t)?null:a,_}(t,n,i,e,r,s,o,u,a,0,Us(Kr(Dw)))}function Dw(){}function Mw(){on=this;var t;t=[new No(Oo())],this.b78_1=t}function Nw(){return null==on&&new Mw,on}function Rw(){un=this;var t=new qo("earth.worldwind.ogc.wms.WmsException",this,1);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.p3a(new gu("Exception","http://www.opengis.net/wms","")),this.c78_1=t}function Pw(){return null==un&&new Rw,un}function Lw(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Mo(t,0,Pw().c78_1),e.d78_1=0==(1&t)?ku():n,e}(t,n,0,Us(Kr(Fw)))}function Fw(t){Nw(),t=t===Xr?ku():t,this.d78_1=t}function Uw(){an=this;var t=new qo("earth.worldwind.ogc.wms.WmsGeographicBoundingBox",this,4);t.n3a("north",!1),t.o3a(new mu(!0)),t.o3a(new gu("northBoundLatitude","http://www.opengis.net/wms","")),t.n3a("east",!1),t.o3a(new mu(!0)),t.o3a(new gu("eastBoundLongitude","http://www.opengis.net/wms","")),t.n3a("south",!1),t.o3a(new mu(!0)),t.o3a(new gu("southBoundLatitude","http://www.opengis.net/wms","")),t.n3a("west",!1),t.o3a(new mu(!0)),t.o3a(new gu("westBoundLongitude","http://www.opengis.net/wms","")),t.p3a(new gu("EX_GeographicBoundingBox","http://www.opengis.net/wms","")),this.e78_1=t}function Hw(){return null==an&&new Uw,an}function Vw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 15!=(15&t)&&Mo(t,15,Hw().e78_1),o.f78_1=n,o.g78_1=i,o.h78_1=e,o.i78_1=r,o}(t,n,i,e,r,0,Us(Kr(Bw)))}function Bw(){}function Yw(){hn=this;var t=new qo("earth.worldwind.ogc.wms.WmsIdentifier",this,2);t.n3a("authority",!1),t.n3a("identifier",!1),t.o3a(new ju(!0)),t.p3a(new gu("Identifier","http://www.opengis.net/wms","")),this.j78_1=t}function Ww(){return null==hn&&new Yw,hn}function Gw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,Ww().j78_1),r.k78_1=n,r.l78_1=i,r}(t,n,i,0,Us(Kr(Kw)))}function Kw(){}function Jw(){_n=this;var t;t=[new No(Oo()),null],this.m78_1=t}function Xw(){return null==_n&&new Jw,_n}function Zw(){ln=this;var t=new qo("earth.worldwind.ogc.wms.WmsInfoUrl",this,2);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),this.n78_1=t}function Qw(){return null==ln&&new Zw,ln}function td(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Mo(t,2,Qw().n78_1),r.o78_1=0==(1&t)?ku():n,r.p78_1=i,r}(t,n,i,0,Us(Kr(nd)))}function nd(){}function id(){fn=this;var t;t=[new No(sd()),null,null,null,new No(Oo()),new No(Hd()),new No(Oo()),null,new No(Gv()),new No(Aw()),null,new No(Vv()),new No(Ww()),new No(pd()),new No(Qw()),new No(Qw()),null,null,null,null,null,null,null,null],this.q78_1=t}function ed(){return null==fn&&new id,fn}function rd(){cn=this;var t=new qo("earth.worldwind.ogc.wms.WmsLayer",this,24);t.n3a("layers",!0),t.n3a("name",!0),t.o3a(new mu(!0)),t.o3a(new gu("Name","http://www.opengis.net/wms","")),t.n3a("title",!1),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/wms","")),t.n3a("keywordList",!0),t.o3a(new gu("KeywordList","http://www.opengis.net/wms","")),t.o3a(new zu("Keyword","http://www.opengis.net/wms","")),t.n3a("_styles",!0),t.n3a("_referenceSystems",!0),t.o3a(new gu("CRS","http://www.opengis.net/wms","")),t.n3a("_geographicBoundingBox",!0),t.n3a("_boundingBoxes",!0),t.n3a("_dimensions",!0),t.n3a("_attribution",!0),t.n3a("_authorityUrls",!0),t.n3a("identifiers",!0),t.n3a("metadataUrls",!0),t.n3a("dataUrls",!0),t.o3a(new gu("DataURL","http://www.opengis.net/wms","")),t.n3a("featureListUrls",!0),t.o3a(new gu("FeatureListURL","http://www.opengis.net/wms","")),t.n3a("_maxScaleDenominator",!0),t.o3a(new mu(!0)),t.o3a(new gu("MaxScaleDenominator","http://www.opengis.net/wms","")),t.n3a("_minScaleDenominator",!0),t.o3a(new mu(!0)),t.o3a(new gu("MinScaleDenominator","http://www.opengis.net/wms","")),t.n3a("isQueryable",!0),t.o3a(new gu("queryable","http://www.opengis.net/wms","")),t.n3a("_cascaded",!0),t.o3a(new gu("cascaded","http://www.opengis.net/wms","")),t.n3a("isOpaque",!0),t.o3a(new gu("opaque","http://www.opengis.net/wms","")),t.n3a("isNoSubsets",!0),t.o3a(new gu("noSubsets","http://www.opengis.net/wms","")),t.n3a("_fixedWidth",!0),t.o3a(new gu("fixedWidth","http://www.opengis.net/wms","")),t.n3a("_fixedHeight",!0),t.o3a(new gu("fixedHeight","http://www.opengis.net/wms","")),t.p3a(new gu("Layer","http://www.opengis.net/wms","")),this.r78_1=t}function sd(){return null==cn&&new rd,cn}function od(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x){return function(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z){4!=(4&t)&&Mo(t,4,sd().r78_1),z.y6w_1=0==(1&t)?ku():n,z.z6w_1=0==(2&t)?null:i,z.a6x_1=e,z.b6x_1=0==(8&t)?null:r,z.c6x_1=0==(16&t)?ku():s,z.d6x_1=0==(32&t)?ku():o,z.e6x_1=0==(64&t)?ku():u,z.f6x_1=0==(128&t)?null:a,z.g6x_1=0==(256&t)?ku():h,z.h6x_1=0==(512&t)?ku():_,z.i6x_1=0==(1024&t)?null:l,z.j6x_1=0==(2048&t)?ku():f,z.k6x_1=0==(4096&t)?ku():c,z.l6x_1=0==(8192&t)?ku():v,z.m6x_1=0==(16384&t)?ku():w,z.n6x_1=0==(32768&t)?ku():d,z.o6x_1=0==(65536&t)?null:p,z.p6x_1=0==(131072&t)?null:m,z.q6x_1=0!=(262144&t)&&g,z.r6x_1=0==(524288&t)?null:$,z.s6x_1=0!=(1048576&t)&&y,z.t6x_1=0!=(2097152&t)&&b,z.u6x_1=0==(4194304&t)?null:k,z.v6x_1=0==(8388608&t)?null:j,z.w6x_1=null,z.x6x_1=null;for(var E=z.y6w_1.d();E.e();)E.f().x6x_1=z;return z}(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,0,Us(Kr(ud)))}function ud(){}function ad(){vn=this;var t;t=[new Su(Oo()),null,null,null],this.s78_1=t}function hd(){return null==vn&&new ad,vn}function _d(){wn=this;var t=new qo("earth.worldwind.ogc.wms.WmsLogoUrl",this,4);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),t.n3a("width",!0),t.n3a("height",!0),t.p3a(new gu("LogoURL","http://www.opengis.net/wms","")),this.t78_1=t}function ld(){return null==wn&&new _d,wn}function fd(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){if(2!=(2&t)&&Mo(t,2,ld().t78_1),0==(1&t)){var u,a=o;u=qu(),a.u78_1=u}else o.u78_1=n;return o.v78_1=i,o.w78_1=0==(4&t)?null:e,o.x78_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Us(Kr(cd)))}function cd(){}function vd(){dn=this;var t;t=[null,new No(Oo()),null],this.y78_1=t}function wd(){return null==dn&&new vd,dn}function dd(){pn=this;var t=new qo("earth.worldwind.ogc.wms.WmsMetadataUrl",this,3);t.n3a("type",!1),t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),t.p3a(new gu("MetadataURL","http://www.opengis.net/wms","")),this.z78_1=t}function pd(){return null==pn&&new dd,pn}function md(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Mo(t,5,pd().z78_1),s.a79_1=n,s.b79_1=0==(2&t)?ku():i,s.c79_1=e,s}(t,n,i,e,0,Us(Kr(gd)))}function gd(){}function $d(){mn=this;var t=new qo("earth.worldwind.ogc.wms.WmsOnlineResource",this,2);t.n3a("type",!0),t.o3a(new gu("type","http://www.w3.org/1999/xlink","xlink")),t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.p3a(new gu("OnlineResource","http://www.opengis.net/wms","")),this.d79_1=t}function yd(){return null==mn&&new $d,mn}function bd(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Mo(t,2,yd().d79_1),r.q77_1=0==(1&t)?"simple":n,r.r77_1=i,r}(t,n,i,0,Us(Kr(kd)))}function kd(){}function jd(){gn=this;var t=new qo("earth.worldwind.ogc.wms.WmsRequest",this,3);t.n3a("getCapabilities",!1),t.o3a(new gu("GetCapabilities","http://www.opengis.net/wms","")),t.n3a("getMap",!1),t.o3a(new gu("GetMap","http://www.opengis.net/wms","")),t.n3a("getFeatureInfo",!0),t.o3a(new gu("GetFeatureInfo","http://www.opengis.net/wms","")),t.p3a(new gu("Request","http://www.opengis.net/wms","")),this.e79_1=t}function xd(){return null==gn&&new jd,gn}function zd(t,n,i,e,r){return function(t,n,i,e,r,s){return 3!=(3&t)&&Mo(t,3,xd().e79_1),s.r70_1=n,s.s70_1=i,s.t70_1=0==(4&t)?null:e,s}(t,n,i,e,0,Us(Kr(Ed)))}function Ed(){}function Cd(){$n=this;var t;t=[new No(Oo()),null],this.f79_1=t}function Sd(){return null==$n&&new Cd,$n}function qd(){yn=this;var t=new qo("earth.worldwind.ogc.wms.WmsRequestOperation",this,2);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("dcpType",!1),this.g79_1=t}function Od(){return null==yn&&new qd,yn}function Id(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Mo(t,2,Od().g79_1),r.u70_1=0==(1&t)?ku():n,r.v70_1=i,r}(t,n,i,0,Us(Kr(Ad)))}function Ad(){}function Td(){bn=this;var t;t=[null,null,null,null,null,new No(Oo()),null,null,null,null,null],this.h79_1=t}function Dd(){return null==bn&&new Td,bn}function Md(){kn=this;var t=new qo("earth.worldwind.ogc.wms.WmsService",this,11);t.n3a("name",!1),t.o3a(new mu(!0)),t.o3a(new gu("Name","http://www.opengis.net/wms","")),t.n3a("title",!1),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/wms","")),t.n3a("fees",!0),t.o3a(new mu(!0)),t.o3a(new gu("Fees","http://www.opengis.net/wms","")),t.n3a("accessConstraints",!0),t.o3a(new mu(!0)),t.o3a(new gu("AccessConstraints","http://www.opengis.net/wms","")),t.n3a("keywordList",!0),t.o3a(new gu("KeywordList","http://www.opengis.net/wms","")),t.o3a(new zu("Keyword","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),t.n3a("contactInformation",!0),t.n3a("maxWidth",!0),t.o3a(new mu(!0)),t.o3a(new gu("MaxWidth","http://www.opengis.net/wms","")),t.n3a("maxHeight",!0),t.o3a(new mu(!0)),t.o3a(new gu("MaxHeight","http://www.opengis.net/wms","")),t.n3a("layerLimit",!0),t.o3a(new mu(!0)),t.o3a(new gu("LayerLimit","http://www.opengis.net/wms","")),t.p3a(new gu("Service","http://www.opengis.net/wms","")),this.i79_1=t}function Nd(){return null==kn&&new Md,kn}function Rd(t,n,i,e,r,s,o,u,a,h,_,l,f){return function(t,n,i,e,r,s,o,u,a,h,_,l,f,c){if(67!=(67&t)&&Mo(t,67,Nd().i79_1),c.d6z_1=n,c.e6z_1=i,c.f6z_1=0==(4&t)?null:e,c.g6z_1=0==(8&t)?null:r,c.h6z_1=0==(16&t)?null:s,0==(32&t)){var v,w=c;v=ku(),w.i6z_1=v}else c.i6z_1=o;return c.j6z_1=u,c.k6z_1=0==(128&t)?null:a,c.l6z_1=0==(256&t)?null:h,c.m6z_1=0==(512&t)?null:_,c.n6z_1=0==(1024&t)?null:l,c}(t,n,i,e,r,s,o,u,a,h,_,l,0,Us(Kr(Pd)))}function Pd(){}function Ld(){jn=this;var t;t=[null,null,null,new No(ld()),null,null],this.j79_1=t}function Fd(){return null==jn&&new Ld,jn}function Ud(){xn=this;var t=new qo("earth.worldwind.ogc.wms.WmsStyle",this,6);t.n3a("name",!1),t.o3a(new mu(!0)),t.o3a(new gu("Name","http://www.opengis.net/wms","")),t.n3a("title",!1),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/wms","")),t.n3a("legendUrls",!0),t.o3a(new gu("LegendURL","http://www.opengis.net/wms","")),t.n3a("styleSheetUrl",!0),t.o3a(new gu("StyleSheetURL","http://www.opengis.net/wms","")),t.n3a("styleUrl",!0),t.o3a(new gu("StyleURL","http://www.opengis.net/wms","")),t.p3a(new gu("Style","http://www.opengis.net/wms","")),this.k79_1=t}function Hd(){return null==xn&&new Ud,xn}function Vd(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 3!=(3&t)&&Mo(t,3,Hd().k79_1),a.l79_1=n,a.m79_1=i,a.n79_1=0==(4&t)?null:e,a.o79_1=0==(8&t)?ku():r,a.p79_1=0==(16&t)?null:s,a.q79_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Us(Kr(Bd)))}function Bd(){}function Yd(){zn=this;var t;t=[new No(Oo()),null,null,null,null,new No(Oo())],this.r79_1=t}function Wd(){return null==zn&&new Yd,zn}function Gd(){En=this;var t=new qo("earth.worldwind.ogc.wmts.OwsAddress",this,6);t.n3a("deliveryPoints",!0),t.o3a(new gu("DeliveryPoint","http://www.opengis.net/ows/1.1","ows")),t.n3a("city",!0),t.o3a(new mu(!0)),t.o3a(new gu("City","http://www.opengis.net/ows/1.1","ows")),t.n3a("administrativeArea",!0),t.o3a(new mu(!0)),t.o3a(new gu("AdministrativeArea","http://www.opengis.net/ows/1.1","ows")),t.n3a("postalCode",!0),t.o3a(new mu(!0)),t.o3a(new gu("PostalCode","http://www.opengis.net/ows/1.1","ows")),t.n3a("country",!0),t.o3a(new mu(!0)),t.o3a(new gu("Country","http://www.opengis.net/ows/1.1","ows")),t.n3a("electronicMailAddresses",!0),t.o3a(new gu("ElectronicMailAddress","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("Address","http://www.opengis.net/ows/1.1","ows")),this.s79_1=t}function Kd(){return null==En&&new Gd,En}function Jd(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Mo(t,0,Kd().s79_1),a.t79_1=0==(1&t)?ku():n,a.u79_1=0==(2&t)?null:i,a.v79_1=0==(4&t)?null:e,a.w79_1=0==(8&t)?null:r,a.x79_1=0==(16&t)?null:s,a.y79_1=0==(32&t)?ku():o,a}(t,n,i,e,r,s,o,0,Us(Kr(Xd)))}function Xd(){}function Zd(){Cn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsBoundingBox",this,3);t.n3a("crs",!0),t.n3a("lowerCorner",!1),t.o3a(new mu(!0)),t.o3a(new gu("LowerCorner","http://www.opengis.net/ows/1.1","ows")),t.n3a("upperCorner",!1),t.o3a(new mu(!0)),t.o3a(new gu("UpperCorner","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("BoundingBox","http://www.opengis.net/ows/1.1","ows")),this.z79_1=t}function Qd(){return null==Cn&&new Zd,Cn}function tp(t,n,i,e,r){return function(t,n,i,e,r,s){return 6!=(6&t)&&Mo(t,6,Qd().z79_1),s.f73_1=0==(1&t)?null:n,s.g73_1=i,s.h73_1=e,s}(t,n,i,e,0,Us(Kr(np)))}function np(){}function ip(){Sn=this;var t;t=[null,new No(Oo())],this.a7a_1=t}function ep(){return null==Sn&&new ip,Sn}function rp(){qn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsConstraint",this,2);t.n3a("name",!1),t.n3a("allowedValues",!0),t.o3a(new gu("AllowedValues","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Value","http://www.opengis.net/ows/1.1","ows")),t.o3a(new Ou("AnyValue")),t.p3a(new gu("Constraint","http://www.opengis.net/ows/1.1","ows")),this.b7a_1=t}function sp(){return null==qn&&new rp,qn}function op(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,sp().b7a_1),r.s74_1=n,r.t74_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(up)))}function up(){}function ap(){On=this;var t=new qo("earth.worldwind.ogc.wmts.OwsContactInfo",this,5);t.n3a("phone",!0),t.n3a("address",!0),t.n3a("onlineResource",!0),t.n3a("hoursOfService",!0),t.o3a(new mu(!0)),t.o3a(new gu("HoursOfService","http://www.opengis.net/ows/1.1","ows")),t.n3a("contactInstructions",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactInstructions","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("ContactInfo","http://www.opengis.net/ows/1.1","ows")),this.c7a_1=t}function hp(){return null==On&&new ap,On}function _p(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 0!=(0&t)&&Mo(t,0,hp().c7a_1),u.d7a_1=0==(1&t)?null:n,u.e7a_1=0==(2&t)?null:i,u.f7a_1=0==(4&t)?null:e,u.g7a_1=0==(8&t)?null:r,u.h7a_1=0==(16&t)?null:s,u}(t,n,i,e,r,s,0,Us(Kr(lp)))}function lp(){}function fp(){In=this;var t=new qo("earth.worldwind.ogc.wmts.OwsDcp",this,1);t.n3a("http",!1),t.p3a(new gu("DCP","http://www.opengis.net/ows/1.1","ows")),this.i7a_1=t}function cp(){return null==In&&new fp,In}function vp(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,cp().i7a_1),e.o74_1=n,e}(t,n,0,Us(Kr(wp)))}function wp(){}function dp(){}function pp(){An=this;var t;t=[new No(zp()),new No(zp())],this.l7a_1=t}function mp(){return null==An&&new pp,An}function gp(){Tn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsHttp",this,2);t.n3a("getMethods",!0),t.o3a(new gu("Get","http://www.opengis.net/ows/1.1","ows")),t.n3a("postMethods",!0),t.o3a(new gu("Post","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("HTTP","http://www.opengis.net/ows/1.1","ows")),this.m7a_1=t}function $p(){return null==Tn&&new gp,Tn}function yp(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Mo(t,0,$p().m7a_1),r.j7a_1=0==(1&t)?ku():n,r.k7a_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(bp)))}function bp(){}function kp(){Dn=this;var t;t=[null,new No(sp())],this.n7a_1=t}function jp(){return null==Dn&&new kp,Dn}function xp(){Mn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsHttpMethod",this,2);t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.n3a("constraints",!0),this.o7a_1=t}function zp(){return null==Mn&&new xp,Mn}function Ep(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,zp().o7a_1),r.q74_1=n,r.r74_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(Cp)))}function Cp(){}function Sp(){Nn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsOnlineResource",this,1);t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.p3a(new gu("OnlineResource","http://www.opengis.net/ows/1.1","ows")),this.p7a_1=t}function qp(){return null==Nn&&new Sp,Nn}function Op(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,qp().p7a_1),e.q7a_1=n,e}(t,n,0,Us(Kr(Ip)))}function Ip(){}function Ap(){Rn=this;var t;t=[null,new No(cp())],this.r7a_1=t}function Tp(){return null==Rn&&new Ap,Rn}function Dp(){Pn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsOperation",this,2);t.n3a("name",!1),t.n3a("dcps",!0),t.p3a(new gu("Operation","http://www.opengis.net/ows/1.1","ows")),this.s7a_1=t}function Mp(){return null==Pn&&new Dp,Pn}function Np(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,Mp().s7a_1),r.m74_1=n,r.n74_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(Rp)))}function Rp(){}function Pp(){Ln=this;var t;t=[new No(Mp())],this.t7a_1=t}function Lp(){return null==Ln&&new Pp,Ln}function Fp(){Fn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsOperationsMetadata",this,1);t.n3a("operations",!0),t.p3a(new gu("OperationsMetadata","http://www.opengis.net/ows/1.1","ows")),this.u7a_1=t}function Up(){return null==Fn&&new Fp,Fn}function Hp(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Mo(t,0,Up().u7a_1),e.k74_1=0==(1&t)?ku():n,e}(t,n,0,Us(Kr(Vp)))}function Vp(){}function Bp(){Un=this;var t;t=[new No(Oo()),new No(Oo())],this.v7a_1=t}function Yp(){return null==Un&&new Bp,Un}function Wp(){Hn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsPhone",this,2);t.n3a("voice",!0),t.o3a(new mu(!0)),t.o3a(new gu("Voice","http://www.opengis.net/ows/1.1","ows")),t.n3a("fax",!0),t.o3a(new mu(!0)),t.o3a(new gu("Facsimile","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("Phone","http://www.opengis.net/ows/1.1","ows")),this.w7a_1=t}function Gp(){return null==Hn&&new Wp,Hn}function Kp(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Mo(t,0,Gp().w7a_1),r.x7a_1=0==(1&t)?ku():n,r.y7a_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(Jp)))}function Jp(){}function Xp(){Vn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsServiceContact",this,4);t.n3a("individualName",!0),t.o3a(new mu(!0)),t.o3a(new gu("IndividualName","http://www.opengis.net/ows/1.1","ows")),t.n3a("positionName",!0),t.o3a(new mu(!0)),t.o3a(new gu("PositionName","http://www.opengis.net/ows/1.1","ows")),t.n3a("contactInfo",!0),t.n3a("role",!0),t.o3a(new mu(!0)),t.o3a(new gu("Role","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("ServiceContact","http://www.opengis.net/ows/1.1","ows")),this.z7a_1=t}function Zp(){return null==Vn&&new Xp,Vn}function Qp(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 0!=(0&t)&&Mo(t,0,Zp().z7a_1),o.a7b_1=0==(1&t)?null:n,o.b7b_1=0==(2&t)?null:i,o.c7b_1=0==(4&t)?null:e,o.d7b_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Us(Kr(tm)))}function tm(){}function nm(){Bn=this;var t;t=[null,null,new No(Oo()),null,new No(Oo()),null,new No(Oo())],this.e7b_1=t}function im(){return null==Bn&&new nm,Bn}function em(){Yn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsServiceIdentification",this,7);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("serviceType",!1),t.o3a(new mu(!0)),t.o3a(new gu("ServiceType","http://www.opengis.net/ows/1.1","ows")),t.n3a("serviceTypeVersions",!0),t.o3a(new gu("ServiceTypeVersion","http://www.opengis.net/ows/1.1","ows")),t.n3a("fees",!0),t.o3a(new mu(!0)),t.o3a(new gu("Fees","http://www.opengis.net/ows/1.1","ows")),t.n3a("accessConstraints",!0),t.o3a(new gu("AccessConstraints","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("ServiceIdentification","http://www.opengis.net/ows/1.1","ows")),this.f7b_1=t}function rm(){return null==Yn&&new em,Yn}function sm(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 8!=(8&t)&&Mo(t,8,rm().f7b_1),dp.call(h),h.g7b_1=0==(1&t)?null:n,h.h7b_1=0==(2&t)?null:i,h.i7b_1=0==(4&t)?ku():e,h.j7b_1=r,h.k7b_1=0==(16&t)?ku():s,h.l7b_1=0==(32&t)?null:o,h.m7b_1=0==(64&t)?ku():u,h}(t,n,i,e,r,s,o,u,0,Us(Kr(om)))}function om(){}function um(){Wn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsServiceProvider",this,3);t.n3a("providerName",!1),t.o3a(new mu(!0)),t.o3a(new gu("ProviderName","http://www.opengis.net/ows/1.1","ows")),t.n3a("onlineResource",!0),t.o3a(new gu("ProviderSite","http://www.opengis.net/ows/1.1","ows")),t.n3a("serviceContact",!1),t.p3a(new gu("ServiceProvider","http://www.opengis.net/ows/1.1","ows")),this.n7b_1=t}function am(){return null==Wn&&new um,Wn}function hm(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Mo(t,5,am().n7b_1),s.o7b_1=n,s.p7b_1=0==(2&t)?null:i,s.q7b_1=e,s}(t,n,i,e,0,Us(Kr(_m)))}function _m(){}function lm(){Gn=this;var t;t=[null,null,null,null,null,null,new No(Zm()),new No(qp())],this.r7b_1=t}function fm(){return null==Gn&&new lm,Gn}function cm(){Kn=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsCapabilities",this,8);t.n3a("version",!1),t.n3a("updateSequence",!0),t.n3a("serviceIdentification",!0),t.n3a("serviceProvider",!0),t.n3a("operationsMetadata",!0),t.n3a("contents",!1),t.n3a("themes",!0),t.o3a(new gu("Themes","http://www.opengis.net/wmts/1.0","")),t.o3a(new zu("Theme","http://www.opengis.net/wmts/1.0","")),t.n3a("serviceMetadataUrls",!0),t.o3a(new gu("ServiceMetadataURL","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("Capabilities","http://www.opengis.net/wmts/1.0","")),this.s7b_1=t}function vm(){return null==Kn&&new cm,Kn}function wm(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){33!=(33&t)&&Mo(t,33,vm().s7b_1),_.i73_1=n,_.j73_1=0==(2&t)?null:i,_.k73_1=0==(4&t)?null:e,_.l73_1=0==(8&t)?null:r,_.m73_1=0==(16&t)?null:s,_.n73_1=o,_.o73_1=0==(64&t)?ku():u,_.p73_1=0==(128&t)?ku():a;for(var l=_.u5g().d();l.e();)l.f().p72_1=_;return _}(t,n,i,e,r,s,o,u,a,0,Us(Kr(dm)))}function dm(t,n,i,e,r,s,o,u){fm(),n=n===Xr?null:n,i=i===Xr?null:i,e=e===Xr?null:e,r=r===Xr?null:r,o=o===Xr?ku():o,u=u===Xr?ku():u,this.i73_1=t,this.j73_1=n,this.k73_1=i,this.l73_1=e,this.m73_1=r,this.n73_1=s,this.o73_1=o,this.p73_1=u;for(var a=this.u5g().d();a.e();)a.f().p72_1=this}function pm(){Jn=this;var t;t=[new No(Im()),new No(vg())],this.w7b_1=t}function mm(){return null==Jn&&new pm,Jn}function gm(){Xn=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsContents",this,2);t.n3a("layers",!0),t.n3a("tileMatrixSets",!0),t.p3a(new gu("Contents","http://www.opengis.net/wmts/1.0","")),this.x7b_1=t}function $m(){return null==Xn&&new gm,Xn}function ym(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Mo(t,0,$m().x7b_1),r.t7b_1=0==(1&t)?ku():n,r.u7b_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(bm)))}function bm(){}function km(){Zn=this;var t;t=[null,null,new No(Oo()),null,null,null,null,null,new No(Oo())],this.y7b_1=t}function jm(){return null==Zn&&new km,Zn}function xm(){Qn=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsDimension",this,9);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("unitOfMeasure",!0),t.o3a(new mu(!0)),t.o3a(new gu("UOM","http://www.opengis.net/ows/1.1","ows")),t.n3a("unitSymbol",!0),t.o3a(new mu(!0)),t.o3a(new gu("UnitSymbol","http://www.opengis.net/wmts/1.0","")),t.n3a("valueDefault",!0),t.o3a(new mu(!0)),t.o3a(new gu("Default","http://www.opengis.net/wmts/1.0","")),t.n3a("current",!0),t.o3a(new mu(!0)),t.o3a(new gu("Current","http://www.opengis.net/wmts/1.0","")),t.n3a("values",!0),t.o3a(new gu("Value","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("Dimension","http://www.opengis.net/wmts/1.0","")),this.z7b_1=t}function zm(){return null==Qn&&new xm,Qn}function Em(t,n,i,e,r,s,o,u,a,h,_){return function(t,n,i,e,r,s,o,u,a,h,_,l){return 8!=(8&t)&&Mo(t,8,zm().z7b_1),dp.call(l),l.a7c_1=0==(1&t)?null:n,l.b7c_1=0==(2&t)?null:i,l.c7c_1=0==(4&t)?ku():e,l.d7c_1=r,l.e7c_1=0==(16&t)?null:s,l.f7c_1=0==(32&t)?null:o,l.g7c_1=0==(64&t)?null:u,l.h7c_1=0==(128&t)?null:a,l.i7c_1=0==(256&t)?ku():h,l}(t,n,i,e,r,s,o,u,a,h,0,Us(Kr(Cm)))}function Cm(){}function Sm(){ti=this;var t;t=[null,null,new No(Oo()),null,new No(Qd()),null,new No(qp()),new No(Ym()),new No(Oo()),new No(Oo()),new No($g()),new No(Lm()),new No(zm())],this.j7c_1=t}function qm(){return null==ti&&new Sm,ti}function Om(){ni=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsLayer",this,13);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("boundingBoxes",!0),t.n3a("wgs84BoundingBox",!0),t.o3a(new gu("WGS84BoundingBox","http://www.opengis.net/ows/1.1","ows")),t.n3a("metadata",!0),t.o3a(new gu("Metadata","http://www.opengis.net/ows/1.1","ows")),t.n3a("styles",!0),t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wmts/1.0","")),t.n3a("infoFormats",!0),t.o3a(new gu("InfoFormat","http://www.opengis.net/wmts/1.0","")),t.n3a("tileMatrixSetLinks",!0),t.n3a("resourceUrls",!0),t.n3a("dimensions",!0),t.p3a(new gu("Layer","http://www.opengis.net/wmts/1.0","")),this.k7c_1=t}function Im(){return null==ni&&new Om,ni}function Am(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v){return function(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w){return 8!=(8&t)&&Mo(t,8,Im().k7c_1),dp.call(w),w.c72_1=0==(1&t)?null:n,w.d72_1=0==(2&t)?null:i,w.e72_1=0==(4&t)?ku():e,w.f72_1=r,w.g72_1=0==(16&t)?ku():s,w.h72_1=0==(32&t)?null:o,w.i72_1=0==(64&t)?ku():u,w.j72_1=0==(128&t)?ku():a,w.k72_1=0==(256&t)?ku():h,w.l72_1=0==(512&t)?ku():_,w.m72_1=0==(1024&t)?ku():l,w.n72_1=0==(2048&t)?ku():f,w.o72_1=0==(4096&t)?ku():c,w}(t,n,i,e,r,s,o,u,a,h,_,l,f,c,0,Us(Kr(Tm)))}function Tm(){}function Dm(){ii=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsLegendURL",this,2);t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.n3a("format",!1),t.p3a(new gu("LegendURL","http://www.opengis.net/wmts/1.0","")),this.n7c_1=t}function Mm(){return null==ii&&new Dm,ii}function Nm(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,Mm().n7c_1),r.o7c_1=n,r.p7c_1=i,r}(t,n,i,0,Us(Kr(Rm)))}function Rm(){}function Pm(){ei=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsResourceUrl",this,3);t.n3a("format",!1),t.n3a("resourceType",!1),t.n3a("template",!1),t.p3a(new gu("ResourceURL","http://www.opengis.net/wmts/1.0","")),this.q7c_1=t}function Lm(){return null==ei&&new Pm,ei}function Fm(t,n,i,e,r){return function(t,n,i,e,r,s){return 7!=(7&t)&&Mo(t,7,Lm().q7c_1),s.q72_1=n,s.r72_1=i,s.s72_1=e,s}(t,n,i,e,0,Us(Kr(Um)))}function Um(){}function Hm(){ri=this;var t;t=[null,null,new No(Oo()),null,null,new No(Mm())],this.r7c_1=t}function Vm(){return null==ri&&new Hm,ri}function Bm(){si=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsStyle",this,6);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("isDefault",!0),t.n3a("legendUrls",!0),t.p3a(new gu("Style","http://www.opengis.net/wmts/1.0","")),this.s7c_1=t}function Ym(){return null==si&&new Bm,si}function Wm(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Mo(t,8,Ym().s7c_1),dp.call(a),a.t72_1=0==(1&t)?null:n,a.u72_1=0==(2&t)?null:i,a.v72_1=0==(4&t)?ku():e,a.w72_1=r,a.x72_1=0!=(16&t)&&s,a.y72_1=0==(32&t)?ku():o,a}(t,n,i,e,r,s,o,0,Us(Kr(Gm)))}function Gm(){}function Km(){oi=this;var t;t=[null,null,new No(Oo()),null,new No(Zm()),new No(Oo())],this.t7c_1=t}function Jm(){return null==oi&&new Km,oi}function Xm(){ui=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTheme",this,6);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("themes",!0),t.n3a("layerRefs",!0),t.o3a(new gu("LayerRef","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("Theme","http://www.opengis.net/wmts/1.0","")),this.u7c_1=t}function Zm(){return null==ui&&new Xm,ui}function Qm(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Mo(t,8,Zm().u7c_1),dp.call(a),a.v7c_1=0==(1&t)?null:n,a.w7c_1=0==(2&t)?null:i,a.x7c_1=0==(4&t)?ku():e,a.y7c_1=r,a.z7c_1=0==(16&t)?ku():s,a.a7d_1=0==(32&t)?ku():o,a}(t,n,i,e,r,s,o,0,Us(Kr(tg)))}function tg(){}function ng(){ai=this;var t;t=[null,null,new No(Oo()),null,null,null,null,null,null,null],this.b7d_1=t}function ig(){return null==ai&&new ng,ai}function eg(){hi=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrix",this,10);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("scaleDenominator",!1),t.o3a(new mu(!0)),t.o3a(new gu("ScaleDenominator","http://www.opengis.net/wmts/1.0","")),t.n3a("topLeftCorner",!1),t.o3a(new mu(!0)),t.o3a(new gu("TopLeftCorner","http://www.opengis.net/wmts/1.0","")),t.n3a("tileWidth",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileWidth","http://www.opengis.net/wmts/1.0","")),t.n3a("tileHeight",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileHeight","http://www.opengis.net/wmts/1.0","")),t.n3a("matrixWidth",!1),t.o3a(new mu(!0)),t.o3a(new gu("MatrixWidth","http://www.opengis.net/wmts/1.0","")),t.n3a("matrixHeight",!1),t.o3a(new mu(!0)),t.o3a(new gu("MatrixHeight","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("TileMatrix","http://www.opengis.net/wmts/1.0","")),this.c7d_1=t}function rg(){return null==hi&&new eg,hi}function sg(t,n,i,e,r,s,o,u,a,h,_,l){return function(t,n,i,e,r,s,o,u,a,h,_,l,f){return 1016!=(1016&t)&&Mo(t,1016,rg().c7d_1),dp.call(f),f.r73_1=0==(1&t)?null:n,f.s73_1=0==(2&t)?null:i,f.t73_1=0==(4&t)?ku():e,f.u73_1=r,f.v73_1=s,f.w73_1=o,f.x73_1=u,f.y73_1=a,f.z73_1=h,f.a74_1=_,f}(t,n,i,e,r,s,o,u,a,h,_,0,Us(Kr(og)))}function og(){}function ug(){_i=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrixLimits",this,5);t.n3a("tileMatrixIdentifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileMatrix","http://www.opengis.net/wmts/1.0","")),t.n3a("minTileRow",!1),t.o3a(new mu(!0)),t.o3a(new gu("MinTileRow","http://www.opengis.net/wmts/1.0","")),t.n3a("maxTileRow",!1),t.o3a(new mu(!0)),t.o3a(new gu("MaxTileRow","http://www.opengis.net/wmts/1.0","")),t.n3a("minTileCol",!1),t.o3a(new mu(!0)),t.o3a(new gu("MinTileCol","http://www.opengis.net/wmts/1.0","")),t.n3a("maxTileCol",!1),t.o3a(new mu(!0)),t.o3a(new gu("MaxTileCol","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),this.d7d_1=t}function ag(){return null==_i&&new ug,_i}function hg(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 31!=(31&t)&&Mo(t,31,ag().d7d_1),u.e7d_1=n,u.f7d_1=i,u.g7d_1=e,u.h7d_1=r,u.i7d_1=s,u}(t,n,i,e,r,s,0,Us(Kr(_g)))}function _g(){}function lg(){li=this;var t;t=[null,null,new No(Oo()),null,null,null,null,new No(rg())],this.j7d_1=t}function fg(){return null==li&&new lg,li}function cg(){fi=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrixSet",this,8);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("supportedCrs",!1),t.o3a(new mu(!0)),t.o3a(new gu("SupportedCRS","http://www.opengis.net/ows/1.1","ows")),t.n3a("wellKnownScaleSet",!0),t.o3a(new mu(!0)),t.o3a(new gu("WellKnownScaleSet","http://www.opengis.net/wmts/1.0","")),t.n3a("boundingBox",!0),t.n3a("tileMatrices",!0),t.p3a(new gu("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),this.k7d_1=t}function vg(){return null==fi&&new cg,fi}function wg(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 24!=(24&t)&&Mo(t,24,vg().k7d_1),dp.call(_),_.b74_1=0==(1&t)?null:n,_.c74_1=0==(2&t)?null:i,_.d74_1=0==(4&t)?ku():e,_.e74_1=r,_.f74_1=s,_.g74_1=0==(32&t)?null:o,_.h74_1=0==(64&t)?null:u,_.i74_1=0==(128&t)?ku():a,_}(t,n,i,e,r,s,o,u,a,0,Us(Kr(dg)))}function dg(){}function pg(){ci=this;var t;t=[null,new No(ag())],this.l7d_1=t}function mg(){return null==ci&&new pg,ci}function gg(){vi=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrixSetLink",this,2);t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),t.n3a("tileMatrixSetLimits",!0),t.o3a(new gu("TileMatrixSetLimits","http://www.opengis.net/wmts/1.0","")),t.o3a(new zu("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("TileMatrixSetLink","http://www.opengis.net/wmts/1.0","")),this.m7d_1=t}function $g(){return null==vi&&new gg,vi}function yg(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,$g().m7d_1),r.l7c_1=n,r.m7c_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(bg)))}function bg(){}function kg(t){t=t===Xr?null:t,this.x6s_1=t,this.y6s_1=!0,this.z6s_1=!0,this.a6t_1=null,this.b6t_1=null}function jg(){return new f_}function xg(){return new Float32Array(2)}function zg(t,n){n=n===Xr?null:n,kg.call(this,n),this.t7d_1=tl(t),this.u7d_1=fo(jg),this.v7d_1=fo(xg),this.w7d_1=new ts(0,0),this.x7d_1=0}function Eg(){return t=Us(Kr(Og)),Og.call(t,1,1,1,1),t;var t}function Cg(t,n,i,e){return function(t,n,i,e,r){return e=e===Xr?255:e,Og.call(r,t/255,n/255,i/255,e/255),r}(t,n,i,e,Us(Kr(Og)))}function Sg(t){return function(t,n){return Og.call(n,t.e4u_1,t.f4u_1,t.g4u_1,t.h4u_1),n}(t,Us(Kr(Og)))}function qg(){wi=this}function Og(t,n,i,e){null==wi&&new qg,e=e===Xr?1:e,this.e4u_1=t,this.f4u_1=n,this.g4u_1=i,this.h4u_1=e}function Ig(){if(mi)return rs();mi=!0,new Ag("NORMAL",0),di=new Ag("BOLD",1),pi=new Ag("ITALIC",2)}function Ag(t,n){Es.call(this,t,n)}function Tg(){return Ig(),di}function Dg(){this.n57_1=Ax().o56_1;var t;t=os(),this.o57_1=t}function Mg(){gi=this,this.h7e_1=16777215}function Ng(){return null==gi&&new Mg,gi}function Rg(t,n){t=t===Xr?null:t,n=n===Xr?null:n,this.i7e_1=t,this.j7e_1=n}function Pg(){return lb().i7g()}function Lg(){Ng(),this.y52_1=1,this.z52_1=1,this.a53_1=0,this.b53_1=0,this.c53_1=new ts(0,0),this.d53_1=_l(),this.e53_1=fl(),this.f53_1=T_(),this.g53_1=T_(),this.h53_1=T_(),this.i53_1=m_(),this.j53_1=null,this.k53_1=null,this.l53_1=null,this.m53_1=null,this.n53_1=null,this.o53_1=null,this.p53_1=null,this.q53_1=!1,this.r53_1=!1,this.s53_1=0,this.t53_1=0;var t;t=os(),this.u53_1=t;var n;n=os(),this.v53_1=n,this.w53_1=new ox(this),this.x53_1=new Rg,this.y53_1=_l(),this.z53_1=fo(Pg)}function Fg(){}function Ug(){$i=this}function Hg(){return null==$i&&new Ug,$i}function Vg(t,n,i,e,r){Hg(),r=r!==Xr&&r,this.c57_1=t,this.d57_1=n,this.e57_1=i,this.f57_1=e,this.g57_1=r,this.h57_1=q_(),this.i57_1=qx().q56_1,this.j57_1=null,this.k57_1=!1,this.l57_1=!1}function Bg(t,n){this.q5c_1=t,this.r5c_1=n;var i;i=os(),this.s5c_1=i,this.t5c_1=Ex().r56_1}function Yg(t,n,i){i=i===Xr?n.length:i,Yo(),Bg.call(this,t,Hr(i,4)),this.z55_1=n}function Wg(t,n,i){i=i===Xr?n.length:i,Iu(),Bg.call(this,t,Hr(i,4)),this.u7h_1=n}function Gg(t,n,i){i=i===Xr?n.length:i,Au(),Bg.call(this,t,Hr(i,2)),this.i56_1=n}function Kg(){if(ki)return rs();ki=!0,yi=new Jg("RGBA_8888",0),bi=new Jg("RGB_565",1)}function Jg(t,n){Es.call(this,t,n)}function Xg(){return Kg(),bi}function Zg(t){t=t===Xr?(Kg(),yi):t,this.x7h_1=t,this.y7h_1=(Qg(),ji),this.z7h_1=(i$(),Ei),this.a7i_1=0,this.b7i_1=0}function Qg(){if(zi)return rs();zi=!0,ji=new t$("BILINEAR",0),xi=new t$("NEAREST_NEIGHBOR",1)}function t$(t,n){Es.call(this,t,n)}function n$(){return Qg(),xi}function i$(){if(Si)return rs();Si=!0,Ei=new e$("CLAMP",0),Ci=new e$("REPEAT",1)}function e$(t,n){Es.call(this,t,n)}function r$(){return i$(),Ci}function s$(){qi=this,this.c7i_1=0,this.d7i_1=1}function o$(){return null==qi&&new s$,qi}function u$(){o$(),this.j5a_1=yx().p56_1,this.k5a_1=!0}function a$(){var t,n;u$.call(this),t=["uniform bool enableTexture;\nuniform mat4 mvpMatrix;\nuniform mat3 texCoordMatrix;\n\nattribute vec4 vertexPoint;\nattribute vec2 vertexTexCoord;\n\nvarying vec2 texCoord;\n\nvoid main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n}","precision mediump float;\n\nuniform bool enablePickMode;\nuniform bool enableTexture;\nuniform vec4 color;\nuniform float opacity;\nuniform sampler2D texSampler;\n\nvarying vec2 texCoord;\n\nvoid main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n}"],this.p5a_1=t,n=["vertexPoint","vertexTexCoord"],this.q5a_1=n,this.r5a_1=!1,this.s5a_1=!1,this.t5a_1=T_(),this.u5a_1=q_(),this.v5a_1=Eg(),this.w5a_1=1,this.x5a_1=jx().f67_1,this.y5a_1=jx().f67_1,this.z5a_1=jx().f67_1,this.a5b_1=jx().f67_1,this.b5b_1=jx().f67_1,this.c5b_1=jx().f67_1,this.d5b_1=jx().f67_1,this.e5b_1=new Float32Array(16)}function h$(){var t,n;u$.call(this),t=["uniform mat4 mvpMatrix;\nuniform mat4 slpMatrix[2];\n\nattribute vec4 vertexPoint;\n\nvarying vec4 sightlinePosition;\nvarying float sightlineDistance;\n\nvoid main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nuniform highp sampler2D depthSampler;\n#else\nprecision mediump float;\nuniform mediump sampler2D depthSampler;\n#endif\n\nuniform float range;\nuniform vec4 color[2];\n\nvarying vec4 sightlinePosition;\nvarying float sightlineDistance;\n\nconst vec3 minusOne = vec3(-1.0, -1.0, -1.0);\nconst vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\nvoid main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n}"],this.k5d_1=t,n=["vertexPoint"],this.l5d_1=n,this.m5d_1=jx().f67_1,this.n5d_1=jx().f67_1,this.o5d_1=jx().f67_1,this.p5d_1=jx().f67_1,this.q5d_1=jx().f67_1,this.r5d_1=new Float32Array(32)}function _$(){var t,n;u$.call(this),t=["uniform bool enableTexture;\nuniform mat4 mvpMatrix;\nuniform mat3 texCoordMatrix[2];\n\nattribute vec4 vertexPoint;\nattribute vec2 vertexTexCoord;\n\nvarying vec2 texCoord;\nvarying vec2 tileCoord;\n\nvoid main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform bool enablePickMode;\nuniform bool enableTexture;\nuniform vec4 color;\nuniform float opacity;\nuniform sampler2D texSampler;\n\nvarying vec2 texCoord;\nvarying vec2 tileCoord;\n\nvoid main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n}"],this.n5f_1=t,n=["vertexPoint","vertexTexCoord"],this.o5f_1=n,this.p5f_1=T_();var i;i=[q_(),q_()],this.q5f_1=i,this.r5f_1=jx().f67_1,this.s5f_1=jx().f67_1,this.t5f_1=jx().f67_1,this.u5f_1=jx().f67_1,this.v5f_1=jx().f67_1,this.w5f_1=jx().f67_1,this.x5f_1=jx().f67_1,this.y5f_1=new Float32Array(16),this.z5f_1=new Float32Array(18),this.a5g_1=Eg(),this.b5g_1=1}function l$(){Oi=this,this.u7i_1=1e-10}function f$(){return null==Oi&&new l$,Oi}function c$(t){f$(),t=t===Xr?Y$():t,kg.call(this),this.r6d_1=t,this.s6d_1=Lh(),this.t6d_1=A$(),this.u6d_1=!1,this.v6d_1=!1,this.w6d_1=null,this.x6d_1=!1,this.y6d_1=10,this.a6e_1=0,this.b6e_1=Eg(),this.c6e_1=Q_(),this.d6e_1=new f_,this.e6e_1=_l()}function v$(){Ii=this,this.f7j_1=6,this.g7j_1=32,this.h7j_1=0,this.i7j_1=1,this.j7j_1=2;var t,n=new Zg;n.z7h_1=r$(),t=n,this.k7j_1=t;var i,e=new Zg;e.z7h_1=r$(),e.y7h_1=n$(),i=e,this.l7j_1=i;var r;r=os(),this.m7j_1=r,this.n7j_1=Y_(),this.o7j_1=_l()}function w$(){return null==Ii&&new v$,Ii}function d$(t,n,i,e){var r;if(w$(),e=e===Xr?Y$():e,c$.call(this,e),this.l7k_1=W_(t),this.m7k_1=n,this.n7k_1=i,this.o7k_1=Bh().s50_1,this.p7k_1=50,this.q7k_1=256,this.r7k_1=0,this.s7k_1=new Float32Array(0),this.t7k_1=0,this.u7k_1=new Object,this.v7k_1=_l(),this.w7k_1=!1,this.x7k_1=0,this.y7k_1=_l(),this.z7k_1=q_(),this.a7l_1=T_(),this.b7l_1=0,this.c7l_1=_l(),!(n>=0&&i>=0))throw r=wx().v4w(wx().q4w_1,"Ellipse","constructor","invalidRadius"),cs(ss(r))}function p$(){}function m$(){Ai=this,this.n7l_1=-.1,this.o7l_1=new $$}function g$(){return null==Ai&&new m$,Ai}function $$(){this.p7l_1=_l(),this.q7l_1=_l(),this.r7l_1=al(),this.s7l_1=T_(),this.t7l_1=fl(),this.u7l_1=0,this.v7l_1=Eg(),this.w7l_1=0}function y$(t,n,i){g$(),n=n===Xr?null:n,i=i===Xr?J$():i,kg.call(this),this.o6e_1=n,this.p6e_1=i,this.q6e_1=W_(t),this.r6e_1=Lh(),this.s6e_1=Bh().s50_1,this.t6e_1=E$(),this.u6e_1=!1,this.v6e_1=null,this.x6e_1=!1}function b$(){}function k$(t,n,i){i=i===Xr?Y$():i,kg.call(this),this.f7m_1=i,this.g7m_1=W_(t),this.h7m_1=n,this.i7m_1=Lh(),this.j7m_1=!1,this.k7m_1=null;var e,r,s=Y$();if(s.i6k_1.s59(new Og(1,0,0,1)),e=s,this.l7m_1=e,this.n7m_1=_l(),this.o7m_1=0,this.p7m_1=Eg(),this.q7m_1=new c_,!(n>=0))throw r=wx().v4w(wx().q4w_1,"OmnidirectionalSightline","constructor","invalidRange"),cs(ss(r))}function j$(){if(Mi)return rs();Mi=!0,Ti=new x$("RELATIVE_TO_GLOBE",0),Di=new x$("RELATIVE_TO_SCREEN",1)}function x$(t,n){Es.call(this,t,n)}function z$(){return j$(),Ti}function E$(){return j$(),Di}function C$(){Ni=this,this.t7m_1=4;var t,n=new Zg;n.y7h_1=n$(),n.z7h_1=r$(),t=n,this.u7m_1=t}function S$(){return null==Ni&&new C$,Ni}function q$(t,n){S$(),n=n===Xr?Y$():n,c$.call(this,n),this.o7n_1=t,this.p7n_1=new Float32Array(0),this.q7n_1=0;var i;i=gs(),this.r7n_1=i;var e;e=gs(),this.s7n_1=e;var r;r=gs(),this.t7n_1=r,this.w7n_1=_l(),this.x7n_1=!1,this.y7n_1=0,this.z7n_1=_l(),this.a7o_1=_l(),this.b7o_1=q_(),this.c7o_1=b_()}function O$(){if(Li)return rs();Li=!0,Ri=new I$("GREAT_CIRCLE",0),Pi=new I$("LINEAR",1),new I$("RHUMB_LINE",2)}function I$(t,n){Es.call(this,t,n)}function A$(){return O$(),Ri}function T$(){return O$(),Pi}function D$(){Fi=this,this.h7o_1=4e5,this.i7o_1=-.03,this.j7o_1=_l(),this.k7o_1=_l(),this.l7o_1=_l(),this.m7o_1=_l(),this.n7o_1=al(),this.o7o_1=T_(),this.p7o_1=T_(),this.q7o_1=fl(),this.r7o_1=fl()}function M$(){return null==Fi&&new D$,Fi}function N$(t,n,i){var e;M$(),n=n===Xr?R$():n,e=!1!==(null==(i=i===Xr?null:i)?null:0===Zo(i))?"Placemark":i,kg.call(this,e),this.j7p_1=n,this.k7p_1=W_(t),this.l7p_1=Lh(),this.m7p_1=null,this.n7p_1=!1,this.o7p_1=null,this.p7p_1=null,this.q7p_1=!1;M$(),this.r7p_1=4e5;M$(),this.s7p_1=6e5,this.t7p_1=!1,this.u7p_1=!1,this.v7p_1=!1,this.w7p_1=Bh().s50_1,this.x7p_1=E$(),this.y7p_1=Bh().s50_1,this.z7p_1=E$(),this.b7q_1=0,this.c7q_1=Eg(),this.d7q_1=0,this.e7q_1=new Float32Array(6),this.f7q_1=0}function R$(){return t=Us(Kr(F$)),F$.call(t,null,new Og(1,1,1,1),R_().j5l(),1,0,!0,!1,!0,J$(),Y$()),t;var t}function P$(){Ui=this}function L$(){return null==Ui&&new P$,Ui}function F$(t,n,i,e,r,s,o,u,a,h){L$(),this.t7o_1=t,this.u7o_1=e,this.v7o_1=r,this.w7o_1=s,this.x7o_1=o,this.y7o_1=u,this.z7o_1=n,this.a7p_1=i,this.b7p_1=a,this.c7p_1=h}function U$(){Hi=this,this.r7q_1=6;var t,n=new Zg;n.z7h_1=r$(),t=n,this.s7q_1=t;var i,e=new Zg;e.z7h_1=r$(),e.y7h_1=n$(),i=e,this.t7q_1=i,this.u7q_1=0,this.v7q_1=1,this.w7q_1=2}function H$(){return null==Hi&&new U$,Hi}function V$(t){this.x7q_1=t,fb.call(this)}function B$(t,n){var i,e;H$(),t===Xr?(e=ku(),rs(),i=e):i=t,t=i,n=n===Xr?Y$():n,c$.call(this,n),this.s7r_1=jo([t]),this.t7r_1=new Float32Array(0),this.u7r_1=0;var r;r=gs(),this.v7r_1=r;var s;s=gs(),this.w7r_1=s;var o;o=gs(),this.x7r_1=o;var u;u=gs(),this.y7r_1=u,this.z7r_1=H$().s6v(),this.a7s_1=H$().s6v(),this.b7s_1=_l(),this.c7s_1=!1,this.d7s_1=0,this.e7s_1=0,this.f7s_1=new V$(this),this.g7s_1=_l(),this.h7s_1=_l(),this.i7s_1=_l(),this.j7s_1=q_(),this.k7s_1=T_(),this.l7s_1=b_(),this.m7s_1=new Float64Array(3),this.n7s_1=new Int32Array(3),this.o7s_1=Ru(3),this.p7s_1=!0,this.q7s_1=0}function Y$(){return t=Us(Kr(W$)),W$.call(t,!0,!0,!1,!0,!0,!1,new Og(1,1,1,1),new Og(1,0,0,1),1,null,null),t;var t}function W$(t,n,i,e,r,s,o,u,a,h,_){this.z6j_1=t,this.a6k_1=n,this.b6k_1=i,this.c6k_1=e,this.d6k_1=r,this.e6k_1=s,this.f6k_1=a,this.g6k_1=h,this.h6k_1=_,this.i6k_1=o,this.j6k_1=u}function G$(t,n){zg.call(this,t,"Surface Image"),this.c65_1=n,this.d65_1=null}function K$(t){return Z$.call(t,function(t){return Zj.call(t,14),t}(Us(Kr(Zj))),new Og(1,1,1,1),R_().l5l(),new Og(0,0,0,1),3,!0,!0,1),t}function J$(){return K$(Us(Kr(Z$)))}function X$(t){return function(t,n){return Z$.call(n,t.r6j_1,Sg(t.s6j_1),M_(t.t6j_1),Sg(t.u6j_1),t.n6j_1,t.o6j_1,t.p6j_1,t.q6j_1),n}(t,Us(Kr(Z$)))}function Z$(t,n,i,e,r,s,o,u){this.n6j_1=r,this.o6j_1=s,this.p6j_1=o,this.q6j_1=u,this.r6j_1=t,this.s6j_1=n,this.t6j_1=i,this.u6j_1=e}function Q$(){Vi=this,this.b7u_1=!0}function ty(){return null==Vi&&new Q$,Vi}function ny(t,n){ty(),kg.call(this,"Tiled Surface Image"),this.b6r_1=t,this.c6r_1=n,this.d6r_1=null,this.e6r_1=1,this.f6r_1=0,this.g6r_1=null,this.h6r_1=!1;var i;i=gs(),this.i6r_1=i,this.j6r_1=new gy(new ts(1200,0)),this.k6r_1=null,this.l6r_1=null,this.m6r_1=null,this.n6r_1=q_()}function iy(t){this.f7u_1=t,this.c7u_1=Bs().v3h(),this.d7u_1=0,this.e7u_1=!1}function ey(t,n){this.k5y_1=t,this.l5y_1=n;var i;io(),i=ro(60,eo()),this.m5y_1=i;var e;e=os(),this.n5y_1=e}function ry(t){this.u6q_1=t,this.v6q_1=null}function sy(){return new f_}function oy(){return new Float32Array(2)}function uy(t){this.s60_1=t,this.t60_1=_l(),this.u60_1=fo(sy),this.v60_1=fo(oy),this.w60_1=new ts(0,0),this.x60_1=0}function ay(){Bi=this,this.i7u_1=12}function hy(){return null==Bi&&new ay,Bi}function _y(){hy(),this.j7u_1=0;var t,n=this.j7u_1;t=ms(Array(n),null),this.k7u_1=t}function ly(t,n,i){var e;if(this.c61_1=t,this.d61_1=n,this.e61_1=i,!(this.e61_1.j4w_1>0&&this.e61_1.k4w_1>0))throw e=wx().v4w(wx().q4w_1,"Level","constructor","The tile delta is zero"),cs(ss(e));this.f61_1=es(this.c61_1.s62_1*this.c61_1.p62_1.v5e()/this.e61_1.k4w_1),this.g61_1=es(this.c61_1.t62_1*this.c61_1.p62_1.w5e()/this.e61_1.j4w_1),this.h61_1=this.c61_1.s62_1,this.i61_1=this.c61_1.t62_1}function fy(t,n,i,e,r,s,o){var u,a,h;if(vy.call(o),!(i.j4w_1>0&&i.k4w_1>0))throw u=wx().v4w(wx().q4w_1,"LevelSet","constructor","invalidTileDelta"),cs(ss(u));if(!(e>=0))throw a=wx().v4w(wx().q4w_1,"LevelSet","constructor","invalidNumLevels"),cs(ss(a));if(!(r>=1&&s>=1))throw h=wx().v4w(wx().q4w_1,"LevelSet","constructor","invalidWidthOrHeight"),cs(ss(h));o.p62_1=t,o.q62_1=n,o.r62_1=i,o.s62_1=r,o.t62_1=s;for(var _=o,l=0,f=e,c=ms(Array(f),null);l=0))throw o=wx().v4w(wx().q4w_1,"LruMemoryCache","constructor","invalidCapacity"),cs(ss(o));var u,a=this.a5h_1,h=this.b5h_1;if(!(new ts(0,0).w(h)<=0&&h.w(a)<0))throw u=wx().v4w(wx().q4w_1,"LruMemoryCache","constructor","The specified low-water value is greater than or equal to the capacity, or less than 1"),cs(ss(u))}function $y(){return Wi||(Wi=!0,Yi=Vs([Hs("errorReadingProgramSource","Error reading program sources"),Hs("exceptionParsingText","Exception parsing text"),Hs("invalidBitmap","The bitmap is recycled"),Hs("invalidCapacity","The capacity is less than 1"),Hs("invalidCount","The count is invalid"),Hs("invalidClipDistance","The clip distance is invalid"),Hs("invalidFieldOfView","The field of view is invalid"),Hs("invalidHeight","The height is invalid"),Hs("invalidIndex","The index is invalid"),Hs("invalidNumIntervals","The number of intervals is invalid"),Hs("invalidNumLevels","The number of levels is invalid"),Hs("invalidRadius","The radius is invalid"),Hs("invalidRange","The range is invalid"),Hs("invalidResolution","The resolution is invalid"),Hs("invalidStride","The stride is invalid"),Hs("invalidTileDelta","The tile delta is invalid"),Hs("invalidWidth","The width is invalid"),Hs("invalidWidthOrHeight","The width or the height is invalid"),Hs("missingArray","The array insufficient length"),Hs("missingLayerNames","The layer names are empty"),Hs("singularMatrix","The matrix cannot be inverted")])),Yi}function yy(){}function by(){}function ky(t,n){this.x6v_1=t,this.y6v_1=n}function jy(){Gi=this}function xy(){return null==Gi&&new jy,Gi}function zy(){Ki=this}function Ey(){return null==Ki&&new zy,Ki}function Cy(t,n,i,e){Ey(),uy.call(this,t),this.p61_1=n,this.q61_1=i,this.r61_1=e,this.s61_1=this.p61_1.d61_1.toString()+new Qs(Uu(46))+this.q61_1+new Qs(Uu(46))+this.r61_1;var r,s=Hh(this.p61_1.e61_1.k4w_1)/this.p61_1.h61_1,o=Hh(t.z5i());r=Math.cos(o),this.t61_1=s*r,this.u61_1=_l()}function Sy(t,n,i,e){if(n=n===Xr?t.rb():n,i=i===Xr?t.rb()-1|0:i,e=e===Xr||e,i<0)return t.m8(0,Uu(49)),e&&t.og(n),Hs(t.toString(),!0);var r=t.sb(i);return Rs(new Qs(r),new Qs(Uu(46)))?Sy(t,n,i-1|0,e):Rs(new Qs(r),new Qs(Uu(57)))?(t.ng(i,Uu(48)),Sy(t,n,i-1|0,e)):(t.ng(i,Bu(r,1)),Hs(t.toString(),!1))}function qy(t,n){t.b7v_1=n,t.d7v_1="e"+t.b7v_1}function Oy(t,n){var i=n;i>t.c7v_1.length&&(i=t.c7v_1.length);var e=new to(Yu(t.c7v_1,xs(0,i)));if(e.rb()===t.c7v_1.length)return e.toString();var r=Zs(t.c7v_1,e.rb());if(Rs(new Qs(r),new Qs(Uu(46)))){if((e.rb()+1|0)>=t.c7v_1.length)return e.toString();r=Zs(t.c7v_1,e.rb()+1|0)}if(Gu("56789",r)){var s=Sy(e),o=s.d4();if(!s.e4())return o;qy(t,t.b7v_1+1|0);var u=Wu(o,Uu(46)),a=new to(o);return-1===u?o:a.og(u).m8(u-1|0,Uu(46)).toString()}return e.toString()}function Iy(t){this.z7u_1=t,this.b7v_1=0;var n,i=this.z7u_1,e=Math.abs(i);if(n=Br(e),qy(this,Ms(n)),this.b7v_1<0){qy(this,this.b7v_1-1|0)}var r,s=this.b7v_1;r=Math.pow(10,s),this.a7v_1=e/r,this.z7u_1<0&&(this.a7v_1=-this.a7v_1),this.c7v_1=this.a7v_1.toString(),this.d7v_1="e"+this.b7v_1}function Ay(){if(Qi)return rs();Qi=!0,Ji=new Ry("FLAGS",0),Xi=new Ry("LENGTH",1),Zi=new Ry("FRACTION",2)}function Ty(t){return vo("englishMonthNames",1,co,(function(t){return Ty(t)}),null),t.f7v_1.s()}function Dy(t){return vo("englishWeekDayNames",1,co,(function(t){return Dy(t)}),null),t.g7v_1.s()}function My(){return Ju("January February March April May June July August September October November December",Ku([Uu(32)]))}function Ny(){return Ju("Monday Tuesday Wednesday Thursday Friday Saturday Sunday",Ku([Uu(32)]))}function Ry(t,n){Es.call(this,t,n)}function Py(t){return t.j7v_1.equals(ib())}function Ly(t,n){t.h7v_1.y7v(n)}function Fy(t){return t.h7v_1.z7v(t.i7v_1)}function Uy(t,n){var i=t.h7v_1.j4();Gy(t);var e,r=i;if(Rs(new Qs(r),new Qs(Uu(72))))e=ab("%02d",[Fy(t).e3j()]);else if(Rs(new Qs(r),new Qs(Uu(107))))e=ab("%d",[Fy(t).e3j()]);else if(Rs(new Qs(r),new Qs(Uu(73)))||Rs(new Qs(r),new Qs(Uu(108)))){var s=Fy(t).e3j();s>12&&(s=s-12|0),e=Rs(new Qs(i),new Qs(Uu(73)))?ab("%02d",[s]):s.toString()}else if(Rs(new Qs(r),new Qs(Uu(77))))e=ab("%02d",[Fy(t).f3j()]);else if(Rs(new Qs(r),new Qs(Uu(83))))e=ab("%02d",[Fy(t).g3j()]);else if(Rs(new Qs(r),new Qs(Uu(76))))e=ab("%03d",[Fy(t).h3j()/1e6|0]);else if(Rs(new Qs(r),new Qs(Uu(78))))e=ab("%09d",[Fy(t).h3j()]);else if(Rs(new Qs(r),new Qs(Uu(112))))e=n?Fy(t).e3j()>12?"PM":"AM":Fy(t).e3j()>12?"pm":"am";else if(Rs(new Qs(r),new Qs(Uu(122)))){var o=fs().j3j();e=vu(Zu(o,Xu(Fy(t),o)).toString(),":","")}else if(Rs(new Qs(r),new Qs(Uu(90)))){var u=fs().j3j();e=Zu(u,Xu(Fy(t),u)).toString()}else if(Rs(new Qs(r),new Qs(Uu(115)))){var a=fs().j3j();e=Xu(Fy(t),a).u3i().toString()}else if(Rs(new Qs(r),new Qs(Uu(81)))){var h=fs().j3j();e=Xu(Fy(t),h).w3i().toString()}else if(Rs(new Qs(r),new Qs(Uu(66))))e=nb().d7w(ta(Fy(t).b3j()));else if(Rs(new Qs(r),new Qs(Uu(98)))||Rs(new Qs(r),new Qs(Uu(104))))e=nb().c7w(ta(Fy(t).b3j()));else if(Rs(new Qs(r),new Qs(Uu(101))))e=Fy(t).d3i().toString();else if(Rs(new Qs(r),new Qs(Uu(100))))e=ab("%02s",[Fy(t).d3i()]);else if(Rs(new Qs(r),new Qs(Uu(109))))e=ab("%02s",[ta(Fy(t).b3j())]);else if(Rs(new Qs(r),new Qs(Uu(65))))e=nb().b7w(Fy(t).c3j());else if(Rs(new Qs(r),new Qs(Uu(97))))e=nb().a7w(Fy(t).c3j());else if(Rs(new Qs(r),new Qs(Uu(121))))e=Qu(Fy(t).b3i().toString(),2);else if(Rs(new Qs(r),new Qs(Uu(89))))e=ab("%04d",[Fy(t).b3i()]);else if(Rs(new Qs(r),new Qs(Uu(106))))e=ab("%03d",[Fy(t).d3j()]);else if(Rs(new Qs(r),new Qs(Uu(82))))e=ab("%1!tH:%1!tM",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(114))))e=ab(n?"%1!tI:%1!tM:%1!tS %1!Tp":"%1!tI:%1!tM:%1!tS %1!tp",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(84))))e=ab("%tH:%1!tM:%1!tS",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(68))))e=ab("%tm/%1!td/%1!ty",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(70))))e=ab("%tY-%1!tm-%1!td",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(99))))e=ab("%ta %1!tb %1!td %1!tT %1!tZ %1!tY",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(79)))){var _=fs().j3j(),l=Zu(_,Xu(Fy(t),_)).toString();e=ab("%tFT%1!tT%s",[Fy(t),l])}else Rs(new Qs(r),new Qs(Uu(35)))?e=ab("%tY%1!tm%1!td%1!tH%1!tM%1!tS",[Xu(Fy(t),fs().m3i_1)]):Ly(t,"unknown time field specificator: 't"+new Qs(i)+"'");Jy(t,e)}function Hy(t){Gy(t);var n=Xs(t.h7v_1.f7w(t.i7v_1));t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&n.w(new ts(0,0))>0?Ky(t,n.toString(),"+"):Jy(t,t.p7v_1?"+"+ss(n):ss(n))}function Vy(t,n){Gy(t);var i=Xs(t.h7v_1.f7w(t.i7v_1));t.p7v_1&&Ly(t,"'+' is incompatible with hex format");var e=na(i,16);Jy(t,n?e.toUpperCase():e.toLowerCase())}function By(t){Gy(t);var n=Xs(t.h7v_1.f7w(t.i7v_1));t.p7v_1&&Ly(t,"'+' is incompatible with oct format"),Jy(t,na(n,8))}function Yy(t){Gy(t),Jy(t,Co(t.h7v_1.g7w(t.i7v_1)))}function Wy(t,n){n&&(t.q7v_1=!0);var i=t.o7v_1;if(Zo(i)>0){switch(t.j7v_1.l6_1){case 1:t.k7v_1=ia(t.o7v_1.toString());break;case 2:t.l7v_1=ia(t.o7v_1.toString());break;case 0:Ly(t,"can't parse format specifier (error 7)")}t.o7v_1.mg()}}function Gy(t,n,i){return Wy(t,n=n===Xr||n)}function Ky(t,n,i){var e=n.length+i.length|0;if(t.k7v_1<0||t.k7v_10))break t;o.k7(t.n7v_1)}o.l8(n);t:for(;;){var a=s;if(s=a-1|0,!(a>0))break t;o.k7(t.n7v_1)}t.h7v_1.h7w(o.toString())}}function Jy(t,n,i,e){return Ky(t,n,i=i===Xr?"":i)}function Xy(t){Gy(t);var n=Js(t.h7v_1.f7w(t.i7v_1)),i=function(t,n,i){i=i===Xr?-1:i;var e=t,r=So(),s=e;if(Math.abs(s)>=1){var o=0===i?Hu(e):Xs(e);r.k8(o),e-=o.ve()}else r.l8(e<0?"-0":"0");var u=i<0?n<0?6:(n-r.rb()|0)-1|0:i;0!==u&&r.k7(Uu(46));var a=10*e;t:for(;;){var h=u;if(u=h-1|0,!(h>0))break t;var _=Ms(a);r.k8(Vu(_)),a=10*(a-_)}var l=Ms(a);return Vu(l)<5?r.toString():Sy(r,Xr,Xr,!1).b4_1}(n,t.k7v_1,t.l7v_1);t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&n>0?Ky(t,i,"+"):Jy(t,t.p7v_1?"+"+i:i)}function Zy(t,n){Gy(t);var i,e,r,s=Js(t.h7v_1.f7w(t.i7v_1)),o=(i=s,e=t.k7v_1,r=(r=t.l7v_1)===Xr?-1:r,new Iy(i).e7v(e,r)),u=n?o.toUpperCase():o.toLowerCase();t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&s>0?Ky(t,u,"+"):Jy(t,t.p7v_1?"+"+u:u)}function Qy(t,n){Gy(t);var i=t.h7v_1.f7w(t.i7v_1),e=ss(i),r=n?e.toUpperCase():e.toLowerCase();t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&Js(i)>0?Ky(t,r,"+"):Jy(t,t.p7v_1?"+"+r:r)}function tb(){te=this,this.f7v_1=fo(My),this.g7v_1=fo(Ny)}function nb(){return null==te&&new tb,te}function ib(){return Ay(),Ji}function eb(){return Ay(),Xi}function rb(){return Ay(),Zi}function sb(t,n){nb(),this.h7v_1=t,this.i7v_1=n,this.j7v_1=ib(),this.k7v_1=-1,this.l7v_1=-1,this.m7v_1=(ob(),ie),this.n7v_1=Uu(32),this.o7v_1=So(),this.p7v_1=!1,this.q7v_1=!1,this.r7v_1=!1}function ob(){if(re)return rs();re=!0,ne=new ub("LEFT",0),ie=new ub("RIGHT",1),ee=new ub("CENTER",2)}function ub(t,n){Es.call(this,t,n)}function ab(t,n){return new hb(t,n).k7w().toString()}function hb(t,n){this.s7v_1=t,this.t7v_1=n,this.u7v_1=0,this.v7v_1=-1,this.w7v_1=So(),this.x7v_1=0}function _b(){se=this,this.k7e_1=0,this.l7e_1=1,this.m7e_1=100800,this.n7e_1=100801,this.o7e_1="1.3",this.p7e_1="GLU_EXT_object_space_tess ",this.q7e_1=100900,this.r7e_1=100901,this.s7e_1=100902,this.t7e_1=100904,this.u7e_1=100100,this.v7e_1=100101,this.w7e_1=100102,this.x7e_1=100103,this.y7e_1=100104,this.z7e_1=100105,this.a7f_1=100106,this.b7f_1=100107,this.c7f_1=100108,this.d7f_1=100109,this.e7f_1=100110,this.f7f_1=100111,this.g7f_1=100120,this.h7f_1=100121,this.i7f_1=100122,this.j7f_1=100123,this.k7f_1=100124,this.l7f_1=100140,this.m7f_1=100141,this.n7f_1=100142,this.o7f_1=100151,this.p7f_1=100152,this.q7f_1=100153,this.r7f_1=100154,this.s7f_1=100155,this.t7f_1=100156,this.u7f_1=100157,this.v7f_1=100158,this.w7f_1=100151,this.x7f_1=100152,this.y7f_1=100153,this.z7f_1=100154,this.a7g_1=100155,this.b7g_1=100156,this.c7g_1=100130,this.d7g_1=100131,this.e7g_1=100132,this.f7g_1=100133,this.g7g_1=100134,this.h7g_1=1e150}function lb(){return null==se&&new _b,se}function fb(){}function cb(){var t;oe=this,t=["invalid enumerant","invalid value","out of memory","","invalid operation"],this.m7w_1=t}function vb(t){this.c7y_1=t,this.d7y_1=null,this.e7y_1=0,this.f7y_1=!1,this.g7y_1=!1,this.h7y_1=!1,this.i7y_1=!1}function wb(){this.j7y_1=new Float64Array(3),this.k7y_1=null}function db(){ue=this}function pb(){return null==ue&&new db,ue}function mb(t,n,i){pb(),this.o7y_1=t,this.p7y_1=n,this.q7y_1=i}function gb(t){t=t===Xr?null:t,this.s7y_1=t,this.t7y_1=this,this.u7y_1=this}function $b(){this.c7z_1=null,this.d7z_1=null,this.e7z_1=null,this.f7z_1=null,this.g7z_1=null,this.h7z_1=!1,this.i7z_1=!1}function yb(t){this.j7z_1=t,this.k7z_1=null,this.l7z_1=null,this.m7z_1=null,this.n7z_1=null,this.o7z_1=null,this.p7z_1=null,this.q7z_1=null,this.r7z_1=0}function bb(){this.s7z_1=new qb,this.t7z_1=new $b,this.u7z_1=new yb(!0),this.v7z_1=new yb(!1)}function kb(t){var n=t.s7w_1;null==n||(Tb().w7z(n),rs());var i=t;dk(),i.q7w_1=0,t.r7w_1=null,t.s7w_1=null}function jb(t,n){t.q7w_1!==n&&function(t,n){for(;t.q7w_1!==n;)if(t.q7w_10))throw u=wx().v4w(wx().q4w_1,"Font","constructor","invalidSize"),cs(ss(u))}function Qj(){Ir=this}function tx(){return null==Ir&&new Qj,Ir}function nx(t,n,i,e){this.u8n_1=t,this.v8n_1=n,this.w8n_1=i,Jo.call(this,e)}function ix(t,n,i){this.m8o_1=t,this.n8o_1=n,Jo.call(this,i)}function ex(t,n,i){this.x8o_1=t,this.y8o_1=n,Jo.call(this,i)}function rx(t,n,i,e,r){return function(s){var o=t.a8p();return null==o||n._v?(i.c8o(t,e,r),rs()):(n._v=!0,wa(i.e4x_1,Xr,Xr,function(t,n,i){var e=new ex(t,n,i),r=function(t,n){return e.n1f(t,n)};return r.$arity=1,r}(o,r,null)),rs()),null!=o&&(URL.revokeObjectURL(r.src),rs()),rs()}}function sx(t,n){var i,e;tx(),t=t===Xr?tx().m8c():t,n===Xr?(e=.75*t.ve(),rs(),i=Xs(e)):i=n,n=i,gy.call(this,t,n),this.c4x_1=new ts(0,0),this.d4x_1=16,this.e4x_1=$a();var r;io(),r=ro(60,eo()),this.f4x_1=new ey(3,r);var s;s=js(),this.g4x_1=s}function ox(t){this.r7g_1=t,this.s7g_1=.15}function ux(t){Vg.call(this,t.width,t.height,Hk(),Vk()),this.w8p_1=t,this.x8p_1=!!rj(t.width)&&rj(t.height),this.h57_1.q5k()}function ax(){Ar=this}function hx(){return null==Ar&&new ax,Ar}function _x(){}function lx(t){hx(),ry.call(this,t)}function fx(t){Vg.call(this,t.width,t.height,Hk(),Vk()),this.k8q_1=t,this.l8q_1=!!rj(t.width)&&rj(t.height),this.h57_1.q5k()}function cx(t,n,i,e){Cy.call(this,t,n,i,e),this.d6q_1=null,this.e6q_1=null}function vx(){Tr=this,this.q4w_1=1,this.r4w_1=2,this.s4w_1=3,this.t4w_1=4,this.u4w_1=this.q4w_1}function wx(){return null==Tr&&new vx,Tr}function dx(){_y.call(this)}function px(t){this.y8p_1=t,this.z8p_1=!1}function mx(){Dr=this,this.p8q_1=new gx}function gx(t){null==Dr&&new mx,t=t===Xr?null:t,this.n8q_1=t}function $x(){Mr=this,this.p56_1=new bx}function yx(){return null==Mr&&new $x,Mr}function bx(t){yx(),t=t===Xr?null:t,this.e7i_1=t}function kx(){Nr=this,this.f67_1=new xx}function jx(){return null==Nr&&new kx,Nr}function xx(t){jx(),t=t===Xr?null:t,this.o8q_1=t}function zx(){Rr=this,this.r56_1=new Cx}function Ex(){return null==Rr&&new zx,Rr}function Cx(t){Ex(),t=t===Xr?null:t,this.i7h_1=t}function Sx(){Pr=this,this.q56_1=new Ox}function qx(){return null==Pr&&new Sx,Pr}function Ox(t){qx(),t=t===Xr?null:t,this.b7h_1=t}function Ix(){Lr=this,this.o56_1=new Tx}function Ax(){return null==Lr&&new Ix,Lr}function Tx(t){Ax(),t=t===Xr?null:t,this.b7e_1=t}function Dx(){return Ur||(Ur=!0,Fr=Ju(window.navigator.language,Ku([Uu(45)])).h(0),Ju(window.navigator.language,Ku([Uu(45)])).h(1)),Fr}return Zr(Ea,"images",Jr),Zr(Sa,"files",Jr),Zr(qa,"GoToAnimator",is),Zr(Oa,"Companion",Jr),Zr(Aa,"PickedObject",is),Zr(Ma,"PickedObjectList",is),Zr(Fa,"Event",ls),Zr(Na,"RequestRedraw",Jr,Xr,[Fa]),Zr(Ra,"UnmarkResourceAbsent",is,Xr,[Fa]),Zr(Pa,"Companion",Jr,Xr,Xr,Xr,Xr,[1]),Zr(Ua,"WorldWind",is),Zr(Ha,"Companion",Jr),Zr(Oh,"DrawableTerrain",ls),Zr(Ba,"BasicDrawableTerrain",is,Xr,[Oh]),Zr(Ya,"DrawContext",is),Zr(Wa,"Companion",Jr),Zr(Ka,"DrawElements",is),Zr(Ja,"VertexAttrib",is),Zr(Xa,"DrawShapeState",is),Zr(Qa,"DrawableGroup",is,Es),Zr(ih,"DrawableLambda",is),Zr(eh,"Companion",Jr),Zr(sh,"DrawableLines",is),Zr(oh,"Companion",Jr),Zr(ah,"Entry",is),Zr(hh,"sam$kotlin_Comparator$0",is),Zr(lh,"DrawableQueue",is),Zr(fh,"Companion",Jr),Zr(vh,"DrawableScreenTexture",is),Zr(wh,"Companion",Jr),Zr(ph,"DrawableShape",is),Zr(mh,"Companion",Jr),Zr($h,"DrawableSightline",is),Zr(yh,"Companion",Jr),Zr(kh,"DrawableSurfaceColor",is),Zr(jh,"Companion",Jr),Zr(zh,"DrawableSurfaceShape",is),Zr(Eh,"Companion",Jr),Zr(qh,"DrawableSurfaceTexture",is),Zr(Ih,"Companion",Jr),Zr(Th,"DrawableTessellation",is),Zr(Dh,"BasicFrameController",is),Zr(Mh,"Companion",Jr),Zr(Nh,"Frame",is),Zr(Ph,"AltitudeMode",is,Es),Zr(Vh,"Companion",Jr),Zr(o_,"Angle",is,Xr,[Ps]),Zr(__,"Companion",Jr),Zr(f_,"BoundingBox",is),Zr(c_,"BoundingSphere",is),Zr(v_,"Camera",is),Zr(w_,"Companion",Jr),Zr(p_,"Ellipsoid",is),Zr(g_,"Frustum",is),Zr(y_,"Line",is),Zr(k_,"Companion",Jr),Zr(x_,"Location",is),Zr(E_,"LookAt",is),Zr(C_,"Companion",Jr),Zr(O_,"Matrix3",is),Zr(I_,"Companion",Jr),Zr(D_,"Matrix4",is),Zr(N_,"Companion",Jr),Zr(P_,"Offset",is),Zr(L_,"OffsetMode",is,Es),Zr(U_,"Companion",Jr),Zr(B_,"Plane",is),Zr(G_,"Companion",Jr),Zr(J_,"Position",is,x_),Zr(Z_,"Range",is),Zr(nl,"Companion",Jr),Zr(el,"Sector",is),Zr(rl,"TileMatrix",is),Zr(sl,"Companion",Jr),Zr(ul,"TileMatrixSet",is),Zr(hl,"Vec2",is),Zr(ll,"Vec3",is,hl),Zr(cl,"Viewport",is),Zr(wl,"Hemisphere",is,Es),Zr(ml,"Companion",Jr),Zr($l,"MGRSCoord",is),Zr(yl,"Companion",Jr),Zr(zl,"MGRSCoordConverter",is),Zr(El,"Companion",Jr),Zr(Sl,"PolarCoordConverter",is),Zr(ql,"Companion",Jr),Zr(Il,"TMCoord",is),Zr(Al,"Companion",Jr),Zr(Dl,"TMCoordConverter",is),Zr(Ml,"Companion",Jr),Zr(Rl,"UPSCoord",is),Zr(Pl,"Companion",Jr),Zr(Fl,"UPSCoordConverter",is),Zr(Ul,"Companion",Jr),Zr(Vl,"UTMCoord",is),Zr(Bl,"Companion",Jr),Zr(Wl,"UTMCoordConverter",is),Zr(Kl,"GestureState",is,Es),Zr(rf,"SelectDragCallback",ls),Zr(sf,"Globe",is),Zr(of,"ElevationModel",is),Zr(uf,"AbstractElevationCoverage",is),Zr(af,"Companion",Jr),Zr(_f,"TileBlock",is),Zr(lf,"AbstractTiledElevationCoverage",is,uf),Zr(Vj,"TiledElevationCoverage",is,lf),Zr(lv,"WmsElevationCoverage",is,Vj),Zr(ff,"BasicElevationCoverage",is,lv),Zr(cf,"Wgs84Projection",is),Zr(vf,"sam$kotlin_Comparator$0",is),Zr(df,"BasicTerrain",is),Zr(pf,"BasicTessellator",is),Zr(mf,"Companion",Jr),Zr(uy,"AbstractTile",is),Zr(Cy,"Tile",is,uy),Zr($f,"TerrainTile",is,Cy),Zr(yf,"AbstractLayer",is),Zr(jf,"RenderableLayer",is,yf),Zr(bf,"BackgroundLayer",is,jf),Zr(kf,"LayerList",is),Zr(xf,"ShowTessellationLayer",is,yf),Zr(Ef,"FragMode",is,Es),Zr(u$,"AbstractShaderProgram",is),Zr(Sf,"AbstractAtmosphereProgram",is,u$),Zr(qf,"Companion",Jr),Zr(If,"AtmosphereLayer",is,yf),Zr(Af,"Companion",Jr),Zr(Df,"DrawableGroundAtmosphere",is),Zr(Mf,"Companion",Jr),Zr(Rf,"DrawableSkyAtmosphere",is),Zr(Pf,"GroundProgram",is,Sf),Zr(Lf,"SkyProgram",is,Sf),Zr(Ff,"Companion",Jr),Zr(Gf,"AbstractGraticuleLayer",is,yf),Zr(Kf,"AbstractGraticuleTile",is,uy),Zr(Jf,"Companion",Jr),Zr(Zf,"AbstractUTMGraticuleLayer",is,Gf),Zr(Qf,"Companion",Jr),Zr(nc,"GraticuleRenderingParams",is,Xr,[$o]),Zr(sc,"GraticuleSupport",is),Zr(uc,"Companion",Jr),Zr(hc,"GridElement",is),Zr(vc,"Companion",Jr),Zr(dc,"MGRSGraticuleLayer",is,Zf),Zr(gc,"Companion",Jr),Zr(yc,"MGRSGridZone",is,Kf),Zr(bc,"Companion",Jr),Zr(jc,"MGRSOverview",is,Kf),Zr(xc,"UTMExtremes",is),Zr(Ec,"Companion",Jr),Zr(Sc,"UTMMetricScaleSupport",is),Zr(Dc,"UTMSquareSector",is,Kf),Zr(qc,"UTMSquareGrid",is,Dc),Zr(Ac,"Companion",Jr),Zr(Rc,"UTMSquareZone",is,Dc),Zr(Pc,"Companion",Jr),Zr(by,"ResourcePostprocessor",ls,Xr,Xr,Xr,Xr,[1]),Zr(cx,"ImageTile",is,Cy,[Cy,by],Xr,Xr,[1]),Zr(Fc,"AbstractMercatorImageTile",is,cx,Xr,Xr,Xr,[1]),Zr(Uc,"Companion",Jr),Zr(Vc,"MercatorSector",is,el),Zr(Bc,Xr,is),Zr(Bj,"AbstractTiledImageLayer",is,jf),Zr(Yj,"TiledImageLayer",is,Bj),Zr(Yc,"MercatorTiledImageLayer",is,Yj),Zr(Fg,"Renderable",ls),Zr(kg,"AbstractRenderable",is,Xr,[Fg]),Zr(ny,"TiledSurfaceImage",is,kg),Zr(Wc,"MercatorTiledSurfaceImage",is,ny),Zr(Gc,"Type",is,Es),Zr(Kc,"GoogleLayer",is,Yc),Zr(Jc,"$serializer",Jr,Xr,[Do]),Zr(Qc,"Companion",Jr),Zr(nv,"$serializer",Jr,Xr,[Do]),Zr(rv,"StarMetadata",is,Xr,Xr,Xr,{0:Xc}),Zr(sv,"StarData",is,Xr,Xr,Xr,{0:iv}),Zr(ov,"StarFieldLayer",is,yf),Zr(uv,"StarFieldProgram",is,u$),Zr(av,Xr,is),Zr(hv,"Companion",Jr),Zr(fv,"WmsLayerConfig",is),Zr(dv,Xr,is,Yj),Zr(pv,"WmsLayerFactory$retrieveWmsCapabilities$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr($v,"$createLayerCOROUTINE$0",is,Jo),Zr(yv,"$retrieveWmsCapabilitiesCOROUTINE$1",is,Jo),Zr(bv,"WmsLayerFactory",Jr,Xr,Xr,Xr,Xr,[2,1]),Zr(xv,"WmsTileFactory",is),Zr(Ev,"CompatibleTileMatrixSet",is),Zr(Sv,Xr,is,Yj),Zr(qv,"WmtsLayerFactory$retrieveWmtsCapabilities$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(Iv,"$createLayerCOROUTINE$2",is,Jo),Zr(Av,"$retrieveWmtsCapabilitiesCOROUTINE$3",is,Jo),Zr(Tv,"WmtsLayerFactory",Jr,Xr,Xr,Xr,Xr,[2,1]),Zr(Mv,"Companion",Jr),Zr(Rv,"WmtsTileFactory",is),Zr(Pv,"$serializer",Jr,Xr,[Do]),Zr(Uv,"WmsAttribution",is,Xr,Xr,Xr,{0:Lv}),Zr(Hv,"$serializer",Jr,Xr,[Do]),Zr(Yv,"WmsAuthorityUrl",is,Xr,Xr,Xr,{0:Vv}),Zr(Wv,"$serializer",Jr,Xr,[Do]),Zr(Jv,"WmsBoundingBox",is,Xr,Xr,Xr,{0:Gv}),Zr(Xv,"Companion",Jr),Zr(Zv,"$serializer",Jr,Xr,[Do]),Zr(nw,"WmsCapabilities",is,Xr,Xr,Xr,{0:Qv}),Zr(iw,"Companion",Jr),Zr(rw,"$serializer",Jr,Xr,[Do]),Zr(uw,"WmsCapability",is,Xr,Xr,Xr,{0:sw}),Zr(aw,"$serializer",Jr,Xr,[Do]),Zr(lw,"WmsContactAddress",is,Xr,Xr,Xr,{0:hw}),Zr(fw,"$serializer",Jr,Xr,[Do]),Zr(ww,"WmsContactInformation",is,Xr,Xr,Xr,{0:cw}),Zr(dw,"$serializer",Jr,Xr,[Do]),Zr(gw,"WmsContactPersonPrimary",is,Xr,Xr,Xr,{0:pw}),Zr($w,"$serializer",Jr,Xr,[Do]),Zr(kw,"$serializer",Jr,Xr,[Do]),Zr(zw,"WmsHttp",is,Xr,Xr,Xr,{0:yw}),Zr(Ew,"WmsHttpProtocol",is,Xr,Xr,Xr,{0:jw}),Zr(Cw,"$serializer",Jr,Xr,[Do]),Zr(Ow,"WmsDcpType",is,Xr,Xr,Xr,{0:Sw}),Zr(Iw,"$serializer",Jr,Xr,[Do]),Zr(Dw,"WmsDimension",is,Xr,Xr,Xr,{0:Aw}),Zr(Mw,"Companion",Jr),Zr(Rw,"$serializer",Jr,Xr,[Do]),Zr(Fw,"WmsException",is,Xr,Xr,Xr,{0:Pw}),Zr(Uw,"$serializer",Jr,Xr,[Do]),Zr(Bw,"WmsGeographicBoundingBox",is,Xr,Xr,Xr,{0:Hw}),Zr(Yw,"$serializer",Jr,Xr,[Do]),Zr(Kw,"WmsIdentifier",is,Xr,Xr,Xr,{0:Ww}),Zr(Jw,"Companion",Jr),Zr(Zw,"$serializer",Jr,Xr,[Do]),Zr(nd,"WmsInfoUrl",is,Xr,Xr,Xr,{0:Qw}),Zr(id,"Companion",Jr),Zr(rd,"$serializer",Jr,Xr,[Do]),Zr(ud,"WmsLayer",is,Xr,Xr,Xr,{0:sd}),Zr(ad,"Companion",Jr),Zr(_d,"$serializer",Jr,Xr,[Do]),Zr(cd,"WmsLogoUrl",is,Xr,Xr,Xr,{0:ld}),Zr(vd,"Companion",Jr),Zr(dd,"$serializer",Jr,Xr,[Do]),Zr(gd,"WmsMetadataUrl",is,Xr,Xr,Xr,{0:pd}),Zr($d,"$serializer",Jr,Xr,[Do]),Zr(kd,"WmsOnlineResource",is,Xr,Xr,Xr,{0:yd}),Zr(jd,"$serializer",Jr,Xr,[Do]),Zr(Ed,"WmsRequest",is,Xr,Xr,Xr,{0:xd}),Zr(Cd,"Companion",Jr),Zr(qd,"$serializer",Jr,Xr,[Do]),Zr(Ad,"WmsRequestOperation",is,Xr,Xr,Xr,{0:Od}),Zr(Td,"Companion",Jr),Zr(Md,"$serializer",Jr,Xr,[Do]),Zr(Pd,"WmsService",is,Xr,Xr,Xr,{0:Nd}),Zr(Ld,"Companion",Jr),Zr(Ud,"$serializer",Jr,Xr,[Do]),Zr(Bd,"WmsStyle",is,Xr,Xr,Xr,{0:Hd}),Zr(Yd,"Companion",Jr),Zr(Gd,"$serializer",Jr,Xr,[Do]),Zr(Xd,"OwsAddress",is,Xr,Xr,Xr,{0:Kd}),Zr(Zd,"$serializer",Jr,Xr,[Do]),Zr(np,"OwsBoundingBox",is,Xr,Xr,Xr,{0:Qd}),Zr(ip,"Companion",Jr),Zr(rp,"$serializer",Jr,Xr,[Do]),Zr(up,"OwsConstraint",is,Xr,Xr,Xr,{0:sp}),Zr(ap,"$serializer",Jr,Xr,[Do]),Zr(lp,"OwsContactInfo",is,Xr,Xr,Xr,{0:hp}),Zr(fp,"$serializer",Jr,Xr,[Do]),Zr(wp,"OwsDcp",is,Xr,Xr,Xr,{0:cp}),Zr(dp,"OwsDescription",is),Zr(pp,"Companion",Jr),Zr(gp,"$serializer",Jr,Xr,[Do]),Zr(bp,"OwsHttp",is,Xr,Xr,Xr,{0:$p}),Zr(kp,"Companion",Jr),Zr(xp,"$serializer",Jr,Xr,[Do]),Zr(Cp,"OwsHttpMethod",is,Xr,Xr,Xr,{0:zp}),Zr(Sp,"$serializer",Jr,Xr,[Do]),Zr(Ip,"OwsOnlineResource",is,Xr,Xr,Xr,{0:qp}),Zr(Ap,"Companion",Jr),Zr(Dp,"$serializer",Jr,Xr,[Do]),Zr(Rp,"OwsOperation",is,Xr,Xr,Xr,{0:Mp}),Zr(Pp,"Companion",Jr),Zr(Fp,"$serializer",Jr,Xr,[Do]),Zr(Vp,"OwsOperationsMetadata",is,Xr,Xr,Xr,{0:Up}),Zr(Bp,"Companion",Jr),Zr(Wp,"$serializer",Jr,Xr,[Do]),Zr(Jp,"OwsPhone",is,Xr,Xr,Xr,{0:Gp}),Zr(Xp,"$serializer",Jr,Xr,[Do]),Zr(tm,"OwsServiceContact",is,Xr,Xr,Xr,{0:Zp}),Zr(nm,"Companion",Jr),Zr(em,"$serializer",Jr,Xr,[Do]),Zr(om,"OwsServiceIdentification",is,dp,Xr,Xr,{0:rm}),Zr(um,"$serializer",Jr,Xr,[Do]),Zr(_m,"OwsServiceProvider",is,Xr,Xr,Xr,{0:am}),Zr(lm,"Companion",Jr),Zr(cm,"$serializer",Jr,Xr,[Do]),Zr(dm,"WmtsCapabilities",is,Xr,Xr,Xr,{0:vm}),Zr(pm,"Companion",Jr),Zr(gm,"$serializer",Jr,Xr,[Do]),Zr(bm,"WmtsContents",is,Xr,Xr,Xr,{0:$m}),Zr(km,"Companion",Jr),Zr(xm,"$serializer",Jr,Xr,[Do]),Zr(Cm,"WmtsDimension",is,dp,Xr,Xr,{0:zm}),Zr(Sm,"Companion",Jr),Zr(Om,"$serializer",Jr,Xr,[Do]),Zr(Tm,"WmtsLayer",is,dp,Xr,Xr,{0:Im}),Zr(Dm,"$serializer",Jr,Xr,[Do]),Zr(Rm,"WmtsLegendURL",is,Xr,Xr,Xr,{0:Mm}),Zr(Pm,"$serializer",Jr,Xr,[Do]),Zr(Um,"WmtsResourceUrl",is,Xr,Xr,Xr,{0:Lm}),Zr(Hm,"Companion",Jr),Zr(Bm,"$serializer",Jr,Xr,[Do]),Zr(Gm,"WmtsStyle",is,dp,Xr,Xr,{0:Ym}),Zr(Km,"Companion",Jr),Zr(Xm,"$serializer",Jr,Xr,[Do]),Zr(tg,"WmtsTheme",is,dp,Xr,Xr,{0:Zm}),Zr(ng,"Companion",Jr),Zr(eg,"$serializer",Jr,Xr,[Do]),Zr(og,"WmtsTileMatrix",is,dp,Xr,Xr,{0:rg}),Zr(ug,"$serializer",Jr,Xr,[Do]),Zr(_g,"WmtsTileMatrixLimits",is,Xr,Xr,Xr,{0:ag}),Zr(lg,"Companion",Jr),Zr(cg,"$serializer",Jr,Xr,[Do]),Zr(dg,"WmtsTileMatrixSet",is,dp,Xr,Xr,{0:vg}),Zr(pg,"Companion",Jr),Zr(gg,"$serializer",Jr,Xr,[Do]),Zr(bg,"WmtsTileMatrixSetLink",is,Xr,Xr,Xr,{0:$g}),Zr(zg,"AbstractSurfaceRenderable",is,kg),Zr(qg,"Companion",Jr),Zr(Og,"Color",is),Zr(Ag,"FontWeight",is,Es),Zr(Dg,"Framebuffer",is),Zr(Mg,"Companion",Jr),Zr(Rg,"TextCacheKey",is),Zr(Lg,"RenderContext",is),Zr(Ug,"Companion",Jr),Zr(Vg,"Texture",is),Zr(Bg,"AbstractBufferObject",is),Zr(Yg,"FloatBufferObject",is,Bg),Zr(Wg,"IntBufferObject",is,Bg),Zr(Gg,"ShortBufferObject",is,Bg),Zr(Jg,"ImageConfig",is,Es),Zr(Zg,"ImageOptions",is),Zr(t$,"ResamplingMode",is,Es),Zr(e$,"WrapMode",is,Es),Zr(s$,"Companion",Jr),Zr(a$,"BasicShaderProgram",is,u$),Zr(h$,"SightlineProgram",is,u$),Zr(_$,"SurfaceTextureProgram",is,u$),Zr(l$,"Companion",Jr),Zr(p$,"Highlightable",ls),Zr(c$,"AbstractShape",is,kg,[kg,p$]),Zr(v$,"Companion",Jr),Zr(d$,"Ellipse",is,c$),Zr(m$,"Companion",Jr),Zr($$,"RenderData",is),Zr(b$,"Movable",ls),Zr(y$,"Label",is,kg,[kg,p$,b$]),Zr(k$,"OmnidirectionalSightline",is,kg,[kg,p$,b$]),Zr(x$,"OrientationMode",is,Es),Zr(C$,"Companion",Jr),Zr(q$,"Path",is,c$),Zr(I$,"PathType",is,Es),Zr(D$,"Companion",Jr),Zr(N$,"Placemark",is,kg,[kg,p$,b$]),Zr(P$,"Companion",Jr),Zr(F$,"PlacemarkAttributes",is),Zr(U$,"Companion",Jr),Zr(fb,"GLUtessellatorCallbackAdapter",is),Zr(V$,Xr,is,fb),Zr(B$,"Polygon",is,c$),Zr(W$,"ShapeAttributes",is),Zr(G$,"SurfaceImage",is,zg),Zr(Z$,"TextAttributes",is),Zr(Q$,"Companion",Jr),Zr(iy,"AbsentResourceEntry",is),Zr(ey,"AbsentResourceList",is),Zr(ry,"AbstractSource",is),Zr(ay,"Companion",Jr),Zr(yy,"Pool",ls),Zr(_y,"BasicPool",is,Xr,[yy]),Zr(ly,"Level",is),Zr(vy,"LevelSet",is),Zr(wy,"LevelSetConfig",is),Zr(dy,"Entry",is),Zr(py,"sam$kotlin_Comparator$0",is),Zr(gy,"LruMemoryCache",is),Zr(ky,"CelestialLocation",is),Zr(jy,"SunPosition",Jr),Zr(zy,"Companion",Jr),Zr(Iy,"ExponentFormatter",is),Zr(Ry,"Stage",is,Es),Zr(tb,"Companion",Jr),Zr(sb,"Specification",is),Zr(ub,"Positioning",is,Es),Zr(hb,"StringFormat",is),Zr(_b,"GLU",Jr),Zr(cb,"Error",Jr),Zr(vb,"ActiveRegion",is),Zr(wb,"CachedVertex",is),Zr(db,"Companion",Jr),Zr(mb,"Dict",is),Zr(gb,"DictNode",is),Zr($b,"GLUface",is),Zr(yb,"GLUhalfEdge",is),Zr(bb,"GLUmesh",is),Zr(Eb,"Companion",Jr),Zr(Sb,"GLUtessellatorImpl",is),Zr(qb,"GLUvertex",is),Zr(Ob,"Geom",Jr),Zr(Ab,"Mesh",Jr),Zr(Mb,"Normal",Jr),Zr(Nb,"PQnode",is),Zr(Rb,"PQhandleElem",is),Zr(Pb,"Companion",Jr),Zr(Fb,"PriorityQ",is),Zr(Ub,"PriorityQHeap",is,Fb),Zr(Bb,"Stack",is),Zr(Yb,"Companion",Jr),Zr(Gb,"PriorityQSort",is,Fb),Zr(nk,"FaceCount",is),Zr(ik,"RenderTriangle",is),Zr(ek,"RenderFan",is),Zr(rk,"RenderStrip",is),Zr(sk,"Render",Jr),Zr(_k,Xr,is),Zr(lk,"Sweep",Jr),Zr(ck,"TessMono",Jr),Zr(wk,"TessState",Jr),Zr(gk,"Kgl",ls),Zr($j,"WorldWindowController",is),Zr(uj,"BasicWorldWindowController",is,$j),Zr(aj,"KeyboardControls",is),Zr(_j,"WorldWindow$contextRestored$slambda$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(fj,"EventListenerEntry",is),Zr(cj,"Companion",Jr),Zr(wj,"RedrawStage",is,Es),Zr(dj,"sam$kotlinx_coroutines_flow_FlowCollector$0",is,Xr,Xr,Xr,Xr,[1]),Zr(mj,"WorldWindow$contextRestored$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(gj,"WorldWindow",is),Zr(zj,"GestureRecognizer",is),Zr(yj,"ClickRecognizer",is,zj),Zr(bj,"DragRecognizer",is,zj),Zr(kj,"Companion",Jr),Zr(xj,"Click",is),Zr(Ej,"PanRecognizer",is,zj),Zr(Cj,"PinchRecognizer",is,zj),Zr(Sj,"RotationRecognizer",is,zj),Zr(qj,"Companion",Jr),Zr(Ij,Xr,is,bj),Zr(Aj,Xr,is,Ej),Zr(Tj,"SelectDragDetector",is),Zr(Dj,"TapRecognizer",is,zj),Zr(Mj,"Companion",Jr),Zr(Rj,"TiltRecognizer",is,Ej),Zr(Pj,"TouchWrapper",is),Zr(Lj,"Companion",Jr),Zr(Uj,"ElevationSource",is,ry),Zr(Hj,"TiledElevationCoverage$retrieveTileArray$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(Wj,"Companion",Jr),Zr(Kj,"MercatorImageTile",is,Fc,Xr,Xr,Xr,[1]),Zr(Zj,"Font",is),Zr(Qj,"Companion",Jr),Zr(nx,"RenderResourceCache$retrieveTexture$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(ix,"RenderResourceCache$retrieveTextFile$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(ex,"RenderResourceCache$retrieveRemoteImage$lambda$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(sx,"RenderResourceCache",is,gy),Zr(ox,"TextRenderer",is),Zr(ux,"CanvasTexture",is,Vg),Zr(ax,"Companion",Jr),Zr(_x,"ImageFactory",ls),Zr(lx,"ImageSource",is,ry),Zr(fx,"ImageTexture",is,Vg),Zr(vx,"Logger",Jr),Zr(dx,"SynchronizedPool",is,_y),Zr(px,"WebKgl",is,Xr,[gk]),Zr(mx,"Companion",Jr),Zr(gx,"KglShader",is),Zr($x,"Companion",Jr),Zr(bx,"KglProgram",is),Zr(kx,"Companion",Jr),Zr(xx,"KglUniformLocation",is),Zr(zx,"Companion",Jr),Zr(Cx,"KglBuffer",is),Zr(Sx,"Companion",Jr),Zr(Ox,"KglTexture",is),Zr(Ix,"Companion",Jr),Zr(Tx,"KglFramebuffer",is),Kr(Oa).a4u=function(t,n,i){var e=n.b4u();return new Aa(t,null==e?n:e,i)},Kr(Oa).c4u=function(t,n){var i=W_(n);return new Aa(t,i,Xr,i)},Kr(Oa).d4u=function(t,n){var i=t>>16&255,e=t>>8&255,r=255&t;return n.e4u_1=i/255,n.f4u_1=e/255,n.g4u_1=r/255,n.h4u_1=1,n},Kr(Oa).i4u=function(t){var n=255*t.e4u_1,i=es(n),e=255*t.f4u_1,r=es(e),s=255*t.g4u_1;return i<<16|r<<8|es(s)},Kr(Aa).o4u=function(){return!(null==this.m4u_1)},Kr(Aa).p4u=function(){this.n4u_1=!0},Kr(Aa).toString=function(){return"PickedObject(isOnTop="+this.n4u_1+", identifier="+this.j4u_1+", userObject="+ss(this.k4u_1)+", layer="+this.l4u_1+", terrainPosition="+this.m4u_1+")"},Kr(Ma).r4u=function(){return this.q4u_1.i2()},Kr(Ma).s4u=function(){return this.q4u_1.g()},Kr(Ma).t4u=function(){var t;t:{for(var n=this.r4u().d();n.e();){var i=n.f();if(i.n4u_1){t=i;break t}}t=null}return t},Kr(Ma).u4u=function(){var t;t:{for(var n=this.r4u().d();n.e();){var i=n.f();if(i.o4u()){t=i;break t}}t=null}return t},Kr(Ma).v4u=function(t){var n=this.q4u_1,i=t.j4u_1;n.f4(i,t)},Kr(Ma).w4u=function(t){return this.q4u_1.g2(t)},Kr(Ma).x4u=function(){return this.q4u_1.d3()},Kr(Ma).y4u=function(){var t=this.q4u_1.q();return us(t,Ta)},Kr(Ma).toString=function(){var t=this.r4u();return as(t,", ","PickedObjectList{","}",Xr,Xr,Da)},Kr(Pa).c4v=function(){this.a4v_1.z11((null==d&&new Na,d))},Kr(Ua).p4w=function(t){var n;if(!(t>0))throw n=wx().v4w(wx().q4w_1,"WorldWind","setDensityFactor","invalidDensityFactor"),cs(ss(n));this.p4v_1=t},Kr(Ua).x1g=function(){this.f4v_1.h4x(),this.f4v_1.d3(),this.g4v_1.k4x_1.m4x(),this.n4v_1.r4x(),this.p4w(1)},Kr(Ua).s4x=function(){this.t4v_1.t4x_1.r4y(me),this.t4v_1.t4x_1.r4y($k()),this.t4v_1.t4x_1.r4y(yk()),this.t4v_1.t4x_1.s4y(0),this.t4v_1.t4x_1.t4y(ye),this.t4v_1.t4x_1.u4y(bk(),kk()),this.t4v_1.t4x_1.v4y(je),this.t4v_1.w4y(),this.u4v_1=this.t4v_1.t4x_1.x4y(xe)},Kr(Ua).y4y=function(t,n){if(this.t4v_1.t4x_1.z4y(0,0,t,n),this.o4v_1&&0!==this.n4v_1.q4x_1)try{var i=this.l4v_1;i.a4z((e=i.i4w_1,r=n/this.n4v_1.q4x_1,Bh().e55(e*r)))}catch(t){if(!(t instanceof vs))throw t}var e,r;this.n4v_1.b4z(0,0,t,n)},Kr(Ua).c4z=function(t,n){if(null!=n)this.d4z(this.v4v_1),this.g4v_1.z4z(n.j4w_1,n.k4w_1,n.n4w_1,this.x4v_1),t.r4z_1.a50(n);else if(this.n4v_1.sr()||!this.y4z(this.n4v_1.p4x_1/2,this.n4v_1.q4x_1/2,t.r4z_1)){this.d4z(this.v4v_1),this.v4v_1.h4z(this.y4v_1.e4z_1),this.v4v_1.i4z(this.y4v_1.f4z_1);var i=this.g4v_1.j4z(this.l4v_1.d4w_1,this.l4v_1.e4w_1);this.y4v_1.l4z(this.g4v_1.k4z(i.n4w_1),this.x4v_1),this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,t.r4z_1)}return this.g4v_1.b50(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.w4v_1),this.v4v_1.c50(this.w4v_1),t.t4z_1=-this.v4v_1.g4z_1[11],t.u4z_1=this.v4v_1.d50(this.l4v_1.h4w_1),t.v4z_1=this.v4v_1.e50(),t.w4z_1=this.l4v_1.h4w_1,t},Kr(Ua).f50=function(t,n,i){return n=n===Xr?null:n,i===Xr?this.c4z(t,n):i.c4z.call(this,t,n)},Kr(Ua).g50=function(t,n,i){var e=_l();if(!this.i50(n.m4z_1,n.n4z_1,this.y4v_1)||!this.g4v_1.h50(this.y4v_1,e))return rs();var r=_l();return this.i50(i.m4z_1,i.n4z_1,this.y4v_1)&&this.g4v_1.h50(this.y4v_1,r)?(this.j50(t,this.v4v_1),this.v4v_1.k50(r.m4z_1-e.m4z_1,r.n4z_1-e.n4z_1,r.q4z_1-e.q4z_1),this.v4v_1.h4z(this.y4v_1.e4z_1),this.v4v_1.i4z(this.y4v_1.f4z_1),this.g4v_1.h50(this.y4v_1,this.x4v_1)?(this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,t.r4z_1),this.g4v_1.b50(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.w4v_1),this.v4v_1.c50(this.w4v_1),t.t4z_1=-this.v4v_1.g4z_1[11],t.u4z_1=this.v4v_1.d50(t.w4z_1),t.v4z_1=this.v4v_1.e50(),void(t.w4z_1=t.w4z_1)):rs()):rs()},Kr(Ua).l50=function(t){this.m50(t),this.j50(t,this.v4v_1),this.v4v_1.h4z(this.x4v_1),this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.l4v_1.d4w_1),this.g4v_1.b50(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.w4v_1),this.v4v_1.c50(this.w4v_1),this.l4v_1.e4w_1=Lh(),this.l4v_1.f4w_1=this.v4v_1.d50(t.w4z_1),this.l4v_1.g4w_1=this.v4v_1.e50(),this.l4v_1.h4w_1=t.w4z_1;var n=this.l4v_1.d4w_1,i=this.g4v_1.n50(n.j4w_1,n.k4w_1)*this.q4v_1;La();var e=i+10;if(e>n.n4w_1){n.n4w_1=e,this.g4v_1.z4z(n.j4w_1,n.k4w_1,n.n4w_1,this.x4v_1),this.g4v_1.z4z(t.r4z_1.j4w_1,t.r4z_1.k4w_1,t.r4z_1.n4w_1,this.y4v_1.e4z_1),this.g4v_1.o50(t.r4z_1.j4w_1,t.r4z_1.k4w_1,this.y4v_1.f4z_1),this.x4v_1.p50(this.y4v_1.e4z_1).q50();var r=this.y4v_1.f4z_1.r50(this.x4v_1);if(r>=-1&&r<=1){var s,o=this.l4v_1,u=Bh(),a=Math.acos(r);s=u.r51(a),o.g4w_1=s}}},Kr(Ua).y4z=function(t,n,i){var e;return this.i50(t,n,this.y4v_1)&&this.h4v_1.s51().h50(this.y4v_1,this.x4v_1)?(this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,i),e=!0):e=!1,e},Kr(Ua).t51=function(t,n){return this.u51(t.m4z_1,t.n4z_1,t.q4z_1,n)},Kr(Ua).u51=function(t,n,i,e){return!this.n4v_1.sr()&&(this.v51(this.w4v_1,this.v4v_1),this.w4v_1.c50(this.v4v_1),!!this.w4v_1.w51(t,n,i,this.n4v_1,this.x4v_1)&&(e.m4z_1=this.x4v_1.m4z_1,e.n4z_1=this.n4v_1.q4x_1-this.x4v_1.n4z_1,!0))},Kr(Ua).x51=function(t,n,i,e){return this.g4v_1.z4z(t,n,i,this.x4v_1),this.t51(this.x4v_1,e)},Kr(Ua).y51=function(t,n,i){var e;return this.i50(t,n,this.y4v_1)&&this.g4v_1.h50(this.y4v_1,this.x4v_1)?(this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,i),e=!0):e=!1,e},Kr(Ua).i50=function(t,n,i){return!this.n4v_1.sr()&&(this.v51(this.w4v_1,this.v4v_1),this.w4v_1.c50(this.v4v_1).z51(),!!this.w4v_1.a52(t,this.n4v_1.q4x_1-n,this.n4v_1,i.e4z_1,i.f4z_1)&&(i.f4z_1.p50(i.e4z_1).q50(),!0))},Kr(Ua).b52=function(t){var n=.5*Hh(this.l4v_1.i4w_1);return 2*t*Math.tan(n)/this.n4v_1.q4x_1},Kr(Ua).c4w=function(){var t=.5*Hh(this.l4v_1.i4w_1),n=Math.sin(t),i=this.g4v_1.c52();return i/n-i},Kr(Ua).d52=function(t){var n=t.o52_1;if(!n){var i=this.j4v_1;null==i||i.q52(this.s4v_1)}this.s4v_1.r52_1=this.g4v_1,this.s4v_1.s52_1=this.h4v_1,this.s4v_1.u52_1=this.k4v_1,this.s4v_1.w52_1=this.l4v_1;var e=this.g4v_1.j4z(this.l4v_1.d4w_1,this.l4v_1.e4w_1);this.s4v_1.a53_1=this.g4v_1.k4z(e.n4w_1),this.g4v_1.z4z(e.j4w_1,e.k4w_1,e.n4w_1,this.s4v_1.d53_1),this.s4v_1.x52_1=this.f4v_1,this.s4v_1.z52_1=this.q4v_1,this.s4v_1.y52_1=this.p4v_1,this.s4v_1.b53_1=this.r4v_1,this.s4v_1.c53_1=this.g4v_1.k4x_1.a54(),this.v51(t.f52_1,t.g52_1),t.e52_1.b54(this.n4v_1),this.s4v_1.e53_1.b54(t.e52_1),this.s4v_1.f53_1.c54(t.f52_1),this.s4v_1.g53_1.c54(t.g52_1),this.s4v_1.h53_1.d54(t.f52_1,t.g52_1),n?this.s4v_1.i53_1.o54(t.f52_1,t.g52_1,t.e52_1,ws(t.l52_1)):this.s4v_1.i53_1.n54(t.f52_1,t.g52_1,t.e52_1),this.s4v_1.j53_1=t.h52_1,this.s4v_1.k53_1=t.i52_1,this.s4v_1.l53_1=t.j52_1,this.s4v_1.m53_1=t.k52_1,this.s4v_1.n53_1=t.l52_1,this.s4v_1.o53_1=t.m52_1,this.s4v_1.p53_1=t.n52_1,this.s4v_1.q53_1=t.o52_1,this.i4v_1.p54(this.s4v_1);var r=!n&&this.s4v_1.r53_1;if(!n){var s=this.j4v_1;null==s||s.q54(this.s4v_1)}return this.s4v_1.x1g(),r},Kr(Ua).r54=function(t){var n=t.o52_1;if(!n){var i=this.j4v_1;null==i||i.s54(this.t4v_1)}if(this.t4v_1.u4x_1.t54(t.g52_1.h4z(this.t4v_1.u4x_1)),this.t4v_1.v4x_1.b54(t.e52_1),this.t4v_1.w4x_1.c54(t.f52_1),this.t4v_1.x4x_1.c54(t.g52_1),this.t4v_1.y4x_1.d54(t.f52_1,t.g52_1),this.t4v_1.z4x_1.u54(t.e52_1.p4x_1,t.e52_1.q4x_1),this.t4v_1.a4y_1=t.h52_1,this.t4v_1.b4y_1=t.i52_1,this.t4v_1.c4y_1=t.j52_1,this.t4v_1.d4y_1=t.l52_1,this.t4v_1.e4y_1=t.m52_1,this.t4v_1.f4y_1=t.o52_1,this.i4v_1.v54(this.t4v_1),this.f4v_1.w54(),this.f4v_1.x54(this.t4v_1),!n){var e=this.j4v_1;null==e||e.y54(this.t4v_1)}this.t4v_1.x1g()},Kr(Ua).v51=function(t,n){var i=this.g4v_1.j4z(this.l4v_1.d4w_1,this.l4v_1.e4w_1).n4w_1,e=this.g4v_1.k4z(i)+this.g4v_1.k4z(this.r4v_1);e<1e3&&(e=1e3);var r=(1<0){var u,a=.5*Hh(this.l4v_1.i4w_1),h=2*(u=Math.tan(a))*u+1,_=o/(2*Math.sqrt(h));s>_&&(s=_)}s<1&&(s=1),t.z54(this.n4v_1.p4x_1,this.n4v_1.q4x_1,this.l4v_1.i4w_1,s,e),this.d4z(n)},Kr(Ua).d4z=function(t){return this.a55(this.l4v_1.d4w_1,this.l4v_1.e4w_1,t),t.b55(0,0,1,Zh(this.l4v_1.f4w_1)),t.b55(1,0,0,this.l4v_1.g4w_1),t.b55(0,0,1,this.l4v_1.h4w_1),t.c55(),t},Kr(Ua).j50=function(t,n){return this.a55(t.r4z_1,t.s4z_1,n),n.b55(0,0,1,Zh(t.u4z_1)),n.b55(1,0,0,t.v4z_1),n.b55(0,0,1,t.w4z_1),n.k50(0,0,t.t4z_1),n.c55(),n},Kr(Ua).a55=function(t,n,i){switch(n.l6_1){case 0:this.g4v_1.d55(t.j4w_1,t.k4w_1,t.n4w_1,i);break;case 1:this.g4v_1.d55(t.j4w_1,t.k4w_1,this.g4v_1.n50(t.j4w_1,t.k4w_1)*this.q4v_1,i);break;case 2:this.g4v_1.d55(t.j4w_1,t.k4w_1,(t.n4w_1+this.g4v_1.n50(t.j4w_1,t.k4w_1))*this.q4v_1,i)}return i},Kr(Ua).m50=function(t){t.r4z_1.j4w_1=i_(t.r4z_1.j4w_1),t.r4z_1.k4w_1=n_(t.r4z_1.k4w_1),t.t4z_1=ds(t.t4z_1,10,2*this.c4w()),t.u4z_1=Qh(t.u4z_1);var n,i=t,e=Bh(),r=ds(t.v4z_1,0,90);n=e.e55(r),i.v4z_1=n,t.w4z_1=Qh(t.w4z_1),this.g4v_1.f55()&&(t.t4z_1=ds(t.t4z_1,1,2*ps()*this.g4v_1.c52()),t.v4z_1=Bh().s50_1)},Kr(Ha).g55=function(t){var n=t.h55(),i=null==n?new Ba:n;return i.p55_1=t,i},Kr(Ba).q55=function(){return this.i55_1},Kr(Ba).r55=function(){return this.j55_1},Kr(Ba).s55=function(){this.m55_1=null,this.n55_1=null,this.o55_1=null;var t=this.p55_1;null==t||t.t55(this),this.p55_1=null},Kr(Ba).u55=function(t,n){var i=this.m55_1,e=null==i?null:i.a56(t),r=null!=e&&e;return r&&t.t4x_1.b56(n,3,xk(),!1,0,0),r},Kr(Ba).c56=function(t,n){var i=this.n55_1,e=null==i?null:i.a56(t),r=null!=e&&e;return r&&t.t4x_1.b56(n,2,xk(),!1,0,0),r},Kr(Ba).d56=function(t){var n=this.o55_1,i=null==n?null:n.a56(t),e=null!=i&&i;return e&&t.t4x_1.l56(Ok(),this.k55_1.rb(),Sk(),Hr(this.k55_1.j56_1,2)),e},Kr(Ba).m56=function(t){var n=this.o55_1,i=null==n?null:n.a56(t),e=null!=i&&i;return e&&t.t4x_1.l56(Ck(),this.l55_1.rb(),Sk(),Hr(this.l55_1.j56_1,2)),e},Kr(Ba).n56=function(t){this.m56(t)},Kr(Ya).s56=function(){var t=this.b4y_1,n=null==t?null:t.s4u();return null==n?0:n},Kr(Ya).x56=function(){return this.g4y_1},Kr(Ya).y56=function(){return this.h4y_1},Kr(Ya).z56=function(){return this.a57(this.i4y_1)},Kr(Ya).b57=function(){var t,n=this.m4y_1;if(null==n){var i=new Dg,e=new Vg(1024,1024,Hk(),Vk(),!0),r=new Vg(1024,1024,Ke,Sk(),!0);r.m57(Tk(),Dk()),r.m57(Mk(),Dk()),i.p57(this,e,Bk()),i.p57(this,r,Yk());var s=i;this.m4y_1=s,t=s}else t=n;return t},Kr(Ya).q57=function(){var t,n=this.n4y_1;if(null==n){var i=new Yg(jk(),new Float32Array([0,1,0,0,1,1,1,0]));this.n4y_1=i,t=i}else t=n;return t},Kr(Ya).x1g=function(){this.u4x_1.r57(0,0,0),this.v4x_1.r4x(),this.w4x_1.s57(),this.x4x_1.s57(),this.y4x_1.s57(),this.z4x_1.s57(),this.a4y_1=null,this.b4y_1=null,this.c4y_1=null,this.d4y_1=null,this.e4y_1=null,this.f4y_1=!1,$s(this.o4y_1,0),this.q4y_1.d3()},Kr(Ya).w4y=function(){this.g4y_1=Ax().o56_1,this.h4y_1=yx().p56_1,this.i4y_1=Uk(),this.k4y_1=Ex().r56_1,this.l4y_1=Ex().r56_1,this.m4y_1=null,this.n4y_1=null,ys(this.j4y_1,qx().q56_1)},Kr(Ya).t57=function(){var t=this.a4y_1;return null==t?null:t.t57()},Kr(Ya).u57=function(){var t=this.a4y_1;return null==t?null:t.u57()},Kr(Ya).v57=function(){var t=this.a4y_1;null==t||t.v57()},Kr(Ya).w57=function(t){var n=this.b4y_1,i=null==n?null:n.x57(t),e=null==i||bs(i,Oh)?i:Wr();if(null==e)throw ks("Invalid index");return e},Kr(Ya).y57=function(t){this.g4y_1.equals(t)||(this.g4y_1=t,this.t4x_1.z57(Wk(),t))},Kr(Ya).a58=function(t){this.h4y_1.equals(t)||(this.h4y_1=t,this.t4x_1.a58(t))},Kr(Ya).b58=function(t){this.i4y_1!==t&&(this.i4y_1=t,this.t4x_1.c58(t))},Kr(Ya).a57=function(t){return this.j4y_1[t-Uk()|0]},Kr(Ya).d58=function(t){var n=this.i4y_1-Uk()|0;this.j4y_1[n].equals(t)||(this.j4y_1[n]=t,this.t4x_1.e58(Gk(),t))},Kr(Ya).f58=function(t){var n=t;return n===jk()?this.k4y_1:n===Ek()?this.l4y_1:Ex().r56_1},Kr(Ya).g58=function(t,n){t!==jk()||this.k4y_1.equals(n)?(t!==Ek()||this.l4y_1.equals(n)||(this.l4y_1=n),this.t4x_1.g58(t,n)):(this.k4y_1=n,this.t4x_1.g58(t,n))},Kr(Ya).h58=function(t,n,i){return this.t4x_1.i58(t,n,1,1,Hk(),Vk(),this.p4y_1),i.e4u_1=(255&this.p4y_1[0])/255,i.f4u_1=(255&this.p4y_1[1])/255,i.g4u_1=(255&this.p4y_1[2])/255,i.h4u_1=(255&this.p4y_1[3])/255,i},Kr(Ya).j58=function(t,n,i,e){var r=Hr(i,e),s=this.k58(Hr(r,4));this.t4x_1.i58(t,n,i,e,Hk(),Vk(),s);var o=js(),u=Eg(),a=zs(xs(0,r),4),h=a.y_1,_=a.z_1,l=a.a1_1;if(l>0&&h<=_||l<0&&_<=h)do{var f=h;h=h+l|0,u.e4u_1=(255&s[f+0|0])/255,u.f4u_1=(255&s[f+1|0])/255,u.g4u_1=(255&s[f+2|0])/255,u.h4u_1=(255&s[f+3|0])/255,o.a(u)&&(u=Eg())}while(f!==_);return o},Kr(Ya).k58=function(t){return this.o4y_1.length>1;uh();r=Math.max(s,12);var o=ms(Array(e+r|0),null),u=this.v56_1,a=u.length;Ss(u,o,0,0,a),this.v56_1=o}var h,_=this.v56_1[this.t56_1];if(null==_){var l=new ah;this.v56_1[this.t56_1]=l,h=l}else h=_;var f=h,c=this.t56_1;this.t56_1=c+1|0,f.p5b(t,n,i,c)},Kr(lh).x57=function(t){var n;if(t0&&this.p5e(t,a)}while(s180?n-360:n<-180?360+n:n},Kr(Vh).s5h=function(t){var n=t%360;return n>=0?n:360+n},Kr(Vh).t5h=function(t){var n=t%180,i=n>90?180-n:n<-90?-180-n:n;return 0==(Ms(t/180)%2|0)?i:-i},Kr(Vh).u5h=function(t){var n=t%360;return n>180?n-360:n<-180?360+n:n},Kr(Vh).v5h=function(t){return ds(t,-90,90)},Kr(Vh).w5h=function(t){return ds(t,-180,180)},Kr(Vh).x5h=function(t,n){return this.e55(.5*(t+n))},Kr(o_).z5h=function(t){return r_(this.y5h_1,t)},Kr(o_).p8=function(t){return function(t,n){return r_(t.y5h_1,n instanceof o_?n.y5h_1:Wr())}(this,t)},Kr(o_).toString=function(){return this.y5h_1+"°"},Kr(o_).hashCode=function(){return s_(this.y5h_1)},Kr(o_).equals=function(t){return function(t,n){if(!(n instanceof o_))return!1;var i=n instanceof o_?n.y5h_1:Wr();return!!Rs(t,i)}(this.y5h_1,t)},Kr(f_).r5i=function(){return 0===this.d5i_1.m4z_1&&0===this.d5i_1.n4z_1&&0===this.d5i_1.q4z_1&&this.j5i_1===Math.sqrt(3)},Kr(f_).s5i=function(){this.d5i_1.r57(0,0,0),this.e5i_1.r57(-.5,0,0),this.f5i_1.r57(.5,0,0),this.g5i_1.r57(1,0,0),this.h5i_1.r57(0,1,0),this.i5i_1.r57(0,0,1);var t;return t=Math.sqrt(3),this.j5i_1=t,this},Kr(f_).t5i=function(t,n,i){var e=T_();e.u5i(t,n,i),e.v5i(this.g5i_1,this.h5i_1,this.i5i_1),this.g5i_1.q50(),this.h5i_1.q50(),this.i5i_1.q50(),As();var r=1/0;As();var s=-1/0;As();var o=1/0;As();var u=-1/0;As();var a=1/0;As();var h=-1/0,_=_l(),l=zs(xs(0,n),i),f=l.y_1,c=l.z_1,v=l.a1_1;if(v>0&&f<=c||v<0&&c<=f)do{var w=f;f=f+v|0,_.r57(t[w],t[w+1|0],t[w+2|0]);var d=_.r50(this.g5i_1);r>d&&(r=d),sp&&(o=p),um&&(a=m),h180){var p=e;n.z4z(t.z5i(),Wh(t.a5j(),90),p,this.k5i_1),n.z4z(t.z5i(),Jh(t.a5j(),90),p,this.l5i_1),u_(l_(),this.g5i_1,h,this.h5i_1,_,this.i5i_1,l,this.k5i_1),u_(l_(),this.g5i_1,h,this.h5i_1,_,this.i5i_1,l,this.l5i_1)}h[1]-h[0]<_[1]-_[0]&&a_(l_(),this.g5i_1,h,this.h5i_1,_),_[1]-_[0]i&&(n=i),n>(i=this.e5i_1.d5j(t))&&(n=i),n>(i=this.f5i_1.d5j(t))&&(n=i),this.k5i_1.m4z_1=this.d5i_1.m4z_1-.5*this.h5i_1.m4z_1,this.k5i_1.n4z_1=this.d5i_1.n4z_1-.5*this.h5i_1.n4z_1,this.k5i_1.q4z_1=this.d5i_1.q4z_1-.5*this.h5i_1.q4z_1,n>(i=this.k5i_1.d5j(t))&&(n=i),this.k5i_1.m4z_1=this.d5i_1.m4z_1+.5*this.h5i_1.m4z_1,this.k5i_1.n4z_1=this.d5i_1.n4z_1+.5*this.h5i_1.n4z_1,this.k5i_1.q4z_1=this.d5i_1.q4z_1+.5*this.h5i_1.q4z_1,n>(i=this.k5i_1.d5j(t))&&(n=i);var e=n;return Math.sqrt(e)},Kr(f_).e5j=function(t){this.k5i_1.t54(this.e5i_1),this.l5i_1.t54(this.f5i_1);var n,i=this.o5i_1>=0?t.l54_1[this.o5i_1]:null,e=-1;if(!1!==(null==i?null:h_(this,i)>=0)){var r;t:{for(var s=t.l54_1,o=0,u=s.length;o=0;if(h||(this.o5i_1=e),!h){r=!1;break t}}r=!0}n=r}else n=!1;return n},Kr(f_).toString=function(){return"BoundingBox(center="+this.d5i_1+", bottomCenter="+this.e5i_1+", topCenter="+this.f5i_1+", r="+this.g5i_1+", s="+this.h5i_1+", t="+this.i5i_1+", radius="+this.j5i_1+")"},Kr(c_).i5j=function(t){var n;if(!(t>=0))throw n=wx().v4w(wx().q4w_1,"BoundingSphere","setRadius","invalidRadius"),cs(ss(n));this.g5j_1=t},Kr(c_).j5j=function(t,n){return this.f5j_1.t54(t),this.i5j(n),this},Kr(c_).e5j=function(t){var n,i=-this.g5j_1,e=this.h5j_1>=0?t.l54_1[this.h5j_1]:null,r=-1;if(!1!==(null==e?null:e.k5j(this.f5j_1)>i)){var s;t:{for(var o=t.l54_1,u=0,a=o.length;ui;if(_||(this.h5j_1=r),!_){s=!1;break t}}s=!0}n=s}else n=!1;return n},Kr(c_).equals=function(t){return this===t||t instanceof c_&&!!this.f5j_1.equals(t.f5j_1)&&this.g5j_1===t.g5j_1},Kr(c_).hashCode=function(){var t=this.f5j_1.hashCode();return Hr(31,t)+Ns(this.g5j_1)|0},Kr(c_).toString=function(){return"BoundingSphere(center="+this.f5j_1+", radius="+this.g5j_1+")"},Kr(v_).a4z=function(t){var n;if(!(t>0&&t<180))throw n=wx().v4w(wx().q4w_1,"Camera","setFieldOfView","invalidFieldOfView"),cs(ss(n));this.i4w_1=t},Kr(v_).l5j=function(t,n,i,e,r,s,o){return this.d4w_1.o4w(t,n,i),this.e4w_1=e,this.f4w_1=r,this.g4w_1=s,this.h4w_1=o,this},Kr(v_).toString=function(){return"Camera(position="+this.d4w_1+", altitudeMode="+this.e4w_1+", heading="+new o_(this.f4w_1)+", tilt="+new o_(this.g4w_1)+", roll="+new o_(this.h4w_1)+", fieldOfView="+new o_(this.i4w_1)+")"},Kr(p_).o5j=function(){var t=1/this.n5j_1;return this.m5j_1*(1-t)},Kr(p_).p5j=function(){var t=1/this.n5j_1;return 2*t-t*t},Kr(p_).toString=function(){return"Ellipsoid(semiMajorAxis="+this.m5j_1+", inverseFlattening="+this.n5j_1+")"},Kr(p_).hashCode=function(){var t=Ns(this.m5j_1);return Hr(t,31)+Ns(this.n5j_1)|0},Kr(p_).equals=function(t){if(this===t)return!0;if(!(t instanceof p_))return!1;var n=t instanceof p_?t:Wr();return!!Rs(this.m5j_1,n.m5j_1)&&!!Rs(this.n5j_1,n.n5j_1)},Kr(g_).q5j=function(){return this.e54_1.r5j(1,0,0,1),this.f54_1.r5j(-1,0,0,1),this.g54_1.r5j(0,1,0,1),this.h54_1.r5j(0,-1,0,1),this.i54_1.r5j(0,0,-1,1),this.j54_1.r5j(0,0,1,1),this.k54_1.b4z(0,0,1,1),this},Kr(g_).n54=function(t,n,i){this.m54_1.s5j(n);var e=t.g4z_1,r=e[12]+e[0],s=e[13]+e[1],o=e[14]+e[2],u=e[15]+e[3];return this.e54_1.r5j(r,s,o,u),this.e54_1.t5j(this.m54_1),r=e[12]-e[0],s=e[13]-e[1],o=e[14]-e[2],u=e[15]-e[3],this.f54_1.r5j(r,s,o,u),this.f54_1.t5j(this.m54_1),r=e[12]+e[4],s=e[13]+e[5],o=e[14]+e[6],u=e[15]+e[7],this.g54_1.r5j(r,s,o,u),this.g54_1.t5j(this.m54_1),r=e[12]-e[4],s=e[13]-e[5],o=e[14]-e[6],u=e[15]-e[7],this.h54_1.r5j(r,s,o,u),this.h54_1.t5j(this.m54_1),r=e[12]+e[8],s=e[13]+e[9],o=e[14]+e[10],u=e[15]+e[11],this.i54_1.r5j(r,s,o,u),this.i54_1.t5j(this.m54_1),r=e[12]-e[8],s=e[13]-e[9],o=e[14]-e[10],u=e[15]-e[11],this.j54_1.r5j(r,s,o,u),this.j54_1.t5j(this.m54_1),this.k54_1.b54(i),this},Kr(g_).o54=function(t,n,i,e){var r,s,o,u,a,h,_,l,f=e.n4x_1,c=e.n4x_1+e.p4x_1|0,v=e.o4x_1,w=e.o4x_1+e.q4x_1|0,d=this.m54_1.d54(t,n).z51(),p=_l();r=p;var m,g=p,$=_l();s=$,m=$,d.a52(f,v,i,g,m);var y=_l();o=y;var b,k=y,j=_l();u=j,b=j,d.a52(c,v,i,k,b);var x=_l();a=x;var z,E=x,C=_l();h=C,z=C,d.a52(f,w,i,E,z);var S=_l();_=S;var q,O=S,I=_l();l=I,q=I,d.a52(c,w,i,O,q);var A=new ll(h.m4z_1-r.m4z_1,h.n4z_1-r.n4z_1,h.q4z_1-r.q4z_1),T=new ll(a.m4z_1-s.m4z_1,a.n4z_1-s.n4z_1,a.q4z_1-s.q4z_1),D=A.u5j(T);this.e54_1.r5j(D.m4z_1,D.n4z_1,D.q4z_1,-D.r50(r)),A.r57(_.m4z_1-u.m4z_1,_.n4z_1-u.n4z_1,_.q4z_1-u.q4z_1),T.r57(l.m4z_1-o.m4z_1,l.n4z_1-o.n4z_1,l.q4z_1-o.q4z_1);var M=A.u5j(T);this.f54_1.r5j(M.m4z_1,M.n4z_1,M.q4z_1,-M.r50(o)),A.r57(u.m4z_1-r.m4z_1,u.n4z_1-r.n4z_1,u.q4z_1-r.q4z_1),T.r57(s.m4z_1-o.m4z_1,s.n4z_1-o.n4z_1,s.q4z_1-o.q4z_1);var N=A.u5j(T);this.g54_1.r5j(N.m4z_1,N.n4z_1,N.q4z_1,-N.r50(o)),A.r57(h.m4z_1-_.m4z_1,h.n4z_1-_.n4z_1,h.q4z_1-_.q4z_1),T.r57(l.m4z_1-a.m4z_1,l.n4z_1-a.n4z_1,l.q4z_1-a.q4z_1);var R=A.u5j(T);this.h54_1.r5j(R.m4z_1,R.n4z_1,R.q4z_1,-R.r50(a)),A.r57(a.m4z_1-o.m4z_1,a.n4z_1-o.n4z_1,a.q4z_1-o.q4z_1),T.r57(_.m4z_1-r.m4z_1,_.n4z_1-r.n4z_1,_.q4z_1-r.q4z_1);var P=A.u5j(T);this.i54_1.r5j(P.m4z_1,P.n4z_1,P.q4z_1,-P.r50(r)),A.r57(l.m4z_1-s.m4z_1,l.n4z_1-s.n4z_1,l.q4z_1-s.q4z_1),T.r57(h.m4z_1-u.m4z_1,h.n4z_1-u.n4z_1,h.q4z_1-u.q4z_1);var L=A.u5j(T);return this.j54_1.r5j(L.m4z_1,L.n4z_1,L.q4z_1,-L.r50(s)),this.k54_1.b54(e),this},Kr(g_).v5j=function(t){return this.j54_1.r50(t)>0&&this.e54_1.r50(t)>0&&this.f54_1.r50(t)>0&&this.h54_1.r50(t)>0&&this.g54_1.r50(t)>0&&this.i54_1.r50(t)>0},Kr(g_).w5j=function(t,n){if(this.v5j(t)||this.v5j(n))return!0;if(t.equals(n))return!1;var i=0,e=this.l54_1.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=this.l54_1[r];if(s.x5j(t,n)<0)return!1;if(null!=s.y5j(t,n))return!0}while(i<=e);return!1},Kr(g_).z5j=function(t){return this.k54_1.a5k(t)},Kr(y_).b5k=function(t,n){return this.e4z_1.t54(t),this.f4z_1.r57(n.m4z_1-t.m4z_1,n.n4z_1-t.n4z_1,n.q4z_1-t.q4z_1),this},Kr(y_).l4z=function(t,n){return n.m4z_1=this.e4z_1.m4z_1+this.f4z_1.m4z_1*t,n.n4z_1=this.e4z_1.n4z_1+this.f4z_1.n4z_1*t,n.q4z_1=this.e4z_1.q4z_1+this.f4z_1.q4z_1*t,n},Kr(y_).c5k=function(t,n,i,e,r){var s,o,u,a;if(!(t.length>=n))throw s=wx().v4w(wx().q4w_1,"Line","triStripIntersection","missingArray"),cs(ss(s));if(!(n>=3))throw o=wx().v4w(wx().q4w_1,"Line","triStripIntersection","invalidStride"),cs(ss(o));if(0===i.length)throw u=wx().v4w(wx().q4w_1,"Line","triStripIntersection","missingArray"),cs(ss(u));if(!(e>=0))throw a=wx().v4w(wx().q4w_1,"Line","triStripIntersection","invalidCount"),cs(ss(a));var h=this.f4z_1.m4z_1,_=this.f4z_1.n4z_1,l=this.f4z_1.q4z_1,f=this.e4z_1.m4z_1,c=this.e4z_1.n4z_1,v=this.e4z_1.q4z_1;As();var w=1/0,d=1e-5,p=i[0]*n|0,m=p;p=m+1|0;var g=t[m],$=p;p=$+1|0;var y=t[$],b=t[p],k=p=i[1]*n|0;p=k+1|0;var j=t[k],x=p;p=x+1|0;var z=t[x],E=t[p],C=2;if(C-1e-5&&V1.00001)){var J=W*N-G*M,X=G*D-Y*N,Z=Y*M-W*D,Q=B*(h*J+_*X+l*Z);if(!(Q<-1e-5||K+Q>1.00001)){var tt=B*(R*J+P*X+L*Z);tt>=0&&tte?Bh().v50_1:Bh().s50_1;var s=r-i,o=Math.cos(e)*Math.sin(s),u=r-i,a=Math.cos(n)*Math.sin(e)-Math.sin(n)*Math.cos(e)*Math.cos(u),h=Math.atan2(o,a);return Ds(h)?Bh().s50_1:Bh().r51(h)},Kr(x_).h5k=function(t){var n=Hh(this.j4w_1),i=Hh(this.k4w_1),e=Hh(t.j4w_1),r=Hh(t.k4w_1);if(n===e&&i===r)return 0;var s=(e-n)/2,o=Math.sin(s),u=(r-i)/2,a=Math.sin(u),h=o*o+Math.cos(n)*Math.cos(e)*a*a,_=Math.sqrt(h),l=2*Math.asin(_);return Ds(l)?0:l},Kr(x_).i5k=function(t,n,i){if(0===n)return i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1,i;var e=Hh(this.j4w_1),r=Hh(this.k4w_1),s=Hh(t),o=Math.cos(e),u=Math.sin(e),a=Math.cos(s),h=Math.sin(s),_=Math.sin(n),l=Math.cos(n),f=u*l+o*_*a,c=Math.asin(f),v=_*h,w=o*l-u*_*a,d=r+Math.atan2(v,w);return Ds(c)||Ds(d)?(i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1):(i.j4w_1=t_(Bh().r51(c)),i.k4w_1=n_(Bh().r51(d))),i},Kr(x_).j5k=function(t){var n=Hh(this.j4w_1),i=Hh(this.k4w_1),e=Hh(t.j4w_1),r=Hh(t.k4w_1);if(n===e&&i===r)return Bh().s50_1;var s=r-i,o=e/2+ps()/4,u=Math.tan(o),a=n/2+ps()/4,h=u/Math.tan(a),_=Math.log(h),l=s;Math.abs(l)>ps()&&(s=s>0?-(2*ps()-s):2*ps()+s);var f=s,c=Math.atan2(f,_);return Ds(c)?Bh().s50_1:Bh().r51(c)},Kr(x_).k5k=function(t){var n=Hh(this.j4w_1),i=Hh(this.k4w_1),e=Hh(t.j4w_1),r=Hh(t.k4w_1);if(n===e&&i===r)return 0;var s,o=e-n,u=r-i,a=Math.abs(o);if(j_(),a<1e-15)s=Math.cos(n);else{var h=e/2+ps()/4,_=Math.tan(h),l=n/2+ps()/4,f=_/Math.tan(l);s=o/Math.log(f)}var c=s,v=u;Math.abs(v)>ps()&&(u=u>0?-(2*ps()-u):2*ps()+u);var w=o*o+c*c*u*u,d=Math.sqrt(w);return Ds(d)?0:d},Kr(x_).l5k=function(t,n,i){if(0===n)return i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1,i;var e,r=Hh(this.j4w_1),s=Hh(this.k4w_1),o=Hh(t),u=r+n*Math.cos(o),a=u-r,h=Math.abs(a);if(j_(),h<1e-15)e=Math.cos(r);else{var _=u/2+ps()/4,l=Math.tan(_),f=r/2+ps()/4,c=l/Math.tan(f);e=a/Math.log(c)}var v=e,w=n*Math.sin(o)/v,d=u;Math.abs(d)>ps()/2&&(u=u>0?ps()-u:-ps()-u);var p=(s+w+ps())%(2*ps())-ps();return Ds(u)||Ds(p)?(i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1):(i.j4w_1=t_(Bh().r51(u)),i.k4w_1=n_(Bh().r51(p))),i},Kr(x_).equals=function(t){return this===t||t instanceof x_&&this.j4w_1===t.j4w_1&&this.k4w_1===t.k4w_1},Kr(x_).hashCode=function(){var t=s_(this.j4w_1);return Hr(31,t)+s_(this.k4w_1)|0},Kr(x_).toString=function(){return"Location(latitude="+new o_(this.j4w_1)+", longitude="+new o_(this.k4w_1)+")"},Kr(E_).m5k=function(t,n,i,e,r,s,o,u){return this.r4z_1.o4w(t,n,i),this.s4z_1=e,this.t4z_1=r,this.u4z_1=s,this.v4z_1=o,this.w4z_1=u,this},Kr(E_).n5k=function(t){return this.m5k(t.r4z_1.j4w_1,t.r4z_1.k4w_1,t.r4z_1.n4w_1,t.s4z_1,t.t4z_1,t.u4z_1,t.v4z_1,t.w4z_1)},Kr(E_).toString=function(){return"LookAt(position="+this.r4z_1+", altitudeMode="+this.s4z_1+", range="+this.t4z_1+", heading="+new o_(this.u4z_1)+", tilt="+new o_(this.v4z_1)+", roll="+new o_(this.w4z_1)+")"},Kr(O_).x59=function(t){var n=t.q59_1,i=this.q59_1,e=n.length;return Ss(n,i,0,0,e),this},Kr(O_).p5k=function(t,n){return this.q59_1[0]=t,this.q59_1[4]=n,this},Kr(O_).s57=function(){var t=S_().o5k_1,n=this.q59_1,i=t.length;return Ss(t,n,0,0,i),this},Kr(O_).q5k=function(){return this.q59_1[0]=1,this.q59_1[1]=0,this.q59_1[2]=0,this.q59_1[3]=0,this.q59_1[4]=-1,this.q59_1[5]=1,this.q59_1[6]=0,this.q59_1[7]=0,this.q59_1[8]=1,this},Kr(O_).f5g=function(t,n){var i=t.w5e(),e=t.v5e(),r=n.w5e(),s=n.v5e(),o=e/s,u=i/r,a=(t.t5e_1-n.t5e_1)/s,h=(t.r5e_1-n.r5e_1)/r;return this.q59_1[0]=o,this.q59_1[1]=0,this.q59_1[2]=a,this.q59_1[3]=0,this.q59_1[4]=u,this.q59_1[5]=h,this.q59_1[6]=0,this.q59_1[7]=0,this.q59_1[8]=1,this},Kr(O_).e5g=function(t,n){var i=t.w5e(),e=t.v5e(),r=n.w5e(),s=n.v5e(),o=e/s,u=i/r,a=(t.t5e_1-n.t5e_1)/s,h=(t.r5e_1-n.r5e_1)/r,_=this.q59_1;_[2]=_[2]+(this.q59_1[0]*a+this.q59_1[1]*h);var l=this.q59_1;l[5]=l[5]+(this.q59_1[3]*a+this.q59_1[4]*h);var f=this.q59_1;f[8]=f[8]+(this.q59_1[6]*a+this.q59_1[6]*h);var c=this.q59_1;c[0]=c[0]*o;var v=this.q59_1;v[1]=v[1]*u;var w=this.q59_1;w[3]=w[3]*o;var d=this.q59_1;d[4]=d[4]*u;var p=this.q59_1;p[6]=p[6]*o;var m=this.q59_1;return m[7]=m[7]*u,this},Kr(O_).r5k=function(t){var n=this.q59_1,i=t.q59_1,e=n[0],r=n[1],s=n[2];return n[0]=e*i[0]+r*i[3]+s*i[6],n[1]=e*i[1]+r*i[4]+s*i[7],n[2]=e*i[2]+r*i[5]+s*i[8],e=n[3],r=n[4],s=n[5],n[3]=e*i[0]+r*i[3]+s*i[6],n[4]=e*i[1]+r*i[4]+s*i[7],n[5]=e*i[2]+r*i[5]+s*i[8],e=n[6],r=n[7],s=n[8],n[6]=e*i[0]+r*i[3]+s*i[6],n[7]=e*i[1]+r*i[4]+s*i[7],n[8]=e*i[2]+r*i[5]+s*i[8],this},Kr(O_).s5k=function(t,n){var i,e=n;if(!((t.length-e|0)>=9))throw i=wx().v4w(wx().q4w_1,"Matrix4","transposeToArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.q59_1[0];var s=e;e=s+1|0,t[s]=this.q59_1[3];var o=e;e=o+1|0,t[o]=this.q59_1[6];var u=e;e=u+1|0,t[u]=this.q59_1[1];var a=e;e=a+1|0,t[a]=this.q59_1[4];var h=e;e=h+1|0,t[h]=this.q59_1[7];var _=e;e=_+1|0,t[_]=this.q59_1[2];var l=e;return e=l+1|0,t[l]=this.q59_1[5],t[e]=this.q59_1[8],t},Kr(O_).equals=function(t){return this===t||t instanceof O_&&Ws(this.q59_1,t.q59_1)},Kr(O_).hashCode=function(){return Gs(this.q59_1)},Kr(O_).toString=function(){return"Matrix3(["+this.q59_1[0]+", "+this.q59_1[1]+", "+this.q59_1[2]+"], ["+this.q59_1[3]+", "+this.q59_1[4]+", "+this.q59_1[5]+"], ["+this.q59_1[6]+", "+this.q59_1[7]+", "+this.q59_1[8]+"])"},Kr(I_).y5k=function(t,n){for(var i=0,e=ms(Array(4),null);i<4;){var r,s=i;r=new Float64Array(4),e[s]=r,i=i+1|0}var o=e;o[0][0]=t[0],o[0][1]=t[1],o[0][2]=t[2],o[0][3]=t[3],o[1][0]=t[4],o[1][1]=t[5],o[1][2]=t[6],o[1][3]=t[7],o[2][0]=t[8],o[2][1]=t[9],o[2][2]=t[10],o[2][3]=t[11],o[3][0]=t[12],o[3][1]=t[13],o[3][2]=t[14],o[3][3]=t[15];var u=new Int32Array(4),a=this.z5k(o,u),h=0;if(h<=3)do{var _=h;h=h+1|0,a*=o[_][_]}while(h<=3);var l=a;if(Math.abs(l)<1e-8)return!1;for(var f=0,c=ms(Array(4),null);f<4;){var v,w=f;v=new Float64Array(4),c[w]=v,f=f+1|0}var d=c,p=new Float64Array(4),m=0;if(m<=3)do{var g=m;m=m+1|0;var $=0;if($<=3)do{var y=$;$=$+1|0,p[y]=0}while($<=3);p[g]=1,this.a5l(o,u,p);var b=0;if(b<=3)do{var k=b;b=b+1|0,d[k][g]=p[k]}while(b<=3)}while(m<=3);return n[0]=d[0][0],n[1]=d[0][1],n[2]=d[0][2],n[3]=d[0][3],n[4]=d[1][0],n[5]=d[1][1],n[6]=d[1][2],n[7]=d[1][3],n[8]=d[2][0],n[9]=d[2][1],n[10]=d[2][2],n[11]=d[2][3],n[12]=d[3][0],n[13]=d[3][1],n[14]=d[3][2],n[15]=d[3][3],!0},Kr(I_).z5k=function(t,n){var i=new Float64Array(4),e=1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=0,u=0;if(u<=3)do{var a,h=u;u=u+1|0;var _=t[s][h];(a=Math.abs(_))>o&&(o=a)}while(u<=3);if(0===o)return 0;i[s]=1/o}while(r<=3);var l=0;if(l<=3)do{var f=l;l=l+1|0;var c=0;if(c=g&&(g=m,$=b)}while(y<=3);if(f!==$){var S=0;if(S<=3)do{var q=S;S=S+1|0,m=t[$][q],t[$][q]=t[f][q],t[f][q]=m}while(S<=3);e=-e,i[$]=i[f]}if(n[f]=$,0===t[f][f]&&(t[f][f]=1e-20),3!==f){m=1/t[f][f];var O=f+1|0;if(O<=3)do{var I=O;O=O+1|0;var A=t[I],T=f;A[T]=A[T]*m}while(O<=3)}}while(l<=3);return e},Kr(I_).a5l=function(t,n,i){var e=-1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=n[s],u=i[o];if(i[o]=i[s],-1!==e){var a=e;if(a0))throw s=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidWidth"),cs(ss(s));if(!(n>0))throw o=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidHeight"),cs(ss(o));if(!(i>0&&i<180))throw u=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidFieldOfView"),cs(ss(u));if(e===r)throw a=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance"),cs(ss(a));if(!(e>0&&r>0))throw h=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance"),cs(ss(h));var _=t/n,l=.5*Hh(i),f=2*e*Math.tan(l),c=f*_;return this.g4z_1[0]=2*e/c,this.g4z_1[1]=0,this.g4z_1[2]=0,this.g4z_1[3]=0,this.g4z_1[4]=0,this.g4z_1[5]=2*e/f,this.g4z_1[6]=0,this.g4z_1[7]=0,this.g4z_1[8]=0,this.g4z_1[9]=0,this.g4z_1[10]=-(r+e)/(r-e),this.g4z_1[11]=-2*e*r/(r-e),this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=-1,this.g4z_1[15]=0,this},Kr(D_).u54=function(t,n){var i,e;if(!(t>0))throw i=wx().v4w(wx().q4w_1,"Matrix4","setToScreenProjection","invalidWidth"),cs(ss(i));if(!(n>0))throw e=wx().v4w(wx().q4w_1,"Matrix4","setToScreenProjection","invalidHeight"),cs(ss(e));return this.g4z_1[0]=2/t,this.g4z_1[1]=0,this.g4z_1[2]=0,this.g4z_1[3]=-1,this.g4z_1[4]=0,this.g4z_1[5]=2/n,this.g4z_1[6]=0,this.g4z_1[7]=-1,this.g4z_1[8]=0,this.g4z_1[9]=0,this.g4z_1[10]=2,this.g4z_1[11]=-1,this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=0,this.g4z_1[15]=1,this},Kr(D_).u5i=function(t,n,i){var e,r,s;if(!(t.length>=i))throw e=wx().v4w(wx().q4w_1,"Matrix4","setToCovarianceOfPoints","invalidArray"),cs(ss(e));if(!(n>=0))throw r=wx().v4w(wx().q4w_1,"Matrix4","setToCovarianceOfPoints","invalidCount"),cs(ss(r));if(!(i>=3))throw s=wx().v4w(wx().q4w_1,"Matrix4","setToCovarianceOfPoints","invalidStride"),cs(ss(s));var o=0,u=0,a=0,h=0,_=0,l=0,f=0,c=0,v=0,w=0,d=zs(xs(0,n),i),p=d.y_1,m=d.z_1,g=d.a1_1;if(g>0&&p<=m||g<0&&m<=p)do{var $=p;p=p+g|0,o+=t[$],u+=t[$+1|0],a+=t[$+2|0],w+=1}while($!==m);o/=w,u/=w,a/=w;var y=zs(xs(0,n),i),b=y.y_1,k=y.z_1,j=y.a1_1;if(j>0&&b<=k||j<0&&k<=b)do{var x=b;b=b+j|0;var z=t[x]-o,E=t[x+1|0]-u,C=t[x+2|0]-a;h+=z*z,_+=E*E,l+=C*C,f+=z*E,c+=z*C,v+=E*C}while(x!==k);return this.g4z_1[0]=h/w,this.g4z_1[1]=f/w,this.g4z_1[2]=c/w,this.g4z_1[3]=0,this.g4z_1[4]=f/w,this.g4z_1[5]=_/w,this.g4z_1[6]=v/w,this.g4z_1[7]=0,this.g4z_1[8]=c/w,this.g4z_1[9]=v/w,this.g4z_1[10]=l/w,this.g4z_1[11]=0,this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=0,this.g4z_1[15]=0,this},Kr(D_).k50=function(t,n,i){var e=this.g4z_1;e[3]=e[3]+(this.g4z_1[0]*t+this.g4z_1[1]*n+this.g4z_1[2]*i);var r=this.g4z_1;r[7]=r[7]+(this.g4z_1[4]*t+this.g4z_1[5]*n+this.g4z_1[6]*i);var s=this.g4z_1;s[11]=s[11]+(this.g4z_1[8]*t+this.g4z_1[9]*n+this.g4z_1[10]*i);var o=this.g4z_1;return o[15]=o[15]+(this.g4z_1[12]*t+this.g4z_1[13]*n+this.g4z_1[14]*i),this},Kr(D_).b55=function(t,n,i,e){var r=Hh(e),s=Math.cos(r),o=Hh(e),u=Math.sin(o);return this.e5l(s+(1-s)*t*t,(1-s)*t*n-u*i,(1-s)*t*i+u*n,0,(1-s)*t*n+u*i,s+(1-s)*n*n,(1-s)*n*i-u*t,0,(1-s)*t*i-u*n,(1-s)*n*i+u*t,s+(1-s)*i*i,0,0,0,0,1),this},Kr(D_).x5e=function(t,n,i){var e=this.g4z_1;e[0]=e[0]*t;var r=this.g4z_1;r[4]=r[4]*t;var s=this.g4z_1;s[8]=s[8]*t;var o=this.g4z_1;o[12]=o[12]*t;var u=this.g4z_1;u[1]=u[1]*n;var a=this.g4z_1;a[5]=a[5]*n;var h=this.g4z_1;h[9]=h[9]*n;var _=this.g4z_1;_[13]=_[13]*n;var l=this.g4z_1;l[2]=l[2]*i;var f=this.g4z_1;f[6]=f[6]*i;var c=this.g4z_1;c[10]=c[10]*i;var v=this.g4z_1;return v[14]=v[14]*i,this},Kr(D_).c50=function(t){var n=this.g4z_1,i=t.g4z_1,e=n[0],r=n[1],s=n[2],o=n[3];return n[0]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[1]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[2]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[3]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[4],r=n[5],s=n[6],o=n[7],n[4]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[5]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[6]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[7]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[8],r=n[9],s=n[10],o=n[11],n[8]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[9]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[10]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[11]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[12],r=n[13],s=n[14],o=n[15],n[12]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[13]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[14]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[15]=e*i[3]+r*i[7]+s*i[11]+o*i[15],this},Kr(D_).e5l=function(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w){var d=this.g4z_1[0],p=this.g4z_1[1],m=this.g4z_1[2],g=this.g4z_1[3];return this.g4z_1[0]=d*t+p*r+m*a+g*f,this.g4z_1[1]=d*n+p*s+m*h+g*c,this.g4z_1[2]=d*i+p*o+m*_+g*v,this.g4z_1[3]=d*e+p*u+m*l+g*w,d=this.g4z_1[4],p=this.g4z_1[5],m=this.g4z_1[6],g=this.g4z_1[7],this.g4z_1[4]=d*t+p*r+m*a+g*f,this.g4z_1[5]=d*n+p*s+m*h+g*c,this.g4z_1[6]=d*i+p*o+m*_+g*v,this.g4z_1[7]=d*e+p*u+m*l+g*w,d=this.g4z_1[8],p=this.g4z_1[9],m=this.g4z_1[10],g=this.g4z_1[11],this.g4z_1[8]=d*t+p*r+m*a+g*f,this.g4z_1[9]=d*n+p*s+m*h+g*c,this.g4z_1[10]=d*i+p*o+m*_+g*v,this.g4z_1[11]=d*e+p*u+m*l+g*w,d=this.g4z_1[12],p=this.g4z_1[13],m=this.g4z_1[14],g=this.g4z_1[15],this.g4z_1[12]=d*t+p*r+m*a+g*f,this.g4z_1[13]=d*n+p*s+m*h+g*c,this.g4z_1[14]=d*i+p*o+m*_+g*v,this.g4z_1[15]=d*e+p*u+m*l+g*w,this},Kr(D_).s5j=function(t){return this.g4z_1[0]=t.g4z_1[0],this.g4z_1[1]=t.g4z_1[4],this.g4z_1[2]=t.g4z_1[8],this.g4z_1[3]=t.g4z_1[12],this.g4z_1[4]=t.g4z_1[1],this.g4z_1[5]=t.g4z_1[5],this.g4z_1[6]=t.g4z_1[9],this.g4z_1[7]=t.g4z_1[13],this.g4z_1[8]=t.g4z_1[2],this.g4z_1[9]=t.g4z_1[6],this.g4z_1[10]=t.g4z_1[10],this.g4z_1[11]=t.g4z_1[14],this.g4z_1[12]=t.g4z_1[3],this.g4z_1[13]=t.g4z_1[7],this.g4z_1[14]=t.g4z_1[11],this.g4z_1[15]=t.g4z_1[15],this},Kr(D_).s5k=function(t,n){var i,e=n;if(!((t.length-e|0)>=16))throw i=wx().v4w(wx().q4w_1,"Matrix4","transposeToArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.g4z_1[0];var s=e;e=s+1|0,t[s]=this.g4z_1[4];var o=e;e=o+1|0,t[o]=this.g4z_1[8];var u=e;e=u+1|0,t[u]=this.g4z_1[12];var a=e;e=a+1|0,t[a]=this.g4z_1[1];var h=e;e=h+1|0,t[h]=this.g4z_1[5];var _=e;e=_+1|0,t[_]=this.g4z_1[9];var l=e;e=l+1|0,t[l]=this.g4z_1[13];var f=e;e=f+1|0,t[f]=this.g4z_1[2];var c=e;e=c+1|0,t[c]=this.g4z_1[6];var v=e;e=v+1|0,t[v]=this.g4z_1[10];var w=e;e=w+1|0,t[w]=this.g4z_1[14];var d=e;e=d+1|0,t[d]=this.g4z_1[3];var p=e;e=p+1|0,t[p]=this.g4z_1[7];var m=e;return e=m+1|0,t[m]=this.g4z_1[11],t[e]=this.g4z_1[15],t},Kr(D_).z51=function(){var t;if(!A_().y5k(this.g4z_1,this.g4z_1))throw t=wx().v4w(wx().q4w_1,"Matrix4","invertMatrix","singularMatrix"),cs(ss(t));return this},Kr(D_).c55=function(){var t=this.g4z_1[1];this.g4z_1[1]=this.g4z_1[4],this.g4z_1[4]=t,t=this.g4z_1[2],this.g4z_1[2]=this.g4z_1[8],this.g4z_1[8]=t,t=this.g4z_1[6],this.g4z_1[6]=this.g4z_1[9],this.g4z_1[9]=t;var n=this.g4z_1[3],i=this.g4z_1[7],e=this.g4z_1[11];return this.g4z_1[3]=-this.g4z_1[0]*n-this.g4z_1[1]*i-this.g4z_1[2]*e,this.g4z_1[7]=-this.g4z_1[4]*n-this.g4z_1[5]*i-this.g4z_1[6]*e,this.g4z_1[11]=-this.g4z_1[8]*n-this.g4z_1[9]*i-this.g4z_1[10]*e,this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=0,this.g4z_1[15]=1,this},Kr(D_).u5c=function(t){var n=this.g4z_1;return n[10]=n[10]*(1+t),this},Kr(D_).h4z=function(t){return t.m4z_1=-this.g4z_1[0]*this.g4z_1[3]-this.g4z_1[4]*this.g4z_1[7]-this.g4z_1[8]*this.g4z_1[11],t.n4z_1=-this.g4z_1[1]*this.g4z_1[3]-this.g4z_1[5]*this.g4z_1[7]-this.g4z_1[9]*this.g4z_1[11],t.q4z_1=-this.g4z_1[2]*this.g4z_1[3]-this.g4z_1[6]*this.g4z_1[7]-this.g4z_1[10]*this.g4z_1[11],t},Kr(D_).i4z=function(t){return t.m4z_1=-this.g4z_1[8],t.n4z_1=-this.g4z_1[9],t.q4z_1=-this.g4z_1[10],t},Kr(D_).d50=function(t){var n=Hh(t),i=Math.cos(n),e=Hh(t),r=Math.sin(e),s=i*this.g4z_1[0]-r*this.g4z_1[4],o=r*this.g4z_1[5]-i*this.g4z_1[1],u=Bh(),a=Math.atan2(o,s);return u.r51(a)},Kr(D_).e50=function(){var t=this.g4z_1[10],n=this.g4z_1[2]*this.g4z_1[2]+this.g4z_1[6]*this.g4z_1[6],i=Math.sqrt(n),e=Bh(),r=Math.atan2(i,t);return e.r51(r)},Kr(D_).v5i=function(t,n,i){if(this.g4z_1[1]!==this.g4z_1[4]||this.g4z_1[2]!==this.g4z_1[8]||this.g4z_1[6]!==this.g4z_1[9])return!1;for(var e=this.g4z_1[0],r=this.g4z_1[1],s=this.g4z_1[2],o=this.g4z_1[5],u=this.g4z_1[6],a=this.g4z_1[10],h=0,_=ms(Array(3),null);h<3;){var l,f=h;l=new Float64Array(3),_[f]=l,h=h+1|0}var c=_;c[2][2]=1,c[1][1]=c[2][2],c[0][0]=c[1][1];var v=0;A_();if(v<32)t:do{var w,d;v=v+1|0;var p=r,m=Math.abs(p);if(A_(),m<1e-10){var g=s,$=Math.abs(g);A_(),d=$<1e-10}else d=!1;if(d){var y=u,b=Math.abs(y);A_(),w=b<1e-10}else w=!1;if(w)break t;if(0!==r){var k=.5*(o-e)/r,j=k*k,x=j+1,z=x!==j?(k<0?-1:1)*(Math.sqrt(x)-Math.abs(k)):.5/k,E=z*z+1,C=1/Math.sqrt(E),S=C*z;e-=z*r,o+=z*r,r=0;var q=C*s-S*u;u=S*s+C*u,s=q;var O=0;if(O<=2)do{var I=O;O=O+1|0,q=C*c[I][0]-S*c[I][1],c[I][1]=S*c[I][0]+C*c[I][1],c[I][0]=q}while(O<=2)}if(0!==s){var A=.5*(a-e)/s,T=A*A,D=T+1,M=D!==T?(A<0?-1:1)*(Math.sqrt(D)-Math.abs(A)):.5/A,N=M*M+1,R=1/Math.sqrt(N),P=R*M;e-=M*s,a+=M*s,s=0;var L=R*r-P*u;u=P*r+R*u,r=L;var F=0;if(F<=2)do{var U=F;F=F+1|0,L=R*c[U][0]-P*c[U][2],c[U][2]=P*c[U][0]+R*c[U][2],c[U][0]=L}while(F<=2)}if(0!==u){var H=.5*(a-o)/u,V=H*H,B=V+1,Y=B!==V?(H<0?-1:1)*(Math.sqrt(B)-Math.abs(H)):.5/H,W=Y*Y+1,G=1/Math.sqrt(W),K=G*Y;o-=Y*u,a+=Y*u,u=0;var J=G*r-K*s;s=K*r+G*s,r=J;var X=0;if(X<=2)do{var Z=X;X=X+1|0,J=G*c[Z][1]-K*c[Z][2],c[Z][2]=K*c[Z][1]+G*c[Z][2],c[Z][1]=J}while(X<=2)}}while(v<32);var Q=0,tt=1,nt=2;if(e1||(o=.5*(o/=a)+.5,u=.5*u+.5,s=(s=.5*(s/=a)+.5)*e.p4x_1+e.n4x_1,o=o*e.q4x_1+e.o4x_1,r.m4z_1=s,r.n4z_1=o,r.q4z_1=u,0))},Kr(D_).a52=function(t,n,i,e,r){var s=(t-i.n4x_1)/i.p4x_1,o=(n-i.o4x_1)/i.q4x_1;s=2*s-1,o=2*o-1;var u=this.g4z_1[0]*s+this.g4z_1[1]*o+this.g4z_1[3],a=this.g4z_1[4]*s+this.g4z_1[5]*o+this.g4z_1[7],h=this.g4z_1[8]*s+this.g4z_1[9]*o+this.g4z_1[11],_=this.g4z_1[12]*s+this.g4z_1[13]*o+this.g4z_1[15],l=u-this.g4z_1[2],f=a-this.g4z_1[6],c=h-this.g4z_1[10],v=_-this.g4z_1[14],w=u+this.g4z_1[2],d=a+this.g4z_1[6],p=h+this.g4z_1[10],m=_+this.g4z_1[14];return 0!==v&&0!==m&&(e.m4z_1=l/v,e.n4z_1=f/v,e.q4z_1=c/v,r.m4z_1=w/m,r.n4z_1=d/m,r.q4z_1=p/m,!0)},Kr(D_).equals=function(t){return this===t||t instanceof D_&&Ws(this.g4z_1,t.g4z_1)},Kr(D_).hashCode=function(){return Gs(this.g4z_1)},Kr(D_).toString=function(){return"Matrix4(["+this.g4z_1[0]+", "+this.g4z_1[1]+", "+this.g4z_1[2]+", "+this.g4z_1[3]+"], ["+this.g4z_1[4]+", "+this.g4z_1[5]+", "+this.g4z_1[6]+", "+this.g4z_1[7]+"], ["+this.g4z_1[8]+", "+this.g4z_1[9]+", "+this.g4z_1[10]+", "+this.g4z_1[11]+"], ["+this.g4z_1[12]+", "+this.g4z_1[13]+", "+this.g4z_1[14]+", "+this.g4z_1[15]+"])"},Kr(N_).j5l=function(){return new P_(F_(),.5,F_(),.5)},Kr(N_).k5l=function(){return new P_(F_(),0,F_(),0)},Kr(N_).l5l=function(){return new P_(F_(),.5,F_(),0)},Kr(N_).m5l=function(){return new P_(F_(),1,F_(),0)},Kr(P_).n5l=function(t,n,i,e){return this.f5l_1=t,this.g5l_1=n,this.h5l_1=i,this.i5l_1=e,this},Kr(P_).o5l=function(t){return this.n5l(t.f5l_1,t.g5l_1,t.h5l_1,t.i5l_1)},Kr(P_).p5l=function(t,n,i){var e,r;switch(this.f5l_1.l6_1){case 0:e=t*this.g5l_1;break;case 1:e=t-this.g5l_1;break;default:e=this.g5l_1}switch(this.h5l_1.l6_1){case 0:r=n*this.i5l_1;break;case 1:r=n-this.i5l_1;break;default:r=this.i5l_1}return i.q5l(e,r)},Kr(P_).toString=function(){return"Offset(xUnits="+this.f5l_1+", x="+this.g5l_1+", yUnits="+this.h5l_1+", y="+this.i5l_1+")"},Kr(P_).hashCode=function(){var t=this.f5l_1.hashCode();return t=Hr(t,31)+Ns(this.g5l_1)|0,t=Hr(t,31)+this.h5l_1.hashCode()|0,Hr(t,31)+Ns(this.i5l_1)|0},Kr(P_).equals=function(t){if(this===t)return!0;if(!(t instanceof P_))return!1;var n=t instanceof P_?t:Wr();return!!(this.f5l_1.equals(n.f5l_1)&&Rs(this.g5l_1,n.g5l_1)&&this.h5l_1.equals(n.h5l_1)&&Rs(this.i5l_1,n.i5l_1))},Kr(B_).k5j=function(t){return this.r50(t)},Kr(B_).r5j=function(t,n,i,e){return this.b5i_1.m4z_1=t,this.b5i_1.n4z_1=n,this.b5i_1.q4z_1=i,this.c5i_1=e,this.s5l(),this},Kr(B_).t5j=function(t){var n=t.g4z_1,i=n[0]*this.b5i_1.m4z_1+n[1]*this.b5i_1.n4z_1+n[2]*this.b5i_1.q4z_1+n[3]*this.c5i_1,e=n[4]*this.b5i_1.m4z_1+n[5]*this.b5i_1.n4z_1+n[6]*this.b5i_1.q4z_1+n[7]*this.c5i_1,r=n[8]*this.b5i_1.m4z_1+n[9]*this.b5i_1.n4z_1+n[10]*this.b5i_1.q4z_1+n[11]*this.c5i_1,s=n[12]*this.b5i_1.m4z_1+n[13]*this.b5i_1.n4z_1+n[14]*this.b5i_1.q4z_1+n[15]*this.c5i_1;return this.b5i_1.m4z_1=i,this.b5i_1.n4z_1=e,this.b5i_1.q4z_1=r,this.c5i_1=s,this.s5l(),this},Kr(B_).r50=function(t){return this.b5i_1.r50(t)+this.c5i_1},Kr(B_).x5j=function(t,n){var i=this.k5j(t),e=this.k5j(n);return i<0&&e<0?-1:i>0&&e>0?1:0},Kr(B_).y5j=function(t,n){if(t.equals(n))return null;var i=$_().b5k(t,n),e=this.b5i_1.r50(i.f4z_1);if(0===e)return 0===this.r50(i.e4z_1)?[t,n]:null;var r=-this.r50(i.e4z_1)/e;if(r<0||r>1)return null;var s=i.l4z(r,_l());return e>0?[s,n]:[t,s]},Kr(B_).s5l=function(){var t,n=this.b5i_1.t5l();if(0===n)return rs();if(H_(),n>=1-1e-10?(H_(),t=n<=1+1e-10):t=!1,t)return rs();var i=this.b5i_1;i.m4z_1=i.m4z_1/n;var e=this.b5i_1;e.n4z_1=e.n4z_1/n;var r=this.b5i_1;r.q4z_1=r.q4z_1/n;this.c5i_1=this.c5i_1/n},Kr(B_).equals=function(t){return this===t||t instanceof B_&&!!this.b5i_1.equals(t.b5i_1)&&this.c5i_1===t.c5i_1},Kr(B_).hashCode=function(){var t=this.b5i_1.hashCode();return Hr(31,t)+Ns(this.c5i_1)|0},Kr(B_).toString=function(){return"Plane(normal="+this.b5i_1+", distance="+this.c5i_1+")"},Kr(G_).u5l=function(t,n,i){return new J_(Bh().e55(t),Bh().e55(n),i)},Kr(J_).o4w=function(t,n,i){return this.d5k(t,n),this.n4w_1=i,this},Kr(J_).v5l=function(t,n,i){return this.f5k(t,n),this.n4w_1=i,this},Kr(J_).a50=function(t){return this.o4w(t.j4w_1,t.k4w_1,t.n4w_1)},Kr(J_).equals=function(t){return this===t||t instanceof J_&&!!Kr(x_).equals.call(this,t)&&this.n4w_1===t.n4w_1},Kr(J_).hashCode=function(){var t=Kr(x_).hashCode.call(this);return Hr(31,t)+Ns(this.n4w_1)|0},Kr(J_).toString=function(){return"Position(latitude="+new o_(this.j4w_1)+", longitude="+new o_(this.k4w_1)+", altitude="+this.n4w_1+")"},Kr(Z_).rb=function(){return this.k56_1>this.j56_1?this.k56_1-this.j56_1|0:0},Kr(Z_).w5l=function(t,n){return this.j56_1=t,this.k56_1=n,this},Kr(Z_).x5l=function(t){return this.w5l(t.j56_1,t.k56_1)},Kr(Z_).equals=function(t){return this===t||t instanceof Z_&&this.j56_1===t.j56_1&&this.k56_1===t.k56_1},Kr(Z_).hashCode=function(){var t=this.j56_1;return Hr(31,t)+this.k56_1|0},Kr(Z_).toString=function(){return"Range(lower="+this.j56_1+", upper="+this.k56_1+")"},Kr(nl).y5l=function(t,n,i,e){var r=i>0?Bh().v5h(t+i):t,s=e>0?Bh().w5h(n+e):n;return new el(Bh().e55(t),Bh().e55(r),Bh().e55(n),Bh().e55(s))},Kr(el).sr=function(){return!!(Rs(this.r5e_1,Bh().s50_1)&&Rs(this.s5e_1,Bh().s50_1)&&Rs(this.t5e_1,Bh().s50_1))&&Rs(this.u5e_1,Bh().s50_1)},Kr(el).z5l=function(){return!!(Rs(this.r5e_1,Bh().u50_1)&&Rs(this.s5e_1,Bh().t50_1)&&Rs(this.t5e_1,Bh().w50_1))&&Rs(this.u5e_1,Bh().v50_1)},Kr(el).w5e=function(){return Kh(this.s5e_1,this.r5e_1)},Kr(el).v5e=function(){return Kh(this.u5e_1,this.t5e_1)},Kr(el).z5i=function(){return Bh().x5h(this.r5e_1,this.s5e_1)},Kr(el).a5j=function(){return Bh().x5h(this.t5e_1,this.u5e_1)},Kr(el).a5m=function(t){return t.j4w_1=this.z5i(),t.k4w_1=this.a5j(),t},Kr(el).i5f=function(t){return this.r5e_1=t.r5e_1,this.s5e_1=t.s5e_1,this.t5e_1=t.t5e_1,this.u5e_1=t.u5e_1,this},Kr(el).r4x=function(){return this.r5e_1=Bh().s50_1,this.s5e_1=Bh().s50_1,this.t5e_1=Bh().s50_1,this.u5e_1=Bh().s50_1,this},Kr(el).b5m=function(){return this.r5e_1=Bh().u50_1,this.s5e_1=Bh().t50_1,this.t5e_1=Bh().w50_1,this.u5e_1=Bh().v50_1,this},Kr(el).c5g=function(t){return this.r5e_1t.r5e_1&&this.t5e_1t.t5e_1},Kr(el).y5e=function(t){return this.r5e_1<=t.s5e_1&&this.s5e_1>=t.r5e_1&&this.t5e_1<=t.u5e_1&&this.u5e_1>=t.t5e_1},Kr(el).c5m=function(t){return this.r5e_1t.r5e_1&&this.t5e_1t.t5e_1&&(this.r5e_1t.s5e_1&&(this.s5e_1=t.s5e_1),this.t5e_1t.u5e_1&&(this.u5e_1=t.u5e_1),!0)},Kr(el).d5m=function(t,n){var i,e=this.r5e_1,r=this.s5e_1;if(e<=t&&t<=r){var s=this.t5e_1,o=this.u5e_1;i=s<=n&&n<=o}else i=!1;return i},Kr(el).e5m=function(t){return this.d5m(t.j4w_1,t.k4w_1)},Kr(el).f5m=function(t,n,i){var e,r,s;if(!(t.length>=i))throw e=wx().v4w(wx().q4w_1,"Sector","union","missingArray"),cs(ss(e));if(!(n>=0))throw r=wx().v4w(wx().q4w_1,"Sector","union","invalidCount"),cs(ss(r));if(!(i>=2))throw s=wx().v4w(wx().q4w_1,"Sector","union","invalidStride"),cs(ss(s));var o,u=this.sr();u?(As(),o=17976931348623157e292):o=this.r5e_1;var a,h=o;u?(As(),a=-17976931348623157e292):a=this.s5e_1;var _,l=a;u?(As(),_=17976931348623157e292):_=this.t5e_1;var f,c=_;u?(As(),f=-17976931348623157e292):f=this.u5e_1;var v=f,w=zs(xs(0,n),i),d=w.y_1,p=w.z_1,m=w.a1_1;if(m>0&&d<=p||m<0&&p<=d)do{var g=d;d=d+m|0;var $=t[g],y=t[g+1|0];ly&&(h=y),v<$&&(v=$),c>$&&(c=$)}while(g!==p);var b=h;As(),b<17976931348623157e292&&(this.r5e_1=Bh().e55(h));var k=l;As(),k>-17976931348623157e292&&(this.s5e_1=Bh().e55(l));var j=c;As(),j<17976931348623157e292&&(this.t5e_1=Bh().e55(c));var x=v;return As(),x>-17976931348623157e292&&(this.u5e_1=Bh().e55(v)),this},Kr(el).g5m=function(t){return t.sr()||(this.sr()?(this.r5e_1=t.r5e_1,this.s5e_1=t.s5e_1,this.t5e_1=t.t5e_1,this.u5e_1=t.u5e_1):(this.r5e_1>t.r5e_1&&(this.r5e_1=t.r5e_1),this.s5e_1t.t5e_1&&(this.t5e_1=t.t5e_1),this.u5e_10))throw o=wx().s5m("TileMatrixSet","fromTilePyramid","invalidResolution"),cs(ss(o));var u=0,a=n,h=i,_=gs();do{var l=u;u=l+1|0;var f=new rl(t,l,a,h,e,r);_.a(f),a=Hr(a,2),h=Hr(h,2)}while(f.o5m()>s);return new ul(t,_)},Kr(ul).v5m=function(t){var n=-1;As();var i=1/0,e=0,r=this.u5m_1.g()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=this.u5m_1.h(s).o5m()-t,u=o*o;i>u&&(i=u,n=s)}while(e<=r);return n},Kr(hl).w5m=function(){return this.m4z_1*this.m4z_1+this.n4z_1*this.n4z_1},Kr(hl).t5l=function(){var t=this.w5m();return Math.sqrt(t)},Kr(hl).q5l=function(t,n){return this.m4z_1=t,this.n4z_1=n,this},Kr(hl).x5m=function(t){var n=this.m4z_1;return this.m4z_1=t.m4z_1,t.m4z_1=n,n=this.n4z_1,this.n4z_1=t.n4z_1,t.n4z_1=n,this},Kr(hl).y5m=function(t){this.m4z_1=this.m4z_1+t.m4z_1;this.n4z_1=this.n4z_1+t.n4z_1},Kr(hl).z5m=function(t){this.m4z_1=this.m4z_1-t.m4z_1;this.n4z_1=this.n4z_1-t.n4z_1},Kr(hl).a5n=function(t){this.m4z_1=this.m4z_1*t;this.n4z_1=this.n4z_1*t},Kr(hl).b5n=function(t){return this.m4z_1*t.m4z_1+this.n4z_1*t.n4z_1},Kr(hl).equals=function(t){return this===t||t instanceof hl&&this.m4z_1===t.m4z_1&&this.n4z_1===t.n4z_1},Kr(hl).hashCode=function(){var t=Ns(this.m4z_1);return Hr(31,t)+Ns(this.n4z_1)|0},Kr(hl).toString=function(){return"Vec2(x="+this.m4z_1+", y="+this.n4z_1+")"},Kr(ll).w5m=function(){return Kr(hl).w5m.call(this)+this.q4z_1*this.q4z_1},Kr(ll).c5n=function(t,n){var i,e=n;if(!((t.length-e|0)>=3))throw i=wx().v4w(wx().q4w_1,"Vec3","toArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.m4z_1;var s=e;return e=s+1|0,t[s]=this.n4z_1,t[e]=this.q4z_1,t},Kr(ll).c5j=function(t){var n=this.d5j(t);return Math.sqrt(n)},Kr(ll).d5j=function(t){var n=this.m4z_1-t.m4z_1,i=this.n4z_1-t.n4z_1,e=this.q4z_1-t.q4z_1;return n*n+i*i+e*e},Kr(ll).r57=function(t,n,i){return this.q5l(t,n),this.q4z_1=i,this},Kr(ll).t54=function(t){return this.r57(t.m4z_1,t.n4z_1,t.q4z_1)},Kr(ll).a5i=function(t){Kr(hl).x5m.call(this,t);var n=this.q4z_1;return this.q4z_1=t.q4z_1,t.q4z_1=n,this},Kr(ll).d5n=function(t){return this.e5n(t),this},Kr(ll).e5n=function(t){Kr(hl).y5m.call(this,t);this.q4z_1=this.q4z_1+t.q4z_1},Kr(ll).p50=function(t){return this.f5n(t),this},Kr(ll).f5n=function(t){Kr(hl).z5m.call(this,t);this.q4z_1=this.q4z_1-t.q4z_1},Kr(ll).w5i=function(t){return this.a5n(t),this},Kr(ll).a5n=function(t){Kr(hl).a5n.call(this,t);this.q4z_1=this.q4z_1*t},Kr(ll).c50=function(t){var n=t.g4z_1,i=n[0]*this.m4z_1+n[1]*this.n4z_1+n[2]*this.q4z_1+n[3],e=n[4]*this.m4z_1+n[5]*this.n4z_1+n[6]*this.q4z_1+n[7],r=n[8]*this.m4z_1+n[9]*this.n4z_1+n[10]*this.q4z_1+n[11],s=n[12]*this.m4z_1+n[13]*this.n4z_1+n[14]*this.q4z_1+n[15];return this.m4z_1=i/s,this.n4z_1=e/s,this.q4z_1=r/s,this},Kr(ll).q50=function(){var t=this.t5l();if(0!==t){this.m4z_1=this.m4z_1/t;this.n4z_1=this.n4z_1/t;this.q4z_1=this.q4z_1/t}return this},Kr(ll).r50=function(t){return Kr(hl).b5n.call(this,t)+this.q4z_1*t.q4z_1},Kr(ll).u5j=function(t){var n=this.n4z_1*t.q4z_1-this.q4z_1*t.n4z_1,i=this.q4z_1*t.m4z_1-this.m4z_1*t.q4z_1,e=this.m4z_1*t.n4z_1-this.n4z_1*t.m4z_1;return this.m4z_1=n,this.n4z_1=i,this.q4z_1=e,this},Kr(ll).equals=function(t){return this===t||t instanceof ll&&!!Kr(hl).equals.call(this,t)&&this.q4z_1===t.q4z_1},Kr(ll).hashCode=function(){var t=Kr(hl).hashCode.call(this);return Hr(31,t)+Ns(this.q4z_1)|0},Kr(ll).toString=function(){return"Vec3(x="+this.m4z_1+", y="+this.n4z_1+", z="+this.q4z_1+")"},Kr(cl).sr=function(){return this.p4x_1<=0||this.q4x_1<=0},Kr(cl).r4x=function(){return this.p4x_1=0,this.q4x_1=0,this},Kr(cl).b4z=function(t,n,i,e){return this.n4x_1=t,this.o4x_1=n,this.p4x_1=i,this.q4x_1=e,this},Kr(cl).b54=function(t){return this.b4z(t.n4x_1,t.o4x_1,t.p4x_1,t.q4x_1)},Kr(cl).a5k=function(t){return this.p4x_1>0&&this.q4x_1>0&&t.p4x_1>0&&t.q4x_1>0&&this.n4x_1<(t.n4x_1+t.p4x_1|0)&&t.n4x_1<(this.n4x_1+this.p4x_1|0)&&this.o4x_1<(t.o4x_1+t.q4x_1|0)&&t.o4x_1<(this.o4x_1+this.q4x_1|0)},Kr(cl).g5n=function(t){if(this.p4x_1>0&&this.q4x_1>0&&t.p4x_1>0&&t.q4x_1>0&&this.n4x_1<(t.n4x_1+t.p4x_1|0)&&t.n4x_1<(this.n4x_1+this.p4x_1|0)&&this.o4x_1<(t.o4x_1+t.q4x_1|0)&&t.o4x_1<(this.o4x_1+this.q4x_1|0)){if(this.n4x_1(t.n4x_1+t.p4x_1|0)&&(this.p4x_1=(t.n4x_1+t.p4x_1|0)-this.n4x_1|0),(this.o4x_1+this.q4x_1|0)>(t.o4x_1+t.q4x_1|0)&&(this.q4x_1=(t.o4x_1+t.q4x_1|0)-this.o4x_1|0),!0}return!1},Kr(cl).h5n=function(t,n){return Js(t)>=this.n4x_1&&Js(t)<(this.n4x_1+this.p4x_1|0)&&Js(n)>=this.o4x_1&&Js(n)<(this.o4x_1+this.q4x_1|0)},Kr(cl).equals=function(t){return this===t||t instanceof cl&&this.n4x_1===t.n4x_1&&this.o4x_1===t.o4x_1&&this.p4x_1===t.p4x_1&&this.q4x_1===t.q4x_1},Kr(cl).hashCode=function(){var t=this.n4x_1;return t=Hr(31,t)+this.o4x_1|0,t=Hr(31,t)+this.p4x_1|0,Hr(31,t)+this.q4x_1|0},Kr(cl).toString=function(){return"Viewport(x="+this.n4x_1+", y="+this.o4x_1+", width="+this.p4x_1+", height="+this.q4x_1+")"},Kr(ml).i5n=function(t,n){return this.j5n(t,n,5)},Kr(ml).j5n=function(t,n,i){var e=new zl,r=e.x5n(Hh(t),Hh(n),i);if(bl(),0!==r)throw cs(ss("MGRS Conversion Error"));return new $l(t,n,e.m5n_1)},Kr($l).toString=function(){return this.a5o_1},Kr(zl).x5n=function(t,n,i){this.m5n_1="",bl();var e,r,s=0;bl(),t<-1.5707963267948966?e=!0:(bl(),e=t>1.5707963267948966),e&&(bl(),s=1),(n<-ps()||n>2*ps())&&(bl(),s=2),i<0?r=!0:(bl(),r=i>5),r&&(bl(),s=8);var o=s;if(bl(),0===o){var u,a;if(bl(),t<-1.3962634015954636?a=!0:(bl(),a=t>1.4660765716752369),a){var h;try{var _,l=Nl(),f=Bh().r51(t);_=Bh().r51(n);var c=l.i5n(f,_);h=s|function(t,n,i,e,r){var s,o,u,a,h,_=i,l=e;bl();var f=new Int32Array(3);bl();var c,v=0;if(!dl().equals(n)&&!pl().equals(n)){var w=v;bl(),v=512|w}var d,p=_;if(bl(),p<0)c=!0;else{var m=_;bl(),c=m>4e6}if(c){var g=v;bl(),v=64|g}var $,y=l;if(bl(),y<0)d=!0;else{var b=l;bl(),d=b>4e6}if(d){var k=v;bl(),v=128|k}if(r<0?$=!0:(bl(),$=r>5),$){var j=v;bl(),v=8|j}var x=v;if(bl(),0===x){var z=5-r|0,E=Math.pow(10,z);if(_=jl(0,_/E)*E,l=jl(0,l/E)*E,dl().equals(n)){var C=_;bl(),C>=2e6?(bl(),f[0]=25):(bl(),f[0]=24);var S=f[0]-22|0;h=bl().c5q_1[S][1],s=bl().c5q_1[S][4],o=bl().c5q_1[S][5]}else{var q=_;bl(),q>=2e6?(bl(),f[0]=1):(bl(),f[0]=0),h=bl().c5q_1[f[0]][1],s=bl().c5q_1[f[0]][4],o=bl().c5q_1[f[0]][5]}a=l;var O=a-=o;bl(),f[2]=Ms(O/1e5);var I=f[2];bl(),I>7&&(f[2]=f[2]+1|0);var A=f[2];bl(),A>13&&(f[2]=f[2]+1|0),u=_;var T=u-=s;bl(),f[1]=h+Ms(T/1e5)|0;var D=_;if(bl(),D<2e6){var M=f[1];bl(),M>11&&(f[1]=f[1]+3|0);var N=f[1];bl(),N>20&&(f[1]=f[1]+2|0)}else{var R=f[1];bl(),R>2&&(f[1]=f[1]+2|0);var P=f[1];bl(),P>7&&(f[1]=f[1]+1|0);var L=f[1];bl(),L>11&&(f[1]=f[1]+3|0)}xl(t,0,f,_,l,r)}return v}(this,c.m5q_1,c.n5q_1,c.o5q_1,i)}catch(t){if(!(t instanceof Ts))throw t;bl(),h=8192}u=h}else{var v;try{var w,d=Hl(),p=Bh().r51(t);w=Bh().r51(n);var m=d.i5n(p,w);v=s|kl(this,m.g5q_1,t,m.i5q_1,m.j5q_1,i)}catch(t){if(!(t instanceof Ts))throw t;bl(),v=4096}u=v}s=u}return s},Kr(Sl).x5r=function(t,n,i,e,r,s){var o=e,u=1/n;Cl();var a,h,_=0;if(t<=0){var l=_;Cl(),_=64|l}if(u<250||u>350){var f=_;Cl(),_=128|f}if(Cl(),i<-1.5707963267948966?a=!0:(Cl(),a=i>1.5707963267948966),a){var c=_;Cl(),_=4|c}if(o<-ps())h=!0;else{var v=o;Cl(),h=v>6.283185307179586}if(h){var w=_;Cl(),_=8|w}var d=_;if(Cl(),0===d){if(this.d5r_1=t,this.m5r_1=2*this.d5r_1,this.e5r_1=n,o>ps()){var p=o;Cl(),o=p-6.283185307179586}i<0?(this.h5r_1=1,this.n5r_1=-i,this.o5r_1=-o):(this.h5r_1=0,this.n5r_1=i,this.o5r_1=o),this.p5r_1=r,this.q5r_1=s;var m,g=2*this.e5r_1-this.e5r_1*this.e5r_1;m=Math.sqrt(g),this.f5r_1=m,this.g5r_1=this.f5r_1/2;var $=this.n5r_1,y=Math.abs($);Cl();var b=y-1.5707963267948966;if(Math.abs(b)>1e-10){var k,j=this.n5r_1,x=Math.sin(j),z=this.f5r_1*x,E=(1-z)/(1+z),C=this.g5r_1,S=Math.pow(E,C),q=this.n5r_1,O=Math.cos(q),I=1-z*z;k=Math.sqrt(I),this.i5r_1=O/k,this.l5r_1=this.d5r_1*this.i5r_1;var A;Cl();var T=.7853981633974483-this.n5r_1/2;A=Math.tan(T),this.j5r_1=A/S}else{var D,M=1+this.f5r_1,N=1-this.f5r_1,R=Math.pow(M,M)*Math.pow(N,N);D=Math.sqrt(R),this.k5r_1=D}}this.y5r(0,this.o5r_1),this.s5r_1=2*this.u5r_1;var P,L=this.s5r_1;return P=Math.abs(L),this.s5r_1=P+.01,this.r5r_1=this.s5r_1,_},Kr(Sl).y5r=function(t,n){var i=t,e=n;Cl();var r,s,o=0,u=i;if(Cl(),u<-1.5707963267948966)r=!0;else{var a=i;Cl(),r=a>1.5707963267948966}if(r){var h=o;Cl(),o=1|h}if(i<0&&0===this.h5r_1){var _=o;Cl(),o=1|_}if(i>0&&1===this.h5r_1){var l=o;Cl(),o=1|l}if(e<-ps())s=!0;else{var f=e;Cl(),s=f>6.283185307179586}if(s){var c=o;Cl(),o=2|c}var v=o;if(Cl(),0===v){var w=i,d=Math.abs(w);Cl();var p=d-1.5707963267948966;if(Math.abs(p)<1e-10)this.t5r_1=0,this.u5r_1=0;else{0!==this.h5r_1&&(e*=-1,i*=-1);var m=e-this.o5r_1;if(m>ps()){var g=m;Cl(),m=g-6.283185307179586}if(m<-ps()){var $=m;Cl(),m=$+6.283185307179586}var y=i,b=Math.sin(y),k=this.f5r_1*b,j=(1-k)/(1+k),x=this.g5r_1,z=Math.pow(j,x);Cl();var E=.7853981633974483-i/2,C=Math.tan(E)/z,S=this.n5r_1,q=Math.abs(S);Cl();var O=q-1.5707963267948966,I=Math.abs(O)>1e-10?this.l5r_1*C/this.j5r_1:this.m5r_1*C/this.k5r_1;if(0!==this.h5r_1){var A,T=m;A=Math.sin(T),this.t5r_1=-(I*A-this.p5r_1);var D,M=m;D=Math.cos(M),this.u5r_1=I*D+this.q5r_1}else{var N,R=m;N=Math.sin(R),this.t5r_1=I*N+this.p5r_1}var P,L=-I,F=m;P=Math.cos(F),this.u5r_1=L*P+this.q5r_1}}return o},Kr(Sl).z5r=function(t,n){var i=0,e=0,r=0,s=0;Cl();var o=0,u=this.p5r_1-this.r5r_1,a=this.p5r_1+this.r5r_1,h=this.q5r_1-this.s5r_1,_=this.q5r_1+this.s5r_1;if(t>a||t_||nMath.sqrt(w)){var d=o;Cl(),o=256|d}}var p=o;if(Cl(),0===p){if(0===i&&0===e){Cl(),this.v5r_1=1.5707963267948966,this.w5r_1=this.o5r_1}else{0!==this.h5r_1&&(i*=-1,e*=-1);var m=this.n5r_1,g=Math.abs(m);Cl();var $=g-1.5707963267948966,y=Math.abs($)>1e-10?r*this.j5r_1/this.l5r_1:r*this.k5r_1/this.m5r_1;Cl();var b=1.5707963267948966-2*Math.atan(y);t:for(;;){var k=b-s;if(!(Math.abs(k)>1e-10))break t;s=b;var j=b,x=Math.sin(j),z=this.f5r_1*x,E=(1-z)/(1+z),C=this.g5r_1,S=Math.pow(E,C);Cl();var q=y*S;b=1.5707963267948966-2*Math.atan(q)}this.v5r_1=b;var O,I=this.o5r_1,A=e,T=-i;if(O=Math.atan2(A,T),this.w5r_1=I+O,this.w5r_1>ps()){var D=this,M=this.w5r_1;Cl(),D.w5r_1=M-6.283185307179586}else if(this.w5r_1<-ps()){var N=this,R=this.w5r_1;Cl(),N.w5r_1=R+6.283185307179586}var P=this.v5r_1;if(Cl(),P>1.5707963267948966){Cl(),this.v5r_1=1.5707963267948966}else{var L=this.v5r_1;if(Cl(),L<-1.5707963267948966){Cl(),this.v5r_1=-1.5707963267948966}}this.w5r_1>ps()?this.w5r_1=ps():this.w5r_1<-ps()&&(this.w5r_1=-ps())}if(0!==this.h5r_1){this.v5r_1=-1*this.v5r_1;this.w5r_1=-1*this.w5r_1}}return o},Kr(ql).a5s=function(t,n,i,e,r,s,o,u,a){var h=i,_=e,l=new Dl;null!=h&&null!=_||(h=l.c5s_1,_=l.d5s_1);var f,c=l.w5s(h,_,Hh(r),Hh(s),o,u,a),v=c;Tl(),0===v&&(c=l.x5s(Hh(t),Hh(n)));var w=c;if(Tl(),0===w)f=!0;else{var d=c;Tl(),f=512===d}if(!f)throw cs(ss("TM Conversion Error"));return new Il(t,n,l.s5s_1,l.t5s_1)},Kr(ql).y5s=function(t,n,i,e,r,s,o){var u,a=new Dl,h=a.c5s_1,_=a.d5s_1,l=a.w5s(h,_,Hh(i),Hh(e),r,s,o),f=l;Tl(),0===f&&(l=a.z5s(t,n));var c=l;if(Tl(),0===c)u=!0;else{var v=l;Tl(),u=512===v}if(!u)throw cs(ss("TM Conversion Error"));var w=Bh(),d=a.u5s_1,p=w.r51(d),m=Bh(),g=a.v5s_1;return new Il(p,m.r51(g),t,n)},Kr(Dl).w5s=function(t,n,i,e,r,s,o){var u=e,a=1/n;Tl();var h,_,l=0;if(t<=0){var f=l;Tl(),l=64|f}if(a<250||a>350){var c=l;Tl(),l=128|c}if(Tl(),i<-1.570621793869697?h=!0:(Tl(),h=i>1.570621793869697),h){var v=l;Tl(),l=16|v}if(u<-ps()||u>2*ps()){var w=l;Tl(),l=32|w}if(Tl(),o<.3?_=!0:(Tl(),_=o>3),_){var d=l;Tl(),l=256|d}var p=l;if(Tl(),0===p){this.c5s_1=t,this.d5s_1=n,this.g5s_1=0,this.h5s_1=0,this.i5s_1=0,this.j5s_1=0,this.k5s_1=1,this.e5s_1=2*this.d5s_1-this.d5s_1*this.d5s_1,this.f5s_1=1/(1-this.e5s_1)-1;var m=this.c5s_1*(1-this.d5s_1),g=(this.c5s_1-m)/(this.c5s_1+m),$=g*g,y=$*g,b=y*g,k=b*g;this.l5s_1=this.c5s_1*(1-g+5*($-y)/4+81*(b-k)/64),this.m5s_1=3*this.c5s_1*(g-$+7*(y-b)/8+55*k/64)/2,this.n5s_1=15*this.c5s_1*($-y+3*(b-k)/4)/16,this.o5s_1=35*this.c5s_1*(y-b+11*k/16)/48,this.p5s_1=315*this.c5s_1*(b-k)/512,Tl(),Tl(),this.x5s(1.570621793869697,1.5707963267948966),this.q5s_1=this.s5s_1,this.r5s_1=this.t5s_1,Tl(),this.x5s(0,1.5707963267948966),this.q5s_1=this.s5s_1,this.g5s_1=i,u>ps()&&(u-=2*ps()),this.h5s_1=u,this.i5s_1=s,this.j5s_1=r,this.k5s_1=o}return l},Kr(Dl).x5s=function(t,n){var i=n;Tl();var e,r,s=0;if(Tl(),t<-1.570621793869697?e=!0:(Tl(),e=t>1.570621793869697),e){var o=s;Tl(),s=1|o}i>ps()&&(i-=2*ps());var u=i,a=this.h5s_1;if(Tl(),u_+1.5707963267948966}if(r){var l,f=i<0?i+2*ps():i,c=this.h5s_1<0?this.h5s_1+2*ps():this.h5s_1;if(Tl(),fc+1.5707963267948966),l){var v=s;Tl(),s=2|v}}var w=s;if(Tl(),0===w){var d=i-this.h5s_1,p=d;if(Math.abs(p)>9*ps()/180){var m=s;Tl(),s=512|m}d>ps()&&(d-=2*ps()),d<-ps()&&(d+=2*ps());var g=d;Math.abs(g)<2e-10&&(d=0);var $,y,b=Math.sin(t),k=Math.cos(t),j=k*k,x=j*k,z=x*j,E=z*j,C=($=Math.tan(t))*$,S=C*$*$,q=S*$*$,O=this.f5s_1*j,I=O*O,A=I*O,T=A*O,D=this.c5s_1,M=this.e5s_1,N=Math.sin(t),R=1-M*Math.pow(N,2),P=D/Math.sqrt(R),L=2*t,F=4*t,U=6*t,H=8*t,V=this.l5s_1*t-this.m5s_1*Math.sin(L)+this.n5s_1*Math.sin(F)-this.o5s_1*Math.sin(U)+this.p5s_1*Math.sin(H),B=this.l5s_1*this.g5s_1,Y=this.m5s_1,W=2*this.g5s_1,G=B-Y*Math.sin(W),K=this.n5s_1,J=4*this.g5s_1,X=G+K*Math.sin(J),Z=this.o5s_1,Q=6*this.g5s_1,tt=X-Z*Math.sin(Q),nt=this.p5s_1,it=8*this.g5s_1,et=(V-(tt+nt*Math.sin(it)))*this.k5s_1,rt=P*b*k*this.k5s_1/2,st=P*b*x*this.k5s_1*(5-C+9*O+4*I)/24,ot=P*b*z*this.k5s_1*(61-58*C+S+270*O-330*C*O+445*I+324*A-680*C*I+88*T-600*C*A-192*C*T)/720,ut=P*b*E*this.k5s_1*(1385-3111*C+543*S-q)/40320,at=d,ht=d,_t=d,lt=this.i5s_1+et+Math.pow(at,2)*rt+Math.pow(ht,4)*st+Math.pow(_t,6)*ot,ft=d;y=Math.pow(ft,8),this.t5s_1=lt+y*ut;var ct,vt=P*k*this.k5s_1,wt=P*x*this.k5s_1*(1-C+O)/6,dt=P*z*this.k5s_1*(5-18*C+S+14*O-58*C*O+13*I+4*A-64*C*I-24*C*A)/120,pt=P*E*this.k5s_1*(61-479*C+179*S-q)/5040,mt=d,gt=d,$t=this.j5s_1+d*vt+Math.pow(mt,3)*wt+Math.pow(gt,5)*dt,yt=d;ct=Math.pow(yt,7),this.s5s_1=$t+ct*pt}return s},Kr(Dl).z5s=function(t,n){Tl();var i=0;if(tthis.j5s_1+this.q5s_1){var e=i;Tl(),i=4|e}if(nthis.i5s_1+this.r5s_1){var r=i;Tl(),i=8|r}var s=i;if(Tl(),0===s){var o=this.l5s_1*this.g5s_1,u=this.m5s_1,a=2*this.g5s_1,h=o-u*Math.sin(a),_=this.n5s_1,l=4*this.g5s_1,f=h+_*Math.sin(l),c=this.o5s_1,v=6*this.g5s_1,w=f-c*Math.sin(v),d=this.p5s_1,p=8*this.g5s_1,m=w+d*Math.sin(p)+(n-this.i5s_1)/this.k5s_1,g=this.c5s_1*(1-this.e5s_1),$=this.e5s_1,y=Math.sin(0),b=1-$*Math.pow(y,2),k=Math.sqrt(b),j=g/Math.pow(k,3),x=m/j,z=0;if(z<=4)do{z=z+1|0;var E=2*x,C=4*x,S=6*x,q=8*x,O=this.l5s_1*x-this.m5s_1*Math.sin(E)+this.n5s_1*Math.sin(C)-this.o5s_1*Math.sin(S)+this.p5s_1*Math.sin(q),I=this.c5s_1*(1-this.e5s_1),A=this.e5s_1,T=x,D=Math.sin(T),M=1-A*Math.pow(D,2),N=Math.sqrt(M);x+=(m-O)/(j=I/Math.pow(N,3))}while(z<=4);var R=this.c5s_1*(1-this.e5s_1),P=this.e5s_1,L=x,F=Math.sin(L),U=1-P*Math.pow(F,2),H=Math.sqrt(U);j=R/Math.pow(H,3);var V=this.c5s_1,B=this.e5s_1,Y=x,W=Math.sin(Y),G=1-B*Math.pow(W,2),K=V/Math.sqrt(G),J=x,X=Math.cos(J),Z=x,Q=Math.tan(Z),tt=Q*Q,nt=tt*tt,it=this.f5s_1*Math.pow(X,2),et=it*it,rt=et*it,st=rt*it,ot=t-this.j5s_1,ut=ot;Math.abs(ut)<1e-4&&(ot=0);var at,ht=2*j*K,_t=this.k5s_1,lt=Q/(ht*Math.pow(_t,2)),ft=Q*(5+3*tt+it-4*Math.pow(it,2)-9*tt*it),ct=24*j*Math.pow(K,3),vt=this.k5s_1,wt=ft/(ct*Math.pow(vt,4)),dt=Q*(61+90*tt+46*it+45*nt-252*tt*it-3*et+100*rt-66*tt*et-90*nt*it+88*st+225*nt*et+84*tt*rt-192*tt*st),pt=720*j*Math.pow(K,5),mt=this.k5s_1,gt=dt/(pt*Math.pow(mt,6)),$t=Q*(1385+3633*tt+4095*nt+1575*Math.pow(Q,6)),yt=40320*j*Math.pow(K,7),bt=this.k5s_1,kt=$t/(yt*Math.pow(bt,8)),jt=ot,xt=ot,zt=ot,Et=x-Math.pow(jt,2)*lt+Math.pow(xt,4)*wt-Math.pow(zt,6)*gt,Ct=ot;at=Math.pow(Ct,8),this.u5s_1=Et+at*kt;var St=1/(K*X*this.k5s_1),qt=1+2*tt+it,Ot=6*Math.pow(K,3)*X,It=this.k5s_1,At=qt/(Ot*Math.pow(It,3)),Tt=5+6*it+28*tt-3*et+8*tt*it+24*nt-4*rt+4*tt*et+24*tt*rt,Dt=120*Math.pow(K,5)*X,Mt=this.k5s_1,Nt=Tt/(Dt*Math.pow(Mt,5)),Rt=61+662*tt+1320*nt+720*Math.pow(Q,6),Pt=5040*Math.pow(K,7)*X,Lt=this.k5s_1,Ft=Rt/(Pt*Math.pow(Lt,7)),Ut=ot,Ht=ot,Vt=ot,Bt=ot*St-Math.pow(Ut,3)*At+Math.pow(Ht,5)*Nt-Math.pow(Vt,7)*Ft;this.v5s_1=this.h5s_1+Bt;var Yt=this.u5s_1;if(Math.abs(Yt)>90*ps()/180){var Wt=i;Tl(),i=8|Wt}if(this.v5s_1>ps()){this.v5s_1=this.v5s_1-2*ps();var Gt=this.v5s_1;if(Math.abs(Gt)>ps()){var Kt=i;Tl(),i=4|Kt}}var Jt=Math.abs(Bt),Xt=9*ps()/180,Zt=this.u5s_1;if(Jt>Xt*Math.cos(Zt)){var Qt=i;Tl(),i=512|Qt}if(this.u5s_1>1e10){var tn=i;Tl(),i=512|tn}}return i},Kr(Ml).i5n=function(t,n){var i=new Fl,e=i.g5u(Hh(t),Hh(n));if(Ll(),0!==e)throw cs(ss("UPS Conversion Error"));return new Rl(t,n,i.a5u_1,i.b5u_1,i.c5u_1)},Kr(Ml).h5u=function(t,n,i){var e=new Fl,r=e.i5u(t,n,i);if(Yl(),0!==r)throw cs(ss("UTM Conversion Error"));var s=Bh(),o=e.d5u_1,u=s.r51(o),a=Bh(),h=e.e5u_1;return new Rl(u,a.r51(h),t,n,i)},Kr(Rl).toString=function(){return this.m5q_1.toString()+" "+this.n5q_1+"E "+this.o5q_1+"N"},Kr(Fl).g5u=function(t,n){var i,e,r;if(Ll(),t<-1.5707963267948966?i=!0:(Ll(),i=t>1.5707963267948966),i)return Ll(),1;if(t<0?(Ll(),e=t>-1.2566370614359172):e=!1,e)return Ll(),1;if(t>=0?(Ll(),r=t<1.2566370614359172):r=!1,r)return Ll(),1;if(n<-ps()||n>2*ps())return Ll(),2;if(t<0){Ll(),this.t5t_1=-1.4157155848011311,this.a5u_1=pl()}else{Ll(),this.t5t_1=1.4157155848011311,this.a5u_1=dl()}return this.f5u_1.x5r(this.w5t_1,this.x5t_1,this.t5t_1,this.u5t_1,0,0),this.f5u_1.y5r(t,n),this.b5u_1=this.y5t_1+this.f5u_1.t5r_1,this.c5u_1=this.z5t_1+(pl().equals(this.a5u_1)?-this.f5u_1.u5r_1:this.f5u_1.u5r_1),Ll(),0},Kr(Fl).i5u=function(t,n,i){Ll();var e,r,s=0;if(!dl().equals(t)&&!pl().equals(t)){var o=s;Ll(),s=4|o}if(Ll(),n<0?e=!0:(Ll(),e=n>4e6),e){var u=s;Ll(),s=8|u}if(Ll(),i<0?r=!0:(Ll(),r=i>4e6),r){var a=s;Ll(),s=16|a}if(dl().equals(t)){Ll(),this.t5t_1=1.4157155848011311}if(pl().equals(t)){Ll(),this.t5t_1=-1.4157155848011311}var h=s;if(Ll(),0===h){var _,l;if(this.f5u_1.x5r(this.w5t_1,this.x5t_1,this.t5t_1,this.u5t_1,this.y5t_1,this.z5t_1),this.f5u_1.z5r(n,i),this.d5u_1=this.f5u_1.v5r_1,this.e5u_1=this.f5u_1.w5r_1,this.d5u_1<0){var f=this.d5u_1;Ll(),_=f>-1.2566370614359172}else _=!1;if(_){var c=s;Ll(),s=1|c}if(this.d5u_1>=0){var v=this.d5u_1;Ll(),l=v<1.2566370614359172}else l=!1;if(l){var w=s;Ll(),s=1|w}}return s},Kr(Ul).i5n=function(t,n){var i=new Wl,e=i.g5v(Hh(t),Hh(n));if(Yl(),0!==e)throw cs(ss("UTM Conversion Error"));return new Vl(t,n,i.d5v_1,i.a5v_1,i.b5v_1,i.c5v_1)},Kr(Ul).h5v=function(t,n,i,e){var r=new Wl,s=r.i5v(t,n,i,e);if(Yl(),0!==s)throw cs(ss("UTM Conversion Error"));var o=Bh(),u=r.e5v_1,a=o.r51(u),h=Bh(),_=r.f5v_1;return new Vl(a,h.r51(_),t,n,i,e)},Kr(Vl).toString=function(){return this.g5q_1.toString()+" "+this.h5q_1+" "+es(this.i5q_1)+"E "+es(this.j5q_1)+"N"},Kr(Wl).g5v=function(t,n){var i=n;Yl();var e,r=0,s=0;if(Yl(),t<-1.43116998663535?e=!0:(Yl(),e=t>1.5009831567151233),e){var o=r;Yl(),r=1|o}if(i<-ps()||i>2*ps()){var u=r;Yl(),r=2|u}var a=r;if(Yl(),0===a){i<0&&(i+=2*ps()+1e-10);var h=Ms(180*t/ps()),_=Ms(180*i/ps()),l=Ms(i60&&(l=1),56<=h&&h<=63&&_>-1&&_<3&&(l=31),56<=h&&h<=63&&_>2&&_<12&&(l=32),h>71&&_>-1&&_<9&&(l=31),h>71&&_>8&&_<21&&(l=33),h>71&&_>20&&_<33&&(l=35),h>71&&_>32&&_<42&&(l=37),0!==this.y5u_1&&(1===l&&60===this.y5u_1||60===l&&1===this.y5u_1||(l-1|0)<=this.y5u_1&&this.y5u_1<=(l+1|0)?l=this.y5u_1:(Yl(),r=64));var f=r;if(Yl(),0===f){this.z5u_1=l>=31?(Hr(6,l)-183|0)*ps()/180:(Hr(6,l)+177|0)*ps()/180,this.d5v_1=l,t<0?(s=1e7,this.a5v_1=pl()):this.a5v_1=dl();try{var c,v=Ol(),w=Bh().r51(t),d=Bh(),p=i,m=d.r51(p),g=Bh().r51(0),$=Bh(),y=this.z5u_1;c=$.r51(y);var b,k=v.a5s(w,m,this.w5u_1,this.x5u_1,g,c,5e5,s,.9996);this.b5v_1=k.c5t_1,this.c5v_1=k.d5t_1;var j,x=this.b5v_1;if(Yl(),x<1e5)b=!0;else{var z=this.b5v_1;Yl(),b=z>9e5}b&&(Yl(),r=4);var E=this.c5v_1;if(Yl(),E<0)j=!0;else{var C=this.c5v_1;Yl(),j=C>1e7}if(j){var S=r;Yl(),r=8|S}}catch(t){if(!(t instanceof Ts))throw t;Yl(),r=512}}}return r},Kr(Wl).i5v=function(t,n,i,e){Yl();var r,s=0,o=0;if(t<1||t>60){var u=s;Yl(),s=16|u}if(!n.equals(pl())&&!n.equals(dl())){var a=s;Yl(),s=32|a}if(Yl(),e<0?r=!0:(Yl(),r=e>1e7),r){var h=s;Yl(),s=8|h}var _=s;if(Yl(),0===_){this.z5u_1=t>=31?(Hr(6,t)-183|0)*ps()/180:(Hr(6,t)+177|0)*ps()/180,n.equals(pl())&&(o=1e7);try{var l,f=Ol(),c=Bh().r51(0),v=Bh(),w=this.z5u_1;l=v.r51(w);var d,p=f.y5s(i,e,c,l,5e5,o,.9996);this.e5v_1=Hh(p.a5t_1),this.f5v_1=Hh(p.b5t_1);var m=this.e5v_1;if(Yl(),m<-1.43116998663535)d=!0;else{var g=this.e5v_1;Yl(),d=g>1.5009831567151233}if(d){var $=s;Yl(),s=8|$}}catch(t){if(!(t instanceof Ts))throw t;Yl(),s=512}}return s},Kr(sf).c52=function(){return this.i4x_1.m5j_1},Kr(sf).i5w=function(){return this.i4x_1.o5j()},Kr(sf).p5j=function(){return this.i4x_1.p5j()},Kr(sf).f55=function(){return this.j4x_1.f55()},Kr(sf).j5w=function(t,n){var i=Hh(t),e=Math.sin(i),r=this.i4x_1.p5j(),s=1-r*e*e,o=1+(r*r-2*r)*e*e;return this.i4x_1.m5j_1/Math.sqrt(s)*Math.sqrt(o)},Kr(sf).z4z=function(t,n,i,e){return this.j4x_1.k5w(this,t,n,i,e)},Kr(sf).o50=function(t,n,i){return this.j4x_1.l5w(this,t,n,i)},Kr(sf).d55=function(t,n,i,e){return this.j4x_1.m5w(this,t,n,i,e)},Kr(sf).y5i=function(t,n,i,e,r,s,o,u,a){return this.j4x_1.n5w(this,t,n,i,e,r,s,o,u,a)},Kr(sf).o5w=function(t,n,i,e,r,s){return this.j4x_1.p5w(this,t,n,i,e,r,s)},Kr(sf).x4z=function(t,n,i,e){return this.j4x_1.q5w(this,t,n,i,e)},Kr(sf).b50=function(t,n,i,e){return this.j4x_1.r5w(this,t,n,i,e)},Kr(sf).k4z=function(t){var n;if(t>0){var i=t*(2*this.i4x_1.m5j_1+t);n=Math.sqrt(i)}else n=0;return n},Kr(sf).h50=function(t,n){return this.j4x_1.s5w(this,t,n)},Kr(sf).t5w=function(t,n,i){return this.k4x_1.u5w(t,n,i)},Kr(sf).n50=function(t,n,i,e){return i=i!==Xr&&i,e===Xr?this.t5w(t,n,i):e.t5w.call(this,new o_(t),new o_(n),i)},Kr(sf).v5w=function(t,n){return new J_(t,n,this.t5w(t,n,!0))},Kr(sf).j4z=function(t,n){var i;switch(n.l6_1){case 1:i=this.v5w(t.j4w_1,t.k4w_1);break;case 2:var e=this.v5w(t.j4w_1,t.k4w_1),r=e;r.n4w_1=r.n4w_1+t.n4w_1,i=e;break;default:i=W_(t)}return i},Kr(of).a54=function(){var t=new ts(0,0),n=0,i=this.l4x_1.g()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.l4x_1.h(e).a54();t.w(r)<0&&(t=r)}while(n<=i);return t},Kr(of).m4x=function(){for(var t=this.l4x_1.d();t.e();)t.f().w5w();return rs()},Kr(of).x5w=function(t){return!this.l4x_1.n(t)&&this.l4x_1.a(t)},Kr(of).d=function(){return this.l4x_1.d()},Kr(of).u5w=function(t,n,i){var e=this.l4x_1.g()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=this.l4x_1.h(r).u5w(t,n,i);if(null!=s)return s}while(0<=e);return 0},Kr(of).y5w=function(t,n,i,e){var r=0,s=this.l4x_1.g()-1|0;if(r<=s)do{var o=r;r=r+1|0,this.l4x_1.h(o).y5w(t,n,i,e)}while(r<=s)},Kr(of).z5w=function(t,n){var i=0,e=this.l4x_1.g()-1|0;if(i<=e)do{var r=i;i=i+1|0,this.l4x_1.h(r).z5w(t,n)}while(i<=e)},Kr(uf).f5x=function(){return this.b5x_1},Kr(uf).g5x=function(t){this.c5x_1=t},Kr(uf).a54=function(){return this.c5x_1},Kr(uf).h5x=function(){this.g5x(Bs().v3h().w3i()),this.e5x_1.d3()},Kr(uf).u5w=function(t,n,i){var e;if(this.f5x()){var r,s=Hr(31,Ns(t))+Ns(n)|0,o=this.e5x_1.g2(s);if(null==o){var u,a=this.i5x(t,n,i);null==a?u=null:(this.e5x_1.h5h(s,a,1),u=a),r=u}else r=o;e=r}else e=null;return e},Kr(uf).y5w=function(t,n,i,e){this.f5x()&&this.j5x(t,n,i,e)},Kr(uf).z5w=function(t,n){this.f5x()&&this.k5x(t,n)},Kr(_f).t5x=function(){var t=this.m5x_1;if(null!=t)return t;no("tileMatrix")},Kr(_f).d3=function(){this.n5x_1.d3(),this.o5x_1.d3(),this.p5x_1.d3(),this.q5x_1=-1,this.r5x_1=-1,this.s5x_1=null},Kr(_f).u5x=function(t,n,i){var e=this.t5x().p5m(t,n);this.p5x_1.f4(e,i)},Kr(_f).v5x=function(t,n){return this.q5x_1===t&&this.r5x_1===n||(this.q5x_1=t,this.r5x_1=n,this.s5x_1=this.p5x_1.g2(this.t5x().p5m(t,n))),this.s5x_1},Kr(_f).w5x=function(t,n,i,e){var r=this.v5x(t,n),s=null==r?null:r[i+Hr(e,this.t5x().m5m_1)|0];return null==s?0:s},Kr(lf).w5w=function(){this.f5y_1.d3(),this.g5y_1.d3(),this.i5y_1.d3(),this.h5x()},Kr(lf).i5x=function(t,n,i){if(!this.c5y_1.t5m_1.d5m(t,n))return null;var e=this.c5y_1.u5m_1.g()-1|0,r=e;if(0<=r)do{var s=r;r=r+-1|0,this.h5y_1=!!i&&(s===e||0===s);var o,u=this.c5y_1.u5m_1.h(s),a=u.i5m_1.w5e()/u.l5m_1,h=u.i5m_1.v5e()/u.k5m_1,_=(u.i5m_1.s5e_1-t)/a;o=Math.floor(_);var l,f=Ms(o),c=(n-u.i5m_1.t5e_1)/h;l=Math.floor(c);var v=Ms(l),w=this.o5y(u,f,v);if(null!=w){var d,p=u.i5m_1.s5e_1-a*f,m=u.i5m_1.t5e_1+h*v,g=u.m5m_1-1|0,$=u.n5m_1-1|0,y=g*(n-m)/h,b=$*(p-t)/a;d=Math.floor(y);var k,j=so(Ms(d),0,g),x=so(j+1|0,0,g);k=Math.floor(b);var z=so(Ms(k),0,$),E=so(z+1|0,0,$),C=y-j,S=b-z;return(1-C)*(1-S)*w[j+Hr(z,u.m5m_1)|0]+C*(1-S)*w[x+Hr(z,u.m5m_1)|0]+(1-C)*S*w[j+Hr(E,u.m5m_1)|0]+C*S*w[x+Hr(E,u.m5m_1)|0]}}while(0<=r);return null},Kr(lf).j5x=function(t,n,i,e){if(!this.c5y_1.t5m_1.c5g(t))return rs();var r=t.w5e()/i,s=this.c5y_1.v5m(r),o=new _f,u=s;if(0<=u)do{var a=u;u=u+-1|0,this.h5y_1=a===s||0===a;var h=this.c5y_1.u5m_1.h(a);if(this.q5y(t,n,i,h,o))return this.p5y(t,n,i,o,e),rs()}while(0<=u)},Kr(lf).k5x=function(t,n){if(!this.c5y_1.t5m_1.c5g(t))return rs();var i=t.w5e();hf();var e=i/32,r=this.c5y_1.v5m(e),s=new _f,o=r;if(0<=o)do{var u=o;o=o+-1|0,this.h5y_1=u===r||0===u;var a=this.c5y_1.u5m_1.h(u);if(this.s5y(t,a,s))return this.r5y(t,s,n),rs()}while(0<=o)},Kr(lf).q5y=function(t,n,i,e,r){var s=e.m5m_1,o=e.n5m_1,u=Hr(e.k5m_1,s),a=Hr(e.l5m_1,o),h=e.i5m_1.r5e_1,_=e.i5m_1.s5e_1,l=e.i5m_1.t5e_1,f=e.i5m_1.u5e_1,c=e.i5m_1.w5e(),v=e.i5m_1.v5e(),w=1/(2*u),d=1-w,p=1/(2*a),m=1-p;r.m5x_1=e,r.d3();for(var g=t.t5e_1,$=t.v5e()/(n-1|0),y=0;yK&&(i[0]=K),i[1]=1&&e>=1))throw _=wx().v4w(wx().q4w_1,"Wgs84Projection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one"),cs(ss(_));if(!(null==r||r.length>=Hr(i,e)))throw l=wx().v4w(wx().q4w_1,"Wgs84Projection","geographicToCartesianGrid","missingArray"),cs(ss(l));var f=Hh(n.r5e_1),c=Hh(n.s5e_1),v=Hh(n.t5e_1),w=Hh(n.u5e_1),d=(c-f)/(i>1?i-1|0:1),p=(w-v)/(e>1?e-1|0:1),m=t.c52(),g=t.p5j(),$=new Float64Array(e),y=new Float64Array(e),b=0,k=null==o?null:o.m4z_1,j=null==k?0:k,x=null==o?null:o.n4z_1,z=null==x?0:x,E=null==o?null:o.q4z_1,C=null==E?0:E,S=v,q=0;if(q=1&&e>=1))throw u=wx().v4w(wx().q4w_1,"Wgs84Projection","geographicToCartesianBorder","Number of latitude or longitude locations is less than one"),cs(ss(u));var a=Hh(n.r5e_1),h=Hh(n.s5e_1),_=Hh(n.t5e_1),l=Hh(n.u5e_1),f=(h-a)/(i>1?i-3|0:1),c=(l-_)/(e>1?e-3|0:1),v=a,w=_,d=t.c52(),p=t.p5j(),m=null==s?null:s.m4z_1,g=null==m?0:m,$=null==s?null:s.n4z_1,y=null==$?0:$,b=null==s?null:s.q4z_1,k=null==b?0:b,j=0,x=0;if(x0||0!==v){var p,m;if(d>0){var g,$,y=Math.sqrt(d),b=f*c*v,k=Math.sqrt(b),j=(y+k)*(y+k);if(g=Math.pow(j,.3333333333333333),d>10*l)$=w+.5*g+2*w*w/g;else{var x=(y-k)*(y-k);$=w+.5*g+.5*Math.pow(x,.3333333333333333)}p=$}else{var z=-d,E=Math.sqrt(z),C=-8*w*w*w,S=Math.sqrt(C),q=f*c*v,O=Math.sqrt(q),I=E+S,A=2*Math.atan2(O,I)/3,T=-4*w*Math.sin(A),D=ps()/6+A;p=T*Math.cos(D)}var M,N=p*p+f*v,R=l*(p+(m=Math.sqrt(N))-v)/(2*m),P=R*R+p+m,L=(p+m)/(Math.sqrt(P)+R),F=L*a/(L+l),U=F*F+i*i;s=(L+l-1)*(M=Math.sqrt(U))/L;var H=M+F;o=2*Math.atan2(i,H)}else{var V,B=1-l,Y=Math.sqrt(B),W=l-c,G=Math.sqrt(W);s=-h*Y*G/(V=Math.sqrt(l)),o=G/(V*G+Y*Math.sqrt(c))}var K,J=Math.sqrt(2);if((J-1)*n0||(d=(-v+Math.sqrt(w))/(2*c))>0)&&(i.r57(o+e*d,u+r*d,a+s*d),!0)},Kr(vf).sh=function(t,n){return this.s5z_1(t,n)},Kr(vf).compare=function(t,n){return this.sh(t,n)},Kr(df).q55=function(){return this.o60_1},Kr(df).r60=function(t){this.n60_1.a(t),this.q55().g5m(t.s60_1)},Kr(df).d3=function(){this.p60_1=null,this.n60_1.d3(),this.q55().r4x()},Kr(df).y60=function(t){this.n60_1.d3(),this.n60_1.l(t.n60_1),this.q55().i5f(t.q55()),this.p60_1=t.p60_1},Kr(df).z60=function(){var t,n,i=this.n60_1;return i.g()>1&&(n=new vf(wf),uo(i,n),t=rs()),t},Kr(df).h50=function(t,n){var i=!1,e=this.p60_1;if(null==e)return i;var r=e,s=0,o=this.n60_1.g()-1|0;if(s<=o)t:do{var u=s;s=s+1|0;var a=this.n60_1.h(u);if(t.e4z_1.p50(a.h60_1),t.c5k(a.a61(),3,r,r.length,this.q60_1)&&(n.t54(this.q60_1).d5n(a.h60_1),i=!0),t.e4z_1.d5n(a.h60_1),i)break t}while(s<=o);return i},Kr(df).b61=function(t,n,i){var e=0,r=this.n60_1.g()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=this.n60_1.h(s),u=o.s60_1;if(u.d5m(t,n)){var a=o.p61_1.h61_1,h=o.p61_1.i61_1,_=(n-u.t5e_1)/u.v5e()*(a-1|0),l=(t-u.r5e_1)/u.w5e()*(h-1|0),f=_<(a-1|0)?sj(_):1,c=l<(h-1|0)?sj(l):1,v=_<(a-1|0)?Ms(_+1):a-1|0,w=l<(h-1|0)?Ms(l+1):h-1|0,d=a+2|0,p=Hr(v+Hr(w,d)|0,3),m=p+3|0,g=Hr(v+Hr(w+1|0,d)|0,3),$=g+3|0,y=(1-f)*(1-c),b=f*(1-c),k=(1-f)*c,j=f*c,x=o.a61();i.m4z_1=x[p]*y+x[m]*b+x[g]*k+x[$]*j,i.n4z_1=x[p+1|0]*y+x[m+1|0]*b+x[g+1|0]*k+x[$+1|0]*j,i.q4z_1=x[p+2|0]*y+x[m+2|0]*b+x[g+2|0]*k+x[$+2|0]*j;var z=i;z.m4z_1=z.m4z_1+o.h60_1.m4z_1;var E=i;E.n4z_1=E.n4z_1+o.h60_1.n4z_1;var C=i;return C.q4z_1=C.q4z_1+o.h60_1.q4z_1,!0}}while(e<=r);return!1},Kr(pf).s51=function(){return this.v61_1},Kr(pf).s5g=function(t){this.k62(t),t.t52_1=this.a62_1,t.q53_1||this.s51().y60(this.a62_1)},Kr(pf).l62=function(t,n,i,e){return new $f(t,n,i,e)},Kr(pf).k62=function(t){this.a62_1.d3(),this.m62(t),this.a62_1.p60_1=this.d62_1,this.z61_1.m()&&this.n62();var n=0,i=this.z61_1.g()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.z61_1.h(e);this.o62(t,r instanceof $f?r:Wr())}while(n<=i);this.a62_1.z60(),this.g62_1=null,this.h62_1=null},Kr(pf).n62=function(){var t=this.w61_1.v62();null==t||Ey().w62(t,this,this.z61_1)},Kr(pf).o62=function(t,n){if(!n.y62(this.w61_1.p62_1)||!n.x62(t))return rs();if(n.p61_1.b63()||!n.a63(t,this.x61_1))return this.z62(t,n),rs();var i=n.c63(this,this.y61_1,4),e=0,r=i.length-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=i[s];this.o62(t,o instanceof $f?o:Wr())}while(e<=r)},Kr(pf).z62=function(t,n){n.d63(t),this.a62_1.r60(n);var i,e=Is(Ba),r=t.v53_1.g2(e),s=null==r||bs(r,yy)?r:Wr();if(null==s){var o=new dx;t.v53_1.f4(e,o),i=o}else i=s;var u=i,a=Va().g55(u);this.e63(t,n,a),t.f63(a,n.l60_1)},Kr(pf).e63=function(t,n,i){i.q55().i5f(n.s60_1),i.r55().t54(n.h60_1),i.k55_1.x5l(this.e62_1),i.l55_1.x5l(this.f62_1),i.m55_1=n.g63(t),i.n55_1=this.g62_1,i.o55_1=this.h62_1},Kr(pf).m62=function(t){var n,i=this.w61_1.t62_1+2|0,e=this.w61_1.s62_1+2|0,r=this.b62_1;if(null==r){var s=new Float32Array(Hr(Hr(i,e),2));this.b62_1=s,this.h63(i,e,s),n=s}else n=r;var o,u=n,a=this.c62_1;if(null==a){var h=this.i63(i,e);this.c62_1=h,o=h}else o=a;var _,l=o,f=this.d62_1;if(null==f){var c=this.j63(i,e);this.d62_1=c,_=c}else _=f;var v,w,d,p=_,m=this.i62_1,g=t.z5g(),$=g.g2(m);if(null==$){var y=new Yg(jk(),u);g.h5h(m,y,y.r5c_1),d=y}else d=$;v=(w=d)instanceof Yg?w:Wr(),this.g62_1=v;var b,k,j,x=this.j62_1,z=t.z5g(),E=z.g2(x);if(null==E){var C=new Gg(Ek(),_o([l,p]));this.e62_1.k56_1=l.length,this.f62_1.j56_1=l.length,this.f62_1.k56_1=l.length+p.length|0;var S=C;z.h5h(x,S,S.r5c_1),j=S}else j=E;b=(k=j)instanceof Gg?k:Wr(),this.h62_1=b},Kr(pf).h63=function(t,n,i){var e=1/(n>1?n-3|0:1),r=1/(t>1?t-3|0:1),s=0,o=0,u=0,a=0;if(a1)return!0;var e=t.n6c_1-n.h64().g4w_1;if(Math.abs(e)>1)return!0;var r=t.o6c_1-n.h64().i4w_1;return Math.abs(r)>1||n.d53_1.c5j(t.l6c_1)>t.v6c(n)/100})(this,t)&&(this.d6d(t),this.e6d(t)),this.k6c_1.f6d(t,this.c64())},Kr(Gf).d6d=function(t){this.k6c_1.u6c(),this.l6c_1.t54(t.d53_1),this.o6c_1=t.h64().i4w_1,this.m6c_1=t.h64().f4w_1,this.n6c_1=t.h64().g4w_1,this.p6c_1=t.z52_1},Kr(Gf).h6d=function(t){var n;if(this.k6d(t)){var i=function(t,n){Wf(t,n),Uf();var i=n.w6c("graticule_label_offset");return null!=i&&"number"==typeof i?i:Wr()}(this,t),e=new x_(Jh(this.i6d(t),i),Jh(this.j6d(t),i));e.e5k(ds(Bh().t5h(e.j4w_1),-70,70),Bh().u5h(e.k4w_1)),n=e}else n=t.h64().d4w_1;return n},Kr(Gf).l6d=function(t,n){var i=new q$(t);return i.f6e(n),i.g6e(!0),i.h6e(Fh()),i},Kr(Gf).i6e=function(t,n,i){var e=new y$(t,n);return e.h6e(Fh()),e},Kr(Gf).k6d=function(t){var n;return Wf(this,t),Uf(),null!=t.w6c("look_at_latitude")?(Uf(),n=!(null==t.w6c("look_at_longitude"))):n=!1,n},Kr(Gf).i6d=function(t){Wf(this,t),Uf();var n=t.w6c("look_at_latitude");return n instanceof o_?n.y5h_1:Wr()},Kr(Gf).j6d=function(t){Wf(this,t),Uf();var n=t.w6c("look_at_longitude");return n instanceof o_?n.y5h_1:Wr()},Kr(Gf).y6e=function(t){Wf(this,t),Uf();var n=t.w6c("graticule_pixel_size");return null!=n&&"number"==typeof n?n:Wr()},Kr(Gf).z6e=function(t,n,i){return t.x5g().b61(n,i,this.g6c_1)||t.j5h().z4z(n,i,t.j5h().n50(n,i)*t.z52_1,this.g6c_1),this.g6c_1},Kr(Gf).v6c=function(t){var n=this.z6e(t,t.h64().d4w_1.j4w_1,t.h64().d4w_1.k4w_1);return t.d53_1.c5j(n)},Kr(Gf).a6f=function(t,n,i,e){var r=i.d5m(t.j4w_1,t.k4w_1),s=i.d5m(n.j4w_1,n.k4w_1);if(!r&&!s)return rs();if(r&&s)e.a(t),e.a(n);else{var o=r?n:t,u=r?t:n,a=1;if(a<=2)t:do{a=a+1|0;var h=null;if(o.k4w_1>i.u5e_1||180===i.u5e_1&&o.k4w_1<0?h=Hf(0,u,o,i.u5e_1):o.k4w_10?h=Hf(0,u,o,i.t5e_1):o.j4w_1>i.s5e_1?h=Vf(0,u,o,i.s5e_1):o.j4w_1=1e5?(Xf(),n="Graticule.UTM.100000m"):t>=1e4?(Xf(),n="Graticule.UTM.10000m"):t>=1e3?(Xf(),n="Graticule.UTM.1000m"):t>=100?(Xf(),n="Graticule.UTM.100m"):t>=10?(Xf(),n="Graticule.UTM.10m"):(Xf(),n="Graticule.UTM.1m"),n},Kr(Zf).d6d=function(t){Kr(Gf).d6d.call(this,t),this.u6g_1.d3(),this.u6g_1.x6g(t)},Kr(Zf).e6d=function(t){this.u6g_1.e6d(t)},Kr(Zf).y6g=function(t,n,i,e){this.u6g_1.y6g(t,n,i,e)},Kr(Zf).z6g=function(t,n,i,e){return t>0?function(t,n,i,e,r){var s=Hl().h5v(n,i,e,r);return new J_(i_(s.e5q_1),e_(s.f5q_1),1e4)}(0,t,n,i,e):function(t,n,i,e){var r=Nl().h5u(n,i,e);return new J_(i_(r.k5q_1),e_(r.l5q_1),1e4)}(0,n,i,e)},Kr(Zf).a6h=function(t,n,i,e,r,s,o){var u=gs();Xf();var a=e/1e5,h=Math.floor(a);Xf();var _=1e5*h;Xf();var l=s/1e5,f=Math.floor(l);Xf();var c,v=1e5*f,w=r-_;Xf();var d=w/1e5;c=Math.ceil(d);var p,m=Ms(c),g=o-v;Xf();var $=g/1e5;p=Math.ceil($);for(var y=Ms(p),b=0,k=y,j=ms(Array(k),null);b3e6)return rs();null==this.k6l_1&&(this.g6l_1?function(t){var n,i,e,r,s,o,u,a,h,_=t;n=gs(),_.k6l_1=n,dl().equals(t.i6l_1)?($c(),$c(),r=13e5,$c(),$c(),s=27e5,"Y"===t.h6l_1?($c(),$c(),o=13e5):($c(),o=2e6),i=o,"Y"===t.h6l_1?($c(),u=2e6):($c(),$c(),u=27e5),e=u):($c(),$c(),r=8e5,$c(),$c(),s=32e5,"A"===t.h6l_1?($c(),$c(),a=8e5):($c(),a=2e6),i=a,"A"===t.h6l_1?($c(),h=2e6):($c(),$c(),h=32e5),e=h),t.k6l_1=t.j6f().a6h(t.j6l_1,t.i6l_1,t.s60_1,i,e,r,s),pc(t)}(this):function(t){var n=Hl().i5n(t.s60_1.r5e_1,t.s60_1.a5j()),i=n.j5q_1,e=(n=Hl().i5n(t.s60_1.s5e_1,t.s60_1.a5j())).j5q_1;e=0===e?1e7:e;var r=(n=Hl().i5n(t.s60_1.r5e_1,t.s60_1.t5e_1)).i5q_1;n=Hl().i5n(t.s60_1.s5e_1,t.s60_1.t5e_1);var s=1e6-(r=bo(n.i5q_1,r));if("32V"===t.h6l_1&&(e+=2e4),"31X"===t.h6l_1){var o=s;$c(),s=o+1e5}t.k6l_1=t.j6f().a6h(t.j6l_1,t.i6l_1,t.s60_1,r,s,i,e),pc(t)}(this));for(var o=ws(this.k6l_1).d();o.e();){var u=o.f();u.k6f(t)?u.e6d(t):u.m6f()}},Kr(yc).m6f=function(){Kr(Kf).m6f.call(this);var t=this.k6l_1;if(null==t);else{for(var n=t.d();n.e();)n.f().m6f();t.d3(),rs(),rs()}this.k6l_1=null},Kr(yc).l6f=function(){Kr(Kf).l6f.call(this);var t=jo([new J_(this.s60_1.r5e_1,this.s60_1.t5e_1,1e4),new J_(this.s60_1.s5e_1,this.s60_1.t5e_1,1e4)]),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.r5e_1,this.s60_1.s5e_1,this.s60_1.t5e_1,this.s60_1.t5e_1),e=ws(this.i6f_1),r=i,s=n;if(ac(),e.a(oc(r,s,"GridElement_LineWest")),!this.g6l_1){t.d3(),t.a(new J_(this.s60_1.r5e_1,this.s60_1.u5e_1,1e4)),t.a(new J_(this.s60_1.s5e_1,this.s60_1.u5e_1,1e4)),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.r5e_1,this.s60_1.s5e_1,this.s60_1.u5e_1,this.s60_1.u5e_1);var o=ws(this.i6f_1),u=i,a=n;ac(),o.a(oc(u,a,"GridElement_LineEast")),t.d3(),t.a(new J_(this.s60_1.r5e_1,this.s60_1.t5e_1,1e4)),t.a(new J_(this.s60_1.r5e_1,this.s60_1.u5e_1,1e4)),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.r5e_1,this.s60_1.r5e_1,this.s60_1.t5e_1,this.s60_1.u5e_1);var h=ws(this.i6f_1),_=i,l=n;ac(),h.a(oc(_,l,"GridElement_LineSouth")),t.d3(),t.a(new J_(this.s60_1.s5e_1,this.s60_1.t5e_1,1e4)),t.a(new J_(this.s60_1.s5e_1,this.s60_1.u5e_1,1e4)),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.s5e_1,this.s60_1.s5e_1,this.s60_1.t5e_1,this.s60_1.u5e_1);var f=ws(this.i6f_1),c=i,v=n;ac(),f.a(oc(c,v,"GridElement_LineNorth"))}var w=this.j6f().i6e(new J_(this.s60_1.z5i(),this.s60_1.a5j(),0),this.h6l_1,1e7),d=ws(this.i6f_1);ac(),d.a(oc(this.s60_1,w,"GridElement_GridZoneLabel"))},Kr(jc).e6d=function(t){Kr(Kf).e6d.call(this,t);for(var n=this.j6f().h6d(t),i=ws(this.i6f_1).d();i.e();){var e=i.f();if(e.k6f(t)){if(e.v6k_1 instanceof y$){var r=e.v6k_1;if(n.j4w_1<72||!zo("*32*34*36*","*"+r.o6e_1+"*")){var s=r.q6e_1;ac(),"GridElement_LatitudeLabel"===e.w6k_1?s=new J_(s.j4w_1,n.k4w_1,s.n4w_1):(ac(),"GridElement_LongitudeLabel"===e.w6k_1&&(s=new J_(n.j4w_1,s.k4w_1,s.n4w_1))),r.e6n(s)}}var o=this.j6f(),u=this.j6f();wc(),o.c6d(e.v6k_1,u.g6d(1e6))}}},Kr(jc).l6f=function(){Kr(Kf).l6f.call(this);var t,n=gs(),i=-180,e=1,r=0;if(r<=59)do{r=r+1|0;var s=i;n.d3(),n.a(K_().u5l(-80,s,1e4)),n.a(K_().u5l(-60,s,1e4)),n.a(K_().u5l(-30,s,1e4)),n.a(K_().u5l(0,s,1e4)),n.a(K_().u5l(30,s,1e4)),i<6||i>36?(t=84,n.a(K_().u5l(60,s,1e4))):6===i?t=56:(t=72,n.a(K_().u5l(60,s,1e4))),n.a(K_().u5l(t,s,1e4));var o=this.j6f().l6d(Eo(n),A$()),u=il().y5l(-80,s,t+80,1e-15),a=ws(this.i6f_1),h=u;ac(),a.a(oc(h,o,"GridElement_Line"));var _=this.j6f().i6e(K_().u5l(0,s+3,0),e.toString(),1e7);u=il().y5l(-90,s+3,180,1e-15);var l=ws(this.i6f_1),f=u;ac(),l.a(oc(f,_,"GridElement_LongitudeLabel")),i=i+6|0,e=e+1|0}while(r<=59);var c=0;if(c<=4)do{var v=c;c=c+1|0,n.d3();var w=kc().c6n_1[v][0],d=kc().c6n_1[v][1],p=kc().c6n_1[v][2];n.a(K_().u5l(d,w,1e4)),n.a(K_().u5l(p,w,1e4));var m=this.j6f().l6d(xo(n),A$()),g=il().y5l(d,w,p-d,1e-15),$=ws(this.i6f_1);ac(),$.a(oc(g,m,"GridElement_Line"))}while(c<=4);var y=-80,b=0;if(b<=20)do{var k=b;b=b+1|0;var j=y,x=0;if(x<=3)do{var z=x;x=x+1|0,n.d3();var E=i=-180+Hr(z,90)|0;n.a(K_().u5l(j,E,1e4)),n.a(K_().u5l(j,E+30,1e4)),n.a(K_().u5l(j,E+60,1e4)),n.a(K_().u5l(j,E+90,1e4));var C=this.j6f().l6d(xo(n),T$()),S=il().y5l(j,E,1e-15,90),q=ws(this.i6f_1);ac(),q.a(oc(S,C,"GridElement_Line"))}while(x<=3);if(k<20){var O=this.j6f(),I=K_().u5l(j+4,0,0);kc();var A=O.i6e(I,Co(Zs("CDEFGHJKLMNPQRSTUVWX",k)),1e7),T=il().y5l(j+4,-180,1e-15,360),D=ws(this.i6f_1);ac(),D.a(oc(T,A,"GridElement_LatitudeLabel"))}y=y+(y<72?8:12)|0}while(b<=20)},Kr(Sc).b6g=function(t){this.y6f_1=t,this.d3()},Kr(Sc).x6g=function(t){try{if(this.w6f_1.k6d(t)){var n,i=this.w6f_1.i6d(t),e=this.w6f_1.j6d(t);Xf();Xf();n=-80<=i&&i<=84?Hl().i5n(i,e).g5q_1:0,this.z6f_1=n}}catch(t){if(!(t instanceof Ts))throw t;this.z6f_1=0}},Kr(Sc).d3=function(){var t,n=this.y6f_1;t=Br(n);for(var i=0,e=Ms(t),r=ms(Array(e),null);ithis.y6f_1)return rs();var r,s=ws(this.a6g_1);r=Br(e);var o,u,a,h,_=s[Ms(r)-1|0];ac(),"GridElement_LineEasting"===i.w6k_1?u=!0:(ac(),u="GridElement_LineEast"===i.w6k_1),u?o=!0:(ac(),o="GridElement_LineWest"===i.w6k_1),o?(_.f6n_1=bo(i.x6k_1,_.f6n_1),_.g6n_1=yo(i.x6k_1,_.g6n_1)):(ac(),"GridElement_LineNorthing"===i.w6k_1?h=!0:(ac(),h="GridElement_LineSouth"===i.w6k_1),h?a=!0:(ac(),a="GridElement_LineNorth"===i.w6k_1),a&&(n.equals(_.j6n_1)?_.h6n_1=bo(i.x6k_1,_.h6n_1):n.equals(pl())&&(_.h6n_1=i.x6k_1,_.j6n_1=n),n.equals(_.k6n_1)?_.i6n_1=yo(i.x6k_1,_.i6n_1):n.equals(dl())&&(_.i6n_1=i.x6k_1,_.k6n_1=n)))},Kr(Sc).e6d=function(t){var n=this.a6g_1;if(null==n)return rs();var i=n;if(!this.w6f_1.k6d(t))return rs();var e=this.w6f_1.y6e(t),r=t.e53_1.p4x_1*e;Cc();var s=-.5*r/2,o=t.e53_1.q4x_1*e;Cc();var u,a,h,_=-.5*o/2;if(this.z6f_1>0){var l=Hl().i5n(this.w6f_1.i6d(t),this.w6f_1.j6d(t));u=l.i5q_1+s,a=l.j5q_1+_,h=l.h5q_1,a<0&&(a+=1e7,h=pl())}else{var f=Nl().i5n(this.w6f_1.i6d(t),this.w6f_1.j6d(t));u=f.n5q_1+s,a=f.o5q_1+_,h=f.m5q_1}var c,v=t.i53_1,w=0,d=i.length-1|0;if(w<=d)do{var p=w;w=w+1|0;var m=i[p],g=p,$=Math.pow(10,g),y=10*$,b=this.w6f_1.g6d($);if(m.f6n_1<=m.g6n_1)for(var k=m.f6n_1;k<=m.g6n_1;){if(p===(i.length-1|0)||k%y!=0){var j=(c=this.w6f_1.z6g(this.z6f_1,h,k,a)).j4w_1,x=c.k4w_1,z=this.w6f_1.z6e(t,j,x);if(v.v5j(z)&&zc(this,t,z)){var E=Ms(k%this.x6f_1).toString(),C=this.w6f_1.i6e(new J_(j,x,0),E,y);this.w6f_1.c6d(C,b)}}k+=$}if(!m.k6n_1.equals(pl())||0!==m.i6n_1)for(var S=m.j6n_1,q=m.h6n_1;q<=m.i6n_1||!S.equals(m.k6n_1);){if(p===(i.length-1|0)||q%y!=0){var O=(c=this.w6f_1.z6g(this.z6f_1,S,u,q)).j4w_1,I=c.k4w_1,A=this.w6f_1.z6e(t,O,I);if(v.v5j(A)&&zc(this,t,A)){var T=Ms(q%this.x6f_1).toString(),D=this.w6f_1.i6e(new J_(O,I,0),T,y);this.w6f_1.c6d(D,b)}!S.equals(m.k6n_1)&&q>=1e7-$&&(S=m.k6n_1,q=-$)}q+=$}}while(w<=d)},Kr(Sc).toString=function(){var t=So(),n=0;if(n<=4)do{var i=n;n=n+1|0,t.l8("level "),t.k8(i),t.l8(" : ");var e=ws(this.a6g_1)[i];e.f6n_1Hr(50,4)}else n=!1;return n},Kr(qc).e6d=function(t){Kr(Dc).e6d.call(this,t);var n=this.m6o(t);Tc();for(var i=n>1.7*Hr(50,4),e=this.j6f().g6d(this.o6h_1/10),r=ws(this.i6f_1).d();r.e();){var s=r.f();s.k6f(t)&&(i&&this.j6f().y6g(this.j6h_1,this.k6h_1,s,this.o6h_1),this.j6f().c6d(s.v6k_1,e))}var o=this.m6o(t);if(Tc(),o<=Hr(Hr(50,4),2))return rs();null==this.l6o_1&&function(t){var n,i=t;n=gs(),i.l6o_1=n;var e=t.o6h_1/10,r=0;if(r<=9)do{var s=r;r=r+1|0;var o=t.m6h_1+e*s,u=0;if(u<=9)do{var a=u;u=u+1|0;var h=t.n6h_1+e*a,_=new qc(t.j6f(),t.j6h_1,t.k6h_1,t.l6h_1,o,h,e);_.x6h_1||ws(t.l6o_1).a(_)}while(u<=9)}while(r<=9)}(this);for(var u=ws(this.l6o_1).d();u.e();){var a=u.f();a.k6f(t)?a.e6d(t):a.m6f()}},Kr(qc).m6f=function(){Kr(Dc).m6f.call(this);var t=this.l6o_1;if(null==t);else{for(var n=t.d();n.e();)n.f().m6f();t.d3(),rs(),rs()}this.l6o_1=null},Kr(qc).l6f=function(){Kr(Dc).l6f.call(this);var t=this.o6h_1/10,n=gs(),i=1;if(i<=9)do{var e=i;i=i+1|0;var r=this.m6h_1+t*e;n.d3();var s=this.j6f().z6g(this.j6h_1,this.k6h_1,r,this.n6h_1),o=this.j6f().z6g(this.j6h_1,this.k6h_1,r,this.n6h_1+this.o6h_1);if(this.w6h_1?this.j6f().a6f(s,o,this.l6h_1,n):(n.a(s),n.a(o)),n.g()>0){s=n.h(0),o=n.h(1);var u,a=this.j6f().l6d(xo(n),A$()),h=this.n6o(s,o),_=ws(this.i6f_1);ac(),u=Bh().e55(r),_.a(new hc(h,a,"GridElement_LineEasting",u))}}while(i<=9);var l=1;if(l<=9)do{var f=l;l=l+1|0;var c=this.n6h_1+t*f;n.d3();var v=this.j6f().z6g(this.j6h_1,this.k6h_1,this.m6h_1,c),w=this.j6f().z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1,c);if(this.w6h_1?this.j6f().a6f(v,w,this.l6h_1,n):(n.a(v),n.a(w)),n.g()>0){v=n.h(0),w=n.h(1);var d,p=this.j6f().l6d(xo(n),A$()),m=this.n6o(v,w),g=ws(this.i6f_1);ac(),d=Bh().e55(c),g.a(new hc(m,p,"GridElement_LineNorthing",d))}}while(l<=9)},Kr(Dc).j6f=function(){var t=Kr(Kf).j6f.call(this);return t instanceof Zf?t:Wr()},Kr(Dc).n6o=function(t,n){var i=t.j4w_1,e=t.k4w_1,r=t.j4w_1,s=t.k4w_1;return n.j4w_1r&&(r=n.j4w_1),n.k4w_1s&&(s=n.k4w_1),new el(i,r,e,s)},Kr(Dc).y6m=function(t){return this.l6h_1.e5m(t)},Kr(Dc).m6o=function(t){var n=this.j6f().z6e(t,this.v6h_1.j4w_1,this.v6h_1.k4w_1),i=t.d53_1.c5j(n);return this.o6h_1/t.b52(i)/t.y52_1},Kr(Rc).k6f=function(t){var n;if(Kr(Dc).k6f.call(this,t)){var i=this.m6o(t);Tc(),n=i>50}else n=!1;return n},Kr(Rc).e6d=function(t){Kr(Dc).e6d.call(this,t);var n=this.m6o(t);Tc();var i=n>Hr(50,2),e=this.j6f().g6d(this.o6h_1),r=ws(this.i6f_1).d();t:for(;r.e();){var s=r.f();if(s.k6f(t)){if(ac(),"GridElement_LineNorth"===s.w6k_1&&Mc(this,t))continue t;if(ac(),"GridElement_LineEast"===s.w6k_1&&Nc(this,t))continue t;i&&this.j6f().y6g(this.j6h_1,this.k6h_1,s,10*this.o6h_1),this.j6f().c6d(s.v6k_1,e)}}var o=this.m6o(t);if(Tc(),o<=Hr(50,2))return rs();var u,a=this.y6i_1;if(null==a){var h=new qc(this.j6f(),this.j6h_1,this.k6h_1,this.l6h_1,this.m6h_1,this.n6h_1,this.o6h_1);this.y6i_1=h,u=h}else u=a;var _=u;_.k6f(t)?_.e6d(t):_.m6f()},Kr(Rc).m6f=function(){Kr(Dc).m6f.call(this);var t=this.y6i_1;null==t||t.m6f(),this.y6i_1=null},Kr(Rc).l6f=function(){Kr(Dc).l6f.call(this);var t=gs();if(this.w6h_1?this.j6f().a6f(this.q6h_1,this.s6h_1,this.l6h_1,t):(t.a(this.q6h_1),t.a(this.s6h_1)),t.g()>0){var n,i=t.h(0),e=t.h(1),r=this.j6f().l6d(xo(t),A$()),s=this.n6o(i,e),o=ws(this.i6f_1);ac();var u=Bh(),a=this.m6h_1;n=u.e55(a),o.a(new hc(s,r,"GridElement_LineWest",n))}if(t.d3(),this.w6h_1?this.j6f().a6f(this.r6h_1,this.t6h_1,this.l6h_1,t):(t.a(this.r6h_1),t.a(this.t6h_1)),t.g()>0){var h,_=t.h(0),l=t.h(1),f=this.j6f().l6d(xo(t),A$()),c=this.n6o(_,l),v=ws(this.i6f_1);ac();var w=Bh(),d=this.m6h_1+this.o6h_1;h=w.e55(d),v.a(new hc(c,f,"GridElement_LineEast",h))}if(t.d3(),this.w6h_1?this.j6f().a6f(this.q6h_1,this.r6h_1,this.l6h_1,t):(t.a(this.q6h_1),t.a(this.r6h_1)),t.g()>0){var p,m=t.h(0),g=t.h(1),$=this.j6f().l6d(xo(t),A$()),y=this.n6o(m,g),b=ws(this.i6f_1);ac();var k=Bh(),j=this.n6h_1;p=k.e55(j),b.a(new hc(y,$,"GridElement_LineSouth",p))}if(t.d3(),this.w6h_1?this.j6f().a6f(this.s6h_1,this.t6h_1,this.l6h_1,t):(t.a(this.s6h_1),t.a(this.t6h_1)),t.g()>0){var x,z=t.h(0),E=t.h(1),C=this.j6f().l6d(xo(t),A$()),S=this.n6o(z,E),q=ws(this.i6f_1);ac();var O=Bh(),I=this.n6h_1+this.o6h_1;x=O.e55(I),q.a(new hc(S,C,"GridElement_LineNorth",x))}if(null!=this.v6i_1){var A=this.u6h_1.v5e(),T=Hh(this.v6h_1.j4w_1);if(A*Math.cos(T)>.2&&this.u6h_1.w5e()>.2){var D=0!==this.j6h_1?this.v6h_1:this.y6m(new J_(this.p6h_1.j4w_1,this.p6h_1.k4w_1,0))?this.p6h_1:this.p6h_1.j4w_1<=this.l6h_1.s5e_1&&this.p6h_1.j4w_1>=this.l6h_1.r5e_1?this.v6h_1:null;if(null!=D){var M=this.j6f().i6e(new J_(D.j4w_1,D.k4w_1,0),ws(this.v6i_1),10*this.o6h_1),N=ws(this.i6f_1),R=this.u6h_1;ac(),N.a(oc(R,M,"GridElement_GridZoneLabel"))}}}},Kr(Pc).p6o=function(t,n,i){var e=Hc().q6o(t.c61_1.p62_1),r=t.c61_1.q62_1,s=t.e61_1.j4w_1,o=t.e61_1.k4w_1,u=Ey().r6o(s,e.r5e_1,r.j4w_1),a=Ey().s6o(s,e.s5e_1,r.j4w_1),h=Ey().t6o(o,e.t5e_1,r.k4w_1),_=Ey().u6o(o,e.u5e_1,r.k4w_1),l=s/e.w5e()*(e.a6p_1-e.z6o_1),f=Hc().b6p(r.j4w_1)+u*l,c=Wh(r.k4w_1,h*o),v=f,w=u;if(w<=a)do{var d=w;w=w+1|0;var p=v+l,m=c,g=h;if(g<=_)do{var $=g;g=g+1|0;var y=Yh(m,o);i.a(n.l62(new Vc(v,p,m,y),t,d,$)),m=y}while($!==_);v=p}while(d!==a)},Kr(Fc).o63=function(t){var n=this.p61_1.q6p();if(null==n)return[];var i=n,e=this.s60_1,r=e instanceof Vc?e:Wr(),s=r.z6o_1,o=r.a6p_1,u=s+(o-s)/2,a=r.t5e_1,h=r.u5e_1,_=Bh().x5h(a,h),l=Hr(2,this.q61_1),f=l+1|0,c=Hr(2,this.r61_1),v=c+1|0;return[t.l62(new Vc(s,u,a,_),i,l,c),t.l62(new Vc(s,u,_,h),i,l,v),t.l62(new Vc(u,o,a,_),i,f,c),t.l62(new Vc(u,o,_,h),i,f,v)]},Kr(Uc).q6o=function(t){return new Vc(this.b6p(t.r5e_1),this.b6p(t.s5e_1),t.t5e_1,t.u5e_1)},Kr(Uc).b6p=function(t){var n=ps()/4+Hh(t)/2,i=Math.tan(n);return Math.log(i)/ps()},Kr(Uc).g6q=function(t){var n,i=Bh(),e=t*ps(),r=Yr(e);return n=Math.atan(r),i.r51(n)},Kr(Bc).l62=function(t,n,i,e){var r,s=new Kj(t instanceof Vc?t:Wr(),n,i,e),o=s,u=this.h6q_1.t6q(e,((1<this.d6v_1&&wx().j5y(wx().r4w_1,"StarFieldLayer - sunSize is to big, max size allowed is: "+this.d6v_1),i.a56(t),t.t4x_1.b56(0,4,xk(),!1,0,0),n.b6w(!0),e.l5c(t),t.t4x_1.j5b(zk(),0,1)},Kr(ov).u6v=function(t,n){var i,e,r,s=this.d6w(t.d6u_1);if(-1===s[0])throw i=wx().v4w(wx().q4w_1,"StarFieldLayer","createStarsGeometry","Missing ra field in star data."),cs(ss(i));if(-1===s[1])throw e=wx().v4w(wx().q4w_1,"StarFieldLayer","createStarsGeometry","Missing dec field in star data."),cs(ss(e));if(-1===s[2])throw r=wx().v4w(wx().q4w_1,"StarFieldLayer","createStarsGeometry","Missing vmag field in star data."),cs(ss(r));this.u6u_1=t.e6u_1.g();Yo(),this.w6u_1=34028235e31;Yo(),this.x6u_1=14e-46;var o=new Float32Array(Hr(this.u6u_1,4)),u=0,a=0,h=t.e6u_1.g()-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=t.e6u_1.h(_),f=l.h(s[0]),c=l.h(s[1]),v=l.h(s[2]),w=v<2?2:1,d=u;u=d+1|0,o[d]=c;var p=u;u=p+1|0,o[p]=f;var m=u;u=m+1|0,o[m]=w*n.y52_1;var g=u;u=g+1|0,o[g]=v,this.w6u_1=Wo(this.w6u_1,v),this.x6u_1=Ko(this.x6u_1,v)}while(a<=h);return o},Kr(ov).d6w=function(t){var n=-1,i=-1,e=-1,r=0,s=t.g()-1|0;if(r<=s)do{var o=r;r=r+1|0;var u=t.h(o);"ra"===u.v6t_1&&(n=o),"dec"===u.v6t_1&&(i=o),"vmag"===u.v6t_1&&(e=o)}while(r<=s);return[n,i,e]},Kr(uv).v67=function(t){this.h6v_1=t},Kr(uv).w67=function(){return this.h6v_1},Kr(uv).x67=function(){return this.i6v_1},Kr(uv).g67=function(t){Kr(u$).g67.call(this,t),this.j6v_1=this.h67().i67(this.j5a_1,"mvpMatrix"),this.k6v_1=this.h67().i67(this.j5a_1,"numDays"),this.l6v_1=this.h67().i67(this.j5a_1,"magnitudeRange"),this.m6v_1=this.h67().i67(this.j5a_1,"textureSampler"),this.n6v_1=this.h67().i67(this.j5a_1,"textureEnabled")},Kr(uv).h5b=function(t){t.s5k(this.o6v_1,0),this.h67().k67(this.j6v_1,1,!1,this.o6v_1,0)},Kr(uv).p6v=function(t){return this.h67().n67(this.k6v_1,t)},Kr(uv).a6w=function(t,n){return this.h67().e6w(this.l6v_1,t,n)},Kr(uv).b6w=function(t){return this.h67().j67(this.n6v_1,t?1:0)},Kr(av).o6w=function(t,n,i){var e=t.q5m(n,i),r=this.n6w_1.x6w(e,t.m5m_1,t.n5m_1);return Fj().t6t(r)},Kr(pv).d70=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(pv).ck=function(t,n){return this.d70(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(pv).qj=function(){for(this.jj_1;;)try{var t=this.hj_1;if(0===t){this.ij_1=1;var n=kv().q6z_1,i=n.y35(),e=Vo(i,Ho(Is(nw),Uo([]),!1));return n.s3j(bs(e,Bo)?e:Wr(),this.b70_1)}if(1===t)throw this.kj_1}catch(t){throw t}},Kr(pv).o1f=function(t,n){var i=new pv(this.b70_1,n);return i.c70_1=t,i},Kr($v).qj=function(){var t,n,i,e=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,!(Zo(this.n70_1)>0)){var r=wx().v4w(wx().q4w_1,"WmsLayerFactory","createLayer","missingServiceAddress");throw cs(ss(r))}if(this.o70_1.m()){var s=wx().v4w(wx().q4w_1,"WmsLayerFactory","createLayer","missingLayerNames");throw cs(ss(s))}if(this.hj_1=1,t=this.m70_1,n=this.n70_1,i=void 0,(i=new yv(t,n,this)).jj_1=rs(),i.kj_1=null,(e=i.qj())===Qo())return e;continue t;case 1:for(var o=e,u=gs(),a=this.o70_1.d();a.e();){var h=a.f(),_=o.p70(h);null==_||u.a(_)}var l=u;if(l.m()){var f=wx().s5m("WmsLayerFactory","createLayer","Provided layers did not match available layers");throw cs(ss(f))}return new dv(l);case 2:throw this.kj_1}}catch(t){var c=t;if(2===this.ij_1)throw c;this.hj_1=this.ij_1,this.kj_1=c}},Kr(yv).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=8,this.i6y_1=pk(),this.j6y_1=!1,this.hj_1=1;continue t;case 1:this.ij_1=5,this.ij_1=4,this.l6y_1=tu().q1s(this.h6y_1).q4o().s4n("VERSION","1.3.0").s4n("SERVICE","WMS").s4n("REQUEST","GetCapabilities").f1c(),this.m6y_1=ss(this.l6y_1);var n=new nu;if(iu(n,this.m6y_1),eu(n,!0),this.n6y_1=n,this.n6y_1.d27_1=ru().l1y_1,this.hj_1=2,(t=new su(this.n6y_1,this.i6y_1).c2x(this))===Qo())return t;continue t;case 2:if(this.o6y_1=t,this.hj_1=3,(t=ou(this.o6y_1,Xr,this))===Qo())return t;continue t;case 3:this.k6y_1=t,this.ij_1=8,this.hj_1=6;continue t;case 4:if(this.ij_1=5,this.kj_1 instanceof Error){this.p6y_1=this.kj_1;try{this.j6y_1=!0,this.i6y_1.a14()}catch(t){if(!(t instanceof Error))throw t;var i=t;uu(this.p6y_1,i)}throw this.p6y_1}throw this.kj_1;case 5:throw this.ij_1=8,this.q6y_1=this.kj_1,this.j6y_1||this.i6y_1.a14(),this.q6y_1;case 6:this.r6y_1=this.k6y_1,this.j6y_1||this.i6y_1.a14(),this.s6y_1=this.r6y_1,this.hj_1=7;var e=au().zq_1;if((t=hu(e,mv(this.s6y_1,null),this))===Qo())return t;continue t;case 7:return t;case 8:throw this.kj_1}}catch(t){var r=t;if(8===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},Kr(bv).q70=function(t,n,i){var e=new $v(this,t,n,i);return e.jj_1=rs(),e.kj_1=null,e.qj()},Kr(bv).r6z=function(t){var n=t.h(0).t6y(),i=null==n?null:n.y6y(),e=null==i?null:i.c6z_1,r=null==e?null:e.u6y_1,s=null==r?null:r.s70_1,o=null==s?null:s.w70();if(null==o){var u=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Unable to resolve GetMap URL");throw ks(ss(u))}for(var a=o,h=null,_=t.d();_.e();){var l=_.f().x70();null==h?h=fu(l):h.bc(lu(l))}var f=new fv(a,as(t,",",Xr,Xr,Xr,Xr,gv)),c=i.z6y_1;if("1.3.0"!==c){var v=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Version not compatible");throw ks(ss(v))}if(f.h6w_1=c,!0===(null==h?null:h.n("EPSG:4326")))f.j6w_1="EPSG:4326";else{if(!0!==(null==h?null:h.n("CRS:84"))){var w=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Coordinate systems not compatible");throw ks(ss(w))}f.j6w_1="CRS:84"}var d,p=i.c6z_1.u6y_1.s70_1.u70_1,m=f;t:{for(var g=this.p6z_1.d();g.e();){var $=g.f();if(p.n($)){d=$;break t}}d=null}var y,b=d;if(null==b){var k=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Image Formats Not Compatible");throw ks(ss(k))}y=b,m.k6w_1=y;var j,x=f;t:if(bs(t,cu)&&t.m())j=!1;else{for(var z=t.d();z.e();)if(z.f().s6x_1){j=!0;break t}j=!1}return x.l6w_1=!j,f},Kr(bv).s6z=function(t){var n=new wy;As();for(var i=17976931348623157e292,e=Q_(),r=t.d();r.e();){var s=r.f(),o=s.y70();null==o||(i=bo(i,o),rs());var u=s.z70();null==u||e.g5m(u)}if(e.sr()){var a=wx().s5m("WmsLayerFactory","getLevelSetConfigFromWmsCapabilities","Geographic Bounding Box Not Defined");throw ks(ss(a))}n.a71_1.i5f(e);var h,_=n,l=i;if(As(),17976931348623157e292!==l){var f=28e-5*i/d_().d4v_1.m5j_1;h=n.g71(f)}else h=20;return _.d71_1=h,n},Kr(xv).l62=function(t,n,i,e){var r,s=new cx(t,n,i,e),o=this.x6w(t,n.h61_1,n.i61_1),u=s,a=hx().t6t(o);return a.v6q_1=bs(s,by)?s:Wr(),r=a,u.d6q_1=r,rs(),s},Kr(xv).x6w=function(t,n,i){var e,r=tu().q1s(this.p6w_1).q4o();if(!(n>=1&&i>=1))throw e=wx().v4w(wx().q4w_1,"WmsTileFactory","urlForTile","invalidWidthOrHeight"),cs(ss(e));r.s4n("VERSION",this.q6w_1),r.s4n("SERVICE","WMS"),r.s4n("REQUEST","GetMap"),r.s4n("LAYERS",this.r6w_1);var s=this.s6w_1;r.s4n("STYLES",null==s?"":s),r.s4n("WIDTH",n.toString()),r.s4n("HEIGHT",i.toString());var o,u,a=this.u6w_1;r.s4n("FORMAT",null==a?"image/png":a),r.s4n("TRANSPARENT",this.v6w_1?"TRUE":"FALSE"),"1.3.0"===this.q6w_1?(r.s4n("CRS",this.t6w_1),o="CRS:84"===this.t6w_1?t.t5e_1+","+t.r5e_1+","+t.u5e_1+","+t.s5e_1:t.r5e_1+","+t.t5e_1+","+t.s5e_1+","+t.u5e_1,r.s4n("BBOX",o)):(r.s4n("SRS",this.t6w_1),u=t.t5e_1+","+t.r5e_1+","+t.u5e_1+","+t.s5e_1,r.s4n("BBOX",u));var h=this.w6w_1;return null==h||(r.s4n("TIME",h),rs()),ss(r.f1c())},Kr(Ev).b73=function(){var t=this.z72_1;if(null!=t)return t;no("tileMatrixSetId")},Kr(qv).e75=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(qv).ck=function(t,n){return this.e75(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(qv).qj=function(){for(this.jj_1;;)try{var t=this.hj_1;if(0===t){this.ij_1=1;var n=Dv().e73_1,i=n.y35(),e=Vo(i,Ho(Is(dm),Uo([]),!1));return n.s3j(bs(e,Bo)?e:Wr(),this.c75_1)}if(1===t)throw this.kj_1}catch(t){throw t}},Kr(qv).o1f=function(t,n){var i=new qv(this.c75_1,n);return i.d75_1=t,i},Kr(Iv).qj=function(){var t,n,i,e=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,!(Zo(this.o75_1)>0)){var r=wx().v4w(wx().q4w_1,"WmtsLayerFactory","createLayer","missingServiceAddress");throw cs(ss(r))}if(!(Zo(this.p75_1)>0)){var s=wx().v4w(wx().q4w_1,"WmtsLayerFactory","createLayer","missingLayerNames");throw cs(ss(s))}if(this.hj_1=1,t=this.n75_1,n=this.o75_1,i=void 0,(i=new Av(t,n,this)).jj_1=rs(),i.kj_1=null,(e=i.qj())===Qo())return e;continue t;case 1:var o=e.q75(this.p75_1);n:do{if(null==o){var u=wx().s5m("WmtsLayerFactory","createLayer","The layer identifier specified was not found");throw cs(ss(u))}break n}while(0);return new Sv(o,this.p75_1);case 2:throw this.kj_1}}catch(t){var a=t;if(2===this.ij_1)throw a;this.hj_1=this.ij_1,this.kj_1=a}},Kr(Av).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=8,this.r71_1=pk(),this.s71_1=!1,this.hj_1=1;continue t;case 1:this.ij_1=5,this.ij_1=4,this.u71_1=tu().q1s(this.q71_1).q4o().s4n("VERSION","1.0.0").s4n("SERVICE","WMTS").s4n("REQUEST","GetCapabilities").f1c(),this.v71_1=ss(this.u71_1);var n=new nu;if(iu(n,this.v71_1),eu(n,!0),this.w71_1=n,this.w71_1.d27_1=ru().l1y_1,this.hj_1=2,(t=new su(this.w71_1,this.r71_1).c2x(this))===Qo())return t;continue t;case 2:if(this.x71_1=t,this.hj_1=3,(t=ou(this.x71_1,Xr,this))===Qo())return t;continue t;case 3:this.t71_1=t,this.ij_1=8,this.hj_1=6;continue t;case 4:if(this.ij_1=5,this.kj_1 instanceof Error){this.y71_1=this.kj_1;try{this.s71_1=!0,this.r71_1.a14()}catch(t){if(!(t instanceof Error))throw t;var i=t;uu(this.y71_1,i)}throw this.y71_1}throw this.kj_1;case 5:throw this.ij_1=8,this.z71_1=this.kj_1,this.s71_1||this.r71_1.a14(),this.z71_1;case 6:this.a72_1=this.t71_1,this.s71_1||this.r71_1.a14(),this.b72_1=this.a72_1,this.hj_1=7;var e=au().zq_1;if((t=hu(e,Ov(this.b72_1,null),this))===Qo())return t;continue t;case 7:return t;case 8:throw this.kj_1}}catch(t){var r=t;if(8===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},Kr(Tv).r75=function(t,n,i){var e=new Iv(this,t,n,i);return e.jj_1=rs(),e.kj_1=null,e.qj()},Kr(Rv).l62=function(t,n,i,e){var r=new cx(t,n,i,e),s=this.x75(n.d61_1,i,e);if(null==s);else{var o,u=r,a=hx().t6t(s);a.v6q_1=bs(r,by)?r:Wr(),o=a,u.d6q_1=o,rs()}return r},Kr(Rv).x75=function(t,n,i){if(t>=this.w75_1.g())return wx().v4w(wx().r4w_1,"WmtsTileFactory","urlForTile","invalid level for tileMatrixIdentifiers: "+t),null;var e=((2<i[1]&&Ls(i,0));var s=t.z52_1;if(s!==this.x7d_1||!r.equals(this.w7d_1)){var o=i[0]*s,u=i[1]*s;e.x5i(this.t7d_1,n,o,u)}return this.w7d_1=r,this.x7d_1=s,e},Kr(Og).p59=function(t,n,i,e){return this.e4u_1=t,this.f4u_1=n,this.g4u_1=i,this.h4u_1=e,this},Kr(Og).s59=function(t){return this.p59(t.e4u_1,t.f4u_1,t.g4u_1,t.h4u_1)},Kr(Og).m6j=function(t){var n,i,e=Ko(Ko(this.e4u_1,this.f4u_1),this.g4u_1),r=e-Wo(Wo(this.e4u_1,this.f4u_1),this.g4u_1);if(0===r)n=0,i=0;else{i=r/e;var s=(e-this.e4u_1)/6/r+.5,o=(e-this.f4u_1)/6/r+.5,u=(e-this.g4u_1)/6/r+.5;(n=this.e4u_1===e?u-o:this.f4u_1===e?1/3+s-u:this.g4u_1===e?2/3+o-s:0)<0?n+=1:n>1&&(n-=1)}t[0]=360*n,t[1]=i,t[2]=e},Kr(Og).y7d=function(t,n){var i,e=n;if(!((t.length-e|0)>=4))throw i=wx().v4w(wx().q4w_1,"Color","premultiplyToArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.e4u_1*this.h4u_1;var s=e;e=s+1|0,t[s]=this.f4u_1*this.h4u_1;var o=e;return e=o+1|0,t[o]=this.g4u_1*this.h4u_1,t[e]=this.h4u_1,t},Kr(Og).equals=function(t){return this===t||t instanceof Og&&this.e4u_1===t.e4u_1&&this.f4u_1===t.f4u_1&&this.g4u_1===t.g4u_1&&this.h4u_1===t.h4u_1},Kr(Og).hashCode=function(){var t=Ns(this.e4u_1);return t=Hr(31,t)+Ns(this.f4u_1)|0,t=Hr(31,t)+Ns(this.g4u_1)|0,Hr(31,t)+Ns(this.h4u_1)|0},Kr(Og).toString=function(){return"Color(red="+this.e4u_1+", green="+this.f4u_1+", blue="+this.g4u_1+", alpha="+this.h4u_1+")"},Kr(Og).z7d=function(){var t=255*this.e4u_1,n=es(t),i=255*this.f4u_1,e=es(i),r=255*this.g4u_1;return"rgba("+n+", "+e+", "+es(r)+", "+this.h4u_1+")"},Kr(Dg).w5d=function(t){return this.n57_1.c7e()||this.a7e(t),this.n57_1.c7e()&&t.y57(this.n57_1),this.n57_1.c7e()},Kr(Dg).p57=function(t,n,i){return this.n57_1.c7e()||this.a7e(t),this.n57_1.c7e()&&(this.d7e(t,n,i),this.o57_1.f4(i,n)),this.n57_1.c7e()},Kr(Dg).x5d=function(t){var n=this.o57_1.g2(t);if(null==n)throw ks("Invalid attachment type");return n},Kr(Dg).a7e=function(t){var n=t.x56();try{this.n57_1=t.t4x_1.e7e(),t.t4x_1.z57(Wk(),this.n57_1)}finally{t.t4x_1.z57(Wk(),n)}},Kr(Dg).d7e=function(t,n,i){var e=t.x56();try{t.y57(this.n57_1);var r=null==n?null:n.f7e(t),s=null==r?qx().q56_1:r;t.t4x_1.g7e(Wk(),i,Gk(),s,0)}finally{t.y57(e)}},Kr(Rg).toString=function(){return"TextCacheKey(text="+this.i7e_1+", attributes="+this.j7e_1+")"},Kr(Rg).hashCode=function(){var t=null==this.i7e_1?0:Po(this.i7e_1);return Hr(t,31)+(null==this.j7e_1?0:this.j7e_1.hashCode())|0},Kr(Rg).equals=function(t){if(this===t)return!0;if(!(t instanceof Rg))return!1;var n=t instanceof Rg?t:Wr();return this.i7e_1==n.i7e_1&&!!Rs(this.j7e_1,n.j7e_1)},Kr(Lg).j5h=function(){var t=this.r52_1;if(null!=t)return t;no("globe")},Kr(Lg).r5g=function(){var t=this.s52_1;if(null!=t)return t;no("terrainTessellator")},Kr(Lg).x5g=function(){var t=this.t52_1;if(null!=t)return t;no("terrain")},Kr(Lg).u5g=function(){var t=this.u52_1;if(null!=t)return t;no("layers")},Kr(Lg).j7g=function(){var t=this.v52_1;if(null!=t)return t;no("currentLayer")},Kr(Lg).h64=function(){var t=this.w52_1;if(null!=t)return t;no("camera")},Kr(Lg).z5g=function(){var t=this.x52_1;if(null!=t)return t;no("renderResourceCache")},Kr(Lg).k7g=function(){return vo("tessellator",1,co,(function(t){return t.k7g()}),null),this.z53_1.s()},Kr(Lg).x1g=function(){this.y52_1=1,this.z52_1=1,this.a53_1=0,this.b53_1=0,this.c53_1=new ts(0,0),this.d53_1.r57(0,0,0),this.e53_1.r4x(),this.f53_1.s57(),this.g53_1.s57(),this.h53_1.s57(),this.i53_1.q5j(),this.j53_1=null,this.k53_1=null,this.l53_1=null,this.m53_1=null,this.n53_1=null,this.o53_1=null,this.p53_1=null,this.q53_1=!1,this.s53_1=0,this.r53_1=!1,this.t53_1=0,this.u53_1.d3()},Kr(Lg).b52=function(t){if(0===this.t53_1){var n=.5*Hh(this.h64().i4w_1),i=Math.tan(n);this.t53_1=2*i/this.e53_1.q4x_1}return t*this.t53_1},Kr(Lg).l7g=function(t,n,i){var e=t.m4z_1,r=t.n4z_1,s=t.q4z_1,o=this.g53_1.g4z_1,u=o[0]*e+o[1]*r+o[2]*s+o[3],a=o[4]*e+o[5]*r+o[6]*s+o[7],h=o[8]*e+o[9]*r+o[10]*s+o[11],_=o[12]*e+o[13]*r+o[14]*s+o[15],l=this.f53_1.g4z_1,f=l[0]*u+l[1]*a+l[2]*h+l[3]*_,c=l[4]*u+l[5]*a+l[6]*h+l[7]*_,v=l[8]*u+l[9]*a+l[10]*h+l[11]*_,w=l[12]*u+l[13]*a+l[14]*h+l[15]*_;return 0!==w&&(f/=w,c/=w,!((v/=w)<-1||v>1||(v=l[8]*u+l[9]*a+l[10]*h*(1+n)+l[11]*_,c=.5*c+.5,v=.5*(v=ds(v/=w,-1,1))+.5,f=(f=.5*f+.5)*this.e53_1.p4x_1+this.e53_1.n4x_1,c=c*this.e53_1.q4x_1+this.e53_1.o4x_1,i.m4z_1=f,i.n4z_1=c,i.q4z_1=v,0)))},Kr(Lg).m7g=function(t,n,i){return this.n7g(t.j4w_1,t.k4w_1,t.n4w_1,n,i)},Kr(Lg).n7g=function(t,n,i,e,r){switch(e.l6_1){case 0:this.j5h().z4z(t,n,i*this.z52_1,r);break;case 1:if(!this.x5g().b61(t,n,r)){var s=this.j5h(),o=s.n50(t,n);s.z4z(t,n,o*this.z52_1,r)}break;case 2:if(this.x5g().b61(t,n,r))0!==i&&(this.j5h().o50(t,n,this.y53_1),r.d5n(this.y53_1.w5i(i)));else{var u=this.j5h(),a=i+u.n50(t,n);u.z4z(t,n,a*this.z52_1,r)}}return r},Kr(Lg).o7g=function(t,n,i){var e,r=this.z5g(),s=r.g2(t);return null==(e=null==s?i?r.p7g(t,n):null:s)||e instanceof Vg?e:Wr()},Kr(Lg).m69=function(t,n,i,e){return i=i===Xr||i,e===Xr?this.o7g(t,n,i):e.o7g.call(this,t,n,i)},Kr(Lg).q7g=function(t,n,i){var e=this.z5g();this.x53_1.i7e_1=t,this.x53_1.j7e_1=n;var r,s=e.g2(this.x53_1),o=null==s||s instanceof Vg?s:Wr();if(null==o){var u;if(i){var a,h=this.w53_1.t7g(t,n);null==h?a=null:(e.h5h(new Rg(t,X$(n)),h,h.u7g()),a=h),u=a}else u=null;r=u}else r=o;return r},Kr(Lg).s5b=function(t,n,i){var e=this.j53_1;null==e||e.s5b(t,n,i)},Kr(Lg).i5h=function(t,n){var i=this.j53_1;null==i||i.s5b(t,nh(),n)},Kr(Lg).v7g=function(t,n){var i=this.j53_1;null==i||i.s5b(t,(Za(),b),-n)},Kr(Lg).f63=function(t,n){var i=this.k53_1;null==i||i.s5b(t,nh(),n)},Kr(Lg).t5b=function(){var t=this.j53_1;null==t||t.t5b();var n=this.k53_1;null==n||n.t5b()},Kr(Lg).w7g=function(){var t=this.j53_1,n=null==t?null:t.s4u();return null==n?0:n},Kr(Lg).v4u=function(t){var n=this.l53_1;null==n||n.v4u(t)},Kr(Lg).y5g=function(){var t=this;t.s53_1=t.s53_1+1|0;var n=t.s53_1;return Ng(),n>16777215&&(this.s53_1=1),this.s53_1},Kr(Lg).w6c=function(t){return this.u53_1.g2(t)},Kr(Lg).z6c=function(t,n){return this.u53_1.f4(t,n)},Kr(Lg).y6c=function(t){return this.u53_1.wc(t)},Kr(Lg).x6c=function(t){return this.u53_1.a2(t)},Kr(Ug).x7g=function(t,n,i,e,r){var s;if(!(t>=0&&n>=0))throw s=wx().v4w(wx().q4w_1,"Texture","estimateByteCount","invalidWidthOrHeight"),cs(ss(s));var o,u=ej(t),a=e;if(a===Vk()){var h=i;o=h===tr||h===nr?u:h===ir?Hr(u,2):h===er?Hr(u,3):(Hk(),Hr(u,4))}else o=a===Sk()||a===rr||a===sr||a===or?Hr(u,2):(Ik(),Hr(u,4));var _=o,l=ej(n),f=Hr(_,l);return r&&(f=f+(f/3|0)|0),f},Kr(Vg).u7g=function(){return Hg().x7g(this.c57_1,this.d57_1,this.e57_1,this.f57_1,this.y7g())},Kr(Vg).y7g=function(){return this.k57_1},Kr(Vg).z7g=function(t){var n=this.j57_1,i=null==n?null:n.g2(t);return null==i?0:i},Kr(Vg).m57=function(t,n){var i,e=this.j57_1;if(null==e){var r=os();this.j57_1=r,i=r}else i=e;i.f4(t,n)},Kr(Vg).f7e=function(t){return this.i57_1.c7e()||this.a7h(t),this.i57_1},Kr(Vg).l5c=function(t){return this.i57_1.c7e()||this.a7h(t),this.i57_1.c7e()&&t.d58(this.i57_1),this.i57_1.c7e()&&this.l57_1!==t.f4y_1&&(this.c7h(t),this.l57_1=t.f4y_1),this.i57_1.c7e()},Kr(Vg).a7h=function(t){var n=t.z56();try{this.i57_1=t.t4x_1.d7h(),t.t4x_1.e58(Gk(),this.i57_1),this.e7h(t),this.c7h(t)}finally{t.t4x_1.e58(Gk(),n)}},Kr(Vg).e7h=function(t){this.g57_1&t.t4x_1.g7h()&&t.t4x_1.f7h(Gk(),0,this.e57_1,1,1,0,this.e57_1,this.f57_1,null),t.t4x_1.f7h(Gk(),0,this.e57_1,this.c57_1,this.d57_1,0,this.e57_1,this.f57_1,null)},Kr(Vg).c7h=function(t){var n;if(t.f4y_1)t.t4x_1.h7h(Gk(),Tk(),Dk());else{var i=this.z7g(Tk());n=i,0!==i?t.t4x_1.h7h(Gk(),Tk(),n):t.t4x_1.h7h(Gk(),Tk(),this.y7g()?ur:Kk())}if(t.f4y_1)t.t4x_1.h7h(Gk(),Mk(),Dk());else{var e=this.z7g(Mk());n=e,0!==e?t.t4x_1.h7h(Gk(),Mk(),n):t.t4x_1.h7h(Gk(),Mk(),Kk())}var r=this.z7g(Nk());n=r,0!==r?t.t4x_1.h7h(Gk(),Nk(),n):t.t4x_1.h7h(Gk(),Nk(),Jk());var s=this.z7g(Pk());n=s,0!==s?t.t4x_1.h7h(Gk(),Pk(),n):t.t4x_1.h7h(Gk(),Pk(),Jk())},Kr(Bg).a56=function(t){return this.t5c_1.c7e()&&t.g58(this.q5c_1,this.t5c_1),this.t5c_1.c7e()},Kr(Bg).j7h=function(t){var n=t.f58(this.q5c_1);try{this.t5c_1.c7e()||this.k7h(t),t.g58(this.q5c_1,this.t5c_1),this.l7h(t)}catch(n){if(!(n instanceof Ts))throw n;var i=n;this.m7h(t),wx().n5h(wx().q4w_1,"BufferObject","loadBuffer","Exception attempting to load buffer data",i)}finally{t.g58(this.q5c_1,n)}},Kr(Bg).k7h=function(t){this.t5c_1=t.t4x_1.n7h()},Kr(Bg).m7h=function(t){this.t5c_1.c7e()&&(t.t4x_1.o7h(this.t5c_1),this.t5c_1=Ex().r56_1)},Kr(Yg).a56=function(t){return null==this.z55_1||(this.j7h(t),rs(),rs()),this.z55_1=null,Kr(Bg).a56.call(this,t)},Kr(Yg).l7h=function(t){var n=this.z55_1;null==n||(t.t4x_1.p7h(this.q5c_1,this.r5c_1,n,Xk()),rs())},Kr(Wg).a56=function(t){return null==this.u7h_1||(this.j7h(t),rs(),rs()),this.u7h_1=null,Kr(Bg).a56.call(this,t)},Kr(Wg).l7h=function(t){var n=this.u7h_1;null==n||(t.t4x_1.v7h(this.q5c_1,this.r5c_1,n,Xk()),rs())},Kr(Gg).a56=function(t){return null==this.i56_1||(this.j7h(t),rs(),rs()),this.i56_1=null,Kr(Bg).a56.call(this,t)},Kr(Gg).l7h=function(t){var n=this.i56_1;null==n||(t.t4x_1.w7h(this.q5c_1,this.r5c_1,n,Xk()),rs())},Kr(u$).h67=function(){var t=this.i5a_1;if(null!=t)return t;no("gl")},Kr(u$).g5h=function(){for(var t=0,n=this.w67(),i=0,e=n.length;i0&&_<=l||f<0&&l<=_)do{var c=_;_=_+f|0;var v=n[c]-s,w=n[c+1|0]-o,d=n[c+2|0]-u,p=v*v+w*w+d*d;a>p&&(a=p)}while(c!==l);var m=a;return Math.sqrt(m)},Kr(c$).e7j=function(t,n,i){var e=i.s57();return e.p5k(1/(t.c57_1*n),1/(t.d57_1*n)),e.r5k(t.h57_1),e},Kr(v$).p7j=function(t){var n=gs(),i=lo(t),e=this.q7j(t);n.a(0),n.a(1);var r=2;if(r(t/2|0))i=Tu(i-1),n.a(i);else{var o=i;i=Tu(o+1),n.a(o)}s===(t/2|0)&&n.a(lo(s)),n.a(lo(s))}while(rthis.n7k_1,a=u?90:0,h=2*ps()/this.r7k_1,_=t.j5h().c52(),l=t.j5h().i5w(),f=Math.max(_,l);u?(s=this.m7k_1/f,o=this.n7k_1/f):(s=this.n7k_1/f,o=this.m7k_1/f);var c=w$().q7j(this.r7k_1);w$();var v=Hr(c,6),w=0,d=new Float64Array(n),p=0,m=this.r7k_1;if(p0&&g<(this.r7k_1/2|0)){var q=w;w=q+1|0,d[q]=b}}while(p=this.q7k_1)return n;var i=t.m7g(this.l7k_1,this.s6d_1,w$().o7j_1),e=this.m7k_1,r=this.n7k_1,s=Math.max(e,r),o=i.c5j(t.d53_1)-s;if(o<=0)return this.q7k_1;var u,a=t.b52(o),h=this.m7l()/a/this.p7k_1/n,_=Math.log(h)/Math.log(2);u=Math.ceil(_);var l=Mu(Ms(u),0);return ko(n<<=l,this.q7k_1)},Kr(d$).j7l=function(t){return 0==(t%2|0)?t:t-1|0},Kr(d$).m7l=function(){var t=this.m7k_1,n=this.n7k_1,i=(3*t+n)*(t+3*n);return ps()*(3*(t+n)-Math.sqrt(i))},Kr(d$).x1g=function(){this.s7k_1=new Float32Array(0)},Kr(y$).e6n=function(t){this.q6e_1.a50(t)},Kr(y$).h6e=function(t){this.r6e_1=t},Kr(y$).x7l=function(){return this.r6e_1},Kr(y$).x7i=function(t){this.u6e_1=t},Kr(y$).y7i=function(){return this.u6e_1},Kr(y$).z7i=function(){var t=this.w6e_1;if(null!=t)return t;no("activeAttributes")},Kr(y$).y7l=function(){return this.q6e_1},Kr(y$).z7l=function(t,n){this.e6n(n)},Kr(y$).f64=function(t){var n=this.o6e_1;if(!1!==(null==n?null:0===Zo(n)))return rs();t.m7g(this.q6e_1,this.x7l(),g$().o7l_1.p7l_1),g$().o7l_1.w7l_1=this.x6e_1?0:t.d53_1.c5j(g$().o7l_1.p7l_1);var i=0;if(g$().o7l_1.w7l_10)}else n=!1;return n},Kr(N$).j7q=function(t){return!(!this.z7i().x7o_1||!this.t7p_1&&t.q53_1||this.x7l().equals(Fh()))},Kr(P$).o7q=function(t){var n=R$();return n.t7o_1=t,n},Kr(P$).p7q=function(t){var n=R$();return n.t7o_1=t,n.x7o_1=!0,n},Kr(F$).d7p=function(t){this.z7o_1.s59(t)},Kr(F$).q7q=function(t){this.a7p_1.o5l(t)},Kr(F$).equals=function(t){return this===t||t instanceof F$&&!!Rs(this.t7o_1,t.t7o_1)&&!!this.z7o_1.equals(t.z7o_1)&&!!this.a7p_1.equals(t.a7p_1)&&this.u7o_1===t.u7o_1&&this.v7o_1===t.v7o_1&&this.w7o_1===t.w7o_1&&this.x7o_1===t.x7o_1&&this.y7o_1===t.y7o_1&&!!this.b7p_1.equals(t.b7p_1)&&!!this.c7p_1.equals(t.c7p_1)},Kr(F$).hashCode=function(){var t=this.t7o_1,n=null==t?null:t.hashCode(),i=null==n?0:n;return i=Hr(31,i)+this.z7o_1.hashCode()|0,i=Hr(31,i)+this.a7p_1.hashCode()|0,i=Hr(31,i)+Ns(this.u7o_1)|0,i=Hr(31,i)+Ns(this.v7o_1)|0,i=Hr(31,i)+(0|this.w7o_1)|0,i=Hr(31,i)+(0|this.x7o_1)|0,i=Hr(31,i)+(0|this.y7o_1)|0,i=Hr(31,i)+this.b7p_1.hashCode()|0,Hr(31,i)+this.c7p_1.hashCode()|0},Kr(U$).s6v=function(){return new Object},Kr(V$).y7q=function(t,n,i,e,r){return this.x7q_1.r7s(r instanceof Lg?r:Wr(),t,n,i,e)},Kr(V$).s7s=function(t,n){return this.x7q_1.t7s(n instanceof Lg?n:Wr(),t)},Kr(V$).u7s=function(t,n){return this.x7q_1.v7s(n instanceof Lg?n:Wr(),t)},Kr(V$).w7s=function(t,n){return this.x7q_1.x7s(n instanceof Lg?n:Wr(),t)},Kr(B$).g7t=function(t){return this.x1g(),this.s7r_1.a(t)},Kr(B$).x1g=function(){this.t7r_1=new Float32Array(0),this.v7r_1.d3(),this.w7r_1.d3(),this.x7r_1.d3(),this.y7r_1.d3()},Kr(B$).b7j=function(t){if(this.s7r_1.m())return rs();var n,i;if(this.f7l(t)&&(this.e7l(t),this.z7r_1=H$().s6v(),this.a7s_1=H$().s6v()),this.c7s_1){var e,r=Is(zh),s=t.v53_1.g2(r),o=null==s||bs(s,yy)?s:Wr();if(null==o){var u=new dx;t.v53_1.f4(r,u),e=u}else e=o;var a=e;i=(n=xh().h5e(a)).j5e_1,this.d7s_1=this.c7j(t,this.c6e_1),n.i5e_1.i5f(this.c6e_1)}else{var h,_=Is(ph),l=t.v53_1.g2(_),f=null==l||bs(l,yy)?l:Wr();if(null==f){var c=new dx;t.v53_1.f4(_,c),h=c}else h=f;var v=h;i=(n=dh().m5c(v)).n5c_1;var w=this.t7r_1,d=this.u7r_1;H$(),this.d7s_1=this.d7j(t,w,d,6,this.b7s_1)}var p,m,g,$=i,y=Is(a$),b=t.z5g(),k=b.g2(y);if(null==k){var j=new a$;b.h5h(y,j,j.g5h()),g=j}else g=k;p=(m=g)instanceof a$?m:Wr(),$.y58_1=p;var x,z,E,C=i,S=this.z7r_1,q=t.z5g(),O=q.g2(S);if(null==O){var I=new Yg(jk(),this.t7r_1,this.u7r_1);q.h5h(S,I,I.r5c_1),E=I}else E=O;x=(z=E)instanceof Yg?z:Wr(),C.z58_1=x;var A,T,D,M=i,N=this.a7s_1,R=t.z5g(),P=R.g2(N);if(null==P){var L=new Wg(Ek(),Nu(Cu(Cu(Cu(this.v7r_1,this.w7r_1),this.x7r_1),this.y7r_1)));R.h5h(N,L,L.r5c_1),D=L}else D=P;A=(T=D)instanceof Wg?T:Wr(),M.a59_1=A,this.c7s_1||this.z7i().i6k_1.h4u_1>=1?(this.h7l(t,i),this.g7l(t,i)):(this.g7l(t,i),this.h7l(t,i)),i.b59_1.t54(this.b7s_1);var F=i;H$(),F.c59_1=Hr(6,4),i.d59_1=this.u6d_1,i.e59_1=this.z7i().c6k_1,i.f59_1=this.z7i().d6k_1,this.c7s_1?t.i5h(n,0):t.v7g(n,this.d7s_1)},Kr(B$).h7l=function(t,n){if(!this.z7i().z6j_1)return rs();var i,e=this.z7i().g6k_1;if(null==e)i=null;else{var r,s=t.m69(e,H$().s7q_1);if(null==s)r=null;else{var o=t.b52(this.d7s_1);this.e7j(s,o,this.j7s_1),n.v59(s),r=n.w59(this.j7s_1)}i=r}if(null==i&&n.v59(null),n.r59(t.q53_1?this.b6e_1:this.z7i().i6k_1),n.t59(t.j7g().c64()),n.y59(2,12),n.l56(Ak(),this.v7r_1.g(),Ik(),0),this.u6d_1){n.v59(null);var u=Ak(),a=this.w7r_1.g(),h=Ik(),_=this.v7r_1.g();Iu(),n.l56(u,a,h,Hr(_,4))}},Kr(B$).g7l=function(t,n){if(!this.z7i().a6k_1)return rs();var i,e=this.z7i().h6k_1;if(null==e)i=null;else{var r,s=t.m69(e,H$().t7q_1);if(null==s)r=null;else{var o=t.b52(this.d7s_1);this.e7j(s,o,this.j7s_1),n.v59(s),r=n.w59(this.j7s_1)}i=r}null==i&&n.v59(null),n.r59(t.q53_1?this.b6e_1:this.z7i().j6k_1),n.t59(t.j7g().c64()),n.u59(this.z7i().f6k_1),n.y59(1,20);var u=Ok(),a=this.x7r_1.g(),h=Ik(),_=this.v7r_1.g()+this.w7r_1.g()|0;if(Iu(),n.l56(u,a,h,Hr(_,4)),this.z7i().b6k_1&&this.u6d_1){n.r59(t.q53_1?this.b6e_1:this.z7i().j6k_1),n.t59(t.j7g().c64()),n.u59(this.z7i().f6k_1),n.v59(null);var l=Ok(),f=this.y7r_1.g(),c=Ik(),v=(this.v7r_1.g()+this.w7r_1.g()|0)+this.x7r_1.g()|0;Iu(),n.l56(l,f,c,Hr(v,4))}},Kr(B$).f7l=function(t){return 0===this.t7r_1.length},Kr(B$).e7l=function(t){this.c7s_1=!!this.s6d_1.equals(Fh())&&this.v6d_1;for(var n=this.y6d_1<=0||this.t6d_1.equals(T$()),i=0,e=this.s7r_1.d();e.e();){var r=e.f();i=i+(n?r.g():!r.m()&&r.h(0).equals(r.h(r.g()-1|0))?r.g()+Hr(r.g()-1|0,this.y6d_1)|0:r.g()+Hr(r.g(),this.y6d_1)|0)|0}var s=i;this.u7r_1=0;var o;if(this.u6d_1&&!this.c7s_1){var u=Hr(s,2);H$(),o=new Float32Array(Hr(u,6))}else if(this.c7s_1){var a=s+this.s7r_1.g()|0;H$(),o=new Float32Array(Hr(a,6))}else H$(),o=new Float32Array(Hr(s,6));this.t7r_1=o,this.v7r_1.d3(),this.w7r_1.d3(),this.x7r_1.d3(),this.y7r_1.d3(),this.k7l(t);var h=t.k7g();lb().h7t(h,0,0,1);var _=lb();lb(),_.i7t(h,100111,this.f7s_1);var l=lb();lb(),l.i7t(h,100107,this.f7s_1);var f=lb();lb(),f.i7t(h,100110,this.f7s_1);var c=lb();lb(),c.i7t(h,100109,this.f7s_1),lb().j7t(h,t);var v=0,w=this.s7r_1.g()-1|0;if(v<=w)do{var d=v;v=v+1|0;var p=this.s7r_1.h(d);if(!p.m()){lb().k7t(h);var m=p.h(0),g=m.j4w_1,$=m.k4w_1,y=m.n4w_1;H$(),this.l7t(t,g,$,y,0);var b=1,k=p.g();if(b>1,12),i=new Float32Array(t+n|0),e=this.t7r_1,r=e.length;Ss(e,i,0,0,r),this.t7r_1=i}},Kr(W$).r7t=function(t){this.i6k_1.s59(t)},Kr(W$).w6j=function(t){this.j6k_1.s59(t)},Kr(W$).equals=function(t){return this===t||t instanceof W$&&this.z6j_1===t.z6j_1&&this.a6k_1===t.a6k_1&&this.b6k_1===t.b6k_1&&this.c6k_1===t.c6k_1&&this.d6k_1===t.d6k_1&&this.e6k_1===t.e6k_1&&!!this.i6k_1.equals(t.i6k_1)&&!!this.j6k_1.equals(t.j6k_1)&&this.f6k_1===t.f6k_1&&!!Rs(this.g6k_1,t.g6k_1)&&!!Rs(this.h6k_1,t.h6k_1)},Kr(W$).hashCode=function(){var t=0|this.z6j_1;t=Hr(31,t)+(0|this.a6k_1)|0,t=Hr(31,t)+(0|this.b6k_1)|0,t=Hr(31,t)+(0|this.c6k_1)|0,t=Hr(31,t)+(0|this.d6k_1)|0,t=Hr(31,t)+(0|this.e6k_1)|0,t=Hr(31,t)+this.i6k_1.hashCode()|0,t=Hr(31,t)+this.j6k_1.hashCode()|0,t=Hr(31,t)+Ns(this.f6k_1)|0;var n=Hr(31,t),i=this.g6k_1,e=null==i?null:i.hashCode(),r=Hr(31,t=n+(null==e?0:e)|0),s=this.h6k_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},Kr(G$).f64=function(t){if(this.t7d_1.sr()||!t.x5g().q55().c5g(this.t7d_1)||!this.s63(t).e5j(t.i53_1))return rs();var n=t.m69(this.c65_1,this.d65_1);if(null==n)return rs();var i,e=n,r=this.s7t(t),s=Is(qh),o=t.v53_1.g2(s),u=null==o||bs(o,yy)?o:Wr();if(null==u){var a=new dx;t.v53_1.f4(s,a),i=a}else i=u;var h=i,_=Ch().z5e(h).h5f(r,this.t7d_1,e,e.h57_1);if(_.c5f_1=t.j7g().c64(),t.i5h(_,0),t.q53_1){var l=t.y5g();Ia().d4u(l,_.b5f_1),t.v4u(Ia().a4u(l,this,t.j7g()))}},Kr(G$).s7t=function(t){var n,i,e=Is(_$),r=t.z5g(),s=r.g2(e);if(null==s){var o=new _$;r.h5h(e,o,o.g5h()),i=o}else i=s;return(n=i)instanceof _$?n:Wr()},Kr(Z$).x6j=function(t){this.r6j_1.z7t(t)},Kr(Z$).v6j=function(t){this.s6j_1.s59(t)},Kr(Z$).a7u=function(t){this.t6j_1.o5l(t)},Kr(Z$).w6j=function(t){this.u6j_1.s59(t)},Kr(Z$).equals=function(t){return this===t||t instanceof Z$&&!!this.r6j_1.equals(t.r6j_1)&&!!this.s6j_1.equals(t.s6j_1)&&!!this.t6j_1.equals(t.t6j_1)&&!!this.u6j_1.equals(t.u6j_1)&&this.n6j_1===t.n6j_1&&this.o6j_1===t.o6j_1&&this.p6j_1===t.p6j_1&&this.q6j_1===t.q6j_1},Kr(Z$).hashCode=function(){var t=this.r6j_1.hashCode();return t=Hr(31,t)+this.s6j_1.hashCode()|0,t=Hr(31,t)+this.t6j_1.hashCode()|0,t=Hr(31,t)+this.u6j_1.hashCode()|0,t=Hr(31,t)+Ns(this.n6j_1)|0,t=Hr(31,t)+(0|this.o6j_1)|0,t=Hr(31,t)+(0|this.p6j_1)|0,Hr(31,t)+Ns(this.q6j_1)|0},Kr(ny).o6r=function(t){this.d6r_1=t,this.w5w()},Kr(ny).f64=function(t){if(t.x5g().q55().sr())return rs();this.s6s(t),this.k62(t),this.k6r_1=null,this.l6r_1=null,this.m6r_1=null},Kr(ny).s6s=function(t){var n,i,e,r=Is(_$),s=t.z5g(),o=s.g2(r);if(null==o){var u=new _$;s.h5h(r,u,u.g5h()),e=u}else e=o;n=(i=e)instanceof _$?i:Wr(),this.k6r_1=n},Kr(ny).k62=function(t){this.i6r_1.m()&&this.n62();var n=0,i=this.i6r_1.g()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.i6r_1.h(e);this.t6s(t,r instanceof cx?r:Wr())}while(n<=i)},Kr(ny).n62=function(){var t=this.c6r_1.v62();null==t||Ey().w62(t,this.b6r_1,this.i6r_1)},Kr(ny).t6s=function(t,n){if(!n.y62(this.c6r_1.p62_1)||!n.y62(t.x5g().q55())||!n.x62(t))return rs();var i=n.p61_1.d61_1>=this.f6r_1;if(n.p61_1.b63()||!n.a63(t,this.e6r_1))return i&&this.u6s(t,n),rs();var e,r=this.l6r_1,s=this.m6r_1;ty(),e=i;var o=this.v6s(t,n,e);null==o||(this.l6r_1=n,this.m6r_1=o,rs());var u=n.c63(this.b6r_1,this.j6r_1,4),a=0,h=u.length-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=u[_];this.t6s(t,l instanceof cx?l:Wr())}while(a<=h);this.l6r_1=r,this.m6r_1=s},Kr(ny).u6s=function(t,n){var i=this.w6s(t,n),e=this.l6r_1,r=this.m6r_1;if(null!=i){var s,o=Is(qh),u=t.v53_1.g2(o),a=null==u||bs(u,yy)?u:Wr();if(null==a){var h=new dx;t.v53_1.f4(o,h),s=h}else s=a;var _=s,l=Ch().z5e(_).h5f(this.k6r_1,n.s60_1,i,i.h57_1);t.i5h(l,0)}else if(null!=e&&null!=r){this.n6r_1.x59(r.h57_1),this.n6r_1.e5g(n.s60_1,e.s60_1);var f,c=Is(qh),v=t.v53_1.g2(c),w=null==v||bs(v,yy)?v:Wr();if(null==w){var d=new dx;t.v53_1.f4(c,d),f=d}else f=w;var p=f,m=Ch().z5e(p).h5f(this.k6r_1,n.s60_1,r,this.n6r_1);t.i5h(m,0)}},Kr(ny).v6s=function(t,n,i){var e=n.d6q_1;if(null==e)return null;var r,s=e,o=n.e6q_1;if(null==o){var u,a=this.g6r_1;if(null==a)u=null;else{var h,_=a.l62(n.s60_1,n.p61_1,n.q61_1,n.r61_1),l=(_ instanceof cx?_:Wr()).d6q_1;null==l?h=null:(n.e6q_1=l,h=l),u=h}r=u}else r=o;var f=r,c=null==f||t.z5g().f4x_1.u5y(f.hashCode());return t.o7g(c?s:ws(f),this.d6r_1,!(!i||this.h6r_1&&c))},Kr(ny).w6s=function(t,n,i,e){return i=i===Xr||i,e===Xr?this.v6s(t,n,i):e.v6s.call(this,t,n,i)},Kr(ny).w5w=function(){this.i6r_1.d3(),this.j6r_1.d3()},Kr(iy).g7u=function(t){var n=this.d7u_1;this.d7u_1=n+1|0,this.c7u_1=Bs().v3h(),this.e7u_1=t},Kr(ey).d3=function(){this.n5y_1.d3()},Kr(ey).u5y=function(t){var n=this.n5y_1.g2(t);if(null==n)return!1;var i=n;if(i.e7u_1)return!0;var e=Bs().v3h().x3i(i.c7u_1);return Pu(e,this.m5y_1)>0?(this.n5y_1.wc(t),!1):Pu(e,this.l5y_1)<0||i.d7u_1>this.k5y_1},Kr(ey).h7u=function(t,n){var i,e=this.n5y_1.g2(t);if(null==e){var r=new iy(this);this.n5y_1.f4(t,r),i=r}else i=e;i.g7u(n)},Kr(ey).y5y=function(t,n,i){var e;return n=n!==Xr&&n,i===Xr?(this.h7u(t,n),e=rs()):e=i.h7u.call(this,t,n),e},Kr(ey).w5y=function(t){this.n5y_1.wc(t)},Kr(ry).equals=function(t){return this===t||t instanceof ry&&!!Rs(this.u6q_1,t.u6q_1)},Kr(ry).hashCode=function(){return Lo(this.u6q_1)},Kr(ry).toString=function(){return ss(this.u6q_1)},Kr(uy).q63=function(){return vo("extent",1,co,(function(t){return t.q63()}),null),this.u60_1.s()},Kr(uy).r63=function(){return vo("heightLimits",1,co,(function(t){return t.r63()}),null),this.v60_1.s()},Kr(uy).x62=function(t){return this.s63(t).e5j(t.i53_1)},Kr(uy).y62=function(t){return this.s60_1.c5g(t)},Kr(uy).n63=function(t){var n=t.h64().d4w_1,i=n.j4w_1-this.s60_1.z5i(),e=Math.abs(i),r=n.k4w_1-this.s60_1.a5j(),s=Math.abs(r),o=360-s;return e+Math.min(s,o)},Kr(uy).p63=function(t){var n,i=t.h64().d4w_1,e=ds(i.j4w_1,this.s60_1.r5e_1,this.s60_1.s5e_1),r=i.k4w_1-this.s60_1.a5j(),s=r<-180?this.s60_1.u5e_1:r>180?this.s60_1.t5e_1:ds(i.k4w_1,this.s60_1.t5e_1,this.s60_1.u5e_1),o=this.r63()[0]*t.z52_1,u=t.j5h(),a=Bh().e55(e);return n=Bh().e55(s),u.z4z(a,n,o,this.t60_1)},Kr(uy).s63=function(t){var n=t.j5h(),i=this.r63(),e=this.q63(),r=t.c53_1;r.equals(this.w60_1)||(Yo(),i[0]=34028235e31,Yo(),i[1]=-34028235e31,n.k4x_1.z5w(this.s60_1,i),i[0]>i[1]&&Ls(i,0));var s=t.z52_1;if(s!==this.x60_1||!r.equals(this.w60_1)){var o=i[0]*s,u=i[1]*s;e.x5i(this.s60_1,n,o,u)}return this.w60_1=r,this.x60_1=s,e},Kr(_y).h55=function(){if(this.j7u_1>0){var t=this;t.j7u_1=t.j7u_1-1|0;var n=t.j7u_1,i=this.k7u_1[n];return this.k7u_1[n]=null,null==i||mo(i)?i:Wr()}return null},Kr(_y).t55=function(t){if(null!=t){var n=this.k7u_1.length;if(n===this.j7u_1){var i,e=n>>1;hy();i=Math.max(e,12);var r=ms(Array(n+i|0),null),s=this.k7u_1;Ss(s,r,0,0,n),this.k7u_1=r}var o=this.k7u_1,u=this.j7u_1;this.j7u_1=u+1|0,o[u]=t}},Kr(ly).b63=function(){return this.d61_1===(this.c61_1.l7u()-1|0)},Kr(ly).q6p=function(){return this.c61_1.m7u(this.d61_1+1|0)},Kr(vy).l7u=function(){return this.u62_1.length},Kr(vy).v62=function(){return 0!==this.u62_1.length?this.u62_1[0]:null},Kr(vy).m7u=function(t){return 0<=t&&t<=(this.u62_1.length-1|0)?this.u62_1[t]:null},Kr(wy).g71=function(t){var n;if(!(t>0))throw n=wx().v4w(wx().q4w_1,"LevelSetConfig","numLevelsForMinResolution","invalidResolution"),cs(ss(n));var i,e=Bh().p5h(t),r=this.c71_1.j4w_1/this.f71_1/e,s=Math.log(r)/Math.log(2);i=Math.floor(s);var o=Ms(i);return o<0&&(o=0),o+1|0},Kr(py).sh=function(t,n){return this.r7u_1(t,n)},Kr(py).compare=function(t,n){return this.sh(t,n)},Kr(gy).s7u=function(){return this.d5h_1},Kr(gy).t7u=function(){return this.f5h_1=this.f5h_1.ui(),this.f5h_1},Kr(gy).g2=function(t){var n,i=this.e5h_1.g2(t);return null==i?n=null:(i.q7u_1=this.t7u(),n=i.o7u_1),n},Kr(gy).h5h=function(t,n,i){this.c5h_1.o7(Ks(i)).w(this.a5h_1)>0&&this.u7u(i);var e=new dy(t,n,i);e.q7u_1=this.t7u();var r,s=this,o=this.c5h_1,u=e.p7u_1;r=o.o7(Ks(u)),s.c5h_1=r;var a=this.e5h_1.f4(t,e);if(null!=a){var h,_=this,l=this.c5h_1,f=a.p7u_1;if(h=l.p7(Ks(f)),_.c5h_1=h,e.o7u_1!==a.o7u_1)return this.v7u(a.n7u_1,a.o7u_1,e.o7u_1,!1),a.o7u_1}return null},Kr(gy).d3=function(){this.e5h_1.d3(),this.c5h_1=new ts(0,0)},Kr(gy).u7u=function(t){var n=this.w7u(),i=0,e=n.g()-1|0;if(i<=e)t:do{var r=i;i=i+1|0;var s=n.h(r);if(!(this.c5h_1.w(this.b5h_1)>0||this.a5h_1.p7(this.c5h_1).w(Ks(t))<0))break t;this.e5h_1.wc(s.n7u_1);var o,u=this,a=this.c5h_1,h=s.p7u_1;o=a.p7(Ks(h)),u.c5h_1=o,this.v7u(s.n7u_1,s.o7u_1,null,!0)}while(i<=e)},Kr(gy).w7u=function(){return Lu(this.e5h_1.i2(),this.s7u())},Kr(gy).v7u=function(t,n,i,e){},Kr(jy).s68=function(t){return this.y7u(this.w6v(t),t)},Kr(jy).w6v=function(t){var n=this.v6v(t)-2451545,i=Bh().s5h(280.46+.9856474*n),e=Bh().o5h(Bh().s5h(357.528+.9856003*n)),r=2*e,s=i+1.915*Math.sin(e)+.02*Math.sin(r),o=Bh().o5h(s),u=Bh().o5h(23.439-4e-7*n),a=Bh(),h=Math.sin(u)*Math.sin(o),_=Math.asin(h),l=a.r51(_),f=Bh(),c=Math.cos(u)*Math.tan(o),v=Math.atan(c),w=f.r51(v);return s>=90&&s<270&&(w=Yh(w,Bh().v50_1)),new ky(l,function(t){var n;if(0<=t&&t<=360)n=t;else{var i=Bh(),e=Bh().s5h(t);n=i.e55(e)}return n}(w))},Kr(jy).y7u=function(t,n){var i=this.v6v(n)-2451545,e=Bh().s5h(280.46061837+360.98564736629*i),r=-Bh().s5h(e-t.y6v_1),s=n_(Bh().e55(r));return new x_(t.x6v_1,s)},Kr(jy).v6v=function(t){var n,i=Fu(t,fs().m3i_1),e=i.b3i(),r=i.c3i()+1|0,s=i.d3i(),o=(i.e3j()+i.f3j()/60+i.g3j()/3600)/24;r<=2&&(e=e-1|0,r=r+12|0);var u=e/100,a=(n=Math.floor(u))/4,h=2-n+Math.floor(a),_=365.25*(e+4716|0),l=30.6001*(r+1|0);return Math.floor(_)+Math.floor(l)+s+h-1524.5+o},Kr(zy).r6o=function(t,n,i){var e,r=(n-i)/t;e=Math.floor(r);var s=Ms(e);return n-i==180&&(s=s-1|0),s},Kr(zy).t6o=function(t,n,i){var e,r=(n-i)/t;e=Math.floor(r);var s=Ms(e);return n-i==360&&(s=s-1|0),s},Kr(zy).s6o=function(t,n,i){var e,r=(n-i)/t-1;e=Math.ceil(r);var s=Ms(e);return n-it.b52(r)*n*t.y52_1},Kr(Cy).o63=function(t){var n=this.p61_1.q6p();if(null==n)return[];var i=n,e=this.s60_1.r5e_1,r=this.s60_1.t5e_1,s=this.s60_1.z5i(),o=this.s60_1.a5j(),u=this.s60_1.s5e_1,a=this.s60_1.u5e_1,h=Hr(2,this.q61_1),_=Hr(2,this.r61_1),l=new el(e,s,r,o),f=t.l62(l,i,h,_);h=Hr(2,this.q61_1),_=Hr(2,this.r61_1)+1|0,l=new el(e,s,o,a);var c=t.l62(l,i,h,_);h=Hr(2,this.q61_1)+1|0,_=Hr(2,this.r61_1),l=new el(s,u,r,o);var v=t.l62(l,i,h,_);return h=Hr(2,this.q61_1)+1|0,_=Hr(2,this.r61_1)+1|0,l=new el(s,u,o,a),[f,c,v,t.l62(l,i,h,_)]},Kr(Cy).c63=function(t,n,i){var e,r=n.g2(this.s61_1);if(null==r){var s=this.o63(t);n.h5h(this.s61_1,s,i),e=s}else e=r;return e},Kr(Iy).e7v=function(t,n){var i=this.a7v_1<0?2:1;if(0===t)return this.c7v_1+this.d7v_1;if(n<0&&t>0){var e=t-this.d7v_1.length|0;return e=0){var e=this.u7v_1;this.u7v_1=e-1|0;var r=this.x7v_1;this.x7v_1=r+1|0,new sb(this,r).i7w()}else this.w7v_1.k7(n)}return this},Kr(hb).j4=function(){this.u7v_1>=this.s7v_1.length&&this.y7v("unexpected end of string inside format specification");var t=this.u7v_1;return this.u7v_1=t+1|0,Zs(this.s7v_1,t)},Kr(hb).y7v=function(t){throw cs("bad format: "+t+" at ofset "+(this.u7v_1-1|0)+' of "'+this.s7v_1+'"')},Kr(hb).toString=function(){return this.w7v_1.toString()},Kr(hb).f7w=function(t){return this.l7w(t)},Kr(hb).e7w=function(t){return ss(ws(this.t7v_1[t]))},Kr(hb).g7w=function(t){return this.l7w(t).j7_1},Kr(hb).h7w=function(t){this.w7v_1.l8(t),this.v7v_1=-1},Kr(hb).z7v=function(t){var n=this.l7w(t),i=n;return i instanceof aa?Fu(n,fs().j3j()):i instanceof ua?n:i instanceof oa?sa(n,0,0,0):Fu(function(t){if(!(t instanceof Date))throw cs("Can't convert to LocalDateTime: "+ss(t));return ns().r3i(Xs(t.getTime()))}(n),fs().j3j())},Kr(hb).l7w=function(t){var n=ws(this.t7v_1[t]);return mo(n)?n:Wr()},Kr(hb).j7w=function(){var t=this.x7v_1;this.x7v_1=t-1|0},Kr(_b).q7t=function(t){return(null==oe&&new cb,oe).q7t(t)},Kr(_b).i7g=function(){return Cb().i7g()},Kr(_b).h7t=function(t,n,i,e){(t instanceof Sb?t:Wr()).v7x(n,i,e)},Kr(_b).i7t=function(t,n,i){(t instanceof Sb?t:Wr()).w7x(n,i)},Kr(_b).o7t=function(t,n,i,e){(t instanceof Sb?t:Wr()).x7x(n,i,e)},Kr(_b).j7t=function(t,n){(t instanceof Sb?t:Wr()).y7x(n)},Kr(_b).k7t=function(t){(t instanceof Sb?t:Wr()).z7x()},Kr(_b).m7t=function(t){(t instanceof Sb?t:Wr()).a7y()},Kr(_b).n7t=function(t){(t instanceof Sb?t:Wr()).b7y()},Kr(fb).y7s=function(t){},Kr(fb).z7s=function(t){},Kr(fb).a7t=function(t){},Kr(fb).b7t=function(){},Kr(fb).c7t=function(t){},Kr(fb).d7t=function(t,n,i,e){},Kr(fb).e7t=function(t,n){},Kr(fb).u7s=function(t,n){},Kr(fb).s7s=function(t,n){},Kr(fb).f7t=function(t){},Kr(fb).w7s=function(t,n){},Kr(fb).y7q=function(t,n,i,e,r){},Kr(cb).q7t=function(t){return 0===t?"no error":(lb(),t>=100900?(lb(),n=t<=100904):n=!1,n?(lb(),this.m7w_1[t-100900|0]):(lb(),t>=100151?(lb(),e=t<=100158):e=!1,e?(lb(),i=this.m7w_1[t-100150|0]):i=null,i));var n,i,e},Kr(db).l7y=function(t,n){return new mb(new gb,t,n)},Kr(db).m7y=function(t){},Kr(db).n7y=function(t,n){return this.r7y(t,t.o7y_1,n)},Kr(db).r7y=function(t,n,i){var e=n;do{e=e.u7y_1}while(null!=e.s7y_1&&!t.q7y_1.v7y(t.p7y_1,e.s7y_1,i));var r=new gb(i);r.u7y_1=e,r.t7y_1=e.t7y_1;var s=r;return e.t7y_1.u7y_1=s,e.t7y_1=s,s},Kr(db).w7y=function(t){return t.s7y_1},Kr(db).x7y=function(t){return t.t7y_1},Kr(db).y7y=function(t){return t.u7y_1},Kr(db).z7y=function(t){return t.o7y_1.t7y_1},Kr(db).a7z=function(t){t.t7y_1.u7y_1=t.u7y_1,t.u7y_1.t7y_1=t.t7y_1},Kr(db).b7z=function(t,n){var i=t.o7y_1;do{i=i.t7y_1}while(null!=i.s7y_1&&!t.q7y_1.v7y(t.p7y_1,n,i.s7y_1));return i},Kr(Eb).i7g=function(){return new Sb},Kr(Sb).v7x=function(t,n,i){this.t7w_1[0]=t,this.t7w_1[1]=n,this.t7w_1[2]=i},Kr(Sb).w7x=function(t,n){var i=t;if(lb(),100100===i){var e=n;this.j7x_1=null==e?Cb().p7w_1:e}else if(lb(),100106===i){var r=n;this.p7x_1=null==r?Cb().p7w_1:r}else if(lb(),100104===i){var s=n;this.k7x_1=null==s?Cb().p7w_1:s,this.c7x_1=!(null==n)}else if(lb(),100110===i){var o=n;this.j7x_1=null==o?Cb().p7w_1:o,this.q7x_1=this.j7x_1,rs(),this.c7x_1=!(null==n)}else if(lb(),100101===i){var u=n;this.l7x_1=null==u?Cb().p7w_1:u}else if(lb(),100107===i){var a=n;this.r7x_1=null==a?Cb().p7w_1:a}else if(lb(),100102===i){var h=n;this.m7x_1=null==h?Cb().p7w_1:h}else if(lb(),100108===i){var _=n;this.s7x_1=null==_?Cb().p7w_1:_}else if(lb(),100103===i){var l=n;this.n7x_1=null==l?Cb().p7w_1:l}else if(lb(),100109===i){var f=n;this.t7x_1=null==f?Cb().p7w_1:f}else if(lb(),100105===i){var c=n;this.o7x_1=null==c?Cb().p7w_1:c}else if(lb(),100111===i){var v=n;this.u7x_1=null==v?Cb().p7w_1:v}else lb(),this.x7z(100900)},Kr(Sb).x7x=function(t,n,i){var e=!1,r=new Float64Array(3);if(dk(),jb(this,2),this.f7x_1){if(!zb(this))return lb(),this.x7z(100902),rs();this.r7w_1=null}for(var s=0;s<3;){var o=t[s+n|0],u=o;lb(),u<-1e150&&(lb(),o=-1e150,e=!0);var a=o;lb(),a>1e150&&(lb(),o=1e150,e=!0),r[s]=o,s=s+1|0}if(e&&(lb(),this.x7z(100155)),null==this.s7w_1){var h=this.g7x_1;if(Cb(),h<100)return function(t,n,i){var e=t.h7x_1[t.g7x_1];e.k7y_1=i,e.j7y_1[0]=n[0],e.j7y_1[1]=n[1],e.j7y_1[2]=n[2];var r=t;r.g7x_1=r.g7x_1+1|0}(this,r,i),rs();if(!zb(this))return lb(),this.x7z(100902),rs()}xb(this,r,i)||(lb(),this.x7z(100902))},Kr(Sb).y7x=function(t){dk(),jb(this,0);dk(),this.q7w_1=1,this.g7x_1=0,this.f7x_1=!1,this.s7w_1=null,this.i7x_1=t},Kr(Sb).z7x=function(){dk(),jb(this,1);dk(),this.q7w_1=2,this.r7w_1=null,this.g7x_1>0&&(this.f7x_1=!0)},Kr(Sb).a7y=function(){dk(),jb(this,2);dk(),this.q7w_1=1},Kr(Sb).b7y=function(){try{dk(),jb(this,1);if(dk(),this.q7w_1=0,null==this.s7w_1){if(!this.c7x_1&&ok().p80(this))return this.i7x_1=null,rs();if(!zb(this))throw ha()}if((null==le&&new Mb,le).u80(this),!fk().x80(this))throw ha();var t=ws(this.s7w_1);if(!this.y7w_1){if(!(this.d7x_1?vk().z80(t,1,!0):vk().y80(t)))throw ha();Tb().a81(t),this.j7x_1===Cb().p7w_1&&this.m7x_1===Cb().p7w_1&&this.l7x_1===Cb().p7w_1&&this.k7x_1===Cb().p7w_1&&this.p7x_1===Cb().p7w_1&&this.s7x_1===Cb().p7w_1&&this.r7x_1===Cb().p7w_1&&this.q7x_1===Cb().p7w_1||(this.d7x_1?ok().c81(this,t):ok().b81(this,t))}Tb().w7z(t),this.i7x_1=null}catch(t){if(!(t instanceof Ts))throw t;_a(t),lb(),this.x7z(100902)}},Kr(Sb).d81=function(t){this.p7x_1!==Cb().p7w_1?this.p7x_1.e7t(t,ws(this.i7x_1)):this.j7x_1.y7s(t)},Kr(Sb).e81=function(t){this.r7x_1!==Cb().p7w_1?this.r7x_1.s7s(t,ws(this.i7x_1)):this.l7x_1.a7t(t)},Kr(Sb).f81=function(t){this.q7x_1!==Cb().p7w_1?this.q7x_1.u7s(t,ws(this.i7x_1)):this.k7x_1.z7s(t)},Kr(Sb).g81=function(){this.s7x_1!==Cb().p7w_1?this.s7x_1.f7t(ws(this.i7x_1)):this.m7x_1.b7t()},Kr(Sb).h81=function(t,n,i,e){this.u7x_1!==Cb().p7w_1?this.u7x_1.y7q(t,n,i,e,ws(this.i7x_1)):this.o7x_1.d7t(t,n,i,e)},Kr(Sb).x7z=function(t){this.t7x_1!==Cb().p7w_1?this.t7x_1.w7s(t,ws(this.i7x_1)):this.n7x_1.c7t(t)},Kr(Ob).i81=function(t,n,i){var e=n.g80_1-t.g80_1,r=i.g80_1-n.g80_1;return e+r>0?e0?(n.h80_1-i.h80_1)*e+(n.h80_1-t.h80_1)*r:0},Kr(Ob).k81=function(t,n,i){var e=n.h80_1-t.h80_1,r=i.h80_1-n.h80_1;return e+r>0?e0?(n.g80_1-i.g80_1)*e+(n.g80_1-t.g80_1)*r:0},Kr(Ob).m81=function(t,n,i,e){var r=t<0?0:t,s=i<0?0:i;return r<=s?0===s?(n+e)/2:n+r/(r+s)*(e-n):e+s/(r+s)*(n-e)},Kr(Ob).n81=function(t,n,i,e,r){var s=t,o=n,u=i,a=e;if(!this.o81(s,o)){var h=s;s=o,o=h}if(!this.o81(u,a)){var _=u;u=a,a=_}if(!this.o81(s,u)){var l=s;s=u,u=l,l=o,o=a,a=l}if(this.o81(u,o))if(this.o81(o,a)){var f=this.i81(s,u,o),c=this.i81(u,o,a);f+c<0&&(f=-f,c=-c),r.g80_1=this.m81(f,u.g80_1,c,o.g80_1)}else{var v=this.j81(s,u,o),w=-this.j81(s,a,o);v+w<0&&(v=-v,w=-w),r.g80_1=this.m81(v,u.g80_1,w,a.g80_1)}else r.g80_1=(u.g80_1+o.g80_1)/2;if(!this.p81(s,o)){var d=s;s=o,o=d}if(!this.p81(u,a)){var p=u;u=a,a=p}if(!this.p81(s,u)){var m=u;u=s,s=m,m=a,a=o,o=m}if(this.p81(u,o))if(this.p81(o,a)){var g=this.k81(s,u,o),$=this.k81(u,o,a);g+$<0&&(g=-g,$=-$),r.h80_1=this.m81(g,u.h80_1,$,o.h80_1)}else{var y=this.l81(s,u,o),b=-this.l81(s,a,o);y+b<0&&(y=-y,b=-b),r.h80_1=this.m81(y,u.h80_1,b,a.h80_1)}else r.h80_1=(u.h80_1+o.h80_1)/2},Kr(Ob).q81=function(t,n){return t.g80_1===n.g80_1&&t.h80_1===n.h80_1},Kr(Ob).o81=function(t,n){return t.g80_1Math.abs(r)&&(n=1);var s=t[2],o=Math.abs(s),u=t[n];return o>Math.abs(u)&&(n=2),n},Kr(Mb).g82=function(t,n){var i=t.s7w_1,e=ws(null==i?null:i.s7z_1),r=new Float64Array(3),s=new Float64Array(3),o=ms(Array(3),null),u=ms(Array(3),null),a=new Float64Array(3),h=new Float64Array(3),_=new Float64Array(3);lb(),r[2]=-2e150,r[1]=r[2],r[0]=r[1],lb(),s[2]=2e150,s[1]=s[2],s[0]=s[1];for(var l=ws(e.b80_1);l!==e;){for(var f=0;f<3;){var c=l.f80_1[f];cr[f]&&(r[f]=c,u[f]=l),f=f+1|0}l=ws(l.b80_1)}var v=0;if(r[1]-s[1]>r[0]-s[0]&&(v=1),r[2]-s[2]>r[v]-s[v]&&(v=2),s[v]>=r[v])return n[0]=0,n[1]=0,n[2]=1,rs();var w=0,d=ws(o[v]),p=ws(u[v]);for(a[0]=d.f80_1[0]-p.f80_1[0],a[1]=d.f80_1[1]-p.f80_1[1],a[2]=d.f80_1[2]-p.f80_1[2],l=ws(e.b80_1);l!==e;){h[0]=l.f80_1[0]-p.f80_1[0],h[1]=l.f80_1[1]-p.f80_1[1],h[2]=l.f80_1[2]-p.f80_1[2],_[0]=a[1]*h[2]-a[2]*h[1],_[1]=a[2]*h[0]-a[0]*h[2],_[2]=a[0]*h[1]-a[1]*h[0];var m=_[0]*_[0]+_[1]*_[1]+_[2]*_[2];m>w&&(w=m,n[0]=_[0],n[1]=_[1],n[2]=_[2]),l=ws(l.b80_1)}w<=0&&(n[2]=0,n[1]=n[2],n[0]=n[1],n[this.f82(a)]=1)},Kr(Mb).h82=function(t){for(var n=t.s7w_1,i=ws(null==n?null:n.t7z_1),e=t.s7w_1,r=ws(null==e?null:e.s7z_1),s=0,o=ws(i.c7z_1);o!==i;){var u=ws(o.e7z_1);if(u.r7z_1<=0)o=ws(o.c7z_1);else{do{s+=(ws(u.o7z_1).g80_1-ws(ws(u.l7z_1).o7z_1).g80_1)*(ws(u.o7z_1).h80_1+ws(ws(u.l7z_1).o7z_1).h80_1),u=ws(u.n7z_1)}while(u!==o.e7z_1);o=ws(o.c7z_1)}}if(s<0){for(var a=ws(r.b80_1);a!==r;)a.h80_1=-a.h80_1,a=ws(a.b80_1);t.v7w_1[0]=-t.v7w_1[0],t.v7w_1[1]=-t.v7w_1[1],t.v7w_1[2]=-t.v7w_1[2]}},Kr(Mb).u80=function(t){var n=t.s7w_1,i=ws(null==n?null:n.s7z_1),e=new Float64Array(3),r=!1;e[0]=t.t7w_1[0],e[1]=t.t7w_1[1],e[2]=t.t7w_1[2],0===e[0]&&0===e[1]&&0===e[2]&&(this.g82(t,e),r=!0);var s=t.u7w_1,o=t.v7w_1,u=this.f82(e);s[u]=0,s[(u+1|0)%3|0]=this.r80_1,s[(u+2|0)%3|0]=this.s80_1,o[u]=0,o[(u+1|0)%3|0]=e[u]>0?-this.s80_1:this.s80_1,o[(u+2|0)%3|0]=e[u]>0?this.r80_1:-this.r80_1;for(var a=ws(i.b80_1);a!==i;)a.g80_1=Db(0,a.f80_1,s),a.h80_1=Db(0,a.f80_1,o),a=ws(a.b80_1);r&&this.h82(t)},Kr(Pb).m82=function(t,n){var i=Ib(),e=t instanceof qb?t:Wr();return i.o81(e,n instanceof qb?n:Wr())},Kr(Pb).n82=function(){return new Gb},Kr(Ub).o82=function(){var t,n;t=[],this.v82_1=t,n=[],this.u82_1=n},Kr(Ub).a83=function(t){var n=t,i=this.u82_1,e=this.v82_1,r=i[n].i82_1;t:for(;;){var s=n<<1;sthis.w82_1||Lb().m82(ws(e[r].j82_1),ws(e[o].j82_1))){i[n].i82_1=r,e[r].k82_1=n;break t}i[n].i82_1=o,e[o].k82_1=n,n=s}},Kr(Ub).b83=function(t){var n=t,i=this.u82_1,e=this.v82_1,r=i[n].i82_1;t:for(;;){var s=n>>1,o=i[s].i82_1;if(0===s||Lb().m82(ws(e[o].j82_1),ws(e[r].j82_1))){i[n].i82_1=r,e[r].k82_1=n;break t}i[n].i82_1=o,e[o].k82_1=n,n=s}},Kr(Ub).p82=function(){for(var t=this.w82_1;t>=1;)this.a83(t),t=t-1|0;return this.z82_1=!0,!0},Kr(Ub).q82=function(t){var n,i=this;i.w82_1=i.w82_1+1|0;var e=i.w82_1;if(Hr(e,2)>this.x82_1){this.x82_1=this.x82_1<<1;for(var r=0,s=this.x82_1+1|0,o=ms(Array(s),null);r0){t[1].i82_1=t[this.w82_1].i82_1,n[t[1].i82_1].k82_1=1,n[i].j82_1=null,n[i].k82_1=this.y82_1,this.y82_1=i;var r=this;r.w82_1=r.w82_1-1|0,r.w82_1>0&&this.a83(1)}return e},Kr(Ub).s82=function(t){var n=this.u82_1,i=this.v82_1,e=i[t].k82_1;n[e].i82_1=n[this.w82_1].i82_1,i[n[e].i82_1].k82_1=e;var r=this;r.w82_1=r.w82_1-1|0,e<=r.w82_1&&(e<=1||Lb().m82(ws(i[n[e>>1].i82_1].j82_1),ws(i[n[e].i82_1].j82_1))?this.a83(e):this.b83(e)),i[t].j82_1=null,i[t].k82_1=this.y82_1,this.y82_1=t},Kr(Ub).t82=function(){return this.v82_1[this.u82_1[1].i82_1].j82_1},Kr(Ub).c83=function(){return 0===this.w82_1},Kr(Gb).o82=function(){this.f83_1.o82(),this.h83_1=null,this.g83_1=null},Kr(Gb).p82=function(){var t=ms(Array(50),null),n=0,i=t.length-1|0;if(n<=i)do{var e=n;n=n+1|0,t[e]=new Bb}while(n<=i);var r=0,s=2016473283;this.h83_1=new Int32Array(this.i83_1+1|0);for(var o=0,u=this.i83_1-1|0,a=0,h=o;h<=u;)ws(this.h83_1)[h]=a,a=a+1|0,h=h+1|0;var _=t[r];null==_||(_.d83_1=o);var l,f,c=t[r];for(null==c||(c.e83_1=u),r=r+1|0;(r=r-1|0)>=0;){for(o=ws(t[r]).d83_1,u=ws(t[r]).e83_1;u>(o+10|0);){h=o+((s=Vu(Hr(s,1539415821)+1|0))%(1+(u-o|0)|0)|0)|0,a=ws(this.h83_1)[h],ws(this.h83_1)[h]=ws(this.h83_1)[o],ws(this.h83_1)[o]=a,h=o-1|0;var v=u+1|0;do{do{h=h+1|0}while(Wb(),l=ws(ws(this.g83_1)[ws(this.h83_1)[h]]),f=ws(ws(this.g83_1)[a]),!Lb().m82(l,f));do{v=v-1|0}while(Hb(Wb(),ws(ws(this.g83_1)[ws(this.h83_1)[v]]),ws(ws(this.g83_1)[a])));Vb(Wb(),ws(this.h83_1),h,v)}while(ho&&Hb(Wb(),ws(ws(this.g83_1)[ws(this.h83_1)[g-1|0]]),ws(ws(this.g83_1)[a]));)ws(this.h83_1)[g]=ws(this.h83_1)[g-1|0],g=g-1|0;ws(this.h83_1)[g]=a,h=h+1|0}}return this.j83_1=this.i83_1,this.k83_1=!0,this.f83_1.p82(),!0},Kr(Gb).q82=function(t){if(this.k83_1)return this.f83_1.q82(t);var n=this.i83_1,i=this;if(i.i83_1=i.i83_1+1|0,i.i83_1>=this.j83_1){this.j83_1=this.j83_1<<1;var e=this.j83_1,r=ms(Array(e),null),s=this.g83_1;if(null==s);else{var o=s.length;Ss(s,r,0,0,o)}this.g83_1=r}return ws(this.g83_1)[n]=t,0|-(n+1|0)},Kr(Gb).r82=function(){if(0===this.i83_1)return this.f83_1.r82();var t=ws(ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]]);if(!this.f83_1.c83()){var n=ws(this.f83_1.t82());if(Lb().m82(n,t))return this.f83_1.r82()}do{this.i83_1=this.i83_1-1|0}while(this.i83_1>0&&null==ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]]);return t},Kr(Gb).t82=function(){if(0===this.i83_1)return this.f83_1.t82();var t=ws(ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]]);if(!this.f83_1.c83()){var n=ws(this.f83_1.t82());if(Lb().m82(n,t))return n}return t},Kr(Gb).s82=function(t){var n=t;if(n>=0)return this.f83_1.s82(n),rs();for(n=0|-(n+1|0),ws(this.g83_1)[n]=null;this.i83_1>0&&null==ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]];){this.i83_1=this.i83_1-1|0}},Kr(ik).o83=function(t,n,i){t.e7x_1=Zb(ok(),ws(n.p7z_1),t.e7x_1)},Kr(ek).o83=function(t,n,i){var e=n,r=i;t.d81(br);var s=e.o7z_1;t.e81(ws(null==s?null:s.e80_1));var o=e.l7z_1,u=null==o?null:o.o7z_1;for(t.e81(ws(null==u?null:u.e80_1));!Xb(ok(),ws(e.p7z_1));){var a=e.p7z_1;null==a||(a.h7z_1=!0),r=r.vi();var h=(e=ws(e.m7z_1)).l7z_1,_=null==h?null:h.o7z_1;t.e81(ws(null==_?null:_.e80_1))}t.g81()},Kr(rk).o83=function(t,n,i){var e=n,r=i;t.d81(Ck());var s=e.o7z_1;t.e81(ws(null==s?null:s.e80_1));var o=e.l7z_1,u=null==o?null:o.o7z_1;t.e81(ws(null==u?null:u.e80_1));t:for(;!Xb(ok(),ws(e.p7z_1));){var a=e.p7z_1;null==a||(a.h7z_1=!0),r=r.vi();var h=e.n7z_1,_=(e=ws(null==h?null:h.l7z_1)).o7z_1;if(t.e81(ws(null==_?null:_.e80_1)),Xb(ok(),ws(e.p7z_1)))break t;var l=e.p7z_1;null==l||(l.h7z_1=!0),r=r.vi();var f=(e=ws(e.m7z_1)).l7z_1,c=null==f?null:f.o7z_1;t.e81(ws(null==c?null:c.e80_1))}t.g81()},Kr(sk).b81=function(t,n){t.e7x_1=null;for(var i=ws(n.t7z_1.c7z_1);i!==n.t7z_1;)i.h7z_1=!1,i=ws(i.c7z_1);for(i=ws(n.t7z_1.c7z_1);i!==n.t7z_1;)i.i7z_1&&!i.h7z_1&&this.p83(t,i),i=ws(i.c7z_1);null!=t.e7x_1&&(this.q83(t,t.e7x_1),t.e7x_1=null)},Kr(sk).p83=function(t,n){var i=ws(n.e7z_1),e=Kb();if(e.l83_1=new ts(1,0),e.m83_1=i,e.n83_1=this.n80_1,!t.c7x_1){var r=this.r83(i);r.l83_1.w(e.l83_1)>0&&(e=r),(r=this.r83(ws(i.n7z_1))).l83_1.w(e.l83_1)>0&&(e=r);var s=i.m7z_1;(r=this.r83(ws(null==s?null:s.l7z_1))).l83_1.w(e.l83_1)>0&&(e=r),(r=this.s83(i)).l83_1.w(e.l83_1)>0&&(e=r),(r=this.s83(ws(i.n7z_1))).l83_1.w(e.l83_1)>0&&(e=r);var o=i.m7z_1;(r=this.s83(ws(null==o?null:o.l7z_1))).l83_1.w(e.l83_1)>0&&(e=r)}var u=e.n83_1;null==u||u.o83(t,ws(e.m83_1),e.l83_1)},Kr(sk).r83=function(t){for(var n=Jb(new ts(0,0),null,this.l80_1),i=null,e=t;!Xb(0,ws(e.p7z_1));){i=Zb(0,ws(e.p7z_1),i);var r=n;r.l83_1=r.l83_1.ui(),e=ws(e.m7z_1)}e=t;t:for(;;){var s=e.l7z_1;if(Xb(0,ws(null==s?null:s.p7z_1)))break t;var o=e.l7z_1;i=Zb(0,ws(null==o?null:o.p7z_1),i);var u=n;u.l83_1=u.l83_1.ui();var a=e.l7z_1;e=ws(null==a?null:a.n7z_1)}return n.m83_1=e,Qb(0,i),n},Kr(sk).s83=function(t){var n=Jb(new ts(0,0),null,this.m80_1),i=new ts(0,0),e=new ts(0,0),r=null,s=t;t:for(;!Xb(0,ws(s.p7z_1));){r=Zb(0,ws(s.p7z_1),r),e=e.ui();var o=s.n7z_1;if(s=ws(null==o?null:o.l7z_1),Xb(0,ws(s.p7z_1)))break t;r=Zb(0,ws(s.p7z_1),r),e=e.ui(),s=ws(s.m7z_1)}var u=s;s=t;t:for(;;){var a=s.l7z_1;if(Xb(0,ws(null==a?null:a.p7z_1)))break t;var h=s.l7z_1;r=Zb(0,ws(null==h?null:h.p7z_1),r),i=i.ui();var _=s.l7z_1,l=(s=ws(null==_?null:_.n7z_1)).l7z_1;if(Xb(0,ws(null==l?null:l.p7z_1)))break t;var f=s.l7z_1;r=Zb(0,ws(null==f?null:f.p7z_1),r),i=i.ui();var c=s.l7z_1,v=null==c?null:c.m7z_1;s=ws(null==v?null:v.l7z_1)}var w=s;if(n.l83_1=e.o7(i),tk(0,e))n.m83_1=u.l7z_1;else if(tk(0,i))n.m83_1=w;else{var d=n;d.l83_1=d.l83_1.vi(),n.m83_1=w.m7z_1}return Qb(0,r),n},Kr(sk).q83=function(t,n){var i=n,e=-1;for(t.d81(Ak());null!=i;){var r=ws(i.e7z_1);do{if(t.c7x_1){var s=ws(ws(r.l7z_1).p7z_1).i7z_1?0:1;e!==s&&(e=s,t.f81(!(0===e)))}var o=r.o7z_1;t.e81(ws(null==o?null:o.e80_1)),r=ws(r.n7z_1)}while(r!==i.e7z_1);i=i.g7z_1}t.g81()},Kr(sk).c81=function(t,n){for(var i=ws(n.t7z_1.c7z_1);i!==n.t7z_1;){if(i.i7z_1){t.d81(qk());var e=ws(i.e7z_1);do{var r=e.o7z_1;t.e81(ws(null==r?null:r.e80_1)),e=ws(e.n7z_1)}while(e!==i.e7z_1);t.g81()}i=ws(i.c7z_1)}},Kr(sk).t83=function(t,n,i){var e=t.h7x_1,r=t.g7x_1,s=new Float64Array(3),o=0;i||(n[2]=0,n[1]=n[2],n[0]=n[1]);for(var u=1,a=e[u].j7y_1[0]-e[0].j7y_1[0],h=e[u].j7y_1[1]-e[0].j7y_1[1],_=e[u].j7y_1[2]-e[0].j7y_1[2];(u=u+1|0)0){if(o<0)return 2;w=1}else{if(o>0)return 2;w=-1}o=w}}else if(v>=0){var d=n;d[0]=d[0]+s[0];var p=n;p[1]=p[1]+s[1];var m=n;m[2]=m[2]+s[2]}else{var g=n;g[0]=g[0]-s[0];var $=n;$[1]=$[1]-s[1];var y=n;y[2]=y[2]-s[2]}}return o},Kr(sk).p80=function(t){t.h7x_1,t.g7x_1;var n=new Float64Array(3);if(t.g7x_1<3)return!0;n[0]=t.t7w_1[0],n[1]=t.t7w_1[1],n[2]=t.t7w_1[2],0===n[0]&&0===n[1]&&0===n[2]&&this.t83(t,n,!1);var i=this.t83(t,n,!0);return 2!==i&&(0===i||!1)},Kr(_k).v7y=function(t,n,i){var e=fk(),r=n instanceof vb?n:Wr();return e.v83(this.u83_1,r,i instanceof vb?i:Wr())},Kr(lk).v83=function(t,n,i){var e=ws(t.b7x_1),r=n.c7y_1,s=i.c7y_1,o=r.l7z_1;if((null==o?null:o.o7z_1)===e){var u,a=s.l7z_1;if((null==a?null:a.o7z_1)===e){var h;if(Ib().o81(ws(r.o7z_1),ws(s.o7z_1))){var _=Ib(),l=s.l7z_1;h=_.j81(ws(null==l?null:l.o7z_1),ws(r.o7z_1),ws(s.o7z_1))<=0}else{var f=Ib(),c=r.l7z_1;h=f.j81(ws(null==c?null:c.o7z_1),ws(s.o7z_1),ws(r.o7z_1))>=0}u=h}else{var v=Ib(),w=s.l7z_1;u=v.j81(ws(null==w?null:w.o7z_1),e,ws(s.o7z_1))<=0}return u}var d=s.l7z_1;if((null==d?null:d.o7z_1)===e){var p=Ib(),m=r.l7z_1;return p.j81(ws(null==m?null:m.o7z_1),e,ws(r.o7z_1))>=0}var g=Ib(),$=r.l7z_1,y=g.i81(ws(null==$?null:$.o7z_1),e,ws(r.o7z_1)),b=Ib(),k=s.l7z_1;return y>=b.i81(ws(null==k?null:k.o7z_1),e,ws(s.o7z_1))},Kr(lk).w83=function(t){t.c7y_1.q7z_1=null,pb().a7z(ws(t.d7y_1))},Kr(lk).x83=function(t,n){return!!Tb().b82(t.c7y_1)&&(t.i7y_1=!1,t.c7y_1=n,n.q7z_1=t,!0)},Kr(lk).y83=function(t){var n=t,i=n.c7y_1.o7z_1;do{n=ws(hk(0,n))}while(n.c7y_1.o7z_1===i);if(n.i7y_1){var e=Tb().d82(ws(ak(0,n).c7y_1.l7z_1),ws(n.c7y_1.n7z_1));if(!this.x83(n,e))return null;n=ws(hk(0,n))}return n},Kr(lk).z83=function(t){var n=t,i=n.c7y_1.l7z_1,e=null==i?null:i.o7z_1;do{var r=(n=ws(hk(0,n))).c7y_1.l7z_1}while((null==r?null:r.o7z_1)===e);return n},Kr(lk).a84=function(t,n,i){var e=new vb(i);return e.d7y_1=pb().r7y(ws(t.z7w_1),ws(n.d7y_1),e),e.i7y_1=!1,e.g7y_1=!1,e.h7y_1=!1,i.q7z_1=e,e},Kr(lk).b84=function(t,n){var i=t.x7w_1;if(lb(),100130===i)return!(0==(1&n));if(lb(),100131===i)return!(0===n);if(lb(),100132===i)return n>0;if(lb(),100133===i)return n<0;if(lb(),100134===i)return n>=2||n<=-2;throw ha()},Kr(lk).c84=function(t,n){n.e7y_1=ws(hk(0,n)).e7y_1+n.c7y_1.r7z_1|0,n.f7y_1=this.b84(t,n.e7y_1)},Kr(lk).d84=function(t){var n=t.c7y_1,i=ws(n.p7z_1);i.i7z_1=t.f7y_1,i.e7z_1=n,this.w83(t)},Kr(lk).e84=function(t,n){var i=t,e=t.c7y_1;t:for(;i!==n;){i.i7y_1=!1;var r=ak(0,i),s=r.c7y_1;if(s.o7z_1!==e.o7z_1){if(!r.i7y_1){this.d84(i);break t}var o=Tb(),u=e.m7z_1;if(s=o.d82(ws(null==u?null:u.l7z_1),ws(s.l7z_1)),!this.x83(r,s))throw ha()}if(e.m7z_1!==s){var a=Tb(),h=s.l7z_1;if(!a.a80(ws(null==h?null:h.n7z_1),s))throw ha();if(!Tb().a80(e,s))throw ha()}this.d84(i),e=r.c7y_1,i=r}return e},Kr(lk).f84=function(t,n,i,e,r,s){var o=r,u=!0,a=i;do{this.a84(t,n,ws(a.l7z_1)),a=ws(a.m7z_1)}while(a!==e);if(null==o){var h=ak(0,n).c7y_1.l7z_1;o=null==h?null:h.m7z_1}for(var _,l=n,f=ws(o);_=ak(0,l),(a=ws(_.c7y_1.l7z_1)).o7z_1===f.o7z_1;){if(a.m7z_1!==f){var c=Tb(),v=a.l7z_1;if(!c.a80(ws(null==v?null:v.n7z_1),a))throw ha();var w=Tb(),d=f.l7z_1;if(!w.a80(ws(null==d?null:d.n7z_1),a))throw ha()}if(_.e7y_1=l.e7y_1-a.r7z_1|0,_.f7y_1=this.b84(t,_.e7y_1),l.h7y_1=!0,!u&&this.g84(t,l)&&(uk(0,a,f),this.w83(l),!Tb().b82(f)))throw ha();u=!1,l=_,f=a}l.h7y_1=!0,s&&this.h84(t,l)},Kr(lk).i84=function(t,n,i,e,r){var s=new Float64Array(3);s[0]=n.f80_1[0],s[1]=n.f80_1[1],s[2]=n.f80_1[2];var o=ms(Array(1),null);t.h81(s,i,e,o),n.e80_1=o[0],null==n.e80_1&&(r?t.y7w_1||(lb(),t.x7z(100156),t.y7w_1=!0):n.e80_1=i[0])},Kr(lk).j84=function(t,n,i){var e=ms(Array(4),null),r=new Float32Array([.5,.5,0,0]),s=n.o7z_1;e[0]=null==s?null:s.e80_1;var o=i.o7z_1;if(e[1]=null==o?null:o.e80_1,this.i84(t,ws(n.o7z_1),e,r,!1),!Tb().a80(n,i))throw ha()},Kr(lk).k84=function(t,n,i,e){var r=Ib().t81(n,t),s=Ib().t81(i,t);e[0]=.5*s/(r+s),e[1]=.5*r/(r+s);var o=t.f80_1;o[0]=o[0]+(e[0]*n.f80_1[0]+e[1]*i.f80_1[0]);var u=t.f80_1;u[1]=u[1]+(e[0]*n.f80_1[1]+e[1]*i.f80_1[1]);var a=t.f80_1;a[2]=a[2]+(e[0]*n.f80_1[2]+e[1]*i.f80_1[2])},Kr(lk).l84=function(t,n,i,e,r,s){var o=ms(Array(4),null),u=new Float32Array(4),a=new Float32Array(2),h=new Float32Array(2);o[0]=i.e80_1,o[1]=e.e80_1,o[2]=r.e80_1,o[3]=s.e80_1,n.f80_1[2]=0,n.f80_1[1]=n.f80_1[2],n.f80_1[0]=n.f80_1[1],this.k84(n,i,e,a),this.k84(n,r,s,h);var _=a.length;Ss(a,u,0,0,_);var l=h.length;Ss(h,u,2,0,l),this.i84(t,n,o,u,!0)},Kr(lk).g84=function(t,n){var i=ak(0,n),e=n.c7y_1,r=i.c7y_1;if(Ib().o81(ws(e.o7z_1),ws(r.o7z_1))){var s=Ib(),o=r.l7z_1;if(s.j81(ws(null==o?null:o.o7z_1),ws(e.o7z_1),ws(r.o7z_1))>0)return!1;if(Ib().q81(ws(e.o7z_1),ws(r.o7z_1))){if(e.o7z_1!==r.o7z_1){var u=t.a7x_1;if(null==u);else{var a=e.o7z_1;u.s82(ws(null==a?null:a.i80_1))}var h=r.l7z_1;this.j84(t,ws(null==h?null:h.n7z_1),e)}}else{Tb().y7z(ws(r.l7z_1));var _=Tb(),l=r.l7z_1;if(!_.a80(e,ws(null==l?null:l.n7z_1)))throw ha();i.h7y_1=!0,n.h7y_1=i.h7y_1}}else{var f=Ib(),c=e.l7z_1;if(f.j81(ws(null==c?null:c.o7z_1),ws(r.o7z_1),ws(e.o7z_1))<0)return!1;n.h7y_1=!0;var v=hk(0,n);null==v||(v.h7y_1=n.h7y_1),Tb().y7z(ws(e.l7z_1));var w=Tb(),d=r.l7z_1;if(!w.a80(ws(null==d?null:d.n7z_1),e))throw ha()}return!0},Kr(lk).m84=function(t){var n=ak(0,t),i=t.c7y_1,e=n.c7y_1,r=Ib(),s=i.l7z_1,o=ws(null==s?null:s.o7z_1),u=e.l7z_1;if(r.o81(o,ws(null==u?null:u.o7z_1))){var a=Ib(),h=i.l7z_1,_=ws(null==h?null:h.o7z_1),l=e.l7z_1;if(a.j81(_,ws(null==l?null:l.o7z_1),ws(i.o7z_1))<0)return!1;t.h7y_1=!0;var f=hk(0,t);null==f||(f.h7y_1=t.h7y_1);var c=Tb().y7z(i);if(!Tb().a80(ws(e.l7z_1),c))throw ha();var v=c.p7z_1;null==v||(v.i7z_1=t.f7y_1)}else{var w=Ib(),d=e.l7z_1,p=ws(null==d?null:d.o7z_1),m=i.l7z_1;if(w.j81(p,ws(null==m?null:m.o7z_1),ws(e.o7z_1))>0)return!1;n.h7y_1=!0,t.h7y_1=n.h7y_1;var g=Tb().y7z(e);if(!Tb().a80(ws(i.n7z_1),ws(e.l7z_1)))throw ha();var $=g.l7z_1,y=null==$?null:$.p7z_1;null==y||(y.i7z_1=t.f7y_1)}return!0},Kr(lk).n84=function(t,n){var i=n,e=ak(0,i),r=i.c7y_1,s=e.c7y_1,o=ws(r.o7z_1),u=ws(s.o7z_1),a=r.l7z_1,h=ws(null==a?null:a.o7z_1),_=s.l7z_1,l=ws(null==_?null:_.o7z_1),f=new qb;if(o===u)return!1;if(bo(o.h80_1,h.h80_1)>yo(u.h80_1,l.h80_1))return!1;if(Ib().o81(o,u)){if(Ib().j81(l,o,u)>0)return!1}else if(Ib().j81(h,u,o)<0)return!1;Ib().n81(h,o,l,u,f),Ib().o81(f,ws(t.b7x_1))&&(f.g80_1=ws(t.b7x_1).g80_1,f.h80_1=ws(t.b7x_1).h80_1);var c=Ib().o81(o,u)?o:u;if(Ib().o81(c,f)&&(f.g80_1=c.g80_1,f.h80_1=c.h80_1),Ib().q81(f,o)||Ib().q81(f,u))return this.g84(t,i),!1;if(!Ib().q81(h,ws(t.b7x_1))&&Ib().j81(h,ws(t.b7x_1),f)>=0||!Ib().q81(l,ws(t.b7x_1))&&Ib().j81(l,ws(t.b7x_1),f)<=0){if(l===t.b7x_1){if(Tb().y7z(ws(r.l7z_1)),!Tb().a80(ws(s.l7z_1),r))throw ha();r=ak(0,i=ws(this.y83(i))).c7y_1,this.e84(ak(0,i),e);var v=i,w=r.l7z_1;return this.f84(t,v,ws(null==w?null:w.n7z_1),r,r,!0),!0}if(h===t.b7x_1){Tb().y7z(ws(s.l7z_1));var d=Tb(),p=ws(r.n7z_1),m=s.l7z_1;if(!d.a80(p,ws(null==m?null:m.n7z_1)))throw ha();e=i;var g=ak(0,i=this.z83(i)).c7y_1.l7z_1,$=null==g?null:g.m7z_1,y=e,b=s.l7z_1;y.c7y_1=ws(null==b?null:b.n7z_1),s=this.e84(e,null);var k=i,j=ws(s.m7z_1),x=r.l7z_1;return this.f84(t,k,j,null==x?null:x.m7z_1,$,!0),!0}if(Ib().j81(h,ws(t.b7x_1),f)>=0){i.h7y_1=!0;var z=hk(0,i);null==z||(z.h7y_1=i.h7y_1),Tb().y7z(ws(r.l7z_1));var E=r.o7z_1;null==E||(E.g80_1=ws(t.b7x_1).g80_1);var C=r.o7z_1;null==C||(C.h80_1=ws(t.b7x_1).h80_1)}if(Ib().j81(l,ws(t.b7x_1),f)<=0){e.h7y_1=!0,i.h7y_1=e.h7y_1,Tb().y7z(ws(s.l7z_1));var S=s.o7z_1;null==S||(S.g80_1=ws(t.b7x_1).g80_1);var q=s.o7z_1;null==q||(q.h80_1=ws(t.b7x_1).h80_1)}return!1}Tb().y7z(ws(r.l7z_1)),Tb().y7z(ws(s.l7z_1));var O=Tb(),I=s.l7z_1;if(!O.a80(ws(null==I?null:I.n7z_1),r))throw ha();var A=r.o7z_1;null==A||(A.g80_1=f.g80_1);var T=r.o7z_1;null==T||(T.h80_1=f.h80_1);var D=r.o7z_1;null==D||(D.i80_1=ws(t.a7x_1).q82(r.o7z_1)),this.l84(t,ws(r.o7z_1),o,h,u,l),e.h7y_1=!0,i.h7y_1=e.h7y_1;var M=hk(0,i);return null==M||(M.h7y_1=i.h7y_1),!1},Kr(lk).h84=function(t,n){for(var i=n,e=ak(0,i);;){for(;e.h7y_1;)i=e,e=ak(0,e);if(!i.h7y_1){e=i;var r=hk(0,i);if(null==r)return rs();if(!(i=r).h7y_1)return rs()}i.h7y_1=!1;var s,o=i.c7y_1,u=e.c7y_1,a=o.l7z_1,h=null==a?null:a.o7z_1,_=u.l7z_1;if(h!==(null==_?null:_.o7z_1)&&this.m84(i))if(e.i7y_1){if(this.w83(e),!Tb().b82(u))throw ha();u=(e=ak(0,i)).c7y_1}else if(i.i7y_1){if(this.w83(i),!Tb().b82(o))throw ha();o=(i=ws(hk(0,e))).c7y_1}if(o.o7z_1!==u.o7z_1){var l,f=o.l7z_1,c=null==f?null:f.o7z_1,v=u.l7z_1;if(c===(null==v?null:v.o7z_1)||i.i7y_1||e.i7y_1)l=!1;else{var w,d=o.l7z_1;if((null==d?null:d.o7z_1)===t.b7x_1)w=!0;else{var p=u.l7z_1;w=(null==p?null:p.o7z_1)===t.b7x_1}l=w}if(l){if(this.n84(t,i))return rs()}else this.g84(t,i)}if(o.o7z_1===u.o7z_1){var m=o.l7z_1,g=null==m?null:m.o7z_1,$=u.l7z_1;s=g===(null==$?null:$.o7z_1)}else s=!1;if(s){if(uk(0,u,o),this.w83(i),!Tb().b82(o))throw ha();i=ws(hk(0,e))}}},Kr(lk).o84=function(t,n,i){var e,r=n,s=i,o=ws(s.m7z_1),u=ak(0,r),a=r.c7y_1,h=u.c7y_1,_=!1,l=a.l7z_1,f=null==l?null:l.o7z_1,c=h.l7z_1;if(f!==(null==c?null:c.o7z_1)&&this.n84(t,r),Ib().q81(ws(a.o7z_1),ws(t.b7x_1))){var v=Tb(),w=o.l7z_1;if(!v.a80(ws(null==w?null:w.n7z_1),a))throw ha();o=ak(0,r=ws(this.y83(r))).c7y_1,this.e84(ak(0,r),u),_=!0}if(Ib().q81(ws(h.o7z_1),ws(t.b7x_1))){var d=Tb(),p=s,m=h.l7z_1;if(!d.a80(p,ws(null==m?null:m.n7z_1)))throw ha();s=this.e84(u,null),_=!0}if(_)return this.f84(t,r,ws(s.m7z_1),o,o,!0),rs();if(Ib().o81(ws(h.o7z_1),ws(a.o7z_1))){var g=h.l7z_1;e=ws(null==g?null:g.n7z_1)}else e=a;var $=e,y=Tb(),b=s.m7z_1;$=y.d82(ws(null==b?null:b.l7z_1),$),this.f84(t,r,$,$.m7z_1,$.m7z_1,!1);var k=$.l7z_1,j=null==k?null:k.q7z_1;null==j||(j.i7y_1=!0),this.h84(t,r)},Kr(lk).p84=function(t,n,i){var e=n,r=e.c7y_1;if(Ib().q81(ws(r.o7z_1),i))return this.j84(t,r,ws(i.d80_1)),rs();var s=Ib(),o=r.l7z_1;if(!s.q81(ws(null==o?null:o.o7z_1),i)){if(Tb().y7z(ws(r.l7z_1)),e.i7y_1){if(!Tb().b82(ws(r.m7z_1)))throw ha();e.i7y_1=!1}if(!Tb().a80(ws(i.d80_1),r))throw ha();return this.q84(t,i),rs()}var u=ak(0,e=this.z83(e)),a=ws(u.c7y_1.l7z_1),h=a.m7z_1,_=h;if(u.i7y_1){if(this.w83(u),!Tb().b82(a))throw ha();var l=null==_?null:_.l7z_1;a=ws(null==l?null:l.n7z_1)}if(!Tb().a80(ws(i.d80_1),a))throw ha();Ib().r81(ws(_))||(_=null),this.f84(t,e,ws(a.m7z_1),h,_,!0)},Kr(lk).r84=function(t,n){var i=n.d80_1,e=new vb(ws(null==i?null:i.l7z_1)),r=pb().w7y(pb().b7z(ws(t.z7w_1),e)),s=r instanceof vb?r:Wr(),o=ak(0,s),u=s.c7y_1,a=o.c7y_1,h=Ib(),_=u.l7z_1;if(0===h.j81(ws(null==_?null:_.o7z_1),n,ws(u.o7z_1)))return this.p84(t,s,n),rs();var l=Ib(),f=a.l7z_1,c=ws(null==f?null:f.o7z_1),v=u.l7z_1,w=l.o81(c,ws(null==v?null:v.o7z_1))?s:o;if(s.f7y_1||w.i7y_1){var d;if(w===s){var p=Tb(),m=n.d80_1;d=p.d82(ws(null==m?null:m.l7z_1),ws(u.n7z_1))}else{var g=Tb(),$=a.l7z_1,y=null==$?null:$.m7z_1,b=g.d82(ws(null==y?null:y.l7z_1),ws(n.d80_1));d=ws(b.l7z_1)}var k=d;if(w.i7y_1){if(!this.x83(w,k))throw ha()}else this.c84(t,this.a84(t,s,k));this.q84(t,n)}else this.f84(t,s,ws(n.d80_1),n.d80_1,null,!0)},Kr(lk).q84=function(t,n){t.b7x_1=n;for(var i=ws(n.d80_1);null==i.q7z_1;)if((i=ws(i.m7z_1))===n.d80_1)return this.r84(t,n),rs();var e=ws(this.y83(ws(i.q7z_1))),r=ak(0,e),s=r.c7y_1,o=this.e84(r,null);o.m7z_1===s?this.o84(t,e,o):this.f84(t,e,ws(o.m7z_1),s,s,!0)},Kr(lk).s84=function(t,n){var i=Tb().z7z(ws(t.s7w_1)),e=i.o7z_1;null==e||(e.g80_1=4e150);var r=i.o7z_1;null==r||(r.h80_1=n);var s=i.l7z_1,o=null==s?null:s.o7z_1;null==o||(o.g80_1=-4e150);var u=i.l7z_1,a=null==u?null:u.o7z_1;null==a||(a.h80_1=n);var h=t,_=i.l7z_1;h.b7x_1=null==_?null:_.o7z_1;var l=new vb(i);l.e7y_1=0,l.f7y_1=!1,l.i7y_1=!1,l.g7y_1=!0,l.h7y_1=!1,l.d7y_1=pb().n7y(ws(t.z7w_1),l)},Kr(lk).t84=function(t){var n=t,i=pb();n.z7w_1=i.l7y(t,new _k(t)),this.s84(t,-4e150),this.s84(t,4e150)},Kr(lk).u84=function(t){t:for(;;){var n=pb().w7y(pb().z7y(ws(t.z7w_1))),i=null==n||n instanceof vb?n:Wr();if(null==i)break t;var e=i;this.w83(e)}pb().m7y(ws(t.z7w_1))},Kr(lk).v84=function(t){for(var n=t.s7w_1,i=ws(null==n?null:n.u7z_1),e=ws(i.k7z_1);e!==i;){var r,s=ws(e.k7z_1),o=ws(e.n7z_1),u=Ib(),a=ws(e.o7z_1),h=e.l7z_1;if(u.q81(a,ws(null==h?null:h.o7z_1))){var _=e.n7z_1;r=!((null==_?null:_.n7z_1)===e)}else r=!1;if(r){if(this.j84(t,o,e),!Tb().b82(e))throw ha();o=ws((e=o).n7z_1)}if(o.n7z_1===e){if(o!==e&&(o!==s&&o!==s.l7z_1||(s=ws(s.k7z_1)),!Tb().b82(o)))throw ha();if(e!==s&&e!==s.l7z_1||(s=ws(s.k7z_1)),!Tb().b82(e))throw ha()}e=s}},Kr(lk).w84=function(t){t.a7x_1=Lb().n82();for(var n=ws(t.a7x_1),i=t.s7w_1,e=ws(null==i?null:i.s7z_1),r=ws(e.b80_1);r!==e;)r.i80_1=n.q82(r),r=ws(r.b80_1);if(!n.p82()){var s=t.a7x_1;return null==s||s.o82(),t.a7x_1=null,!1}return!0},Kr(lk).x84=function(t){var n=t.a7x_1;null==n||n.o82()},Kr(lk).y84=function(t){for(var n=ws(t.t7z_1.c7z_1);n!==t.t7z_1;){var i=ws(n.c7z_1),e=ws(n.e7z_1),r=e.n7z_1;if((null==r?null:r.n7z_1)===e&&(uk(0,ws(e.m7z_1),e),!Tb().b82(e)))return!1;n=i}return!0},Kr(lk).x80=function(t){if(t.y7w_1=!1,this.v84(t),!this.w84(t))return!1;this.t84(t);t:for(;;){var n=t.a7x_1,i=null==n?null:n.r82(),e=null==i||i instanceof qb?i:Wr();if(null==e)break t;var r=e;n:for(;;){var s=t.a7x_1,o=null==s?null:s.t82(),u=null==o||o instanceof qb?o:Wr();if(null==u||!Ib().q81(u,r))break n;var a=t.a7x_1,h=null==a?null:a.r82();u=h instanceof qb?h:Wr(),this.j84(t,ws(r.d80_1),ws(u.d80_1))}this.q84(t,r)}var _=t,l=pb().w7y(pb().z7y(ws(t.z7w_1)));return _.b7x_1=(l instanceof vb?l:Wr()).c7y_1.o7z_1,this.u84(t),this.x84(t),!!this.y84(ws(t.s7w_1))&&(Tb().a81(ws(t.s7w_1)),!0)},Kr(ck).z84=function(t){var n=ws(t.e7z_1);t:for(;;){var i=Ib(),e=n.l7z_1;if(!i.o81(ws(null==e?null:e.o7z_1),ws(n.o7z_1)))break t;var r=n.m7z_1;n=ws(null==r?null:r.l7z_1)}t:for(;;){var s=Ib(),o=ws(n.o7z_1),u=n.l7z_1;if(!s.o81(o,ws(null==u?null:u.o7z_1)))break t;n=ws(n.n7z_1)}for(var a=n.m7z_1,h=ws(null==a?null:a.l7z_1);n.n7z_1!==h;){var _=Ib(),l=n.l7z_1;if(_.o81(ws(null==l?null:l.o7z_1),ws(h.o7z_1))){t:for(;;){var f;if(h.n7z_1!==n){var c;if(Ib().r81(ws(h.n7z_1)))c=!0;else{var v=Ib(),w=ws(h.o7z_1),d=h.l7z_1,p=ws(null==d?null:d.o7z_1),m=h.n7z_1,g=null==m?null:m.l7z_1;c=v.j81(w,p,ws(null==g?null:g.o7z_1))<=0}f=c}else f=!1;if(!f)break t;var $=Tb().d82(ws(h.n7z_1),h);h=ws($.l7z_1)}var y=h.m7z_1;h=ws(null==y?null:y.l7z_1)}else{t:for(;;){var b;if(h.n7z_1!==n){var k,j=Ib(),x=n.m7z_1;if(j.s81(ws(null==x?null:x.l7z_1)))k=!0;else{var z=Ib(),E=n.l7z_1,C=ws(null==E?null:E.o7z_1),S=ws(n.o7z_1),q=n.m7z_1,O=null==q?null:q.l7z_1;k=z.j81(C,S,ws(null==O?null:O.o7z_1))>=0}b=k}else b=!1;if(!b)break t;var I=Tb(),A=n,T=n.m7z_1,D=I.d82(A,ws(null==T?null:T.l7z_1));n=ws(D.l7z_1)}n=ws(n.n7z_1)}}t:for(;;){var M=h.n7z_1;if((null==M?null:M.n7z_1)===n)break t;var N=Tb().d82(ws(h.n7z_1),h);h=ws(N.l7z_1)}},Kr(ck).y80=function(t){for(var n=ws(t.t7z_1.c7z_1);n!==t.t7z_1;){var i=ws(n.c7z_1);n.i7z_1&&this.z84(n),n=i}return!0},Kr(ck).z80=function(t,n,i){for(var e=ws(t.u7z_1.k7z_1);e!==t.u7z_1;){var r=ws(e.k7z_1),s=e.l7z_1,o=null==s?null:s.p7z_1,u=null==o?null:o.i7z_1,a=e.p7z_1;if(u!=(null==a?null:a.i7z_1))e.r7z_1=ws(e.p7z_1).i7z_1?n:0|-n;else if(i){if(!Tb().b82(e))return!1}else e.r7z_1=0;e=r}return!0},Kr(uj).ci=function(t){if(Kr($j).ci.call(this,t),!t.defaultPrevented)if("wheel"===t.type)t.preventDefault(),this.e88(t instanceof WheelEvent?t:Wr());else for(var n=jj().d88_1.d();n.e();){var i=n.f();Rs(i.t85_1,this.b88_1.i85_1)&&i.ci(t)}},Kr(uj).handleEvent=function(t){return this.ci(t)},Kr(uj).f88=function(t){var n=t;Rs(n,this.q86_1)||Rs(n,this.s86_1)?this.k88(t):Rs(n,this.r86_1)?this.j88(t):Rs(n,this.t86_1)?this.i88(t instanceof Cj?t:Wr()):Rs(n,this.u86_1)?this.h88(t instanceof Sj?t:Wr()):Rs(n,this.v86_1)&&this.g88(t)},Kr(uj).k88=function(t){this.b88_1.n88().g4v_1.f55()?this.m88(t):this.l88(t)},Kr(uj).l88=function(t){var n=t.v85_1,i=t.y85_1,e=t.z85_1;switch(n.l6_1){case 3:this.o88(),this.z86_1.q5l(0,0);break;case 4:var r=this.b88_1.n88().g4v_1,s=r.c52(),o=r.i5w(),u=Math.max(s,o),a=this.x86_1.t4z_1,h=Math.max(1,a),_=this.b88_1.n88().b52(h)*this.b88_1.n88().p4v_1,l=(e-this.z86_1.n4z_1)*_/u,f=-(i-this.z86_1.m4z_1)*_/u,c=Hh(this.x86_1.u4z_1),v=Math.sin(c),w=Hh(this.x86_1.u4z_1),d=Math.cos(w),p=this.x86_1.r4z_1;p.j4w_1=Gh(p.j4w_1,l*d-f*v),p.k4w_1=Gh(p.k4w_1,l*v+f*d),this.z86_1.q5l(i,e),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).m88=function(t){var n=t.v85_1,i=t.w85_1,e=t.x85_1,r=t.y85_1,s=t.z85_1;switch(n.l6_1){case 3:this.o88(),this.y86_1.q5l(i,e),this.z86_1.q5l(i,e);break;case 4:var o=this.z86_1.m4z_1,u=this.z86_1.n4z_1,a=this.y86_1.m4z_1+r,h=this.y86_1.n4z_1+s;this.z86_1.q5l(a,h),this.b88_1.n88().g50(this.x86_1,this.b88_1.r88(o,u),this.b88_1.r88(a,h)),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).j88=function(t){var n=t.v85_1,i=t.y85_1,e=t.z85_1;switch(n.l6_1){case 3:this.o88();break;case 4:var r=180*i/this.b88_1.i85_1.clientWidth,s=90*e/this.b88_1.i85_1.clientHeight;this.x86_1.u4z_1=Wh(this.w86_1.u4z_1,r),this.x86_1.v4z_1=Wh(this.w86_1.v4z_1,s),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).i88=function(t){var n=t.v85_1,i=t.s89();switch(n.l6_1){case 3:this.o88();break;case 4:0!==i&&(this.x86_1.t4z_1=this.w86_1.t4z_1/i,this.p88());break;case 6:case 5:this.q88()}},Kr(uj).h88=function(t){var n=t.v85_1,i=t.t8a();switch(n.l6_1){case 3:this.o88(),this.a87_1=0;break;case 4:this.x86_1.u4z_1=Jh(this.x86_1.u4z_1,i-this.a87_1),this.a87_1=i,this.p88();break;case 6:case 5:this.q88()}},Kr(uj).g88=function(t){var n=t.v85_1,i=t.z85_1;switch(n.l6_1){case 3:this.o88();break;case 4:var e=-90*i/this.b88_1.i85_1.clientHeight;this.x86_1.v4z_1=Wh(this.w86_1.v4z_1,e),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).e88=function(t){var n=Ms(t.timeStamp);(n-this.b87_1|0)>500&&(this.b88_1.n88().f50(this.x86_1),this.b87_1=n);var i=t.deltaMode,e=1+(i===WheelEvent.DOM_DELTA_PIXEL?t.deltaY:i===WheelEvent.DOM_DELTA_LINE?20*t.deltaY:i===WheelEvent.DOM_DELTA_PAGE?200*t.deltaY:t.deltaY)/1e3,r=this.x86_1;r.t4z_1=r.t4z_1*e,this.p88()},Kr(uj).p88=function(){this.b88_1.n88().l50(this.x86_1),this.b88_1.c4v()},Kr(uj).o88=function(){var t=this.c87_1;this.c87_1=t+1|0,0===t&&(this.b88_1.n88().f50(this.w86_1),this.x86_1.n5k(this.w86_1))},Kr(uj).q88=function(){if(this.c87_1>0){var t=this.c87_1;this.c87_1=t-1|0}},Kr(aj).g8b=function(){this.z8a_1.u4z_1=Bh().s50_1,this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v()},Kr(aj).h8b=function(){this.z8a_1.u4z_1=Bh().s50_1,this.z8a_1.v4z_1=Bh().s50_1,this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v()},Kr(aj).f8b=function(t){if(this.a8b_1){var n=this.z8a_1.u4z_1,i=this.x8a_1*this.z8a_1.t4z_1;switch(t){case"panDown":n=Kh(n,Bh().v50_1);break;case"panLeft":n=Kh(n,Bh().t50_1);break;case"panRight":n=Yh(n,Bh().t50_1)}this.z8a_1.r4z_1.i5k(n,i,this.z8a_1.r4z_1),this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v(),window.setTimeout((e=this,(r=function(t){return e.f8b(t),rs()}).callableName="handlePan",r),50,t)}var e,r},Kr(aj).d8b=function(t){if(this.a8b_1){if("zoomIn"===t){var n=this.z8a_1;n.t4z_1=n.t4z_1*(1-this.w8a_1)}else if("zoomOut"===t){var i=this.z8a_1;i.t4z_1=i.t4z_1*(1+this.w8a_1)}this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v(),window.setTimeout((e=this,(r=function(t){return e.d8b(t),rs()}).callableName="handleZoom",r),50,t)}var e,r},Kr(aj).e8b=function(t){var n,i;this.a8b_1&&("tiltUp"===t?this.z8a_1.v4z_1=Jh(this.z8a_1.v4z_1,this.y8a_1):"tiltDown"===t&&(this.z8a_1.v4z_1=Wh(this.z8a_1.v4z_1,this.y8a_1)),this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v(),window.setTimeout((n=this,(i=function(t){return n.e8b(t),rs()}).callableName="handleTilt",i),50,t))},Kr(_j).t8b=function(t,n){var i=this.u8b(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(_j).ck=function(t,n){return this.t8b(null!=t&&bs(t,Fa)?t:Wr(),n)},Kr(_j).qj=function(){for(this.jj_1;;)try{var t=this.hj_1;if(0===t){this.ij_1=1;var n=this.s8b_1;return n instanceof Na?this.r8b_1.c4v():n instanceof Ra&&this.r8b_1.n88().f4v_1.f4x_1.w5y(this.s8b_1.v8b_1),rs()}if(1===t)throw this.kj_1}catch(t){throw t}},Kr(_j).u8b=function(t,n){var i=new _j(this.r8b_1,n);return i.s8b_1=t,i},Kr(cj).y8b=function(t){var n,i={alpha:!0,depth:!0,stencil:!1,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,preferLowPowerToHighPerformance:!1,failIfMajorPerformanceCaveat:!1},e=t.getContext("webgl",i),r=null==e?t.getContext("experimental-webgl",i):e;if(!(r instanceof WebGLRenderingContext))throw n=wx().v4w(wx().q4w_1,"WorldWindow","createContext","webglNotSupported"),cs(ss(n));return r},Kr(dj).u11=function(t,n){return this.z8b_1(t,n)},Kr(mj).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(mj).ck=function(t,n){return this.n1f(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(mj).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2,this.hj_1=1;var n=La().b4v_1,i=lj(this.j8c_1,null);if((t=n.x11(new dj(i),this))===Qo())return t;continue t;case 1:va();break;case 2:throw this.kj_1}}catch(t){var e=t;if(2===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},Kr(mj).o1f=function(t,n){var i=new mj(this.j8c_1,n);return i.k8c_1=t,i},Kr(gj).n8c=function(){return this.n88().f4v_1.e4x_1},Kr(gj).n88=function(){return this.k85_1},Kr(gj).o8c=function(){return this.o85_1},Kr(gj).i8b=function(t,n){var i,e,r={_v:this.l85_1.g2(t)};if(null==r._v){var s,o=new fj((i=this,e=r,function(t){t.worldWindow=i;var n=e._v,r=null==n?null:n.x8b_1;if(null==r);else for(var s=r.d();s.e();)s.f().handleEvent(t);return rs()}));this.l85_1.f4(t,o),s=o,r._v=s}r._v.x8b_1.n(n)||(r._v.x8b_1.z2(0,n),1===r._v.x8b_1.g()&&this.i85_1.addEventListener(t,r._v.w8b_1,!1))},Kr(gj).c4v=function(){this.s85_1=!0},Kr(gj).r88=function(t,n){var i=this.i85_1.getBoundingClientRect();return new hl(Js(t)-(i.left+this.i85_1.clientLeft),Js(n)-(i.top+this.i85_1.clientTop))},Kr(gj).p8c=function(t){return this.q8c(t.m4z_1,t.n4z_1)},Kr(gj).r8c=function(t,n,i,e,r){var s,o=new Ma,u=this.n88().n4v_1;if(u.sr())return o;if(0!==i&&0!==e){var a;a=Math.floor(t);var h,_=Ms(a),l=u.q4x_1,f=n+e;h=Math.ceil(f);var c,v=l-Ms(h)|0;c=Math.ceil(i);var w,d=Ms(c);w=Math.ceil(e),s=new cl(_,v,d,Ms(w))}else s=new cl(es(t)-1|0,(u.q4x_1-es(n)|0)-1|0,3,3);var p=s;if(!p.g5n(u))return o;if(this.q85_1.j52_1=o,this.q85_1.l52_1=p,r){var m=p.n4x_1+p.p4x_1/2,g=p.o4x_1+p.q4x_1/2;if(u.h5n(m,g)){var $=$_();this.n88().i50(m,u.q4x_1-g,$)&&(this.q85_1.m52_1=new hl(m,g),this.q85_1.n52_1=$)}}return this.q85_1.o52_1=!0,this.s8c(),o},Kr(gj).q8c=function(t,n,i,e,r,s){return i=i===Xr?0:i,e=e===Xr?0:e,r=r===Xr||r,s===Xr?this.r8c(t,n,i,e,r):s.r8c.call(this,t,n,i,e,r)},Kr(gj).w4y=function(){window.cancelAnimationFrame(this.r85_1),this.n88().x1g()},Kr(gj).a8c=function(){this.n88().f4v_1.d3(),this.n88().s4x(),this.n88().p4w(window.devicePixelRatio),this.j85_1.getExtension("WEBGL_depth_texture");var t,n,i=this.n8c();wa(i,Xr,Xr,(t=new mj(this,null),(n=function(n,i){return t.n1f(n,i)}).$arity=1,n)),this.c4v(),this.l8c()},Kr(gj).l8c=function(){this.t8c();var t,n=window;this.r85_1=n.requestAnimationFrame((t=this,function(n){return t.l8c(),rs()}))},Kr(gj).t8c=function(){if(this.u8c(),!this.s85_1)return rs();this.s85_1=!1,this.s8c()},Kr(gj).s8c=function(){var t=this.q85_1.o52_1;try{t||this.v8c((hj(),jr)),(this.n88().d52(this.q85_1)||t)&&this.c4v(),this.n88().r54(this.q85_1)}catch(t){if(!(t instanceof Ts))throw t;var n=t;wx().v4w(wx().q4w_1,"WorldWindow","drawFrame","Exception occurred during redrawing.\n"+n)}finally{this.q85_1.s55(),t||this.v8c((hj(),kr))}},Kr(gj).u8c=function(){var t=this.j85_1.canvas.clientWidth*this.n88().p4v_1,n=es(t),i=this.j85_1.canvas.clientHeight*this.n88().p4v_1,e=es(i);(this.j85_1.canvas.width!==n||this.j85_1.canvas.height!==e||this.n88().n4v_1.sr())&&(this.j85_1.canvas.width=n,this.j85_1.canvas.height=e,this.n88().y4y(this.j85_1.drawingBufferWidth,this.j85_1.drawingBufferHeight),this.c4v())},Kr(gj).v8c=function(t){for(var n=this.p85_1.d();n.e();){var i=n.f();try{i(this,t)}catch(t){if(!(t instanceof Ts))throw t;var e=t;wx().j5y(wx().q4w_1,"Exception calling redraw callback.\n"+e)}}return rs()},Kr($j).ci=function(t){var n=0,i=this.c88_1.g()-1|0;if(n<=i)t:do{var e=n;if(n=n+1|0,this.c88_1.h(e).handleEvent(t),t.defaultPrevented)break t}while(n<=i)},Kr($j).handleEvent=function(t){return this.ci(t)},Kr(yj).x1g=function(){Kr(zj).x1g.call(this),this.v8d_1.d3(),this.y8d()},Kr(yj).z8d=function(t){if(!this.v85_1.equals(Jl()))return rs();this.r8d_1!==t.button?this.x8d(Xl()):(this.v8d_1.a(new xj(this.w85_1,this.x85_1)),this.a8e(this.t8d_1))},Kr(yj).b8e=function(t){if(!this.v85_1.equals(Jl()))return rs();var n=this.y85_1,i=this.z85_1,e=n*n+i*i;Math.sqrt(e)>this.s8d_1*window.devicePixelRatio&&this.x8d(Xl())},Kr(yj).c8e=function(t){return this.v85_1.equals(Jl())?0!==this.a86_1?rs():void(this.v8d_1.g()===this.q8d_1?(this.w85_1=this.v8d_1.h(0).d8e_1,this.x85_1=this.v8d_1.h(0).e8e_1,this.x8d(Zl())):this.a8e(this.u8d_1)):rs()},Kr(yj).f8e=function(t){if(!this.v85_1.equals(Jl()))return rs();this.x8d(Xl())},Kr(yj).a8e=function(t){var n=this.w8d_1;null==n||(window.clearTimeout(n),rs());var i,e=window;this.w8d_1=e.setTimeout((i=this,function(){return i.w8d_1=null,i.v85_1.equals(Jl())&&(i.x8d(Xl()),rs()),rs()}),t)},Kr(yj).y8d=function(){var t=this.w8d_1;null==t||(window.clearTimeout(t),rs(),rs()),this.w8d_1=null},Kr(bj).b8e=function(t){var n;this.v85_1.equals(Jl())?this.k8f()&&(this.j8f()?(this.i8f(),n=Ql()):n=Xl(),this.x8d(n)):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(tf())},Kr(bj).c8e=function(t){0===this.a86_1&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(ef()))},Kr(bj).f8e=function(t){this.v85_1.equals(Jl())&&this.x8d(Xl())},Kr(bj).k8f=function(){var t=this.y85_1,n=this.z85_1,i=t*t+n*n;return Math.sqrt(i)>this.y87_1*window.devicePixelRatio},Kr(bj).j8f=function(){return 1<0)return rs();var n=1<this.o8g_1*window.devicePixelRatio},Kr(Ej).j8f=function(){var t=this.m8g_1,n=this.n8g_1,i=this.l8f();return t<=i&&i<=n},Kr(Cj).s89=function(){return this.p89_1*this.q89_1},Kr(Cj).x1g=function(){Kr(zj).x1g.call(this),this.p89_1=1,this.q89_1=1,this.m89_1=0,this.r89_1.d3()},Kr(Cj).z8d=function(t){this.v85_1.equals(Jl())&&this.x8d(Xl())},Kr(Cj).f8e=function(t){if(this.r89_1.g()<2&&(this.r89_1.a(t),2===this.r89_1.g())){this.m89_1=this.p8g();this.q89_1=this.q89_1*this.p89_1,this.p89_1=1}},Kr(Cj).k8e=function(t){if(2===this.r89_1.g())if(this.v85_1.equals(Jl()))this.j8f()&&this.x8d(Ql());else if(this.v85_1.equals(Ql())||this.v85_1.equals(tf())){var n=this.p8g()/this.m89_1,i=Math.abs(n),e=this.o89_1;this.p89_1=this.p89_1*(1-e)+i*e,this.x8d(tf())}},Kr(Cj).m8e=function(t){this.r89_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(ef()))},Kr(Cj).l8e=function(t){this.r89_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(nf()))},Kr(Cj).j8e=function(){this.m89_1=this.p8g(),this.p89_1=1},Kr(Cj).j8f=function(){var t=this.p8g()-this.m89_1;return Math.abs(t)>this.n89_1*window.devicePixelRatio},Kr(Cj).p8g=function(){var t=this.r89_1.h(0),n=this.r89_1.h(1),i=t.o8f_1-n.o8f_1|0,e=t.p8f_1-n.p8f_1|0,r=Hr(i,i)+Hr(e,e)|0;return Math.sqrt(r)},Kr(Sj).t8a=function(){return this.q8a_1+this.r8a_1},Kr(Sj).x1g=function(){Kr(zj).x1g.call(this),this.q8a_1=0,this.r8a_1=0,this.n8a_1=0,this.s8a_1.d3()},Kr(Sj).z8d=function(t){this.v85_1.equals(Jl())&&this.x8d(Xl())},Kr(Sj).f8e=function(t){if(this.s8a_1.g()<2&&(this.s8a_1.a(t),2===this.s8a_1.g())){this.n8a_1=this.q8g();this.r8a_1=this.r8a_1+this.q8a_1,this.q8a_1=0}},Kr(Sj).k8e=function(t){if(2===this.s8a_1.g())if(this.v85_1.equals(Jl()))this.j8f()&&this.x8d(Ql());else if(this.v85_1.equals(Ql())||this.v85_1.equals(tf())){var n=this.q8g(),i=Bh().r5h(n-this.n8a_1),e=this.p8a_1;this.q8a_1=this.q8a_1*(1-e)+i*e,this.x8d(tf())}},Kr(Sj).m8e=function(t){this.s8a_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(ef()))},Kr(Sj).l8e=function(t){this.s8a_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(nf()))},Kr(Sj).j8e=function(){this.n8a_1=this.q8g(),this.q8a_1=0},Kr(Sj).j8f=function(){this.q8a_1=Bh().r5h(this.q8g()-this.n8a_1);var t=this.q8a_1;return Math.abs(t)>this.o8a_1},Kr(Sj).q8g=function(){var t,n=this.s8a_1.h(0),i=this.s8a_1.h(1),e=n.o8f_1-i.o8f_1|0,r=n.p8f_1-i.p8f_1|0,s=Bh(),o=r,u=e;return t=Math.atan2(o,u),s.p5h(t)},Kr(Ij).j8f=function(){return!!Kr(bj).j8f.call(this)&&this.l8i_1.b8h_1},Kr(Aj).j8f=function(){return!!Kr(Ej).j8f.call(this)&&this.j8j_1.b8h_1},Kr(Tj).o8h=function(){this.a8h_1=!1,this.b8h_1=!1},Kr(Dj).x1g=function(){Kr(zj).x1g.call(this),this.j8k_1.d3(),this.l8k()},Kr(Dj).z8d=function(t){if(!this.v85_1.equals(Jl()))return rs();this.x8d(Xl())},Kr(Dj).f8e=function(t){if(!this.v85_1.equals(Jl()))return rs();if(this.l8f()>this.f8k_1)this.x8d(Xl());else if(1===this.l8f())this.j8k_1.a(new Pj(this.l8f(),this.w85_1,this.x85_1)),this.a8e(this.h8k_1);else{var n=this.j8k_1.h(this.j8k_1.g()-1|0);n.n8f_1=this.l8f(),n.o8f_1=this.w85_1,n.p8f_1=this.x85_1}},Kr(Dj).k8e=function(t){if(!this.v85_1.equals(Jl()))return rs();var n=this.y85_1,i=this.z85_1,e=n*n+i*i;Math.sqrt(e)>this.g8k_1*window.devicePixelRatio&&this.x8d(Xl())},Kr(Dj).m8e=function(t){if(!this.v85_1.equals(Jl()))return rs();if(0!==this.l8f())return rs();var n=this.j8k_1.g();this.j8k_1.h(n-1|0).n8f_1!==this.f8k_1?this.x8d(Xl()):n===this.e8k_1?(this.w85_1=this.j8k_1.h(0).o8f_1,this.x85_1=this.j8k_1.h(0).p8f_1,this.x8d(Zl())):this.a8e(this.i8k_1)},Kr(Dj).l8e=function(t){if(!this.v85_1.equals(Jl()))return rs();this.x8d(Xl())},Kr(Dj).a8e=function(t){var n=this.k8k_1;null==n||(window.clearTimeout(n),rs());var i,e=window;this.k8k_1=e.setTimeout((i=this,function(){return i.k8k_1=null,i.v85_1.equals(Jl())&&(i.x8d(Xl()),rs()),rs()}),t)},Kr(Dj).l8k=function(){var t,n=this.k8k_1;null==n?t=null:(window.clearTimeout(n),rs(),t=rs());var i=t;return this.k8k_1=null,i},Kr(Rj).k8f=function(){var t=0,n=this.l8f();if(tthis.o8g_1)return!0}while(tthis.n8l_1*window.devicePixelRatio)return!1;var s=t.p8l()-n.p8l()|0,o=t.q8l()-n.q8l()|0,u=Hr(s,s)+Hr(o,o)|0;if(Math.sqrt(u)>this.o8l_1*window.devicePixelRatio)return!1;Nj(),Nj();return!(0==(12&this.r8l(t)&this.r8l(n)&12))},Kr(Rj).r8l=function(t){var n=t.p8l(),i=t.q8l(),e=0;if(Vu(n)>Vu(i)){var r,s=e;n<0?(Nj(),r=1):r=0;var o,u=e=s|r;n>0?(Nj(),o=2):o=0,e=u|o}else{var a,h=e;i<0?(Nj(),a=4):a=0;var _,l=e=h|a;i>0?(Nj(),_=8):_=0,e=l|_}return e},Kr(Pj).p8l=function(){return this.o8f_1-this.q8f_1|0},Kr(Pj).q8l=function(){return this.p8f_1-this.r8f_1|0},Kr(Lj).s8l=function(t){return new Uj(t.href)},Kr(Lj).t6t=function(t){var n;try{n=this.s8l(new URL(t))}catch(t){if(t instanceof Ts){var i=t;throw wx().n5h(wx().q4w_1,"ElevationSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Kr(Uj).v8l=function(){var t=this.v6q_1;return null==t||bs(t,by)?t:Wr()},Kr(Uj).w8l=function(){return"string"==typeof this.u6q_1},Kr(Uj).x8l=function(){var t=this.u6q_1;return"string"==typeof t?t:Wr()},Kr(Uj).toString=function(){return"string"==typeof this.u6q_1?"URL: "+ss(this.u6q_1):Kr(ry).toString.call(this)},Kr(Hj).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(Hj).ck=function(t,n){return this.n1f(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(Hj).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=8,this.k8m_1=this.g8m_1.x8l(),this.ij_1=7,this.hj_1=1,(t=da(fetch(this.k8m_1),this))===Qo())return t;continue t;case 1:if(this.l8m_1=t,this.l8m_1.ok){if(this.hj_1=2,(t=da(this.l8m_1.arrayBuffer(),this))===Qo())return t;continue t}this.h8m_1.o5z(this.i8m_1,"Elevations retrieval failed ("+this.l8m_1.statusText+"): "+this.k8m_1),this.hj_1=6;continue t;case 2:this.m8m_1=t,this.n8m_1=this.l8m_1.headers.get("Content-Type"),this.o8m_1=null;var n;if(ma(this.n8m_1,"image/bil",!0)||ma(this.n8m_1,"application/bil",!0)||ma(this.n8m_1,"application/bil16",!0))n=new Int16Array(this.m8m_1);else if(ma(this.n8m_1,"application/bil32",!0))n=new Float32Array(this.m8m_1);else{if(ma(this.n8m_1,"image/tiff",!0))throw new ga("An operation is not implemented: Implement Tiff parsing for JS");ma(this.n8m_1,"text/xml",!0)?(this.o8m_1="Elevations retrieval failed ("+this.l8m_1.statusText+"): "+this.k8m_1+".\n",pa().fromCharCode.apply(null,new Uint8Array(this.m8m_1)),n=null):(this.o8m_1="Elevations retrieval failed (Unexpected content type "+this.n8m_1+"): "+this.k8m_1,n=null)}if(this.p8m_1=n,null==this.p8m_1){this.q8m_1=null,this.hj_1=5;continue t}if(this.r8m_1=this.g8m_1.v8l(),null==this.r8m_1){this.s8m_1=null,this.hj_1=4;continue t}if(this.hj_1=3,(t=this.r8m_1.x7u(this.p8m_1,this))===Qo())return t;continue t;case 3:this.s8m_1=t,this.hj_1=4;continue t;case 4:var i=this.s8m_1;this.q8m_1=null==i?this.p8m_1:i,this.hj_1=5;continue t;case 5:var e,r=this.q8m_1,s=this.h8m_1.m5z(r);if(null==s?e=null:(this.h8m_1.n5z(this.i8m_1,s,"Elevation retrieval succeeded: "+this.k8m_1),e=rs()),null==e){var o=this.o8m_1;this.h8m_1.o5z(this.i8m_1,null==o?"Elevations retrieval failed: "+this.k8m_1:o)}this.hj_1=6;continue t;case 6:this.ij_1=8,this.hj_1=9;continue t;case 7:if(this.ij_1=8,this.kj_1 instanceof Error){var u=this.kj_1;this.h8m_1.o5z(this.i8m_1,"Elevations retrieval failed ("+u.message+"): "+this.k8m_1),this.hj_1=9;continue t}throw this.kj_1;case 8:throw this.kj_1;case 9:return this.ij_1=8,rs()}}catch(t){var a=t;if(8===this.ij_1)throw a;this.hj_1=this.ij_1,this.kj_1=a}},Kr(Hj).o1f=function(t,n){var i=new Hj(this.g8m_1,this.h8m_1,this.i8m_1,n);return i.j8m_1=t,i},Kr(Vj).w5w=function(){ya(this.l5z_1.ok()),Kr(lf).w5w.call(this)},Kr(Vj).t5y=function(t,n,i,e){var r,s,o=this.d5y_1.o6w(n,i,e);o.w8l()?wa(this.l5z_1,Xr,Xr,(r=new Hj(o,this,t,null),(s=function(t,n){return r.n1f(t,n)}).$arity=1,s)):this.o5z(t,"Unsupported elevation source type")},Kr(Vj).m5z=function(t){var n,i=t;if(i instanceof Int16Array){for(var e=0,r=t.length,s=new Int16Array(r);e=this.d4x_1||this.g4x_1.n(t)||this.f4x_1.u5y(t.hashCode())||(t.j8p()?this.h8p(t,n,t.i8p().n16_1):t.w8l()?this.h8p(t,n,t.x8l()):t.e8p()&&(this.g4x_1.a(t),wa(this.e4x_1,Xr,Xr,(u=new nx(t,this,n,null),(a=function(t,n){return u.n1f(t,n)}).$arity=1,a)))),null;var u,a},Kr(sx).z6v=function(t,n){var i,e;wa(this.e4x_1,Xr,Xr,(i=new ix(n,t,null),(e=function(t,n){return i.n1f(t,n)}).$arity=1,e))},Kr(sx).h8p=function(t,n,i){var e,r,s=new Image;s.onload=rx(t,{_v:!1},this,n,s),s.onerror=(e=this,r=t,function(t,n,i,s,o){return e.d8o(r),rs()}),this.g4x_1.a(t),s.crossOrigin="anonymous",s.src=i},Kr(sx).c8p=function(t,n){if(0===n.width||0===n.height){var i=null!=t&&t.a7i_1>0?n.width/t.a7i_1|0:0,e=null!=t&&t.b7i_1>0?n.height/t.b7i_1|0:0,r=e>i?e:i;r>0&&(n.width=n.width/r|0,n.height=n.height/r|0)}else null!=t&&t.a7i_1>0&&t.b7i_1>0&&(n.width=t.a7i_1,n.height=t.b7i_1);var s=new fx(n);return Rs(null==t?null:t.y7h_1,n$())&&(s.m57(Tk(),Dk()),s.m57(Mk(),Dk())),Rs(null==t?null:t.z7h_1,r$())&&(s.m57(Nk(),Rk()),s.m57(Pk(),Rk())),s},Kr(sx).c8o=function(t,n,i){var e=this.c8p(n,i);this.h5h(t,e,e.u7g()),this.g4x_1.b3(t),this.f4x_1.w5y(t.hashCode()),La().c4v(),wx().t8m(wx().t4w_1)&&wx().j5y(wx().t4w_1,"Image retrieval succeeded: "+t)},Kr(sx).d8o=function(t){this.g4x_1.b3(t),this.f4x_1.y5y(t.hashCode()),wx().j5y(wx().r4w_1,"Image retrieval failed: "+t)},Kr(ox).t7g=function(t,n){return!0===(null==t?null:Zo(t)>0)?new ux(this.k8p(t,n)):null},Kr(ox).k8p=function(t,n){var i,e,r=document.createElement("canvas"),s=r instanceof HTMLCanvasElement?r:Wr(),o=s.getContext("2d"),u=o instanceof CanvasRenderingContext2D?o:Wr(),a=this.l8p(u,t,n),h=ja(t,["\n"]),_=n.o6j_1?n.n6j_1/2:0,l=a.m4z_1*this.r7g_1.y52_1;i=Math.ceil(l),s.width=Ms(i);var f=a.n4z_1*this.r7g_1.y52_1;e=Math.ceil(f),s.height=Ms(e),u.scale(this.r7g_1.y52_1,this.r7g_1.y52_1),u.font=n.r6j_1.toString(),u.textBaseline="bottom",u.textAlign=n.r6j_1.y7t_1,u.fillStyle=n.s6j_1.z7d(),u.strokeStyle=n.u6j_1.z7d(),u.lineWidth=n.n6j_1,u.lineCap="round",u.lineJoin="round";var c=n.r6j_1.y7t_1;Rs(c,"left")?u.translate(_,0):Rs(c,"right")?u.translate(a.m4z_1-_,0):u.translate(a.m4z_1/2,0);var v=0,w=h.g()-1|0;if(v<=w)do{var d=v;v=v+1|0;var p=h.h(d);u.translate(0,n.r6j_1.t7t_1*(1+this.s7g_1)+_),n.o6j_1&&u.strokeText(p,0,0),u.fillText(p,0,0)}while(v<=w);return s},Kr(ox).l8p=function(t,n,i){0===Zo(n)&&al(),t.font=i.r6j_1.toString();var e=ja(n,["\n"]),r=e.g()*(i.r6j_1.t7t_1*(1+this.s7g_1)),s=0,o=0,u=e.g()-1|0;if(o<=u)do{var a=o;o=o+1|0,s=yo(s,t.measureText(e.h(a)).width)}while(o<=u);return i.o6j_1&&(s+=i.n6j_1,r+=i.n6j_1),new hl(s,r)},Kr(ux).y7g=function(){return this.x8p_1},Kr(ux).e7h=function(t){try{t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);var n=t.t4x_1;(n instanceof px?n:Wr()).y8p_1.texImage2D(Gk(),0,this.e57_1,this.e57_1,this.f57_1,this.w8p_1),t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),this.y7g()&&t.t4x_1.g85(Gk())}catch(t){if(!(t instanceof Ts))throw t;var i=t;wx().n5h(wx().q4w_1,"Texture","loadTexImage","Exception attempting to load texture image '"+this.w8p_1+"'",i)}finally{this.w8p_1=null}},Kr(ax).i64=function(t){return new lx(t)},Kr(ax).s8l=function(t){return new lx(t.href)},Kr(ax).t6t=function(t){var n;try{n=this.s8l(new URL(t))}catch(t){if(t instanceof Ts){var i=t;throw wx().n5h(wx().q4w_1,"ImageSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Kr(lx).a8p=function(){var t=this.v6q_1;return null==t||bs(t,by)?t:Wr()},Kr(lx).j8p=function(){return this.u6q_1 instanceof Gr},Kr(lx).g8p=function(){return this.u6q_1 instanceof Image},Kr(lx).e8p=function(){var t=this.u6q_1;return bs(t,_x)},Kr(lx).w8l=function(){return"string"==typeof this.u6q_1},Kr(lx).i8p=function(){var t=this.u6q_1;return t instanceof Gr?t:Wr()},Kr(lx).f8p=function(){var t=this.u6q_1;return t instanceof Image?t:Wr()},Kr(lx).a8o=function(){var t=this.u6q_1;return bs(t,_x)?t:Wr()},Kr(lx).x8l=function(){var t=this.u6q_1;return"string"==typeof t?t:Wr()},Kr(lx).toString=function(){var t=this.u6q_1;return t instanceof Gr?"Resource: "+ss(this.u6q_1):t instanceof Image?"Image: "+ss(this.u6q_1):bs(t,_x)?"ImageFactory: "+ss(this.u6q_1):"string"==typeof t?"URL: "+ss(this.u6q_1):Kr(ry).toString.call(this)},Kr(fx).y7g=function(){return this.l8q_1},Kr(fx).e7h=function(t){try{t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);var n=t.t4x_1;(n instanceof px?n:Wr()).y8p_1.texImage2D(Gk(),0,this.e57_1,this.e57_1,this.f57_1,this.k8q_1),t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),this.y7g()&&t.t4x_1.g85(Gk())}catch(t){if(!(t instanceof Ts))throw t;var i=t;wx().n5h(wx().q4w_1,"Texture","loadTexImage","Exception attempting to load texture image '"+this.k8q_1+"'",i)}finally{this.k8q_1=null}},Kr(cx).f6q=function(t,n){var i=t.onload;return(null==i?null:i(new Event("load")))instanceof ba||Wr(),t},Kr(cx).x7u=function(t,n){return this.f6q(t instanceof Image?t:Wr(),n)},Kr(vx).t8m=function(t){var n=this.q4w_1;return t>>0,e=arguments[1]>>0,r=e<0?Math.max(i+e,0):Math.min(e,i),s=arguments[2],o=void 0===s?i:s>>0,u=o<0?Math.max(i+o,0):Math.min(o,i);r0?1:-1}),void 0===Math.sinh){var o=Math.sqrt(2220446049250313e-31),u=Math.sqrt(o);Math.sinh=function(t){if(Math.abs(t)o&&(n+=t*t*t/6),n}var i=Math.exp(t),e=1/i;return isFinite(i)?isFinite(e)?(i-e)/2:-Math.exp(-t-Math.LN2):Math.exp(t-Math.LN2)}}void 0===Math.clz32&&(Math.clz32=(r=Math.log,s=Math.LN2,function(t){var n=t>>>0;return 0===n?32:31-(r(n)/s|0)|0})),void 0===String.prototype.startsWith&&Object.defineProperty(String.prototype,"startsWith",{value:function(t,n){return n=n||0,this.lastIndexOf(t,n)===n}}),void 0===Math.imul&&(Math.imul=function(t,n){return(4294901760&t)*(65535&n)+(65535&t)*(0|n)|0}),void 0===(e="function"==typeof(i=function(t){"use strict";var n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ft,ct,vt,wt,dt,pt,mt,gt,$t,yt,bt,kt,jt,xt,zt,Et,Ct,St=Math.imul,qt=ArrayBuffer.isView,Ot=Math.clz32;function It(t){return t===ie()?this:t.e6(this,Qi)}function At(t){return p_(this.r(),t)?pl(this,Zi)?this:z_():null}function Tt(t,n){return n(t,this)}function Dt(t){return p_(this.r(),t)?ie():this}function Mt(t,n){return Nt(t,n)>=0}function Nt(t,n){if(null==n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,null==t[r])return r}while(i<=e)}else{var s=0,o=t.length-1|0;if(s<=o)do{var u=s;if(s=s+1|0,p_(n,t[u]))return u}while(s<=o)}return-1}function Rt(t){var n;switch(t.length){case 0:throw jf("Array is empty.");case 1:n=t[0];break;default:throw nf("Array has more than one element.")}return n}function Pt(t){return t.length-1|0}function Lt(t,n){for(var i=t,e=0,r=i.length;e=0}function Ut(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Ht(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Vt(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Bt(t,n,i,e,r,s,o){return n=n===jt?", ":n,i=i===jt?"":i,e=e===jt?"":e,r=r===jt?-1:r,s=s===jt?"...":s,o=o===jt?null:o,function(t,n,i,e,r,s,o,u){i=i===jt?", ":i,e=e===jt?"":e,r=r===jt?"":r,s=s===jt?-1:s,o=o===jt?"...":o,u=u===jt?null:u,n.b(e);var a=0,h=t,_=0,l=h.length;t:for(;_1&&n.b(i),!(s<0||a<=s))break t;Se(n,f,u)}return s>=0&&a>s&&n.b(o),n.b(r),n}(t,Ea(),n,i,e,r,s,o).toString()}function Yt(t){this.c_1=t}function Wt(t,n,i,e,r,s,o){return n=n===jt?", ":n,i=i===jt?"":i,e=e===jt?"":e,r=r===jt?-1:r,s=s===jt?"...":s,o=o===jt?null:o,Gt(t,Ea(),n,i,e,r,s,o).toString()}function Gt(t,n,i,e,r,s,o,u){i=i===jt?", ":i,e=e===jt?"":e,r=r===jt?"":r,s=s===jt?-1:s,o=o===jt?"...":o,u=u===jt?null:u,n.b(e);var a=0,h=t.d();t:for(;h.e();){var _=h.f();if((a=a+1|0)>1&&n.b(i),!(s<0||a<=s))break t;Se(n,_,u)}return s>=0&&a>s&&n.b(o),n.b(r),n}function Kt(t){if(pl(t,Ih)){var n;switch(t.g()){case 0:n=Bi();break;case 1:n=Do(pl(t,Oh)?t.h(0):t.d().f());break;default:n=nn(t,Mu(t.g()))}return n}return function(t){switch(t.g()){case 0:return Bi();case 1:return Do(t.d().f());default:return t}}(nn(t,Au()))}function Jt(t,n){if(pl(n,Ih)){var i=tu(t.g()+n.g()|0);return i.l(t),i.l(n),i}var e=nu(t);return vi(e,n),e}function Xt(t){return new un(t)}function Zt(t){if(pl(t,Ih)){var n;switch(t.g()){case 0:n=Kn();break;case 1:n=To(pl(t,Oh)?t.h(0):t.d().f());break;default:n=Qt(t)}return n}return Zn(en(t))}function Qt(t){return nu(t)}function tn(t){if(pl(t,Oh))return rn(t);var n=t.d();if(!n.e())throw jf("Collection is empty.");return n.f()}function nn(t,n){for(var i=t.d();i.e();){var e=i.f();n.a(e)}return n}function en(t){return pl(t,Ih)?Qt(t):nn(t,Qo())}function rn(t){if(t.m())throw jf("List is empty.");return t.h(0)}function sn(t){if(pl(t,Oh))return function(t){var n;switch(t.g()){case 0:throw jf("List is empty.");case 1:n=t.h(0);break;default:throw nf("List has more than one element.")}return n}(t);var n=t.d();if(!n.e())throw jf("Collection is empty.");var i=n.f();if(n.e())throw nf("Collection has more than one element.");return i}function on(t,n){return pl(t,Ih)?t.n(n):function(t,n){if(pl(t,Oh))return t.o(n);for(var i=0,e=t.d();e.e();){var r=e.f();if(No(i),p_(n,r))return i;i=i+1|0}return-1}(t,n)>=0}function un(t){this.p_1=t}function an(t){var n=Eh(t).toUpperCase();if(n.length>1){var i;if(p_(new qh(t),new qh(329)))i=n;else{var e=s_(n,0),r=n.substring(1).toLowerCase();i=Eh(e)+r}return i}return Eh(function(t){return function(t){var n=zh(t);return 452<=n&&n<=460||497<=n&&n<=499?ul(St(3,(n+1|0)/3|0)):4304<=n&&n<=4346||4349<=n&&n<=4351?t:Sa(t)}(t)}(t))}function hn(t,n){return n<=zo().MIN_VALUE?we().t_1:hl(t,n-1|0)}function _n(t,n,i){if(n.w(i)>0)throw nf("Cannot coerce value to an empty range: maximum "+d_(i)+" is less than minimum "+d_(n)+".");return t.w(n)<0?n:t.w(i)>0?i:t}function ln(t,n){return be().x(t,n,-1)}function fn(t,n){return tn?n:t}function vn(t,n,i){if(n>i)throw nf("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t}function wn(t,n){return new ji(t,n)}function dn(t){return Zn(function(t){return function(t,n){for(var i=t.d();i.e();){var e=i.f();n.a(e)}return n}(t,Qo())}(t))}function pn(t){return new mn(t)}function mn(t){this.c1_1=t}function gn(t){if(0===u_(t))throw jf("Char sequence is empty.");return s_(t,Le(t))}function $n(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));return yn(t,fn(t.length-n|0,0))}function yn(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));var i=cn(n,t.length);return t.substring(0,i)}function bn(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));var i=cn(n,t.length);return t.substring(i)}function kn(){var t,n=(pf(t=b_(y_(jn))),jn.call(t),t);return $_(n,kn),n}function jn(){$_(this,jn)}function xn(){}function zn(t){this.k1_1=t,this.j1_1=0}function En(){i=this}function Cn(){return null==i&&new En,i}function Sn(){Cn(),xn.call(this)}function qn(t){this.r1_1=t}function On(t){this.s1_1=t}function In(t,n){return n===t?"(this Map)":Hh(n)}function An(t,n){var i;t:{for(var e=t.q().d();e.e();){var r=e.f();if(p_(r.r(),n)){i=r;break t}}i=null}return i}function Tn(){e=this}function Dn(){return null==e&&new Tn,e}function Mn(t){this.w1_1=t,Fn.call(this)}function Nn(t){this.c2_1=t,xn.call(this)}function Rn(){Dn(),this.y1_1=null,this.z1_1=null}function Pn(){r=this}function Ln(){return null==r&&new Pn,r}function Fn(){Ln(),xn.call(this)}function Un(t,n){if(n<0)throw _f("Deque is too big.");if(n<=t.n2_1.length)return $o();if(t.n2_1===Wn().p2_1){var i,e=t;Wn();var r=fn(n,10);return i=Yh(Array(r),null),e.n2_1=i,$o()}!function(t,n){var i=Yh(Array(n),null);Po(t.n2_1,i,0,t.m2_1,t.n2_1.length),Po(t.n2_1,i,t.n2_1.length-t.m2_1|0,0,t.m2_1),t.m2_1=0,t.n2_1=i}(t,Wn().s2(t.n2_1.length,n))}function Hn(t,n){return n>=t.n2_1.length?n-t.n2_1.length|0:n}function Vn(t,n){return n===Pt(t.n2_1)?0:n+1|0}function Bn(t,n){return 0===n?Pt(t.n2_1):n-1|0}function Yn(){var t;s=this,t=[],this.p2_1=t,this.q2_1=2147483639,this.r2_1=10}function Wn(){return null==s&&new Yn,s}function Gn(){Wn(),this.m2_1=0,this.o2_1=0}function Kn(){return ii()}function Jn(t){return t.g()-1|0}function Xn(t){return hl(0,t.g()-1|0)}function Zn(t){switch(t.g()){case 0:return Kn();case 1:return To(t.h(0));default:return t}}function Qn(){o=this}function ti(){return null==o&&new Qn,o}function ni(){u=this,this.k3_1=new I_(-1478467534,-1720727600)}function ii(){return null==u&&new ni,u}function ei(t,n){this.o3_1=t,this.p3_1=n}function ri(t){return 0===t.length?Qo():nu(new ei(t,!0))}function si(t,n){this.s3_1=t,this.t3_1=n}function oi(t,n){return pl(t,Ih)?t.g():n}function ui(t){this.u3_1=t}function ai(t){this.v3_1=t,this.w3_1=0}function hi(){}function _i(){var t=(null==a&&new li,a);return pl(t,Mh)?t:z_()}function li(){a=this,this.y3_1=new I_(-888910638,1920087921)}function fi(t,n){return function(t,n){for(var i=n.d();i.e();){var e=i.f(),r=e.d4(),s=e.e4();t.f4(r,s)}}(n,t),n}function ci(t,n){for(var i=n,e=0,r=i.length;e=0))throw nf(d_("count must be non-negative, but was "+this.o5_1+"."))}function Ni(t){t.p5_1=-2===t.q5_1?t.r5_1.s5_1():t.r5_1.t5_1(x_(t.p5_1)),t.q5_1=null==t.p5_1?0:1}function Ri(t){this.r5_1=t,this.p5_1=null,this.q5_1=-2}function Pi(t,n){this.s5_1=t,this.t5_1=n}function Li(){h=this}function Fi(){return null==h&&new Li,h}function Ui(t){this.u5_1=t}function Hi(t){return t.d()}function Vi(t){return t}function Bi(){return Wi()}function Yi(){_=this,this.v5_1=new I_(1993859828,793161749)}function Wi(){return null==_&&new Yi,_}function Gi(){}function Ki(){l=this}function Ji(){return null==l&&new Ki,l}function Xi(){}function Zi(){}function Qi(t,n){var i,e=t.d6(n.r());if(e===ie())i=n;else{var r,s=e.y5(Ji());if(null==s)r=new oe(e,n);else{var o=e.d6(Ji());r=o===ie()?new oe(n,s):new oe(new oe(o,n),s)}i=r}return i}function te(){}function ne(){f=this,this.g6_1=new I_(0,0)}function ie(){return null==f&&new ne,f}function ee(t){for(var n=t,i=2;;){var e=n.h6_1,r=e instanceof oe?e:null;if(null==r)return i;n=r,i=i+1|0}}function re(t,n){return p_(t.y5(n.r()),n)}function se(t,n){return 0===u_(t)?d_(n):t+", "+n}function oe(t,n){this.h6_1=t,this.i6_1=n}function ue(t,n){this.z5_1=n;var i;i=t instanceof ue?t.a6_1:t,this.a6_1=i}function ae(t){this.j6_1=t}function he(){return function(){if(v)return $o();v=!0,c=new _e("COROUTINE_SUSPENDED",0),new _e("UNDECIDED",1),new _e("RESUMED",2)}(),c}function _e(t,n){Uh.call(this,t,n)}function le(t,n,i){var e;if(i>0)e=t>=n?n:n-fe(n,t,i)|0;else{if(!(i<0))throw nf("Step is zero.");e=t<=n?n:n+fe(t,n,0|-i)|0}return e}function fe(t,n,i){return ce(ce(t,i)-ce(n,i)|0,i)}function ce(t,n){var i=t%n|0;return i>=0?i:i+n|0}function ve(){w=this,this.t_1=new de(1,0)}function we(){return null==w&&new ve,w}function de(t,n){we(),ke.call(this,t,n,1)}function pe(){d=this,this.p6_1=new me(1,0)}function me(t,n){null==d&&new pe,xe.call(this,t,n,1)}function ge(t,n,i){di.call(this),this.w6_1=i,this.x6_1=n,this.y6_1=this.w6_1>0?t<=n:t>=n,this.z6_1=this.y6_1?t:this.x6_1}function $e(t,n,i){pi.call(this),this.a7_1=i;var e;e=zh(n),this.b7_1=e,this.c7_1=this.a7_1>0?jh(t,n)<=0:jh(t,n)>=0;var r;r=this.c7_1?zh(t):this.b7_1,this.d7_1=r}function ye(){p=this}function be(){return null==p&&new ye,p}function ke(t,n,i){if(be(),0===i)throw nf("Step must be non-zero.");if(i===zo().MIN_VALUE)throw nf("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.y_1=t,this.z_1=le(t,n,i),this.a1_1=i}function je(){m=this}function xe(t,n,i){if(null==m&&new je,0===i)throw nf("Step must be non-zero.");if(i===zo().MIN_VALUE)throw nf("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.t6_1=t;var e,r=zh(t);e=zh(n),this.u6_1=ul(le(r,e,i)),this.v6_1=i}function ze(){}function Ee(t,n){this.f7_1=t,this.g7_1=n}function Ce(){}function Se(t,n,i){null!=i?t.b(i(n)):null==n||kl(n)?t.b(n):n instanceof qh?t.k7(n.j7_1):t.b(Hh(n))}function qe(t,n,i){if(i=i!==jt&&i,p_(new qh(t),new qh(n)))return!0;if(!i)return!1;var e=Sa(t),r=Sa(n);return!!p_(new qh(e),new qh(r))||p_(new qh(s_(Eh(e).toLowerCase(),0)),new qh(s_(Eh(r).toLowerCase(),0)))}function Oe(t){return 0===u_(t)?Ae:(n=t,function(t){return n+t});var n}function Ie(t){var n;t:{var i=0,e=u_(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!qa(s_(t,r))){n=r;break t}}while(i<=e);n=-1}var s=n;return-1===s?t.length:s}function Ae(t){return t}function Te(t){return function(t,n){Oa(n);var i,e,r,s=t.length;if(0===s)return null;var o=s_(t,0);if(jh(o,48)<0){if(1===s)return null;if(i=1,p_(new qh(o),new qh(45)))e=!0,O_(),r=new I_(0,-2147483648);else{if(!p_(new qh(o),new qh(43)))return null;e=!1,O_(),r=new I_(-1,2147483647).l7()}}else i=0,e=!1,O_(),r=new I_(-1,2147483647).l7();O_();var u=new I_(-1,2147483647).l7().m7(new I_(36,0)),a=u,h=new I_(0,0),_=i;if(_bo().MAX_VALUE?null:el(e)}(t,10)}function Pe(t){return function(t,n){var i=Me(t,n);if(null==i)return null;var e=i;return ejo().MAX_VALUE?null:sl(e)}(t,10)}function Le(t){return u_(t)-1|0}function Fe(t,n,i,e){var r;if(i=i===jt?0:i,(e=e!==jt&&e)||"string"!=typeof t)r=Ye(t,Xh([n]),i,e);else{var s=t,o=Eh(n);r=s.indexOf(o,i)}return r}function Ue(t){return function(t,n,i,e){return wn(Ke(t,n,jt,i=i!==jt&&i,e=e===jt?0:e),(r=t,function(t){return Ge(r,t)}));var r}(t,["\r\n","\n","\r"])}function He(t,n,i){return Fe(t,n,jt,i=i!==jt&&i)>=0}function Ve(t,n,i,e){var r;if(i=i===jt?Le(t):i,(e=e!==jt&&e)||"string"!=typeof t)r=function(t,n,i,e){if(i=i===jt?Le(t):i,!(e=e!==jt&&e)&&1===n.length&&"string"==typeof t){var r=t,s=Eh(Rt(n));return r.lastIndexOf(s,i)}var o=cn(i,Le(t));if(0<=o)do{var u=o;o=o+-1|0;var a,h=s_(t,u);t:{for(var _=n,l=0,f=_.length;l0&&qe(s_(t,0),n,i)}function Ye(t,n,i,e){if(i=i===jt?0:i,!(e=e!==jt&&e)&&1===n.length&&"string"==typeof t){var r=t,s=Eh(Rt(n));return r.indexOf(s,i)}var o=fn(i,0),u=Le(t);if(o<=u)do{var a=o;o=o+1|0;var h,_=s_(t,a);t:{for(var l=n,f=0,c=l.length;f0,a=tu(u?cn(e,10):10);t:do{var h;if(h=d_(a_(t,r,s)),a.a(h),r=s+n.length|0,u&&a.g()===(e-1|0))break t;s=Ze(t,n,r,i)}while(-1!==s);return o=d_(a_(t,r,u_(t))),a.a(o),a}function Ge(t,n){return d_(a_(t,n.n6(),n.o6()+1|0))}function Ke(t,n,i,e,r){return i=i===jt?0:i,e=e!==jt&&e,Xe(r=r===jt?0:r),new nr(t,i,r,(s=Ml(n),o=e,function(t,n){var i=function(t,n,i,e,r){if(!e&&1===n.g()){var s=sn(n),o=r?er(t,s,i):Ze(t,s,i);return o<0?null:es(o,s)}var u=r?ln(cn(i,Le(t)),0):hl(fn(i,0),u_(t));if("string"==typeof t){var a=u.y_1,h=u.z_1,_=u.a1_1;if(_>0&&a<=h||_<0&&h<=a)do{var l,f=a;a=a+_|0;t:{for(var c=n.d();c.e();){var v=c.f();if(Ja(v,0,t,f,v.length,e)){l=v;break t}}l=null}if(null!=l)return es(f,l)}while(f!==h)}else{var w=u.y_1,d=u.z_1,p=u.a1_1;if(p>0&&w<=d||p<0&&d<=w)do{var m,g=w;w=w+p|0;t:{for(var $=n.d();$.e();){var y=$.f();if(Je(y,0,t,g,y.length,e)){m=y;break t}}m=null}if(null!=m)return es(g,m)}while(g!==d)}return null}(t,s,n,o,!1);return null==i?null:es(i.b4_1,i.c4_1.length)}));var s,o}function Je(t,n,i,e,r,s){if(e<0||n<0||n>(u_(t)-r|0)||e>(u_(i)-r|0))return!1;var o=0;if(o=0))throw nf(d_("Limit must be non-negative, but was "+t))}function Ze(t,n,i,e){return i=i===jt?0:i,(e=e!==jt&&e)||"string"!=typeof t?ir(t,n,i,u_(t),e):t.indexOf(n,i)}function Qe(t){if(t.s7_1<0)t.q7_1=0,t.t7_1=null;else{var n;if(t.v7_1.y7_1>0){var i=t;i.u7_1=i.u7_1+1|0,n=i.u7_1>=t.v7_1.y7_1}else n=!1;if(n||t.s7_1>u_(t.v7_1.w7_1))t.t7_1=hl(t.r7_1,Le(t.v7_1.w7_1)),t.s7_1=-1;else{var e=t.v7_1.z7_1(t.v7_1.w7_1,t.s7_1);if(null==e)t.t7_1=hl(t.r7_1,Le(t.v7_1.w7_1)),t.s7_1=-1;else{var r=e,s=r.d4(),o=r.e4();t.t7_1=hn(t.r7_1,s),t.r7_1=s+o|0,t.s7_1=t.r7_1+(0===o?1:0)|0}}t.q7_1=1}}function tr(t){this.v7_1=t,this.q7_1=-1,this.r7_1=vn(t.x7_1,0,u_(t.w7_1)),this.s7_1=this.r7_1,this.t7_1=null,this.u7_1=0}function nr(t,n,i,e){this.w7_1=t,this.x7_1=n,this.y7_1=i,this.z7_1=e}function ir(t,n,i,e,r,s){var o=(s=s!==jt&&s)?ln(cn(i,Le(t)),fn(e,0)):hl(fn(i,0),cn(e,u_(t)));if("string"==typeof t&&"string"==typeof n){var u=o.y_1,a=o.z_1,h=o.a1_1;if(h>0&&u<=a||h<0&&a<=u)do{var _=u;if(u=u+h|0,Ja(n,0,t,_,u_(n),r))return _}while(_!==a)}else{var l=o.y_1,f=o.z_1,c=o.a1_1;if(c>0&&l<=f||c<0&&f<=l)do{var v=l;if(l=l+c|0,Je(n,0,t,v,u_(n),r))return v}while(v!==f)}return-1}function er(t,n,i,e){return i=i===jt?Le(t):i,(e=e!==jt&&e)||"string"!=typeof t?ir(t,n,i,0,e,!0):t.lastIndexOf(n,i)}function rr(t){return dn(Ue(t))}function sr(t,n,i){return i=i===jt?32:i,d_(function(t,n,i){if(i=i===jt?32:i,n<0)throw nf("Desired length "+n+" is less than zero.");if(n<=u_(t))return a_(t,0,u_(t));var e=xa(n),r=1,s=n-u_(t)|0;if(r<=s)do{var o=r;r=r+1|0,e.k7(i)}while(o!==s);return e.b(t),e}(kl(t)?t:z_(),n,i))}function or(t){if(ar(t)){var n=new I_(387905,-1073741824),i=new I_(-387905,1073741823),e=ur(t);if(!(n.w(e)<=0&&e.w(i)<=0))throw Af(d_(ur(t))+" ns is out of nanoseconds range")}else{var r=new I_(1,-1073741824),s=new I_(-1,1073741823),o=ur(t);if(!(r.w(o)<=0&&o.w(s)<=0))throw Af(d_(ur(t))+" ms is out of milliseconds range");var u=new I_(1108857478,-1074),a=new I_(-1108857478,1073),h=ur(t);if(u.w(h)<=0&&h.w(a)<=0)throw Af(d_(ur(t))+" ms is denormalized")}return t}function ur(t){return t.b8(1)}function ar(t){return 0==(1&t.c8())}function hr(t){return 1==(1&t.c8())}function _r(){g=this,this.d8_1=or(new I_(0,0)),this.e8_1=xr(new I_(-1,1073741823)),this.f8_1=xr(new I_(1,-1073741824))}function lr(){return null==g&&new _r,g}function fr(t){return n=ur(t).l7(),i=1&t.c8(),or(n.q8(1).o7(al(i)));var n,i}function cr(t,n){if(dr(t)){if(function(t){return!dr(t)}(n)||t.h8(n).w(new I_(0,0))>=0)return t;throw nf("Summing infinite durations of different signs yields an undefined result.")}if(dr(n))return n;var i,e,r;if((1&t.c8())==(1&n.c8())){var s=ur(t).o7(ur(n));i=ar(t)?(e=s,r=new I_(387905,-1073741824),e.w(new I_(-387905,1073741823))<=0&&r.w(e)<=0?Or(e):xr(Sr(e))):Cr(s)}else i=hr(t)?vr(0,ur(t),ur(n)):vr(0,ur(n),ur(t));return i}function vr(t,n,i){var e,r=Sr(i),s=n.o7(r),o=new I_(1108857478,-1074);if(s.w(new I_(-1108857478,1073))<=0&&o.w(s)<=0){var u=i.p7(qr(r));e=Or(qr(s).o7(u))}else e=xr(_n(s,new I_(1,-1073741824),new I_(-1,1073741823)));return e}function wr(t){return t.w(new I_(0,0))<0}function dr(t){return!!t.equals(lr().e8_1)||t.equals(lr().f8_1)}function pr(t,n){var i=t.h8(n);if(i.w(new I_(0,0))<0||0==(1&i.c8()))return t.w(n);var e=(1&t.c8())-(1&n.c8())|0;return wr(t)?0|-e:e}function mr(t){return dr(t)?0:function(t){return yr(t,gh())}(t).j8(new I_(24,0)).c8()}function gr(t){return dr(t)?0:function(t){return yr(t,mh())}(t).j8(new I_(60,0)).c8()}function $r(t){return dr(t)?0:function(t){return yr(t,ph())}(t).j8(new I_(60,0)).c8()}function yr(t,n){var i,e=t;return e.equals(lr().e8_1)?(O_(),i=new I_(-1,2147483647)):e.equals(lr().f8_1)?(O_(),i=new I_(0,-2147483648)):i=ch(ur(t),function(t){return ar(t)?wh():dh()}(t),n),i}function br(t){var n,i=t;if(i.equals(new I_(0,0)))n="0s";else if(i.equals(lr().e8_1))n="Infinity";else if(i.equals(lr().f8_1))n="-Infinity";else{var e=wr(t),r=Ea();e&&r.k7(45);var s=function(t){return wr(t)?fr(t):t}(t),o=function(t){return yr(t,$h())}(s),u=mr(s),a=gr(s),h=$r(s),_=function(t){return dr(t)?0:hr(t)?qr(ur(t).j8(new I_(1e3,0))).c8():ur(t).j8(new I_(1e9,0)).c8()}(s),l=!o.equals(new I_(0,0)),f=!(0===u),c=!(0===a),v=0!==h||!(0===_),w=0;if(l&&(r.k8(o).k7(100),w=w+1|0),f||l&&(c||v)){var d=w;w=d+1|0,d>0&&r.k7(32),r.k8(u).k7(104)}if(c||v&&(f||l)){var p=w;w=p+1|0,p>0&&r.k7(32),r.k8(a).k7(109)}if(v){var m=w;w=m+1|0,m>0&&r.k7(32),0!==h||l||f||c?kr(r,0,h,_,9,"s",!1):_>=1e6?kr(r,0,_/1e6|0,_%1e6|0,6,"ms",!1):_>=1e3?kr(r,0,_/1e3|0,_%1e3|0,3,"us",!1):r.k8(_).l8("ns")}e&&w>1&&(r.m8(1,40).k7(41),$o()),n=r.toString()}return n}function kr(t,n,i,e,r,s,o){if(t.k8(i),0!==e){t.k7(46);var u,a=sr(e.toString(),r,48);t:{var h=u_(a)-1|0;if(0<=h)do{var _=h;if(h=h+-1|0,!p_(new qh(s_(a,_)),new qh(48))){u=_;break t}}while(0<=h);u=-1}var l=u+1|0;!o&&l<3?t.n8(a,0,l):t.n8(a,0,St((l+2|0)/3|0,3))}t.l8(s)}function jr(t){lr(),this.i8_1=t}function xr(t){return or(t.q8(1).o7(new I_(1,0)))}function zr(t,n){var i=vh(new I_(-387905,1073741823),wh(),n);return i.l7().w(t)<=0&&t.w(i)<=0?Or(vh(t,n,wh())):xr(_n(ch(t,n,dh()),new I_(1,-1073741824),new I_(-1,1073741823)))}function Er(t,n){var i=fh(t,n,wh());if(Uu(i))throw nf(d_("Duration value cannot be NaN."));var e=Fu(i),r=new I_(387905,-1073741824);return e.w(new I_(-387905,1073741823))<=0&&r.w(e)<=0?Or(e):Cr(Fu(fh(t,n,dh())))}function Cr(t){var n=new I_(1108857478,-1074);return t.w(new I_(-1108857478,1073))<=0&&n.w(t)<=0?Or(qr(t)):xr(_n(t,new I_(1,-1073741824),new I_(-1,1073741823)))}function Sr(t){return t.m7(al(1e6))}function qr(t){return t.n7(al(1e6))}function Or(t){return or(t.q8(1))}function Ir(t){var n,i,e=t.length,r=0;if(e>0&&He("+-",s_(t,0))&&(r=r+1|0),(e-r|0)>16){var s;t:{var o=hl(r,Le(t));if(pl(o,Ih)&&o.m())s=!0;else{var u=o.y_1,a=o.z_1;if(u<=a)do{var h=u;u=u+1|0;var _=s_(t,h);if(!(48<=_&&_<=57)){s=!1;break t}}while(h!==a);s=!0}}n=s}else n=!1;return n?(p_(new qh(s_(t,0)),new qh(45))?(O_(),i=new I_(0,-2147483648)):(O_(),i=new I_(-1,2147483647)),i):Ka(t,"+")?Ia(bn(t,1)):Ia(t)}function Ar(t,n){var i;if(n){var e,r=t;if(p_(new qh(r),new qh(72)))e=gh();else if(p_(new qh(r),new qh(77)))e=mh();else{if(!p_(new qh(r),new qh(83)))throw nf("Invalid duration ISO time unit: "+new qh(t));e=ph()}i=e}else{if(!p_(new qh(t),new qh(68)))throw nf("Invalid or unsupported duration ISO non-time unit: "+new qh(t));i=$h()}return i}function Tr(t){var n;switch(t){case"ns":n=wh();break;case"us":_h(),n=Z;break;case"ms":n=dh();break;case"s":n=ph();break;case"m":n=mh();break;case"h":n=gh();break;case"d":n=$h();break;default:throw nf("Unknown duration unit short name: "+t)}return n}function Dr(){return Pr(),$}function Mr(){}function Nr(t){this.s8_1=t}function Rr(t,n){Mr.call(this),this.t8_1=yl(t,2)?t:z_(),this.u8_1=n,this.v8_1=pl(this,Gi)?this:z_(),this.w8_1=Dr()}function Pr(){var t;y||(y=!0,Jr(),t=he(),$=t)}function Lr(){if(j)return $o();j=!0,new Fr("SYNCHRONIZED",0),b=new Fr("PUBLICATION",1),k=new Fr("NONE",2)}function Fr(t,n){Uh.call(this,t,n)}function Ur(t){this.a9_1=t,this.b9_1=Vr()}function Hr(){x=this}function Vr(){return null==x&&new Hr,x}function Br(t){return t}function Yr(t){return t}function Wr(t){return t instanceof Xr}function Gr(t){return t instanceof Xr?t.d9_1:null}function Kr(){z=this}function Jr(){return null==z&&new Kr,z}function Xr(t){this.d9_1=t}function Zr(t){Jr(),this.e9_1=t}function Qr(t){return new Xr(t)}function ts(t){if(t instanceof Xr)throw t.d9_1}function ns(t){zf(t=t===jt?"An operation is not implemented.":t,this),$_(this,ns)}function is(t,n){this.b4_1=t,this.c4_1=n}function es(t,n){return new is(t,n)}function rs(t,n,i){this.f9_1=t,this.g9_1=n,this.h9_1=i}function ss(t){return t}function os(t){return t}function us(){E=this,this.i9_1=0,this.j9_1=-1,this.k9_1=1,this.l9_1=8}function as(){return null==E&&new us,E}function hs(t,n){return f_(255&t,255&n)}function _s(t){as(),this.m9_1=t}function ls(t){return t}function fs(t){return t}function cs(t){return t.length}function vs(t){this.o9_1=t,this.p9_1=0}function ws(t,n){return($l(new _s(n))?new _s(n):z_())instanceof _s&&Vt(t,n)}function ds(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof _s&&Vt(t,s.m9_1))){i=!1;break t}}i=!0}}return i}function ps(t){this.r9_1=t}function ms(t){return t}function gs(t){return t}function $s(){C=this,this.u9_1=0,this.v9_1=-1,this.w9_1=4,this.x9_1=32}function ys(){return null==C&&new $s,C}function bs(t,n){return lo(t,n)}function ks(t){ys(),this.y9_1=t}function js(t){return t}function xs(t){return t}function zs(t){return t.length}function Es(t){this.ba_1=t,this.ca_1=0}function Cs(t,n){return($l(new ks(n))?new ks(n):z_())instanceof ks&&Ut(t,n)}function Ss(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof ks&&Ut(t,s.y9_1))){i=!1;break t}}i=!0}}return i}function qs(t){this.ea_1=t}function Os(){S=this;ys();ys(),this.ha_1=new Is(-1,0)}function Is(t,n){null==S&&new Os,Ts.call(this,t,n,1)}function As(){q=this}function Ts(t,n,i){if(null==q&&new As,0===i)throw nf("Step must be non-zero.");if(i===zo().MIN_VALUE)throw nf("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.la_1=t,this.ma_1=function(t,n,i){var e;if(i>0){var r;if(lo(t,n)>=0)r=n;else r=n-Js(n,t,i)|0;e=r}else{if(!(i<0))throw nf("Step is zero.");var s;if(lo(t,n)<=0)s=n;else s=n+Js(t,n,0|-i)|0;e=s}return e}(t,n,i),this.na_1=i}function Ds(t,n,i){this.oa_1=n;var e;e=i>0?lo(t,n)<=0:lo(t,n)>=0,this.pa_1=e;var r;r=i,this.qa_1=r,this.ra_1=this.pa_1?t:this.oa_1}function Ms(t){return t}function Ns(t){return t}function Rs(){O=this,this.sa_1=new I_(0,0),this.ta_1=new I_(-1,-1),this.ua_1=8,this.va_1=64}function Ps(){return null==O&&new Rs,O}function Ls(t,n){return co(t,n)}function Fs(t){return function(t,n){if(t.w(new I_(0,0))>=0)return Wf(t,n);var i,e=t.qb(1).m7(al(n)).q8(1);i=e.n7(al(n));var r=t.p7(i);return r.w(al(n))>=0&&(r=r.p7(al(n)),e=e.o7(new I_(1,0))),Wf(e,n)+Wf(r,n)}(t,10)}function Us(t){Ps(),this.wa_1=t}function Hs(t){return t}function Vs(t){return t}function Bs(t){return t.length}function Ys(t){this.ya_1=t,this.za_1=0}function Ws(t,n){return($l(new Us(n))?new Us(n):z_())instanceof Us&&Ft(t,n)}function Gs(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof Us&&Ft(t,s.wa_1))){i=!1;break t}}i=!0}}return i}function Ks(t){this.bb_1=t}function Js(t,n,i){var e,r=fo(t,i),s=fo(n,i);return lo(r,s)>=0?e=r-s|0:e=(r-s|0)+i|0,e}function Xs(t){return t}function Zs(t){return t}function Qs(){I=this,this.eb_1=0,this.fb_1=-1,this.gb_1=2,this.hb_1=16}function to(){return null==I&&new Qs,I}function no(t,n){return f_(65535&t,65535&n)}function io(t){to(),this.ib_1=t}function eo(t){return t}function ro(t){return t}function so(t){return t.length}function oo(t){this.kb_1=t,this.lb_1=0}function uo(t,n){return($l(new io(n))?new io(n):z_())instanceof io&&Ht(t,n)}function ao(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof io&&Ht(t,s.ib_1))){i=!1;break t}}i=!0}}return i}function ho(t){this.nb_1=t}function _o(t,n){Oa(n);var i=t.length;if(0===i)return null;ys();var e,r=s_(t,0);if(jh(r,48)<0){if(1===i||!p_(new qh(r),new qh(43)))return null;e=1}else e=0;var s,o,u,a=119304647,h=a,_=n,l=0,f=e;if(f0){if(h!==a)return null;if(lo(l,(s=_,o=void 0,u=void 0,u=al(-1).z9(new I_(-1,0)),o=al(s).z9(new I_(-1,0)),h=u.m7(o).c8()))>0)return null}var w=l=St(l,_);if(lo(l=l+v|0,w)<0)return null}while(f=0)return i.m7(e);var r=i.qb(1).m7(e).q8(1),s=co(i.p7(r.n7(e)),e)>=0?1:0;return r.o7(al(s))}function wo(){}function po(){}function mo(){}function go(){A=this}function $o(){return null==A&&new go,A}function yo(){T=this,this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1,this.SIZE_BITS=8}function bo(){return null==T&&new yo,T}function ko(){D=this,this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYTES=2,this.SIZE_BITS=16}function jo(){return null==D&&new ko,D}function xo(){M=this,this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function zo(){return null==M&&new xo,M}function Eo(){N=this,this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Co(){return null==N&&new Eo,N}function So(){R=this,this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e292,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=8,this.SIZE_BITS=64}function qo(){return null==R&&new So,R}function Oo(){P=this}function Io(){L=this}function Ao(t){for(var n=[],i=t.d();i.e();)n.push(i.f());return n}function To(t){return 0===(n=[t]).length?Qo():nu(new ei(n,!0));var n}function Do(t){return Lt(n=[t],du(n.length));var n}function Mo(t){return t}function No(t){return t<0&&function(){throw Nf("Index overflow has happened.")}(),t}function Ro(t,n){!function(t,n){if(t.g()<=1)return $o();var i=Lo(t);ru(i,n);var e=0,r=i.length;if(e=a)return!1}while(r=0))throw nf(d_("Negative initial capacity: "+t));if(!(n>=0))throw nf(d_("Non-positive load factor: "+n));return i}function cu(t){return function(t,n){return fu(t,0,n),n}(t,b_(y_(vu)))}function vu(){this.ld_1=null}function wu(t,n,i){return Zo.call(i),mu.call(i),i.od_1=function(t,n){return fu(t,n,b_(y_(vu)))}(t,n),i}function du(t){return function(t,n){return wu(t,0,n),n}(t,b_(y_(mu)))}function pu(t,n){return Zo.call(n),mu.call(n),n.od_1=t,n}function mu(){}function gu(t,n){var i=yu(t,t.xd_1.cd(n));if(null==i)return null;var e=i;if(null!=e&&gl(e))return $u(e,t,n);var r=e;return t.xd_1.bd(r.r(),n)?r:null}function $u(t,n,i){var e;t:{for(var r=t,s=0,o=r.length;snew I_(-1,2147483647).ve()?(O_(),n=new I_(-1,2147483647)):(O_(),t1?t:s_(n,0)}function qa(t){return function(t){var n;return 9<=(n=zh(t))&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(t)}function Oa(t){if(!(2<=t&&t<=36))throw nf("radix "+t+" was not in valid range 2..36");return t}function Ia(t){var n,i=Te(t);return null==i?Ne(t):n=i,n}function Aa(t){var n=+t;return(Uu(n)&&!Da(t)||0===n&&Ga(t))&&Ne(t),n}function Ta(t,n){var i,e,r,s=jh(t,48)>=0&&jh(t,57)<=0?xh(t,48):jh(t,65)>=0&&jh(t,90)<=0?xh(t,65)+10|0:jh(t,97)>=0&&jh(t,122)<=0?xh(t,97)+10|0:jh(t,128)<0?-1:jh(t,65313)>=0&&jh(t,65338)<=0?xh(t,65313)+10|0:jh(t,65345)>=0&&jh(t,65370)<=0?xh(t,65345)+10|0:(i=zh(t),e=Ll(Ul().aj_1,i),(r=i-Ul().aj_1[e]|0)<10?r:-1);return s>=n?-1:s}function Da(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":return!0;default:return!1}}function Ma(){W=this,this.pg_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.qg_1=new RegExp("[\\\\$]","g"),this.rg_1=new RegExp("\\$","g")}function Na(){return null==W&&new Ma,W}function Ra(t){return t.f()}function Pa(t,n){Na(),this.ug_1=t,this.vg_1=Kt(n),this.wg_1=new RegExp(t,Wt(n,"","gu",jt,jt,jt,Ua)),this.xg_1=null,this.yg_1=null}function La(t){this.eh_1=t}function Fa(t,n,i,e){t.lastIndex=i;var r=t.exec(n);return null==r?null:new Va(hl(r.index,t.lastIndex-1|0),r,e,n)}function Ua(t){return t.hh_1}function Ha(t,n){this.ih_1=t,this.jh_1=n,xn.call(this)}function Va(t,n,i,e){this.nh_1=t,this.oh_1=n,this.ph_1=i,this.qh_1=e,this.kh_1=t,this.lh_1=new Ha(n,this),this.mh_1=null}function Ba(t){this.rh_1=t}function Ya(t,n){return Wa(),function(t,n,i){if(i=i!==jt&&i,Wa(),i){var e=t.length,r=n.length,s=Math.min(e,r);if(0===s)return e-r|0;var o=0;if(o=0&&i<=t.length&&n<=i))throw nf(d_("Failed requirement."));for(var r=n,s=Ea();r=0)s.k7(ul(u));else if(u>>5==-2){var a=nh(t,u,r,i,e);a<=0?(s.k7(65533),r=r+(0|-a)|0):(s.k7(ul(a)),r=r+1|0)}else if(u>>4==-2){var h=ih(t,u,r,i,e);h<=0?(s.k7(65533),r=r+(0|-h)|0):(s.k7(ul(h)),r=r+2|0)}else if(u>>3==-2){var _=eh(t,u,r,i,e);if(_<=0)s.k7(65533),r=r+(0|-_)|0;else{var l=(_-65536|0)>>10|55296,f=1023&_|56320;s.k7(ul(l)),s.k7(ul(f)),r=r+3|0}}else rh(0,r,e),s.k7(65533)}return s.toString()}function th(t,n,i,e,r){return sh(),!(55296<=n&&n<=56319)||i>=e?rh(0,i,r):56320<=(s=zh(s_(t,i)))&&s<=57343?65536+((1023&n)<<10)|0|1023&s:rh(0,i,r);var s}function nh(t,n,i,e,r){if(sh(),0==(30&n)||i>=e)return rh(0,i,r);var s=t[i];return 128!=(192&s)?rh(0,i,r):n<<6^s^3968}function ih(t,n,i,e,r){if(sh(),i>=e)return rh(0,i,r);var s=t[i];if(0==(15&n)){if(160!=(224&s))return rh(0,i,r)}else if(13==(15&n)){if(128!=(224&s))return rh(0,i,r)}else if(128!=(192&s))return rh(0,i,r);if((i+1|0)===e)return rh(1,i,r);var o=t[i+1|0];return 128!=(192&o)?rh(1,i,r):n<<12^s<<6^o^-123008}function eh(t,n,i,e,r){sh(),i>=e&&rh(0,i,r);var s=t[i];if(0==(15&n)){if((240&s)<=128)return rh(0,i,r)}else if(4==(15&n)){if(128!=(240&s))return rh(0,i,r)}else{if((15&n)>4)return rh(0,i,r);if(128!=(192&s))return rh(0,i,r)}if((i+1|0)===e)return rh(1,i,r);var o=t[i+1|0];if(128!=(192&o))return rh(1,i,r);if((i+2|0)===e)return rh(2,i,r);var u=t[i+2|0];return 128!=(192&u)?rh(2,i,r):n<<18^s<<12^o<<6^u^3678080}function rh(t,n,i){if(sh(),i)throw new ja("Malformed sequence starting at "+(n-1|0));return 0|-t}function sh(){if(J);else{J=!0;var t=new Int8Array([-17,-65,-67]);K=t}}function oh(t){return(new hh).xh(t)}function uh(t,n,i,e){if(!ah(t,n,i,e))return $o();for(var r=t.cause;null!=r;){if(!ah(r,n,i,"Caused by: "))return $o();r=r.cause}}function ah(t,n,i,e){n.th_1.l8(i).l8(e);var r=t.toString();if(function(t,n){var i;t:{for(var e=t.uh_1,r=0,s=e.length;r0&&p_(new qh(s_(n,Le(n)-(s-1|0)|0)),new qh(32));)s=s-1|0;return $n(n,s)+"... and "+(e-1|0)+" more common stack frames skipped"}(n,o,a),u_(i)>0){var h;if(0===a)h=0;else{for(var _=0,l=r,f=0,c=l.length;f=w&&n.th_1.l8(i),n.th_1.l8(m).l8("\n")}}else n.th_1.l8(o).l8("\n")}else n.th_1.l8(r).l8("\n");var $=function(t){var n=t._suppressed,i=null==n?null:n;return null==i?Kn():i}(t);if(!$.m())for(var y=i+" ",b=$.d();b.e();)uh(b.f(),n,y,"Suppressed: ");return!0}function hh(){var t;this.th_1=Ea(),t=[],this.uh_1=t,this.vh_1="",this.wh_1=0}function _h(){if(rt)return $o();rt=!0,X=new lh("NANOSECONDS",0,1),Z=new lh("MICROSECONDS",1,1e3),Q=new lh("MILLISECONDS",2,1e6),tt=new lh("SECONDS",3,1e9),nt=new lh("MINUTES",4,6e10),it=new lh("HOURS",5,36e11),et=new lh("DAYS",6,864e11)}function lh(t,n,i){Uh.call(this,t,n),this.ai_1=i}function fh(t,n,i){var e=f_(n.ai_1,i.ai_1);return e>0?t*(n.ai_1/i.ai_1):e<0?t/(i.ai_1/n.ai_1):t}function ch(t,n,i){var e,r=f_(n.ai_1,i.ai_1);if(r>0){var s,o=ol(n.ai_1/i.ai_1),u=t.n7(o);u.m7(o).equals(t)?s=u:t.w(new I_(0,0))>0?(O_(),s=new I_(-1,2147483647)):(O_(),s=new I_(0,-2147483648)),e=s}else e=r<0?t.m7(ol(i.ai_1/n.ai_1)):t;return e}function vh(t,n,i){var e=f_(n.ai_1,i.ai_1);return e>0?t.n7(ol(n.ai_1/i.ai_1)):e<0?t.m7(ol(i.ai_1/n.ai_1)):t}function wh(){return _h(),X}function dh(){return _h(),Q}function ph(){return _h(),tt}function mh(){return _h(),nt}function gh(){return _h(),it}function $h(){return _h(),et}function yh(t){this.bi_1=t}function bh(t){return t}function kh(t){return 65535&t}function jh(t,n){return t-n|0}function xh(t,n){return t-n|0}function zh(t){return t}function Eh(t){return String.fromCharCode(t)}function Ch(){st=this,this.di_1=0,this.ei_1=65535,this.fi_1=55296,this.gi_1=56319,this.hi_1=56320,this.ii_1=57343,this.ji_1=55296,this.ki_1=57343,this.li_1=2,this.mi_1=16}function Sh(){return null==st&&new Ch,st}function qh(t){Sh(),this.j7_1=t}function Oh(){}function Ih(){}function Ah(){}function Th(){}function Dh(){}function Mh(){}function Nh(){}function Rh(){}function Ph(){}function Lh(){}function Fh(){ot=this}function Uh(t,n){null==ot&&new Fh,this.k6_1=t,this.l6_1=n}function Hh(t){var n=null==t?null:d_(t);return null==n?"null":n}function Vh(t,n){var i=null==t?null:d_(t),e=null==i?"null":i,r=null==n?null:d_(n);return e+(null==r?"null":r)}function Bh(t){for(var n=1,i=[],e=t,r=0,s=e.length;r>5)|0),w=1<<(31&f),c[v=f>>5]=c[v]|w,c);null!=l&&(i.push(l),u=Math.max(u,l.length)),u>n&&(n=u)}var f,c,v,w;return function(t,n){for(var i=0,e=t,r=new Int32Array(e);i65535),e)throw nf("Invalid Char code: "+r);i=ul(r)}else i=t.sb(n);return i}function o_(t){return"string"==typeof t}function u_(t){return o_(t)?t.length:t.rb()}function a_(t,n,i){return o_(t)?t.substring(n,i):t.tb(n,i)}function h_(t,n){var i=t,e=n;if(i===e)return!0;if(null==i||null==e||!vl(e)||i.length!=e.length)return!1;var r=0,s=i.length;if(rn)i=1;else if(t===n){var e;if(0!==t)e=0;else{var r=1/t;e=r===1/n?0:r<0?-1:1}i=e}else i=t!=t?n!=n?0:1:-1;return i}function v_(t,n){return tn?1:0}function w_(t){if(!("kotlinHashCodeValue$"in t)){var n=0|4294967296*Math.random(),i=new Object;i.value=n,i.enumerable=!1,Object.defineProperty(t,"kotlinHashCodeValue$",i)}return t.kotlinHashCodeValue$}function d_(t){return null==t?"null":vl(t)?"[...]":t.toString()}function p_(t,n){return null==t?null==n:null!=n&&("object"==typeof t&&"function"==typeof t.equals?t.equals(n):t!=t?n!=n:"number"==typeof t&&"number"==typeof n?t===n&&(0!==t||1/t==1/n):t===n)}function m_(t){if(null==t)return 0;var n;switch(typeof t){case"object":n="function"==typeof t.hashCode?t.hashCode():w_(t);break;case"function":n=w_(t);break;case"number":n=e_(t);break;case"boolean":n=t?1:0;break;default:n=g_(String(t))}return n}function g_(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=t.charCodeAt(r);n=St(n,31)+s|0}while(r!==e);return n}function $_(t,n){null!=Error.captureStackTrace?Error.captureStackTrace(t,n):t.stack=(new Error).stack}function y_(t){return t.prototype}function b_(t){return Object.create(t)}function k_(t,n,i){Error.call(t),function(t,n,i){if(!j_(t,"message")){var e;if(null==n){var r;if(null!==n){var s=null==i?null:i.toString();r=null==s?jt:s}else r=jt;e=r}else e=n;t.message=e}j_(t,"cause")||(t.cause=i),t.name=Object.getPrototypeOf(t).constructor.name}(t,n,i)}function j_(t,n){return Object.getPrototypeOf(t).hasOwnProperty(n)}function x_(t){var n;return null==t?function(){throw Pf()}():n=t,n}function z_(){throw Hf()}function E_(t){throw Bf("lateinit property "+t+" has not been initialized")}function C_(t,n){for(var i=t.length,e=n.length,r=0,s=n;rr)for(e.length=n;r>>16|0,e=65535&t.v_1,r=t.u_1>>>16|0,s=65535&t.u_1,o=n.v_1>>>16|0,u=65535&n.v_1,a=n.u_1>>>16|0,h=0,_=0,l=0,f=0;return h=(h=h+((_=(_=_+((l=(l=l+((f=f+(s+(65535&n.u_1)|0)|0)>>>16|0)|0)+(r+a|0)|0)>>>16|0)|0)+(e+u|0)|0)>>>16|0)|0)+(i+o|0)|0,new I_((l&=65535)<<16|(f&=65535),(h&=65535)<<16|(_&=65535))}function L_(t,n){return il(),P_(t,n.l7())}function F_(t,n){if(il(),K_(t))return A_();if(K_(n))return A_();if(B_(t,M_()))return J_(n)?M_():A_();if(B_(n,M_()))return J_(t)?M_():A_();if(G_(t))return G_(n)?F_(X_(t),X_(n)):X_(F_(X_(t),n));if(G_(n))return X_(F_(t,X_(n)));if(Z_(t,N_())&&Z_(n,N_()))return Q_(V_(t)*V_(n));var i=t.v_1>>>16|0,e=65535&t.v_1,r=t.u_1>>>16|0,s=65535&t.u_1,o=n.v_1>>>16|0,u=65535&n.v_1,a=n.u_1>>>16|0,h=65535&n.u_1,_=0,l=0,f=0,c=0;return f=f+((c=c+St(s,h)|0)>>>16|0)|0,c&=65535,l=(l=l+((f=f+St(r,h)|0)>>>16|0)|0)+((f=(f&=65535)+St(s,a)|0)>>>16|0)|0,f&=65535,_=(_=(_=_+((l=l+St(e,h)|0)>>>16|0)|0)+((l=(l&=65535)+St(r,a)|0)>>>16|0)|0)+((l=(l&=65535)+St(s,u)|0)>>>16|0)|0,l&=65535,_=_+(((St(i,h)+St(e,a)|0)+St(r,u)|0)+St(s,o)|0)|0,new I_(f<<16|c,(_&=65535)<<16|l)}function U_(t,n){il();var i=63&n;return 0===i?t:i<32?new I_(t.u_1<>>(32-i|0)|0):new I_(0,t.u_1<<(i-32|0))}function H_(t,n){il();var i=63&n;return 0===i?t:i<32?new I_(t.u_1>>>i|0|t.v_1<<(32-i|0),t.v_1>>i):new I_(t.v_1>>(i-32|0),t.v_1>=0?0:-1)}function V_(t){return il(),4294967296*t.v_1+function(t){return il(),t.u_1>=0?t.u_1:4294967296+t.u_1}(t)}function B_(t,n){return il(),t.v_1===n.v_1&&t.u_1===n.u_1}function Y_(t,n){if(il(),n<2||36=0x8000000000000000)return il(),pt;if(t<0)return X_(Q_(-t));var n=4294967296;return new I_(0|t%n,0|t/n)}function tl(t,n){return il(),R_(t,n)>0}function nl(t,n){return il(),R_(t,n)>=0}function il(){$t||($t=!0,vt=W_(0),wt=W_(1),dt=W_(-1),pt=new I_(-1,2147483647),mt=new I_(0,-2147483648),gt=W_(16777216))}function el(t){return t<<24>>24}function rl(t){return t instanceof I_?t.c8():function(t){return t>2147483647?2147483647:t<-2147483648?-2147483648:0|t}(t)}function sl(t){return t<<16>>16}function ol(t){return t instanceof I_?t:Q_(t)}function ul(t){return kh(sl(rl(t)))}function al(t){return W_(t)}function hl(t,n){return new de(t,n)}function _l(){return ll(),fl(jt,jt,jt,jt)}function ll(){if(bt);else{bt=!0;var t,n=[_l(),_l()],i=[_l(),_l()];t=[_l(),_l()],yt=[n,i,t]}}function fl(t,n,i,e){return cl("class",t,n,i,e,null)}function cl(t,n,i,e,r,s){return{kind:t,simpleName:n,associatedObjectKey:i,associatedObjects:e,suspendArity:r,$kClass$:jt,iid:s}}function vl(t){return!!wl(t)||qt(t)}function wl(t){return Array.isArray(t)}function dl(t,n,i,e,r,s,o,u){null!=e&&(t.prototype=Object.create(e.prototype),t.prototype.constructor=t);var a=i(n,s,o,null==u?[]:u);t.$metadata$=a,null!=r&&((null!=a.iid?t:t.prototype).$imask$=Bh(r))}function pl(t,n){return ml(t,n.$metadata$.iid)}function ml(t,n){var i;return null!=(i=t.$imask$)&&function(t,n){var i=n>>5;if(i>t.length)return!1;var e=1<<(31&n);return!(0==(t[i]&e))}(i,n)}function gl(t){return!!wl(t)&&!t.$type$}function $l(t){var n;switch(typeof t){case"string":case"number":case"boolean":case"function":n=!0;break;default:n=t instanceof Object}return n}function yl(t,n){if("function"==typeof t)return t.$arity===n;if("object"==typeof t&&"$metadata$"in t.constructor){var i=t.constructor.$metadata$.suspendArity;if(null!=i){var e=!1,r=Wh(i);t:for(;r.e();)if(n===r.f()){e=!0;break t}return e}return null!=null&&null}return!1}function bl(t){return"number"==typeof t||t instanceof I_}function kl(t){return"string"==typeof t||pl(t,wo)}function jl(t){return!!wl(t)&&"BooleanArray"===t.$type$}function xl(t){return t instanceof Int8Array}function zl(t){return t instanceof Int16Array}function El(t){return!!(t instanceof Uint16Array)&&"CharArray"===t.$type$}function Cl(t){return t instanceof Int32Array}function Sl(t){return t instanceof Float32Array}function ql(t){return!!wl(t)&&"LongArray"===t.$type$}function Ol(t){return t instanceof Float64Array}function Il(t,n,i,e){return cl("interface",t,n,i,e,function(){null==kt&&(kt=0);var t=Al();return kt=t+1|0,Al()}())}function Al(){if(null!=kt)return kt;E_("iid")}function Tl(t,n,i,e){return cl("object",t,n,i,e,null)}function Dl(t,n){if(n===Object)return $l(t);if(null==t||null==n||"object"!=typeof t&&"function"!=typeof t)return!1;if("function"==typeof n&&t instanceof n)return!0;var i=function(t){return Object.getPrototypeOf(t)}(n),e=null==i?null:i.constructor;if(null!=e&&"$metadata$"in e&&"object"===e.$metadata$.kind)return t===n;var r,s=n.$metadata$;return null==s?t instanceof n:"interface"===s.kind&&null!=(r=s.iid)&&ml(t,r)}function Ml(t){return new eu(t)}function Nl(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Int8Array(n))}function Rl(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),t.fill(n,i,e)}function Pl(t,n,i){for(var e=new Int32Array(i),r=0,s=0,o=0,u=t,a=0,h=u.length;a(s=t[r=(i+e|0)/2|0]))i=r+1|0;else{if(n===s)return r;e=r-1|0}return r-(n=n)throw uf("index: "+t+", size: "+n)},y_(En).m1=function(t,n){if(t<0||t>n)throw uf("index: "+t+", size: "+n)},y_(En).n1=function(t,n,i){if(t<0||n>i)throw uf("fromIndex: "+t+", toIndex: "+n+", size: "+i);if(t>n)throw nf("fromIndex: "+t+" > toIndex: "+n)},y_(En).o1=function(t,n,i){if(t<0||n>i)throw uf("startIndex: "+t+", endIndex: "+n+", size: "+i);if(t>n)throw nf("startIndex: "+t+" > endIndex: "+n)},y_(En).p1=function(t){for(var n=1,i=t.d();i.e();){var e=i.f(),r=St(31,n),s=null==e?null:m_(e);n=r+(null==s?0:s)|0}return n},y_(En).q1=function(t,n){if(t.g()!==n.g())return!1;for(var i=n.d(),e=t.d();e.e();)if(!p_(e.f(),i.f()))return!1;return!0},y_(Sn).d=function(){return new zn(this)},y_(Sn).o=function(t){var n;t:{for(var i=0,e=this.d();e.e();){if(p_(e.f(),t)){n=i;break t}i=i+1|0}n=-1}return n},y_(Sn).equals=function(t){return t===this||!(null==t||!pl(t,Oh))&&Cn().q1(this,t)},y_(Sn).hashCode=function(){return Cn().p1(this)},y_(qn).e=function(){return this.r1_1.e()},y_(qn).f=function(){return this.r1_1.f().r()},y_(On).e=function(){return this.s1_1.e()},y_(On).f=function(){return this.s1_1.f().s()},y_(Tn).t1=function(t){var n=t.r(),i=null==n?null:m_(n),e=null==i?0:i,r=t.s(),s=null==r?null:m_(r);return e^(null==s?0:s)},y_(Tn).u1=function(t){return Hh(t.r())+"="+Hh(t.s())},y_(Tn).v1=function(t,n){return!(null==n||!pl(n,Dh))&&!!p_(t.r(),n.r())&&p_(t.s(),n.s())},y_(Mn).x1=function(t){return this.w1_1.a2(t)},y_(Mn).n=function(t){return!(null!=t&&!$l(t))&&this.x1(null==t||$l(t)?t:z_())},y_(Mn).d=function(){return new qn(this.w1_1.q().d())},y_(Mn).g=function(){return this.w1_1.g()},y_(Nn).d2=function(t){return this.c2_1.e2(t)},y_(Nn).n=function(t){return!(null!=t&&!$l(t))&&this.d2(null==t||$l(t)?t:z_())},y_(Nn).d=function(){return new On(this.c2_1.q().d())},y_(Nn).g=function(){return this.c2_1.g()},y_(Rn).a2=function(t){return!(null==An(this,t))},y_(Rn).e2=function(t){var n;t:{var i=this.q();if(pl(i,Ih)&&i.m())n=!1;else{for(var e=i.d();e.e();)if(p_(e.f().s(),t)){n=!0;break t}n=!1}}return n},y_(Rn).f2=function(t){if(null==t||!pl(t,Dh))return!1;var n=t.r(),i=t.s(),e=(pl(this,Mh)?this:z_()).g2(n);return!(!p_(i,e)||null==e&&!(pl(this,Mh)?this:z_()).a2(n))},y_(Rn).equals=function(t){if(t===this)return!0;if(null==t||!pl(t,Mh))return!1;if(this.g()!==t.g())return!1;var n;t:{var i=t.q();if(pl(i,Ih)&&i.m())n=!0;else{for(var e=i.d();e.e();){var r=e.f();if(!this.f2(r)){n=!1;break t}}n=!0}}return n},y_(Rn).g2=function(t){var n=An(this,t);return null==n?null:n.s()},y_(Rn).hashCode=function(){return m_(this.q())},y_(Rn).m=function(){return 0===this.g()},y_(Rn).g=function(){return this.q().g()},y_(Rn).h2=function(){return null==this.y1_1&&(this.y1_1=new Mn(this)),x_(this.y1_1)},y_(Rn).toString=function(){return Wt(this.q(),", ","{","}",jt,jt,(t=this,function(n){return t.b2(n)}));var t},y_(Rn).b2=function(t){return In(this,t.r())+"="+In(this,t.s())},y_(Rn).i2=function(){return null==this.z1_1&&(this.z1_1=new Nn(this)),x_(this.z1_1)},y_(Pn).j2=function(t){for(var n=0,i=t.d();i.e();){var e=i.f(),r=n,s=null==e?null:m_(e);n=r+(null==s?0:s)|0}return n},y_(Pn).k2=function(t,n){return t.g()===n.g()&&t.i1(n)},y_(Fn).equals=function(t){return t===this||!(null==t||!pl(t,Th))&&Ln().k2(this,t)},y_(Fn).hashCode=function(){return Ln().j2(this)},y_(Yn).s2=function(t,n){var i=t+(t>>1)|0;return(i-n|0)<0&&(i=n),(i-2147483639|0)>0&&(i=n>2147483639?zo().MAX_VALUE:2147483639),i},y_(Gn).g=function(){return this.o2_1},y_(Gn).m=function(){return 0===this.o2_1},y_(Gn).t2=function(){if(this.m())throw jf("ArrayDeque is empty.");var t=this.m2_1,n=this.n2_1[t];return null==n||$l(n)?n:z_()},y_(Gn).u2=function(){var t;if(this.m())t=null;else{var n=this.m2_1,i=this.n2_1[n];t=null==i||$l(i)?i:z_()}return t},y_(Gn).v2=function(t){Un(this,this.o2_1+1|0),this.m2_1=Bn(this,this.m2_1),this.n2_1[this.m2_1]=t;this.o2_1=this.o2_1+1|0},y_(Gn).w2=function(t){Un(this,this.o2_1+1|0);var n=this.n2_1,i=this.o2_1;n[Hn(this,this.m2_1+i|0)]=t;this.o2_1=this.o2_1+1|0},y_(Gn).x2=function(){if(this.m())throw jf("ArrayDeque is empty.");var t=this.m2_1,n=this.n2_1[t],i=null==n||$l(n)?n:z_();this.n2_1[this.m2_1]=null,this.m2_1=Vn(this,this.m2_1);return this.o2_1=this.o2_1-1|0,i},y_(Gn).y2=function(){if(this.m())throw jf("ArrayDeque is empty.");var t=Jn(this),n=Hn(this,this.m2_1+t|0),i=this.n2_1[n],e=null==i||$l(i)?i:z_();this.n2_1[n]=null;return this.o2_1=this.o2_1-1|0,e},y_(Gn).a=function(t){return this.w2(t),!0},y_(Gn).z2=function(t,n){if(Cn().m1(t,this.o2_1),t===this.o2_1)return this.w2(n),$o();if(0===t)return this.v2(n),$o();Un(this,this.o2_1+1|0);var i=Hn(this,this.m2_1+t|0);if(t<(this.o2_1+1|0)>>1){var e=Bn(this,i),r=Bn(this,this.m2_1);if(e>=this.m2_1)this.n2_1[r]=this.n2_1[this.m2_1],Po(this.n2_1,this.n2_1,this.m2_1,this.m2_1+1|0,e+1|0);else Po(this.n2_1,this.n2_1,this.m2_1-1|0,this.m2_1,this.n2_1.length),this.n2_1[this.n2_1.length-1|0]=this.n2_1[0],Po(this.n2_1,this.n2_1,0,1,e+1|0);this.n2_1[e]=n,this.m2_1=r}else{var s=this.o2_1,o=Hn(this,this.m2_1+s|0);if(i=i){var s=this.m2_1,o=this.n2_1.length;if(s>1){if(n>=this.m2_1)Po(this.n2_1,this.n2_1,this.m2_1+1|0,this.m2_1,n);else Po(this.n2_1,this.n2_1,1,0,n),this.n2_1[0]=this.n2_1[this.n2_1.length-1|0],Po(this.n2_1,this.n2_1,this.m2_1+1|0,this.m2_1,this.n2_1.length-1|0);this.n2_1[this.m2_1]=null,this.m2_1=Vn(this,this.m2_1)}else{var r=Jn(this),s=Hn(this,this.m2_1+r|0);if(n<=s)Po(this.n2_1,this.n2_1,n,n+1|0,s+1|0);else Po(this.n2_1,this.n2_1,n,n+1|0,this.n2_1.length),this.n2_1[this.n2_1.length-1|0]=this.n2_1[0],Po(this.n2_1,this.n2_1,0,1,s+1|0);this.n2_1[s]=null}return this.o2_1=this.o2_1-1|0,e},y_(Gn).d3=function(){var t=this.o2_1,n=Hn(this,this.m2_1+t|0);this.m2_1=this.o2_1?t:function(t,n){return Yh(Array(n),null)}(0,this.o2_1),i=gl(n)?n:z_(),e=this.o2_1,r=Hn(this,this.m2_1+e|0);return this.m2_1this.o2_1&&(i[this.o2_1]=null),gl(i)?i:z_()},y_(Gn).f3=function(){var t,n=this.o2_1;return t=Yh(Array(n),null),this.e3(t)},y_(Gn).toArray=function(){return this.f3()},y_(Qn).e=function(){return!1},y_(Qn).f=function(){throw bf()},y_(ni).equals=function(t){return!(null==t||!pl(t,Oh))&&t.m()},y_(ni).hashCode=function(){return 1},y_(ni).toString=function(){return"[]"},y_(ni).g=function(){return 0},y_(ni).m=function(){return!0},y_(ni).l3=function(t){return!1},y_(ni).n=function(t){return!1},y_(ni).m3=function(t){return t.m()},y_(ni).i1=function(t){return this.m3(t)},y_(ni).h=function(t){throw uf("Empty list doesn't contain element at index "+t+".")},y_(ni).n3=function(t){return-1},y_(ni).o=function(t){return-1},y_(ni).d=function(){return ti()},y_(ei).g=function(){return this.o3_1.length},y_(ei).m=function(){return 0===this.o3_1.length},y_(ei).q3=function(t){return Mt(this.o3_1,t)},y_(ei).n=function(t){return!(null!=t&&!$l(t))&&this.q3(null==t||$l(t)?t:z_())},y_(ei).r3=function(t){var n;t:if(pl(t,Ih)&&t.m())n=!0;else{for(var i=t.d();i.e();){var e=i.f();if(!this.q3(e)){n=!1;break t}}n=!0}return n},y_(ei).i1=function(t){return this.r3(t)},y_(ei).d=function(){return Wh(this.o3_1)},y_(si).toString=function(){return"IndexedValue(index="+this.s3_1+", value="+this.t3_1+")"},y_(si).hashCode=function(){var t=this.s3_1;return St(t,31)+(null==this.t3_1?0:m_(this.t3_1))|0},y_(si).equals=function(t){if(this===t)return!0;if(!(t instanceof si))return!1;var n=t instanceof si?t:z_();return this.s3_1===n.s3_1&&!!p_(this.t3_1,n.t3_1)},y_(ui).d=function(){return new ai(this.u3_1())},y_(ai).e=function(){return this.v3_1.e()},y_(ai).f=function(){var t=this.w3_1;return this.w3_1=t+1|0,new si(No(t),this.v3_1.f())},y_(li).equals=function(t){return!(null==t||!pl(t,Mh))&&t.m()},y_(li).hashCode=function(){return 0},y_(li).toString=function(){return"{}"},y_(li).g=function(){return 0},y_(li).m=function(){return!0},y_(li).z3=function(t){return!1},y_(li).a2=function(t){return!(null!=t&&!$l(t))&&this.z3(null==t||$l(t)?t:z_())},y_(li).a4=function(t){return null},y_(li).g2=function(t){return null==t||$l(t)?this.a4(null==t||$l(t)?t:z_()):null},y_(li).q=function(){return Wi()},y_(li).h2=function(){return Wi()},y_(li).i2=function(){return ii()},y_(di).f=function(){return this.h4()},y_(pi).i4=function(){return this.j4()},y_(pi).f=function(){return new qh(this.i4())},y_(yi).e=function(){for(;;){switch(this.l4_1){case 0:break;case 1:if(x_(this.n4_1).e())return this.l4_1=2,!0;this.n4_1=null;break;case 4:return!1;case 3:case 2:return!0;default:throw $i(this)}this.l4_1=5;var t,n=x_(this.o4_1);this.o4_1=null,Jr(),t=$o(),n.p4(t),$o()}},y_(yi).f=function(){switch(this.l4_1){case 0:case 1:return function(t){if(t.e())return t.f();throw bf()}(this);case 2:return this.l4_1=1,x_(this.n4_1).f();case 3:this.l4_1=0;var t=this.m4_1,n=null==t||$l(t)?t:z_();return this.m4_1=null,n;default:throw $i(this)}},y_(yi).k4=function(t,n){this.m4_1=t,this.l4_1=3;var i=n;return this.o4_1=i,he()},y_(yi).q4=function(t){ts(t);null==t||$l(t)||z_(),this.l4_1=4},y_(yi).p4=function(t){return this.q4(t)},y_(yi).r4=function(){return ie()},y_(bi).d=function(){return function(t){var n=new yi;return n.o4_1=Xl(t,n,n),n}(this.s4_1)},y_(ki).f=function(){return this.u4_1.w4_1(this.t4_1.f())},y_(ki).e=function(){return this.t4_1.e()},y_(ji).d=function(){return new ki(this)},y_(ji).x4=function(t){return new Si(this.v4_1,this.w4_1,t)},y_(Ci).f=function(){if(!Ei(this))throw bf();return x_(this.z4_1).f()},y_(Ci).e=function(){return Ei(this)},y_(Si).d=function(){return new Ci(this)},y_(Oi).f=function(){if(-1===this.f5_1&&qi(this),0===this.f5_1)throw bf();var t=this.g5_1;return this.g5_1=null,this.f5_1=-1,null==t||$l(t)?t:z_()},y_(Oi).e=function(){return-1===this.f5_1&&qi(this),1===this.f5_1},y_(Ii).d=function(){return new Oi(this)},y_(Di).f=function(){if(0===this.l5_1)throw bf();var t=this.l5_1;return this.l5_1=t-1|0,this.m5_1.f()},y_(Di).e=function(){return this.l5_1>0&&this.m5_1.e()},y_(Mi).b1=function(t){return t>=this.o5_1?this:new Mi(this.n5_1,t)},y_(Mi).d=function(){return new Di(this)},y_(Ri).f=function(){if(this.q5_1<0&&Ni(this),0===this.q5_1)throw bf();var t=this.p5_1,n=$l(t)?t:z_();return this.q5_1=-1,n},y_(Ri).e=function(){return this.q5_1<0&&Ni(this),1===this.q5_1},y_(Pi).d=function(){return new Ri(this)},y_(Li).d=function(){return ti()},y_(Li).b1=function(t){return Fi()},y_(Ui).d=function(){return this.u5_1},y_(Yi).equals=function(t){return!(null==t||!pl(t,Th))&&t.m()},y_(Yi).hashCode=function(){return 0},y_(Yi).toString=function(){return"[]"},y_(Yi).g=function(){return 0},y_(Yi).m=function(){return!0},y_(Yi).l3=function(t){return!1},y_(Yi).n=function(t){return!1},y_(Yi).m3=function(t){return t.m()},y_(Yi).i1=function(t){return this.m3(t)},y_(Yi).d=function(){return ti()},y_(ne).y5=function(t){return null},y_(ne).e6=function(t,n){return t},y_(ne).f6=function(t){return t},y_(ne).d6=function(t){return this},y_(ne).hashCode=function(){return 0},y_(ne).toString=function(){return"EmptyCoroutineContext"},y_(oe).y5=function(t){for(var n=this;;){var i=n.i6_1.y5(t);if(null!=i)return i;var e=n.h6_1;if(!(e instanceof oe))return e.y5(t);n=e}},y_(oe).e6=function(t,n){return n(this.h6_1.e6(t,n),this.i6_1)},y_(oe).d6=function(t){if(null!=this.i6_1.y5(t))return this.h6_1;var n=this.h6_1.d6(t);return n===this.h6_1?this:n===ie()?this.i6_1:new oe(n,this.i6_1)},y_(oe).equals=function(t){return this===t||!!(t instanceof oe&&ee(t)===ee(this))&&function(t,n){for(var i=n;;){if(!re(t,i.i6_1))return!1;var e=i.h6_1;if(!(e instanceof oe))return re(t,pl(e,Zi)?e:z_());i=e}}(t,this)},y_(oe).hashCode=function(){return m_(this.h6_1)+m_(this.i6_1)|0},y_(oe).toString=function(){return"["+this.e6("",se)+"]"},y_(ue).b6=function(t){return this.z5_1(t)},y_(ue).c6=function(t){return t===this||this.a6_1===t},y_(ae).r=function(){return this.j6_1},y_(de).n6=function(){return this.y_1},y_(de).o6=function(){return this.z_1},y_(de).m=function(){return this.y_1>this.z_1},y_(de).equals=function(t){return t instanceof de&&(!(!this.m()||!t.m())||this.y_1===t.y_1&&this.z_1===t.z_1)},y_(de).hashCode=function(){return this.m()?-1:St(31,this.y_1)+this.z_1|0},y_(de).toString=function(){return this.y_1+".."+this.z_1},y_(me).m=function(){return jh(this.t6_1,this.u6_1)>0},y_(me).equals=function(t){return t instanceof me&&(!(!this.m()||!t.m())||!!p_(new qh(this.t6_1),new qh(t.t6_1))&&p_(new qh(this.u6_1),new qh(t.u6_1)))},y_(me).hashCode=function(){var t,n;return this.m()?t=-1:(n=this.t6_1,t=St(31,n)+this.u6_1|0),t},y_(me).toString=function(){return new qh(this.t6_1)+".."+new qh(this.u6_1)},y_(ge).e=function(){return this.y6_1},y_(ge).h4=function(){var t=this.z6_1;if(t===this.x6_1){if(!this.y6_1)throw bf();this.y6_1=!1}else{this.z6_1=this.z6_1+this.w6_1|0}return t},y_($e).e=function(){return this.c7_1},y_($e).j4=function(){var t=this.d7_1;if(t===this.b7_1){if(!this.c7_1)throw bf();this.c7_1=!1}else{this.d7_1=this.d7_1+this.a7_1|0}return ul(t)},y_(ye).x=function(t,n,i){return new ke(t,n,i)},y_(ke).d=function(){return new ge(this.y_1,this.z_1,this.a1_1)},y_(ke).m=function(){return this.a1_1>0?this.y_1>this.z_1:this.y_10?this.y_1+".."+this.z_1+" step "+this.a1_1:this.y_1+" downTo "+this.z_1+" step "+(0|-this.a1_1)},y_(xe).d=function(){return new $e(this.t6_1,this.u6_1,this.v6_1)},y_(xe).m=function(){return this.v6_1>0?jh(this.t6_1,this.u6_1)>0:jh(this.t6_1,this.u6_1)<0},y_(xe).equals=function(t){return t instanceof xe&&(!(!this.m()||!t.m())||!(!p_(new qh(this.t6_1),new qh(t.t6_1))||!p_(new qh(this.u6_1),new qh(t.u6_1)))&&this.v6_1===t.v6_1)},y_(xe).hashCode=function(){var t;if(this.m())t=-1;else{var n;n=this.t6_1;var i,e=St(31,n);i=this.u6_1,t=St(31,e+i|0)+this.v6_1|0}return t},y_(xe).toString=function(){return this.v6_1>0?new qh(this.t6_1)+".."+new qh(this.u6_1)+" step "+this.v6_1:new qh(this.t6_1)+" downTo "+new qh(this.u6_1)+" step "+(0|-this.v6_1)},y_(Ee).n6=function(){return this.f7_1},y_(Ee).o6=function(){return this.g7_1},y_(Ee).h7=function(t,n){return t<=n},y_(Ee).e7=function(t,n){var i="number"==typeof t?t:z_();return this.h7(i,"number"==typeof n?n:z_())},y_(Ee).i7=function(t){return t>=this.f7_1&&t<=this.g7_1},y_(Ee).q3=function(t){return this.i7("number"==typeof t?t:z_())},y_(Ee).m=function(){return!(this.f7_1<=this.g7_1)},y_(Ee).equals=function(t){return t instanceof Ee&&(!(!this.m()||!t.m())||this.f7_1===t.f7_1&&this.g7_1===t.g7_1)},y_(Ee).hashCode=function(){return this.m()?-1:St(31,e_(this.f7_1))+e_(this.g7_1)|0},y_(Ee).toString=function(){return this.f7_1+".."+this.g7_1},y_(tr).f=function(){if(-1===this.q7_1&&Qe(this),0===this.q7_1)throw bf();var t=this.t7_1,n=t instanceof de?t:z_();return this.t7_1=null,this.q7_1=-1,n},y_(tr).e=function(){return-1===this.q7_1&&Qe(this),1===this.q7_1},y_(nr).d=function(){return new tr(this)},y_(_r).g8=function(t){var n;try{n=function(t,n){var i=t.length;if(0===i)throw nf("The string is empty");var e=0,r=lr().d8_1,s="Infinity",o=s_(t,e);(p_(new qh(o),new qh(43))||p_(new qh(o),new qh(45)))&&(e=e+1|0);var u=e>0,a=!!u&&Be(t,45);if(i<=e)throw nf("No components");if(p_(new qh(s_(t,e)),new qh(80))){if((e=e+1|0)===i)throw Ql();for(var h=!1,_=null;e=0&&p<=Le(t)))throw nf("Missing unit for value "+d);e=e+1|0;var m=Ar(s_(t,p),h);if(null!=_&&_.m6(m)<=0)throw nf("Unexpected order of duration components");_=m;var g=Fe(d,46);m.equals(ph())&&g>0?(r=cr(r,zr(Ir(d.substring(0,g)),m)),r=cr(r,Er(Aa(d.substring(g)),m))):r=cr(r,zr(Ir(d),m))}}else{if(n)throw Ql();var $=i-e|0;if(Ja(t,e,s,0,Math.max($,8),!0))r=lr().e8_1;else{var y=null,b=!1,k=!u;if(u&&p_(new qh(s_(t,e)),new qh(40))&&p_(new qh(gn(t)),new qh(41))&&(k=!0,(e=e+1|0)==(i=i-1|0)))throw nf("No components");for(;e0){if(r=cr(r,zr(Ia(q.substring(0,R)),N)),r=cr(r,Er(Aa(q.substring(R)),N)),e0},y_(Is).equals=function(t){return t instanceof Is&&(!(!this.m()||!t.m())||this.la_1===t.la_1&&this.ma_1===t.ma_1)},y_(Is).hashCode=function(){var t,n;return this.m()?t=-1:(n=this.la_1,t=St(31,n)+this.ma_1|0),t},y_(Is).toString=function(){return new ks(this.la_1)+".."+new ks(this.ma_1)},y_(Ts).d=function(){return new Ds(this.la_1,this.ma_1,this.na_1)},y_(Ts).m=function(){var t;this.na_1>0?t=lo(this.la_1,this.ma_1)>0:t=lo(this.la_1,this.ma_1)<0;return t},y_(Ts).equals=function(t){return t instanceof Ts&&(!(!this.m()||!t.m())||this.la_1===t.la_1&&this.ma_1===t.ma_1&&this.na_1===t.na_1)},y_(Ts).hashCode=function(){var t;if(this.m())t=-1;else{var n;n=this.la_1;var i,e=St(31,n);i=this.ma_1,t=St(31,e+i|0)+this.na_1|0}return t},y_(Ts).toString=function(){return this.na_1>0?new ks(this.la_1)+".."+new ks(this.ma_1)+" step "+this.na_1:new ks(this.la_1)+" downTo "+new ks(this.ma_1)+" step "+(0|-this.na_1)},y_(Ds).e=function(){return this.pa_1},y_(Ds).da=function(){var t=this.ra_1;if(t===this.oa_1){if(!this.pa_1)throw bf();this.pa_1=!1}else{var n,i=this;n=this.ra_1+this.qa_1|0,i.ra_1=n}return t},y_(Ds).f=function(){return new ks(this.da())},y_(Us).xa=function(t){return Ls(this.wa_1,t)},y_(Us).p8=function(t){return function(t,n){return Ls(t.wa_1,n instanceof Us?n.wa_1:z_())}(this,t)},y_(Us).toString=function(){return Fs(this.wa_1)},y_(Us).hashCode=function(){return this.wa_1.hashCode()},y_(Us).equals=function(t){return function(t,n){if(!(n instanceof Us))return!1;var i=n instanceof Us?n.wa_1:z_();return!!t.equals(i)}(this.wa_1,t)},y_(Ys).e=function(){return this.za_1=0},y_(Vo).o=function(t){var n=0,i=Jn(this);if(n<=i)do{var e=n;if(n=n+1|0,p_(this.h(e),t))return e}while(e!==i);return-1},y_(Vo).h3=function(t){return new Ho(this,t)},y_(Vo).i3=function(t,n){var i=this.h3(t),e=n-t|0,r=0;if(r"),r=this.jf_1?"?":"";return Vh(i,e)+r},y_(ga).nf=function(){return this.anyClass},y_(ga).of=function(){return this.numberClass},y_(ga).pf=function(){return this.nothingClass},y_(ga).qf=function(){return this.booleanClass},y_(ga).rf=function(){return this.byteClass},y_(ga).sf=function(){return this.shortClass},y_(ga).tf=function(){return this.intClass},y_(ga).uf=function(){return this.floatClass},y_(ga).vf=function(){return this.doubleClass},y_(ga).wf=function(){return this.arrayClass},y_(ga).xf=function(){return this.stringClass},y_(ga).yf=function(){return this.throwableClass},y_(ga).zf=function(){return this.booleanArrayClass},y_(ga).ag=function(){return this.charArrayClass},y_(ga).bg=function(){return this.byteArrayClass},y_(ga).cg=function(){return this.shortArrayClass},y_(ga).dg=function(){return this.intArrayClass},y_(ga).eg=function(){return this.longArrayClass},y_(ga).fg=function(){return this.floatArrayClass},y_(ga).gg=function(){return this.doubleArrayClass},y_(ga).functionClass=function(t){var n,i,e=Qu()[t];if(null==e){var r=new Yu(Function,"Function"+t,(i=t,function(t){return"function"==typeof t&&t.length===i}));Qu()[t]=r,n=r}else n=e;return n},y_(ka).d=function(){var t=this.hg_1;if(null==t)throw _f("This sequence can be consumed only once.");var n=t;return this.hg_1=null,n.d()},y_(Ca).rb=function(){return this.a8_1.length},y_(Ca).sb=function(t){var n=this.a8_1;if(!(t>=0&&t<=Le(n)))throw uf("index: "+t+", length: "+this.rb()+"}");return s_(n,t)},y_(Ca).tb=function(t,n){return this.a8_1.substring(t,n)},y_(Ca).k7=function(t){return this.a8_1=this.a8_1+new qh(t),this},y_(Ca).b=function(t){return this.a8_1=this.a8_1+Hh(t),this},y_(Ca).ig=function(t,n,i){var e=t;return this.n8(null==e?"null":e,n,i)},y_(Ca).k8=function(t){return this.a8_1=this.a8_1+Hh(t),this},y_(Ca).l8=function(t){var n=this,i=this.a8_1,e=t;return n.a8_1=i+(null==e?"null":e),this},y_(Ca).m8=function(t,n){Cn().m1(t,this.rb());var i,e=this.a8_1.substring(0,t)+new qh(n);return i=this.a8_1.substring(t),this.a8_1=e+i,this},y_(Ca).jg=function(t,n){Cn().m1(t,this.rb());var i,e=null==n?"null":n,r=this.a8_1.substring(0,t)+e;return i=this.a8_1.substring(t),this.a8_1=r+i,this},y_(Ca).kg=function(t){if(t<0)throw nf("Negative new length: "+t+".");if(t<=this.rb()){var n;n=this.a8_1.substring(0,t),this.a8_1=n}else{var i=this.rb();if(iu_(t))throw uf("Start index out of bounds: "+n+", input length: "+u_(t));return Fa(this.wg_1,d_(t),n,this.wg_1)},y_(Pa).ah=function(t,n){if(n<0||n>u_(t))throw uf("Start index out of bounds: "+n+", input length: "+u_(t));return i=this,e=t,r=n,new Pi((function(){return i.zg(e,r)}),Ra);var i,e,r},y_(Pa).bh=function(t,n,i){return n=n===jt?0:n,i===jt?this.ah(t,n):i.ah.call(this,t,n)},y_(Pa).ch=function(t,n){Xe(n);for(var i=this.bh(t),e=0===n?i:function(t,n){if(!(n>=0))throw nf(d_("Requested element count "+n+" is less than zero."));return 0===n?Ai():pl(t,Ti)?t.b1(n):new Mi(t,n)}(i,n-1|0),r=Qo(),s=0,o=e.d();o.e();){var u=o.f();r.a(d_(a_(t,s,u.dh().n6()))),s=u.dh().o6()+1|0}return r.a(d_(a_(t,s,u_(t)))),r},y_(Pa).toString=function(){return this.wg_1.toString()},y_(La).toString=function(){return"MatchGroup(value="+this.eh_1+")"},y_(La).hashCode=function(){return g_(this.eh_1)},y_(La).equals=function(t){if(this===t)return!0;if(!(t instanceof La))return!1;var n=t instanceof La?t:z_();return this.eh_1===n.eh_1},y_(Ha).g=function(){return this.ih_1.length},y_(Ha).d=function(){return wn(Xt(Xn(this)),(t=this,function(n){return t.h(n)})).d();var t},y_(Ha).h=function(t){var n;return null==(n=this.ih_1[t])?null:new La(n)},y_(Va).dh=function(){return this.kh_1},y_(Va).f=function(){return Fa(this.ph_1,this.qh_1,this.nh_1.m()?(t=this,(n=this.nh_1.n6())>>i|0|t.v_1<<(32-i|0),t.v_1>>>i|0):new I_(32===i?t.v_1:t.v_1>>>(i-32|0)|0,0)}(this,t)},y_(I_).z9=function(t){return new I_(this.u_1&t.u_1,this.v_1&t.v_1)},y_(I_).xi=function(t){return new I_(this.u_1|t.u_1,this.v_1|t.v_1)},y_(I_).h8=function(t){return new I_(this.u_1^t.u_1,this.v_1^t.v_1)},y_(I_).wi=function(){return new I_(~this.u_1,~this.v_1)},y_(I_).yi=function(){return el(this.u_1)},y_(I_).zi=function(){return sl(this.u_1)},y_(I_).c8=function(){return this.u_1},y_(I_).ve=function(){return V_(this)},y_(I_).valueOf=function(){return this.ve()},y_(I_).equals=function(t){return t instanceof I_&&B_(this,t)},y_(I_).hashCode=function(){return t=this,il(),t.u_1^t.v_1;var t},y_(I_).toString=function(){return Y_(this,10)},y_(Gl).r4=function(){return x_(this.mj_1)},y_(Gl).oj=function(){var t,n=this.nj_1;if(null==n){var i=this.r4().y5(Ji()),e=null==i?null:i.w5(this),r=null==e?this:e;this.nj_1=r,t=r}else t=n;return t},y_(Gl).pj=function(t){var n,i=this;if(Wr(t))n=null;else{var e=t;n=null==e||$l(e)?e:z_()}for(var r=n,s=Gr(t);;){var o=i;null==s?o.jj_1=r:(o.hj_1=o.ij_1,o.kj_1=s);try{var u=o.qj();if(u===he())return $o();r=u,s=null}catch(t){r=null,s=t}Wl(o);var a=x_(o.gj_1);if(!(a instanceof Gl)){if(null!=s){var h,_=x_(s);Jr(),h=Qr(_),a.p4(h),$o()}else{var l,f=r;Jr(),l=f,a.p4(l),$o()}return $o()}i=a,$o()}},y_(Gl).p4=function(t){return this.pj(t)},y_(Kl).r4=function(){throw _f("This continuation is already complete")},y_(Kl).pj=function(t){throw _f("This continuation is already complete")},y_(Kl).p4=function(t){return this.pj(t)},y_(Kl).toString=function(){return"This continuation is already complete"},y_(Zl).qj=function(){if(null!=this.kj_1)throw this.kj_1;var t;return"function"==typeof(t=this.ak_1)?t(this.bk_1,this.zj_1):this.ak_1.ck(this.bk_1,this.zj_1)},y_(oe).f6=It,y_(ae).y5=At,y_(ae).e6=Tt,y_(ae).d6=Dt,y_(ae).f6=It,y_(ku).ae=function(){var t=Object.create(null);return t.foo=1,delete t.foo,$o(),t},n=3.141592653589793,F=null,t.$_$=t.$_$||{},t.$_$.a=function(t,n,i){return new Zu(t,Ml(n),i)},t.$_$.b=function(t,n){if(t instanceof Bu&&n instanceof Bu){var i,e=n.xe().$metadata$,r=null==e?null:e.associatedObjectKey;if(null==(i=null==r?null:r))return null;var s=i,o=t.xe().$metadata$,u=null==o?null:o.associatedObjects;if(null==u)return null;var a=u[s];return null==a?null:a()}return null},t.$_$.c=function(t){var n;switch(typeof t){case"string":n=$a().stringClass;break;case"number":n=(0|t)===t?$a().intClass:$a().doubleClass;break;case"boolean":n=$a().booleanClass;break;case"function":var i;i=t,n=$a().functionClass(i.length);break;default:var e;if(jl(t))e=$a().booleanArrayClass;else if(El(t))e=$a().charArrayClass;else if(xl(t))e=$a().byteArrayClass;else if(zl(t))e=$a().shortArrayClass;else if(Cl(t))e=$a().intArrayClass;else if(ql(t))e=$a().longArrayClass;else if(Sl(t))e=$a().floatArrayClass;else if(Ol(t))e=$a().doubleArrayClass;else if(pl(t,Vu))e=ya(Vu);else if(gl(t))e=$a().arrayClass;else{var r=Object.getPrototypeOf(t).constructor;e=r===Object?$a().anyClass:r===Error?$a().throwableClass:ba(r)}n=e}return n},t.$_$.d=ya,t.$_$.e=function(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0,n=n+t[r].length|0}while(r!==e);var s=t[0],o=new s.constructor(n);if(null!=s.$type$){var u=s.$type$;o.$type$=u}n=0;var a=0,h=t.length-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=t[_],f=0,c=l.length-1|0;if(f<=c)do{var v=f;f=f+1|0;var w=n;n=w+1|0,o[w]=l[v]}while(v!==c)}while(_!==h);return o},t.$_$.f=wh,t.$_$.g=ph,t.$_$.h=function(){return Lr(),k},t.$_$.i=function(){return Lr(),b},t.$_$.j=function(){return t=b_(y_(Gn)),Vo.call(t),Gn.call(t),t.n2_1=Wn().p2_1,t;var t},t.$_$.k=tu,t.$_$.l=Qo,t.$_$.m=nu,t.$_$.n=cu,t.$_$.o=lu,t.$_$.p=function(t){return function(t,n){return _u(n),n.zc(t),n}(t,b_(y_(vu)))},t.$_$.q=du,t.$_$.r=function(){return t=b_(y_(mu)),Zo.call(t),mu.call(t),t.od_1=lu(),t;var t},t.$_$.s=function(t){return function(t,n){return Zo.call(n),mu.call(n),n.od_1=cu(t.g()),n.l(t),n}(t,b_(y_(mu)))},t.$_$.t=Ou,t.$_$.u=Su,t.$_$.v=function(t){return function(t,n){return _u(n),Iu.call(n),n.me_1=lu(),n.zc(t),n}(t,b_(y_(Iu)))},t.$_$.w=Au,t.$_$.x=Tu,t.$_$.y=Ru,t.$_$.z=function t(n){var i=Ru(n,b_(y_(Lu)));return $_(i,t),i},t.$_$.a1=Pu,t.$_$.b1=function t(n,i){var e=Pu(n,i,b_(y_(Lu)));return $_(e,t),e},t.$_$.c1=function(t){return function(t,n){return Pa.call(n,t,Bi()),n}(t,b_(y_(Pa)))},t.$_$.d1=xa,t.$_$.e1=Ea,t.$_$.f1=Nf,t.$_$.g1=function t(n){var i=function(t,n){return Ef(null==t?null:d_(t),t instanceof Error?t:null,n),Tf.call(n),n}(n,b_(y_(Tf)));return $_(i,t),i},t.$_$.h1=Af,t.$_$.i1=function t(n){var i=zf(n,b_(y_(Cf)));return $_(i,t),i},t.$_$.j1=Ef,t.$_$.k1=function t(n,i){var e=Ef(n,i,b_(y_(Cf)));return $_(e,t),e},t.$_$.l1=cf,t.$_$.m1=wf,t.$_$.n1=sf,t.$_$.o1=function t(n){var i=sf(n,b_(y_(of)));return $_(i,t),i},t.$_$.p1=Ql,t.$_$.q1=tf,t.$_$.r1=nf,t.$_$.s1=ef,t.$_$.t1=function(t){return pf(t),ff.call(t),t},t.$_$.u1=hf,t.$_$.v1=_f,t.$_$.w1=lf,t.$_$.x1=function t(n,i){var e=lf(n,i,b_(y_(ff)));return $_(e,t),e},t.$_$.y1=function t(){var n,i=(pf(n=b_(y_(af))),af.call(n),n);return $_(i,t),i},t.$_$.z1=uf,t.$_$.a2=bf,t.$_$.b2=kf,t.$_$.c2=jf,t.$_$.d2=$f,t.$_$.e2=function t(){var n=pf(b_(y_(yf)));return $_(n,t),n},t.$_$.f2=gf,t.$_$.g2=function t(n,i){var e=gf(n,i,b_(y_(yf)));return $_(e,t),e},t.$_$.h2=Sf,t.$_$.i2=qf,t.$_$.j2=Of,t.$_$.k2=pr,t.$_$.l2=cr,t.$_$.m2=bh,t.$_$.n2=kh,t.$_$.o2=jh,t.$_$.p2=xh,t.$_$.q2=function(t,n){return ul(t-n|0)},t.$_$.r2=function(t,n){return ul(t+n|0)},t.$_$.s2=function(t,n){return new me(t,n)},t.$_$.t2=zh,t.$_$.u2=Eh,t.$_$.v2=Br,t.$_$.w2=Gr,t.$_$.x2=Wr,t.$_$.y2=Yr,t.$_$.z2=ss,t.$_$.a3=os,t.$_$.b3=ls,t.$_$.c3=function(t){return new Int8Array(t)},t.$_$.d3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.e3=cs,t.$_$.f3=fs,t.$_$.g3=ms,t.$_$.h3=bs,t.$_$.i3=gs,t.$_$.j3=function(t){return new Int32Array(t)},t.$_$.k3=js,t.$_$.l3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.m3=zs,t.$_$.n3=xs,t.$_$.o3=Ms,t.$_$.p3=Ns,t.$_$.q3=function(t){return Jh(t)},t.$_$.r3=Hs,t.$_$.s3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.t3=Bs,t.$_$.u3=Vs,t.$_$.v3=Xs,t.$_$.w3=Zs,t.$_$.x3=function(t){return new Int16Array(t)},t.$_$.y3=eo,t.$_$.z3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.a4=so,t.$_$.b4=ro,t.$_$.c4=Ji,t.$_$.d4=ie,t.$_$.e4=function(){return null==L&&new Io,L},t.$_$.f4=bo,t.$_$.g4=qo,t.$_$.h4=Co,t.$_$.i4=zo,t.$_$.j4=jo,t.$_$.k4=function(){return null==P&&new Oo,P},t.$_$.l4=$a,t.$_$.m4=lr,t.$_$.n4=Sh,t.$_$.o4=O_,t.$_$.p4=Jr,t.$_$.q4=as,t.$_$.r4=ys,t.$_$.s4=Ps,t.$_$.t4=to,t.$_$.u4=$o,t.$_$.v4=Sn,t.$_$.w4=eu,t.$_$.x4=Ih,t.$_$.y4=vu,t.$_$.z4=mu,t.$_$.a5=Iu,t.$_$.b5=Nu,t.$_$.c5=Oh,t.$_$.d5=Dh,t.$_$.e5=Mh,t.$_$.f5=Ph,t.$_$.g5=Nh,t.$_$.h5=Rh,t.$_$.i5=Ah,t.$_$.j5=Th,t.$_$.k5=vi,t.$_$.l5=Po,t.$_$.m5=Ml,t.$_$.n5=function(t){return Xt(t.q())},t.$_$.o5=Xt,t.$_$.p5=function(t){return t<0&&function(){throw Nf("Count overflow has happened.")}(),t},t.$_$.q5=oi,t.$_$.r5=Mt,t.$_$.s5=function(t,n){return h_(t,n)},t.$_$.t5=function(t,n){return h_(t,n)},t.$_$.u5=function(t){return __(t)},t.$_$.v5=function(t){return __(t)},t.$_$.w5=function(t){return __(t)},t.$_$.x5=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Int16Array(n))},t.$_$.y5=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));var i=S_(t,n,new I_(0,0));return i.$type$="LongArray",i},t.$_$.z5=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));var i=S_(t,n,!1);return i.$type$="BooleanArray",i},t.$_$.a6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));var i=C_(t,Kh(n));return i.$type$="CharArray",i},t.$_$.b6=Nl,t.$_$.c6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Float64Array(n))},t.$_$.d6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Float32Array(n))},t.$_$.e6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return S_(t,n,null)},t.$_$.f6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Int32Array(n))},t.$_$.g6=Lo,t.$_$.h6=function(t,n){if(!(n>=0))throw nf(d_("Requested element count "+n+" is less than zero."));return function(t,n){if(!(n>=0))throw nf(d_("Requested element count "+n+" is less than zero."));if(0===n)return Kn();if(pl(t,Ih)){if(n>=t.g())return Zt(t);if(1===n)return To(tn(t))}var i=0,e=tu(n),r=t.d();t:for(;r.e();){var s=r.f();if(e.a(s),(i=i+1|0)===n)break t}return Zn(e)}(t,fn(t.g()-n|0,0))},t.$_$.i6=Kn,t.$_$.j6=_i,t.$_$.k6=Bi,t.$_$.l6=function(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),t.fill(n,i,e)},t.$_$.m6=function(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),t.fill(n,i,e)},t.$_$.n6=Rl,t.$_$.o6=function(t){return t.m()?null:t.h(0)},t.$_$.p6=rn,t.$_$.q6=tn,t.$_$.r6=function(t,n){return function(t,n){if(pl(t,hi))return t.x3(n);var i=t.g2(n);if(null==i&&!t.a2(n))throw jf("Key "+n+" is missing in the map.");return null==i||$l(i)?i:z_()}(t,n)},t.$_$.s6=function(t){return new de(0,function(t){return t.length-1|0}(t))},t.$_$.t6=function(t){return new de(0,Pt(t))},t.$_$.u6=Xn,t.$_$.v6=Wt,t.$_$.w6=Bt,t.$_$.x6=Gt,t.$_$.y6=function(t){return t.length-1|0},t.$_$.z6=Jn,t.$_$.a7=Pt,t.$_$.b7=function(t){return t.m()?null:t.h(t.g()-1|0)},t.$_$.c7=function(t){if(t.m())throw jf("List is empty.");return t.h(Jn(t))},t.$_$.d7=To,t.$_$.e7=function(t){return t.length>0?Ml(t):Kn()},t.$_$.f7=Mo,t.$_$.g7=function(t){return t.length>0?(n=t,ci(i=Ou(t.length),n),i):_i();var n,i},t.$_$.h7=ri,t.$_$.i7=function(t,n){var i=function(t){return pl(t,Ih)?t.g():null}(n),e=null==i?null:t.g()+i|0,r=Mu(null==e?St(t.g(),2):e);return r.l(t),vi(r,n),r},t.$_$.j7=function(t,n){if(pl(t,Ih))return Jt(t,n);var i=Qo();return vi(i,t),vi(i,n),i},t.$_$.k7=Jt,t.$_$.l7=function(t,n){var i=tu(t.g()+1|0);return i.l(t),i.a(n),i},t.$_$.m7=wi,t.$_$.n7=function(t){if(t.m())throw jf("List is empty.");return t.c3(Jn(t))},t.$_$.o7=function(t){for(var n=t,i=0,e=n.length;i0?function(t){switch(t.length){case 0:return Bi();case 1:return Do(t[0]);default:return Lt(t,Mu(t.length))}}(t):Bi()},t.$_$.s7=function(t){return 1===t.g()?t.h(0):null},t.$_$.t7=Ro,t.$_$.u7=function(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),function(t,n,i,e){n<(i-1|0)&&su(t,n,i-1|0,e)}(t,i,e,n)},t.$_$.v7=function(t,n){if(pl(t,Ih)){if(t.g()<=1)return Zt(t);var i=Lo(t),e=gl(i)?i:z_();return function(t,n){t.length>1&&ru(t,n)}(e,n),Ml(e)}var r=en(t);return Ro(r,n),r},t.$_$.w7=function(t){for(var n=Gh(t.g()),i=0,e=t.d();e.e();){var r=e.f(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.x7=function(t){return nn(t,du(oi(t,12)))},t.$_$.y7=function(t){for(var n=new Int32Array(t.g()),i=0,e=t.d();e.e();){var r=e.f(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.z7=function(t){if(0===t.g())return Kn();var n=t.q().d();if(!n.e())return Kn();var i=n.f();if(!n.e())return To(new is(i.r(),i.s()));var e,r=tu(t.g());e=new is(i.r(),i.s()),r.a(e);do{var s,o=n.f();s=new is(o.r(),o.s()),r.a(s)}while(n.e());return r},t.$_$.a8=Zt,t.$_$.b8=function(t){switch(t.length){case 0:return Kn();case 1:return To(t[0]);default:return function(t){return nu(function(t){return new ei(t,!1)}(t))}(t)}},t.$_$.c8=function(t){if(pl(t,Ih)){var n;switch(t.g()){case 0:n=_i();break;case 1:i=pl(t,Oh)?t.h(0):t.d().f(),ci(r=cu((e=[i]).length),e),n=r;break;default:n=fi(t,Ou(t.g()))}return n}var i,e,r;return function(t){var n;n=0===t.g()?_i():t;return n}(fi(t,Su()))},t.$_$.d8=Qt,t.$_$.e8=function(t){return pl(t,Ih)?Tu(t):nn(t,Au())},t.$_$.f8=Kt,t.$_$.g8=function(t){for(var n=new Int16Array(t.g()),i=0,e=t.d();e.e();){var r=e.f(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.h8=function(t){return[].slice.call(t)},t.$_$.i8=function(t){return new ui((n=t,function(){return Wh(n)}));var n},t.$_$.j8=function(t,n){return t===n?0:null==t?-1:null==n?1:f_(null!=t&&("string"===(e=typeof(i=t))||"boolean"===e||bl(i)||pl(i,po))?t:z_(),n);var i,e},t.$_$.k8=Lu,t.$_$.l8=he,t.$_$.m8=Xl,t.$_$.n8=Jl,t.$_$.o8=ae,t.$_$.p8=ue,t.$_$.q8=function(t){if(t instanceof ue){var n;if(t.c6(this.r())){var i=t.b6(this);n=null!=i&&pl(i,Zi)?i:null}else n=null;return n}return Ji()===t?pl(this,Zi)?this:z_():null},t.$_$.r8=function(t){return t instanceof ue?t.c6(this.r())&&null!=t.b6(this)?ie():this:Ji()===t?ie():this},t.$_$.s8=Xi,t.$_$.t8=Gi,t.$_$.u8=Tt,t.$_$.v8=At,t.$_$.w8=Dt,t.$_$.x8=Zi,t.$_$.y8=It,t.$_$.z8=Gl,t.$_$.a9=function(t,n,i){var e,r=Jl(Xl(t,n,i));Jr(),e=$o(),r.p4(e),$o()},t.$_$.b9=le,t.$_$.c9=function(t){return Object.prototype.toString.call(t)},t.$_$.d9=Wh,t.$_$.e9=Gh,t.$_$.f9=$_,t.$_$.g9=Xh,t.$_$.h9=Kh,t.$_$.i9=s_,t.$_$.j9=u_,t.$_$.k9=a_,t.$_$.l9=fl,t.$_$.m9=f_,t.$_$.n9=function(t,n,i,e){return Object.defineProperty(t,n,{configurable:!0,get:i,set:e})},t.$_$.o9=p_,t.$_$.p9=k_,t.$_$.q9=Yh,t.$_$.r9=e_,t.$_$.s9=function(t,n,i,e,r){return ll(),e.get=e,e.set=r,e.callableName=t,s=e,o=function(t,n){return ll(),(ll(),yt)[t][null==n?0:1]}(n,r),u=function(t,n){ll();var i=t.$imask$;return null==i?Bh([n]):i}(e,i),ll(),s.$metadata$=o,s.constructor=s,s.$imask$=u,s;var s,o,u},t.$_$.t9=g_,t.$_$.u9=m_,t.$_$.v9=Il,t.$_$.w9=gl,t.$_$.x9=jl,t.$_$.y9=xl,t.$_$.z9=El,t.$_$.aa=kl,t.$_$.ba=Ol,t.$_$.ca=Sl,t.$_$.da=Cl,t.$_$.ea=pl,t.$_$.fa=ql,t.$_$.ga=bl,t.$_$.ha=$l,t.$_$.ia=zl,t.$_$.ja=yl,t.$_$.ka=function(t){return(t instanceof Bu?t:z_()).xe()},t.$_$.la=Jh,t.$_$.ma=ul,t.$_$.na=function(t){return+t},t.$_$.oa=rl,t.$_$.pa=ol,t.$_$.qa=function(t){return sl(rl(t))},t.$_$.ra=b_,t.$_$.sa=Tl,t.$_$.ta=y_,t.$_$.ua=dl,t.$_$.va=el,t.$_$.wa=al,t.$_$.xa=sl,t.$_$.ya=d_,t.$_$.za=function(){return n},t.$_$.ab=function(t){return t<0?0|-t:t},t.$_$.bb=function(t){if(Uu(t))throw nf("Cannot round NaN value.");return t>zo().MAX_VALUE?zo().MAX_VALUE:tn?n:t},t.$_$.ib=function(t,n){return t>n?n:t},t.$_$.jb=function(t,n){return t.w(n)>0?n:t},t.$_$.kb=cn,t.$_$.lb=function(t,n,i){if(n>i)throw nf("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t},t.$_$.mb=vn,t.$_$.nb=_n,t.$_$.ob=ln,t.$_$.pb=function(t,n){return new Ee(t,n)},t.$_$.qb=function(t){return be().x(t.z_1,t.y_1,0|-t.a1_1)},t.$_$.rb=function(t,n){return function(t,n){if(!t)throw nf("Step must be positive, was: "+d_(n)+".")}(n>0,n),be().x(t.y_1,t.z_1,t.a1_1>0?n:0|-n)},t.$_$.sb=hn,t.$_$.tb=Vu,t.$_$.ub=Xu,t.$_$.vb=Ce,t.$_$.wb=gi,t.$_$.xb=mi,t.$_$.yb=function(t){return function(t){return t instanceof ka?t:new ka(t)}(new Ui(t))},t.$_$.zb=function(t,n){return new Ii(t,!0,n)},t.$_$.ac=function(t,n){return new Si(t,n,((i=function(t){return t.d()}).callableName="iterator",i));var i},t.$_$.bc=function(t,n){return new Si(t,n,((i=function(t){return t.d()}).callableName="iterator",i));var i},t.$_$.cc=wn,t.$_$.dc=function(t,n){return xi(zi([t,n]))},t.$_$.ec=function(t,n){return xi(zi([t,Xt(n)]))},t.$_$.fc=zi,t.$_$.gc=function(t){return new bi(t)},t.$_$.hc=dn,t.$_$.ic=Ca,t.$_$.jc=function(t){Wa();for(var n="",i=t,e=0,r=i.length;e=0:ir(t,n,0,u_(t),i)>=0},t.$_$.lc=He,t.$_$.mc=function(t){return Wa(),Qa(t,0,t.length,!1)},t.$_$.nc=function(t,n,i,e){return n=n===jt?0:n,i=i===jt?t.length:i,e=e!==jt&&e,Wa(),Cn().o1(n,i,t.length),Qa(t,n,i,e)},t.$_$.oc=$n,t.$_$.pc=function(t){return Wa(),function(t,n,i,e){if(sh(),!(n>=0&&i<=t.length&&n<=i))throw nf(d_("Failed requirement."));for(var r=new Int8Array(St(i-n|0,3)),s=0,o=n;o>6|192);var l=s;s=l+1|0,r[l]=el(63&a|128)}else if(a<55296||a>=57344){var f=s;s=f+1|0,r[f]=el(a>>12|224);var c=s;s=c+1|0,r[c]=el(a>>6&63|128);var v=s;s=v+1|0,r[v]=el(63&a|128)}else{var w=th(t,a,o,i,e);if(w<=0){var d=s;s=d+1|0,r[d]=Za()[0];var p=s;s=p+1|0,r[p]=Za()[1];var m=s;s=m+1|0,r[m]=Za()[2]}else{var g=s;s=g+1|0,r[g]=el(w>>18|240);var $=s;s=$+1|0,r[$]=el(w>>12&63|128);var y=s;s=y+1|0,r[y]=el(w>>6&63|128);var b=s;s=b+1|0,r[b]=el(63&w|128),o=o+1|0}}}return r.length===s?r:Nl(r,s)}(t,0,t.length,!1)},t.$_$.qc=function(t,n,i){return i=i!==jt&&i,u_(t)>0&&qe(s_(t,Le(t)),n,i)},t.$_$.rc=function(t,n,i){if(null==t)return null==n;if(null==n)return!1;if(!(i=i!==jt&&i))return t==n;if(t.length!==n.length)return!1;var e=0,r=t.length;if(er)return 0;var o=3&s;if(0===o){var u=2,a=e,h=0;if(h<=1)do{if(h=h+1|0,(a=a+(s>>u&127)|0)>n)return 3;if((a=a+(s>>(u=u+7|0)&127)|0)>n)return 0;u=u+7|0}while(h<=1);return 3}if(s<=7)return o;var _=n-e|0;return s>>St(2,s<=31?_%2|0:_)&3}(t)||function(t){var n=Ll(Yl().ej_1,t);return n>=0&&t<(Yl().ej_1[n]+Yl().fj_1[n]|0)}(zh(t))}(t)},t.$_$.ad=function(t){return Sh(),Sh(),t<=57343&&55296<=t},t.$_$.bd=qa,t.$_$.cd=Le,t.$_$.dd=Ve,t.$_$.ed=er,t.$_$.fd=gn,t.$_$.gd=function(t,n,i,e){e=e!==jt&&e;var r=new RegExp(Na().sg(n),e?"gui":"gu"),s=Na().tg(i);return t.replace(r,s)},t.$_$.hd=function(t,n,i,e){e=e!==jt&&e;var r=new RegExp(Na().sg(Eh(n)),e?"gui":"gu"),s=Eh(i);return t.replace(r,s)},t.$_$.id=function(t){var n;switch(u_(t)){case 0:throw jf("Char sequence is empty.");case 1:n=s_(t,0);break;default:throw nf("Char sequence has more than one element.")}return n},t.$_$.jd=function(t,n){return n.m()?"":function(t,n){var i=n.n6(),e=n.o6()+1|0;return t.substring(i,e)}(t,n)},t.$_$.kd=function(t,n,i,e){if(i=i!==jt&&i,e=e===jt?0:e,1===n.length)return We(t,Eh(n[0]),i,e);for(var r=pn(function(t,n,i,e,r){return i=i===jt?0:i,e=e!==jt&&e,Xe(r=r===jt?0:r),new nr(t,i,r,(s=n,o=e,function(t,n){var i=Ye(t,s,n,o);return i<0?null:es(i,1)}));var s,o}(t,n,jt,i,e)),s=tu(oi(r,10)),o=r.d();o.e();){var u;u=Ge(t,o.f()),s.a(u)}return s},t.$_$.ld=function(t,n,i,e){if(i=i!==jt&&i,e=e===jt?0:e,1===n.length){var r=n[0];if(0!==u_(r))return We(t,r,i,e)}for(var s=pn(Ke(t,n,jt,i,e)),o=tu(oi(s,10)),u=s.d();u.e();){var a;a=Ge(t,u.f()),o.a(a)}return o},t.$_$.md=Ka,t.$_$.nd=Be,t.$_$.od=function(t,n,i){i=i===jt?t:i;var e,r=Ve(t,n);if(-1===r)e=i;else{var s=r+1|0,o=t.length;e=t.substring(s,o)}return e},t.$_$.pd=function(t,n,i){i=i===jt?t:i;var e=Ve(t,n);return-1===e?i:t.substring(0,e)},t.$_$.qd=function(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));var i=t.length,e=i-cn(n,i)|0;return t.substring(e)},t.$_$.rd=yn,t.$_$.sd=function(t){return an(t)},t.$_$.td=function(t){return null!=t&&"true"===t.toLowerCase()},t.$_$.ud=function(t){var n,i=Re(t);return null==i?Ne(t):n=i,n},t.$_$.vd=function(t){var n=+t;return Uu(n)&&!Da(t)||0===n&&Ga(t)?null:n},t.$_$.wd=Aa,t.$_$.xd=De,t.$_$.yd=function(t){var n,i=De(t);return null==i?Ne(t):n=i,n},t.$_$.zd=Te,t.$_$.ae=Ia,t.$_$.be=function(t){var n,i=Pe(t);return null==i?Ne(t):n=i,n},t.$_$.ce=function(t,n){return Wf(al(t).z9(new I_(-1,0)),n)},t.$_$.de=Wf,t.$_$.ee=function(t){var n,i=function(t){return function(t,n){var i=_o(t,n);if(null==(null==i?null:new ks(i)))return null;var e=i;as();var r=255;return lo(e,r)>0?null:el(e)}(t,10)}(t);return null==(null==i?null:new _s(i))?Ne(t):n=i,n},t.$_$.fe=function(t){var n,i=function(t){return _o(t,10)}(t);return null==(null==i?null:new ks(i))?Ne(t):n=i,n},t.$_$.ge=function(t){var n,i=function(t){return function(t,n){Oa(n);var i=t.length;if(0===i)return null;Ps();var e,r=new I_(-1,-1),s=s_(t,0);if(jh(s,48)<0){if(1===i||!p_(new qh(s),new qh(43)))return null;e=1}else e=0;var o=new I_(477218588,119304647),u=o,a=al(n),h=new I_(0,0),_=e;if(_0){if(!p_(u,o))return null;if(co(h,u=vo(r,a))>0)return null}var c=h=h.n7(a),v=h,w=al(f).z9(new I_(-1,0));if(co(h=v.o7(w),c)<0)return null}while(_0?null:sl(e)}(t,10)}(t);return null==(null==i?null:new io(i))?Ne(t):n=i,n},t.$_$.ie=function(t){return function(t,n){n=n===jt?"":n;for(var i=rr(t),e=Qo(),r=i.d();r.e();){var s=r.f();!Ga(s)&&e.a(s)}for(var o=e,u=tu(oi(o,10)),a=o.d();a.e();){var h=a.f();u.a(Ie(h))}for(var _=function(t){var n=t.d();if(!n.e())return null;for(var i=n.f();n.e();){var e=n.f();f_(i,e)>0&&(i=e)}return i}(u),l=null==_?0:_,f=t.length+St(n.length,i.g())|0,c=Oe(n),v=Jn(i),w=Qo(),d=0,p=i.d();p.e();){var m=p.f(),g=d;d=g+1|0;var $,y,b=No(g),k=0!==b&&b!==v||!Ga(m)?null==(y=null==($=bn(m,l))?null:c($))?m:y:null;null==k||(w.a(k),$o())}return Gt(w,xa(f),"\n").toString()}(t,"")},t.$_$.je=function(t,n){return function(t,n,i){if(n=n===jt?"":n,Ga(i=i===jt?"|":i))throw nf(d_("marginPrefix must be non-blank string."));for(var e=rr(t),r=t.length+St(n.length,e.g())|0,s=Oe(n),o=Jn(e),u=Qo(),a=0,h=e.d();h.e();){var _=h.f(),l=a;a=l+1|0;var f,c=No(l);if(0!==c&&c!==o||!Ga(_)){var v,w;t:{var d=0,p=u_(_)-1|0;if(d<=p)do{var m=d;if(d=d+1|0,!qa(s_(_,m))){w=m;break t}}while(d<=p);w=-1}var g,$,y=w;if(-1===y)g=null;else if(Xa(_,i,y)){var b=y+i.length|0;g=_.substring(b)}else g=null;f=null==($=null==(v=g)?null:s(v))?_:$}else f=null;var k=f;null==k||(u.a(k),$o())}return Gt(u,xa(r),"\n").toString()}(t,"",n=n===jt?"|":n)},t.$_$.ke=function(t){var n;t:{var i=0,e=u_(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!qa(s_(t,r))){n=a_(t,r,u_(t));break t}}while(i<=e);n=""}return n},t.$_$.le=function(t){var n=0,i=u_(t)-1|0,e=!1;t:for(;n<=i;){var r=qa(s_(t,e?i:n));if(e){if(!r)break t;i=i-1|0}else r?n=n+1|0:e=!0}return a_(t,n,i+1|0)},t.$_$.me=jr,t.$_$.ne=Er,t.$_$.oe=function(t,n){return n.m6(ph())<=0?Or(vh(al(t),n,wh())):zr(al(t),n)},t.$_$.pe=Rf,t.$_$.qe=qh,t.$_$.re=po,t.$_$.se=Nr,t.$_$.te=Mr,t.$_$.ue=Uh,t.$_$.ve=Cf,t.$_$.we=df,t.$_$.xe=of,t.$_$.ye=ff,t.$_$.ze=af,t.$_$.af=I_,t.$_$.bf=xf,t.$_$.cf=ns,t.$_$.df=Mf,t.$_$.ef=is,t.$_$.ff=Zr,t.$_$.gf=yf,t.$_$.hf=z_,t.$_$.if=rs,t.$_$.jf=ps,t.$_$.kf=_s,t.$_$.lf=qs,t.$_$.mf=ks,t.$_$.nf=Ks,t.$_$.of=Us,t.$_$.pf=ho,t.$_$.qf=io,t.$_$.rf=go,t.$_$.sf=If,t.$_$.tf=function(t,n){if(t!==n){var i=t._suppressed;null==i?t._suppressed=ri([n]):i.a(n)}},t.$_$.uf=function(t){return t},t.$_$.vf=function(t){var n,i=t.u_1;return 0===i?(zo(),n=32+Hu(t.v_1)|0):n=Hu(i),n},t.$_$.wf=Qr,t.$_$.xf=x_,t.$_$.yf=function(t,n){return Pr(),new Rr(t.s8_1,n).x8()},t.$_$.zf=function(t){return!function(t){var n;return qo(),t===1/0?n=!0:(qo(),n=t===-1/0),n}(t)&&!Uu(t)},t.$_$.ag=function(t){return!function(t){var n;return Co(),t===1/0?n=!0:(Co(),n=t===-1/0),n}(t)&&!function(t){return!(t==t)}(t)},t.$_$.bg=Uu,t.$_$.cg=function(t,n){return new Ur(n)},t.$_$.dg=function(t){return new Ur(t)},t.$_$.eg=function(){throw Ff()},t.$_$.fg=Vh,t.$_$.gg=function(t){console.error(oh(t))},t.$_$.hg=oh,t.$_$.ig=function(){throw kn()},t.$_$.jg=E_,t.$_$.kg=Hh,t.$_$.lg=es,t.$_$.mg=lo,t.$_$.ng=jt,t.$_$.og=function(t){return new yh(t)},t})?i.apply(n,[n]):i)||(t.exports=e)},645:function(t,n,i){var e,r,s;r=[n,i(744)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt=Math.imul,ft=n.$_$.ta,ct=n.$_$.v9,vt=n.$_$.ng,wt=n.$_$.ua,dt=n.$_$.k4,pt=n.$_$.u4,mt=n.$_$.i6,gt=n.$_$.i,$t=n.$_$.cg,yt=n.$_$.l9,bt=n.$_$.ub,kt=n.$_$.s9,jt=n.$_$.q1,xt=n.$_$.ra,zt=n.$_$.f9,Et=n.$_$.s1,Ct=n.$_$.xe,St=n.$_$.q5,qt=n.$_$.k,Ot=n.$_$.hf,It=n.$_$.tb,At=n.$_$.ea,Tt=n.$_$.if,Dt=n.$_$.d,Mt=n.$_$.ef,Nt=n.$_$.d5,Rt=n.$_$.a5,Pt=n.$_$.h5,Lt=n.$_$.e5,Ft=n.$_$.y4,Ut=n.$_$.b5,Ht=n.$_$.i5,Vt=n.$_$.j5,Bt=n.$_$.z4,Yt=n.$_$.w4,Wt=n.$_$.f5,Gt=n.$_$.c5,Kt=n.$_$.x4,Jt=n.$_$.g6,Xt=n.$_$.ya,Zt=n.$_$.r1,Qt=n.$_$.w2,tn=n.$_$.y2,nn=n.$_$.ha,en=n.$_$.x2,rn=n.$_$.ff,sn=n.$_$.xf,on=n.$_$.o9,un=n.$_$.t9,an=n.$_$.wc,hn=n.$_$.b8,_n=n.$_$.l,ln=n.$_$.r,fn=n.$_$.x7,cn=n.$_$.w7,vn=n.$_$.i8,wn=n.$_$.lg,dn=n.$_$.c8,pn=n.$_$.dg,mn=n.$_$.s5,gn=n.$_$.sb,$n=n.$_$.v6,yn=n.$_$.sa,bn=n.$_$.c,kn=n.$_$.af,jn=n.$_$.qe,xn=n.$_$.m4,zn=n.$_$.me,En=n.$_$.xd,Cn=n.$_$.u9,Sn=n.$_$.v1,qn=n.$_$.m,On=n.$_$.s,In=n.$_$.w,An=n.$_$.x,Tn=n.$_$.o,Dn=n.$_$.p,Mn=n.$_$.u,Nn=n.$_$.v,Rn=n.$_$.m5,Pn=n.$_$.w9,Ln=n.$_$.rb,Fn=n.$_$.r6,Un=n.$_$.la,Hn=n.$_$.o4,Vn=n.$_$.y6,Bn=n.$_$.vf,Yn=n.$_$.q,Wn=n.$_$.vb,Gn=n.$_$.d9,Kn=n.$_$.q9,Jn=n.$_$.e9,Xn=n.$_$.j6,Zn=n.$_$.u5,Qn=n.$_$.n4,ti=n.$_$.z9,ni=n.$_$.h9,ii=n.$_$.g4,ei=n.$_$.ba,ri=n.$_$.h4,si=n.$_$.ca,oi=n.$_$.fa,ui=n.$_$.s4,ai=n.$_$.nf,hi=n.$_$.q3,_i=n.$_$.o3,li=n.$_$.i4,fi=n.$_$.da,ci=n.$_$.r4,vi=n.$_$.lf,wi=n.$_$.j3,di=n.$_$.g3,pi=n.$_$.j4,mi=n.$_$.ia,gi=n.$_$.t4,$i=n.$_$.pf,yi=n.$_$.x3,bi=n.$_$.v3,ki=n.$_$.f4,ji=n.$_$.y9,xi=n.$_$.q4,zi=n.$_$.jf,Ei=n.$_$.c3,Ci=n.$_$.z2,Si=n.$_$.e4,qi=n.$_$.x9,Oi=n.$_$.fb,Ii=n.$_$.a6,Ai=n.$_$.c6,Ti=n.$_$.d6,Di=n.$_$.y5,Mi=n.$_$.t3,Ni=n.$_$.u3,Ri=n.$_$.r3,Pi=n.$_$.s3,Li=n.$_$.f6,Fi=n.$_$.m3,Ui=n.$_$.n3,Hi=n.$_$.k3,Vi=n.$_$.l3,Bi=n.$_$.x5,Yi=n.$_$.a4,Wi=n.$_$.b4,Gi=n.$_$.y3,Ki=n.$_$.z3,Ji=n.$_$.b6,Xi=n.$_$.e3,Zi=n.$_$.f3,Qi=n.$_$.b3,te=n.$_$.d3,ne=n.$_$.z5,ie=n.$_$.ie,ee=n.$_$.rc,re=n.$_$.j9,se=n.$_$.i9,oe=n.$_$.u2,ue=n.$_$.sd,ae=n.$_$.zc,he=n.$_$.l4,_e=n.$_$.of,le=n.$_$.mf,fe=n.$_$.qf,ce=n.$_$.kf,ve=n.$_$.rf,we=n.$_$.g7,de=n.$_$.b7,pe=n.$_$.z6,me=n.$_$.n5,ge=n.$_$.ka,$e=n.$_$.b,ye=n.$_$.t6,be=n.$_$.z1,ke=n.$_$.s6,je=n.$_$.p4,xe=n.$_$.v2,ze=n.$_$.wf;function Ee(){return!1}function Ce(){return!1}function Se(){return mt()}function qe(t){return t.j32(this)}function Oe(){return!1}function Ie(t){return-1}function Ae(t,n,i,e,r){return e=e===vt?null:e,r===vt?this.v35(t,n,i,e):r.v35.call(this,t,n,i,e)}function Te(){return po()}function De(){}function Me(){}function Ne(t){return function(){return n=Rr("kotlinx.serialization.Polymorphic",Zr(),[],function(t){return function(n){return n.s32("type",sr(dt()).i32()),n.s32("value",Rr("kotlinx.serialization.Polymorphic<"+t.t32_1.ye()+">",Gr(),[])),n.m32_1=t.u32_1,pt()}}(t)),i=t.t32_1,new Ar(n,i);var n,i}}function Re(t){xs.call(this),this.t32_1=t,this.u32_1=mt();var n=gt();this.v32_1=$t(n,Ne(this))}function Pe(t,n,i){var e,r=t.x32(n,i);return null==r?function(t,n){var i="in the scope of '"+n.ye()+"'";throw Fe(null==t?"Class discriminator was missing and no default polymorphic serializers were registered "+i:"Class '"+t+"' is not registered for polymorphic serialization "+i+".\nTo be registered automatically, class '"+t+"' has to be '@Serializable', and the base class '"+n.ye()+"' has to be sealed and '@Serializable'.\nAlternatively, register the serializer for '"+t+"' explicitly in a corresponding SerializersModule.")}(i,t.w32()):e=r,e}function Le(t,n){return jt(t,n),He.call(n),n}function Fe(t){var n=Le(t,xt(ft(He)));return zt(n,Fe),n}function Ue(t,n,i){return Et(t,n,i),He.call(i),i}function He(){zt(this,He)}function Ve(t){Le(t,this),zt(this,Ve)}function Be(t,n){var i=function(t,n,i){return Ye.call(i,t,1===t.g()?"Field '"+t.h(0)+"' is required for type with serial name '"+n+"', but it was missing":"Fields "+t+" are required for type with serial name '"+n+"', but they were missing",null),i}(t,n,xt(ft(Ye)));return zt(i,Be),i}function Ye(t,n,i){Ue(n,i,this),zt(this,Ye),this.y32_1=t}function We(t){var n=function(t){var n,i=Ru(t,[]);if(null==i){var e=ge(t).Companion,r=null==e?null:e.serializer();n=null!=r&&At(r,De)?r:null}else n=i;return n}(t);return null==n?function(t){hu();var n=Vo().g2(t);return null==n||At(n,De)?n:Ot()}(t):n}function Ge(t,n,i){var e;if(i){for(var r=qt(St(n,10)),s=n.d();s.e();){var o;o=Je(t,s.f()),r.a(o)}e=r}else{for(var u=qt(St(n,10)),a=n.d();a.e();){var h,_=Xe(t,a.f());if(null==_)return null;h=_,u.a(h)}e=u}return e}function Ke(t,n,i){var e=function(t,n,i){var e,r=t;if(r.equals(Dt(Kt))||r.equals(Dt(Gt))||r.equals(Dt(Wt))||r.equals(Dt(Yt)))e=new Rs(n.h(0));else if(r.equals(Dt(Bt)))e=new Ps(n.h(0));else if(r.equals(Dt(Vt))||r.equals(Dt(Ht))||r.equals(Dt(Ut)))e=new Ls(n.h(0));else if(r.equals(Dt(Ft)))e=new Fs(n.h(0),n.h(1));else if(r.equals(Dt(Lt))||r.equals(Dt(Pt))||r.equals(Dt(Rt)))e=new Us(n.h(0),n.h(1));else if(r.equals(Dt(Nt)))f=n.h(0),c=n.h(1),e=new wu(f,c);else if(r.equals(Dt(Mt)))e=function(t,n){return new du(t,n)}(n.h(0),n.h(1));else if(r.equals(Dt(Tt)))h=n.h(0),_=n.h(1),l=n.h(2),e=new pu(h,_,l);else{var s;if(t.equals(he().wf())){var o=i();u=null!=o&&At(o,It)?o:Ot(),a=n.h(0),s=new Hs(u,a)}else s=null;e=s}var u,a;var h,_,l;var f,c;return e}(t,n,i);return null==e?function(t,n){return Ru(t,Jt(n).slice())}(t,n):e}function Je(t,n){var i,e=Ze(t,n,!0);return null==e?function(t){throw Fe(function(t){lo();var n=t.ye();return i=null==n?"":n,lo(),"Serializer for class '"+i+"' is not found.\nPlease ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.\n";var i}(t)+"\nOn Kotlin/JS explicitly declared serializer should be used for interfaces and enums without @Serializable annotation")}(ho(n)):i=e,i}function Xe(t,n){return Ze(t,n,!1)}function Ze(t,n,o){for(var u=ho(n),a=n.mf(),h=n.lf(),_=qt(St(h,10)),l=h.d();l.e();){var f,c=l.f().a33_1;if(null==c)throw Zt(Xt("Star projections in type arguments are not allowed, but had "+n));f=c,_.a(f)}var v,w,d,p=_;if(p.m())v=function(t,n){var r;if(er(),n)r=(er(),e).d33(t);else{var s=(er(),i).d33(t);r=null==s?null:null!=s&&At(s,De)?s:Ot()}return r}(u,a);else{var m,g=function(t,n,i){var e;if(er(),i)e=(er(),s).e33(t,n);else{var o=(er(),r).e33(t,n);e=new rn(o)instanceof rn?o:Ot()}return e}(u,p,a);if(o){var $;if(en(g))$=null;else{var y=tn(g);$=null==y||nn(y)?y:Ot()}m=$}else{if(null!=Qt(g))return null;var b=tn(g);m=null==b||nn(b)?b:Ot()}v=m}if(null!=v)return v;if(p.m())w=t.c33(u);else{var k=Ge(t,p,o);if(null==k)return null;var j=k,x=Ke(u,j,(d=p,function(){return d.h(0).kf()}));w=null==x?t.b33(u,j):x}var z,E=w;return null==(z=null==E?null:null!=E&&At(E,De)?E:Ot())?null:function(t,n){return n?rr(t):At(t,De)?t:Ot()}(z,a)}function Qe(t){return er(),We(t)}function tr(t){er();var n=We(t),i=null==n?null:rr(n);return null==i?null:null!=i&&At(i,De)?i:Ot()}function nr(t,n){return er(),Ke(t,sn(Ge(qu(),n,!0)),(i=n,function(){return i.h(0).kf()}));var i}function ir(t,n){er();var i,e=Ke(t,sn(Ge(qu(),n,!0)),(i=n,function(){return i.h(0).kf()})),r=null==e?null:rr(e);return null==r?null:null!=r&&At(r,De)?r:Ot()}function er(){o||(o=!0,i=Mu(Qe),e=Mu(tr),r=Nu(nr),s=Nu(ir))}function rr(t){return t.i32().f33()?At(t,De)?t:Ot():new ro(t)}function sr(t){return Yo()}function or(t){return null==W&&new Wo,W}function ur(){return null==A&&new $o,A}function ar(t){return Ko()}function hr(){return null==T&&new yo,T}function _r(t){return Xo()}function lr(){return null==D&&new bo,D}function fr(t){return null==J&&new Zo,J}function cr(){return null==M&&new ko,M}function vr(t){return null==st&&new gu,st}function wr(){return null==N&&new jo,N}function dr(t){return tu()}function pr(){return null==R&&new xo,R}function mr(t){return null==ot&&new $u,ot}function gr(){return null==P&&new zo,P}function $r(t){return null==Z&&new nu,Z}function yr(){return null==L&&new Eo,L}function br(t){return null==ut&&new yu,ut}function kr(){return null==F&&new Co,F}function jr(t){return null==Q&&new iu,Q}function xr(){return null==U&&new So,U}function zr(t){return null==at&&new bu,at}function Er(){return null==H&&new qo,H}function Cr(t){return ru()}function Sr(){return null==V&&new Oo,V}function qr(t){return null==nt&&new su,nt}function Or(){return null==x&&new zs,x}function Ir(t){return null==z&&new Es,z}function Ar(t,n){this.g33_1=t,this.h33_1=n,this.i33_1=this.g33_1.j33()+"<"+this.h33_1.ye()+">"}function Tr(t){var n=t;return n instanceof Ar?t.h33_1:n instanceof so?Tr(t.t33_1):null}function Dr(){}function Mr(t){this.c34_1=t,this.b34_1=t.l33()}function Nr(t){this.d34_1=t}function Rr(t,n,i,e){if(e=e===vt?Vr:e,an(t))throw Zt(Xt("Blank serial names are prohibited"));if(on(n,fs()))throw Zt(Xt("For StructureKind.CLASS please use 'buildClassSerialDescriptor' instead"));var r=new Pr(t);return e(r),new Ur(t,n,r.n32_1.g(),hn(i),r)}function Pr(t){this.k32_1=t,this.l32_1=!1,this.m32_1=mt(),this.n32_1=_n(),this.o32_1=ln(),this.p32_1=_n(),this.q32_1=_n(),this.r32_1=_n()}function Lr(t,n,i){if(i=i===vt?Br:i,an(t))throw Zt(Xt("Blank serial names are prohibited"));var e=new Pr(t);return i(e),new Ur(t,fs(),e.n32_1.g(),hn(n),e)}function Fr(t){return kt("_hashCode",1,bt,(function(t){return Fr(t)}),null),t.q34_1.s()}function Ur(t,n,i,e,r){this.f34_1=t,this.g34_1=n,this.h34_1=i,this.i34_1=r.m32_1,this.j34_1=fn(r.n32_1);var s,o=r.n32_1;s=Jt(o),this.k34_1=s,this.l34_1=_o(r.p32_1);var u,a,h=r.q32_1;u=Jt(h),this.m34_1=u,this.n34_1=cn(r.r32_1);for(var _,l=vn(this.k34_1),f=qt(St(l,10)),c=l.d();c.e();){var v,w=c.f();v=wn(w.t3_1,w.s3_1),f.a(v)}_=f,this.o34_1=dn(_),this.p34_1=_o(e),this.q34_1=pn((a=this,function(){return wo(a,a.p34_1)}))}function Hr(t,n){this.s34_1=t,this.t34_1=n}function Vr(t){return pt()}function Br(t){return pt()}function Yr(){u=this,Kr.call(this)}function Wr(){a=this,Kr.call(this)}function Gr(){return null==a&&new Wr,a}function Kr(){}function Jr(){h=this,Qr.call(this)}function Xr(){_=this,Qr.call(this)}function Zr(){return null==_&&new Xr,_}function Qr(){Kr.call(this)}function ts(){l=this,_s.call(this)}function ns(){f=this,_s.call(this)}function is(){c=this,_s.call(this)}function es(){v=this,_s.call(this)}function rs(){w=this,_s.call(this)}function ss(){d=this,_s.call(this)}function os(){p=this,_s.call(this)}function us(){m=this,_s.call(this)}function as(){g=this,_s.call(this)}function hs(){return null==g&&new as,g}function _s(){Kr.call(this)}function ls(){$=this,gs.call(this)}function fs(){return null==$&&new ls,$}function cs(){y=this,gs.call(this)}function vs(){return null==y&&new cs,y}function ws(){b=this,gs.call(this)}function ds(){return null==b&&new ws,b}function ps(){k=this,gs.call(this)}function ms(){return null==k&&new ps,k}function gs(){Kr.call(this)}function $s(){}function ys(){}function bs(){j=this,this.c36_1=-1,this.d36_1=-3}function ks(){return null==j&&new bs,j}function js(){}function xs(){}function zs(){x=this,this.f36_1=(null==C&&new eo,C)}function Es(){z=this,this.g36_1=new uu("kotlin.time.Duration",hs())}function Cs(){}function Ss(t){Ms.call(this,t)}function qs(t){Ms.call(this,t)}function Os(t){Ms.call(this,t)}function Is(t,n){Ns.call(this,"kotlin.collections.HashMap",t,n)}function As(t,n){Ns.call(this,"kotlin.collections.LinkedHashMap",t,n)}function Ts(t){Ms.call(this,t)}function Ds(t){Ms.call(this,t),this.y36_1=t.j33()+"Array"}function Ms(t){this.k36_1=t,this.l36_1=1}function Ns(t,n,i){this.q36_1=t,this.r36_1=n,this.s36_1=i,this.t36_1=2}function Rs(t){Vs.call(this,t),this.a37_1=new Ss(t.i32())}function Ps(t){Vs.call(this,t),this.s37_1=new qs(t.i32())}function Ls(t){Vs.call(this,t),this.z37_1=new Os(t.i32())}function Fs(t,n){Bs.call(this,t,n),this.g38_1=new Is(t.i32(),n.i32())}function Us(t,n){Bs.call(this,t,n),this.p38_1=new As(t.i32(),n.i32())}function Hs(t,n){Ys.call(this,n),this.u38_1=t,this.v38_1=new Ts(n.i32())}function Vs(t){Ys.call(this,t)}function Bs(t,n){Ws.call(this),this.l38_1=t,this.m38_1=n}function Ys(t){Ws.call(this),this.m37_1=t}function Ws(){}function Gs(t){Ys.call(this,t),this.c39_1=new Ds(t.i32())}function Ks(){}function Js(){E=this,this.g39_1=Un(0)}function Xs(){return null==E&&new Js,E}function Zs(t,n){Xs(),this.h39_1=t,this.i39_1=n;var i=this.h39_1.l33();if(Hn(),i<=64){var e;Hn(),e=64===i?new kn(0,0):new kn(-1,-1).q8(i),this.j39_1=e,this.k39_1=Xs().g39_1}else this.j39_1=new kn(0,0),this.k39_1=function(t,n){var i=(n-1|0)>>>6|0;Hn();var e=63&n,r=Un(i);return 0!==e&&(r[Vn(r)]=new kn(-1,-1).q8(n)),r}(0,i)}function Qs(t,n){return new to(t,new no(n))}function to(t,n){vo.call(this,t,n,1),this.z39_1=!0}function no(t){this.q3a_1=t}function io(t){throw Sn("Descriptor for type `kotlin.Nothing` does not have elements")}function eo(){C=this,this.t3a_1=ms(),this.u3a_1="kotlin.Nothing"}function ro(t){this.v3a_1=t,this.w3a_1=new so(this.v3a_1.i32())}function so(t){this.t33_1=t,this.u33_1=this.t33_1.j33()+"?",this.v33_1=ao(this.t33_1)}function oo(t,n){return function(){var i=ms();return Rr(t,i,[],function(t){return function(n){return n.m32_1=t.y3a_1,pt()}}(n))}}function uo(t,n){this.x3a_1=n,this.y3a_1=mt();var i=gt();this.z3a_1=$t(i,oo(t,this))}function ao(t){if(lo(),At(t,Cs))return t.r34();var n=Yn(t.l33()),i=0,e=t.l33();if(i0){var i,e=se(t,0);i=ae(e)?ue(e):oe(e),n=Xt(i)+t.substring(1)}else n=t;return n}function hu(){it||(it=!0,B=we([wn(he().xf(),sr(dt())),wn(Dt(jn),or(Qn())),wn(he().ag(),ur()),wn(he().vf(),ar(ii())),wn(he().gg(),hr()),wn(he().uf(),_r(ri())),wn(he().fg(),lr()),wn(Dt(kn),fr(Hn())),wn(he().eg(),cr()),wn(Dt(_e),vr(ui())),wn(Dt(ai),wr()),wn(he().tf(),dr(li())),wn(he().dg(),pr()),wn(Dt(le),mr(ci())),wn(Dt(vi),gr()),wn(he().sf(),$r(pi())),wn(he().cg(),yr()),wn(Dt(fe),br(gi())),wn(Dt($i),kr()),wn(he().rf(),jr(ki())),wn(he().bg(),xr()),wn(Dt(ce),zr(xi())),wn(Dt(zi),Er()),wn(he().qf(),Cr(Si())),wn(he().zf(),Sr()),wn(Dt(ve),qr(pt())),wn(he().pf(),Or()),wn(Dt(zn),Ir(xn()))]))}function _u(){fu.call(this)}function lu(t,n,i){t.y3f(n);var e=i();return t.j3f_1||t.z3f(),t.j3f_1=!1,e}function fu(){var t;t=_n(),this.i3f_1=t,this.j3f_1=!1}function cu(){return rt||(rt=!0,et=new Object),et}function vu(t,n){this.a3g_1=t,this.b3g_1=n}function wu(t,n){mu.call(this,t,n);var i,e,r=ds();this.e3g_1=Rr("kotlin.collections.Map.Entry",r,[],(i=t,e=n,function(t){return t.s32("key",i.i32()),t.s32("value",e.i32()),pt()}))}function du(t,n){var i,e;mu.call(this,t,n),this.k3g_1=Lr("kotlin.Pair",[],(i=t,e=n,function(t){return t.s32("first",i.i32()),t.s32("second",e.i32()),pt()}))}function pu(t,n,i){var e;this.l3g_1=t,this.m3g_1=n,this.n3g_1=i,this.o3g_1=Lr("kotlin.Triple",[],(e=this,function(t){return t.s32("first",e.l3g_1.i32()),t.s32("second",e.m3g_1.i32()),t.s32("third",e.n3g_1.i32()),pt()}))}function mu(t,n){this.g3g_1=t,this.h3g_1=n}function gu(){st=this,this.p3g_1=Qs("kotlin.ULong",fr(Hn()))}function $u(){ot=this,this.r3g_1=Qs("kotlin.UInt",dr(li()))}function yu(){ut=this,this.t3g_1=Qs("kotlin.UShort",$r(pi()))}function bu(){at=this,this.v3g_1=Qs("kotlin.UByte",jr(ki()))}function ku(){return Su(),ht}function ju(){}function xu(t,n,i,e,r){ju.call(this),this.w33_1=t,this.x33_1=n,this.y33_1=i,this.z33_1=e,this.a34_1=r}function zu(t){Cu.call(this),this.b3h_1=t}function Eu(t){Cu.call(this),this.z3g_1=t}function Cu(){}function Su(){_t||(_t=!0,ht=new xu(Xn(),Xn(),Xn(),Xn(),Xn()))}function qu(){return ku()}function Ou(){var t;t=Tn(),this.g3h_1=t;var n;n=Tn(),this.h3h_1=n;var i;i=Tn(),this.i3h_1=i;var e;e=Tn(),this.j3h_1=e;var r;r=Tn(),this.k3h_1=r}function Iu(t,n){var i=function(t,n,i){return Au.call(i,"Serializer for "+n+" already registered in the scope of "+t),i}(t,n,xt(ft(Au)));return zt(i,Iu),i}function Au(t){jt(t,this),zt(this,Au)}function Tu(){}function Du(t){this.s3h_1=t}function Mu(t){return new Fu(t)}function Nu(t){return new Uu(t)}function Ru(t,n){var i;try{var e,r=$e(t,Dt(Du));if(null!=r&&At(r,De))e=null!=r&&At(r,De)?r:Ot();else if(null!=r&&At(r,mo)){var s=r.a3b(n.slice());e=At(s,De)?s:Ot()}else e=function(t){var n=ge(t).$metadata$;return"interface"==(null==n?null:n.kind)}(t)?new Re(t):null;i=e}catch(t){i=null}return i}function Pu(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw be("Index "+n+" out of bounds "+ye(t));return t[n]}function Lu(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw be("Index "+n+" out of bounds "+ke(t));return t[n]}function Fu(t){this.t3h_1=t}function Uu(t){this.u3h_1=t}return wt(Me,"DeserializationStrategy",ct),wt(De,"KSerializer",ct,vt,[Me]),wt(xs,"AbstractPolymorphicSerializer",yt,vt,[De]),wt(Re,"PolymorphicSerializer",yt,xs),wt(He,"SerializationException",yt,Ct),wt(Ve,"UnknownFieldException",yt,He),wt(Ye,"MissingFieldException",yt,He),wt(Dr,"SerialDescriptor",ct),wt(Ar,"ContextDescriptor",yt,vt,[Dr]),wt(Mr,vt,yt),wt(Nr,vt,yt),wt(Pr,"ClassSerialDescriptorBuilder",yt),wt(Cs,"CachedNames",ct),wt(Ur,"SerialDescriptorImpl",yt,vt,[Dr,Cs]),wt(Hr,"WrappedSerialDescriptor",yt,vt,[Dr]),wt(Kr,"SerialKind",yt),wt(Yr,"ENUM",yn,Kr),wt(Wr,"CONTEXTUAL",yn,Kr),wt(Qr,"PolymorphicKind",yt,Kr),wt(Jr,"SEALED",yn,Qr),wt(Xr,"OPEN",yn,Qr),wt(_s,"PrimitiveKind",yt,Kr),wt(ts,"BOOLEAN",yn,_s),wt(ns,"BYTE",yn,_s),wt(is,"CHAR",yn,_s),wt(es,"SHORT",yn,_s),wt(rs,"INT",yn,_s),wt(ss,"LONG",yn,_s),wt(os,"FLOAT",yn,_s),wt(us,"DOUBLE",yn,_s),wt(as,"STRING",yn,_s),wt(gs,"StructureKind",yt,Kr),wt(ls,"CLASS",yn,gs),wt(cs,"LIST",yn,gs),wt(ws,"MAP",yn,gs),wt(ps,"OBJECT",yn,gs),wt(ys,"Decoder",ct),wt(js,"CompositeDecoder",ct),wt($s,"AbstractDecoder",yt,vt,[ys,js]),wt(bs,"Companion",yn),wt(zs,"NothingSerializer",yn,vt,[De]),wt(Es,"DurationSerializer",yn,vt,[De]),wt(Ms,"ListLikeDescriptor",yt,vt,[Dr]),wt(Ss,"ArrayListClassDesc",yt,Ms),wt(qs,"HashSetClassDesc",yt,Ms),wt(Os,"LinkedHashSetClassDesc",yt,Ms),wt(Ns,"MapLikeDescriptor",yt,vt,[Dr]),wt(Is,"HashMapClassDesc",yt,Ns),wt(As,"LinkedHashMapClassDesc",yt,Ns),wt(Ts,"ArrayClassDesc",yt,Ms),wt(Ds,"PrimitiveArrayDescriptor",yt,Ms),wt(Ws,"AbstractCollectionSerializer",yt,vt,[De]),wt(Ys,"CollectionLikeSerializer",yt,Ws),wt(Vs,"CollectionSerializer",yt,Ys),wt(Rs,"ArrayListSerializer",yt,Vs),wt(Ps,"HashSetSerializer",yt,Vs),wt(Ls,"LinkedHashSetSerializer",yt,Vs),wt(Bs,"MapLikeSerializer",yt,Ws),wt(Fs,"HashMapSerializer",yt,Bs),wt(Us,"LinkedHashMapSerializer",yt,Bs),wt(Hs,"ReferenceArraySerializer",yt,Ys),wt(Gs,"PrimitiveArraySerializer",yt,Ys),wt(Ks,"PrimitiveArrayBuilder",yt),wt(Js,"Companion",yn),wt(Zs,"ElementMarker",yt),wt(vo,"PluginGeneratedSerialDescriptor",yt,vt,[Dr,Cs]),wt(to,"InlineClassDescriptor",yt,vo),wt(go,"GeneratedSerializer",ct,vt,[De]),wt(no,vt,yt,vt,[go]),wt(eo,"NothingSerialDescriptor",yn,vt,[Dr]),wt(ro,"NullableSerializer",yt,vt,[De]),wt(so,"SerialDescriptorForNullable",yt,vt,[Dr,Cs]),wt(uo,"ObjectSerializer",yt,vt,[De]),wt(mo,"SerializerFactory",ct),wt($o,"CharArraySerializer",yn,Gs,[De,Gs]),wt(yo,"DoubleArraySerializer",yn,Gs,[De,Gs]),wt(bo,"FloatArraySerializer",yn,Gs,[De,Gs]),wt(ko,"LongArraySerializer",yn,Gs,[De,Gs]),wt(jo,"ULongArraySerializer",yn,Gs,[De,Gs]),wt(xo,"IntArraySerializer",yn,Gs,[De,Gs]),wt(zo,"UIntArraySerializer",yn,Gs,[De,Gs]),wt(Eo,"ShortArraySerializer",yn,Gs,[De,Gs]),wt(Co,"UShortArraySerializer",yn,Gs,[De,Gs]),wt(So,"ByteArraySerializer",yn,Gs,[De,Gs]),wt(qo,"UByteArraySerializer",yn,Gs,[De,Gs]),wt(Oo,"BooleanArraySerializer",yn,Gs,[De,Gs]),wt(Io,"CharArrayBuilder",yt,Ks),wt(Ao,"DoubleArrayBuilder",yt,Ks),wt(To,"FloatArrayBuilder",yt,Ks),wt(Do,"LongArrayBuilder",yt,Ks),wt(Mo,"ULongArrayBuilder",yt,Ks),wt(No,"IntArrayBuilder",yt,Ks),wt(Ro,"UIntArrayBuilder",yt,Ks),wt(Po,"ShortArrayBuilder",yt,Ks),wt(Lo,"UShortArrayBuilder",yt,Ks),wt(Fo,"ByteArrayBuilder",yt,Ks),wt(Uo,"UByteArrayBuilder",yt,Ks),wt(Ho,"BooleanArrayBuilder",yt,Ks),wt(Bo,"StringSerializer",yn,vt,[De]),wt(Wo,"CharSerializer",yn,vt,[De]),wt(Go,"DoubleSerializer",yn,vt,[De]),wt(Jo,"FloatSerializer",yn,vt,[De]),wt(Zo,"LongSerializer",yn,vt,[De]),wt(Qo,"IntSerializer",yn,vt,[De]),wt(nu,"ShortSerializer",yn,vt,[De]),wt(iu,"ByteSerializer",yn,vt,[De]),wt(eu,"BooleanSerializer",yn,vt,[De]),wt(su,"UnitSerializer",yn,vt,[De]),wt(uu,"PrimitiveSerialDescriptor",yt,vt,[Dr]),wt(fu,"TaggedDecoder",yt,vt,[ys,js]),wt(_u,"NamedValueDecoder",yt,fu),wt(vu,"MapEntry",yt,vt,[Nt]),wt(mu,"KeyValueSerializer",yt,vt,[De]),wt(wu,"MapEntrySerializer",yt,mu),wt(du,"PairSerializer",yt,mu),wt(pu,"TripleSerializer",yt,vt,[De]),wt(gu,"ULongSerializer",yn,vt,[De]),wt($u,"UIntSerializer",yn,vt,[De]),wt(yu,"UShortSerializer",yn,vt,[De]),wt(bu,"UByteSerializer",yn,vt,[De]),wt(ju,"SerializersModule",yt),wt(xu,"SerialModuleImpl",yt,ju),wt(Cu,"ContextualProvider",yt),wt(zu,"Argless",yt,Cu),wt(Eu,"WithTypeArguments",yt,Cu),wt(Tu,"SerializersModuleCollector",ct),wt(Ou,"SerializersModuleBuilder",yt,vt,[Tu]),wt(Au,"SerializerAlreadyRegisteredException",yt,Ct),wt(Du,"SerializableWith",yt,vt,vt,0),wt(Fu,vt,yt),wt(Uu,vt,yt),ft(Re).w32=function(){return this.t32_1},ft(Re).i32=function(){return kt("descriptor",1,bt,(function(t){return t.i32()}),null),this.v32_1.s()},ft(Re).toString=function(){return"kotlinx.serialization.PolymorphicSerializer(baseClass: "+this.t32_1+")"},ft(Ar).k33=function(){return this.g33_1.k33()},ft(Ar).l33=function(){return this.g33_1.l33()},ft(Ar).m33=function(){return this.g33_1.m33()},ft(Ar).f33=function(){return this.g33_1.f33()},ft(Ar).n33=function(){return this.g33_1.n33()},ft(Ar).o33=function(t){return this.g33_1.o33(t)},ft(Ar).p33=function(t){return this.g33_1.p33(t)},ft(Ar).q33=function(t){return this.g33_1.q33(t)},ft(Ar).r33=function(t){return this.g33_1.r33(t)},ft(Ar).s33=function(t){return this.g33_1.s33(t)},ft(Ar).j33=function(){return this.i33_1},ft(Ar).equals=function(t){var n=t instanceof Ar?t:null;if(null==n)return!1;var i=n;return!!on(this.g33_1,i.g33_1)&&i.h33_1.equals(this.h33_1)},ft(Ar).hashCode=function(){var t=this.h33_1.hashCode();return lt(31,t)+un(this.i33_1)|0},ft(Ar).toString=function(){return"ContextDescriptor(kClass: "+this.h33_1+", original: "+this.g33_1+")"},ft(Mr).e=function(){return this.b34_1>0},ft(Mr).f=function(){var t=this.c34_1.l33(),n=this.b34_1;return this.b34_1=n-1|0,this.c34_1.p33(t-n|0)},ft(Nr).d=function(){return new Mr(this.d34_1)},ft(Pr).e34=function(t,n,i,e){var r;if(!this.o32_1.a(t))throw r="Element with name '"+t+"' is already registered in "+this.k32_1,Zt(Xt(r));this.n32_1.a(t),this.p32_1.a(n),this.q32_1.a(i),this.r32_1.a(e)},ft(Pr).s32=function(t,n,i,e,r){var s;return i=i===vt?mt():i,e=e!==vt&&e,r===vt?(this.e34(t,n,i,e),s=pt()):s=r.e34.call(this,t,n,i,e),s},ft(Ur).j33=function(){return this.f34_1},ft(Ur).n33=function(){return this.g34_1},ft(Ur).l33=function(){return this.h34_1},ft(Ur).k33=function(){return this.i34_1},ft(Ur).r34=function(){return this.j34_1},ft(Ur).r33=function(t){return Pu(this.k34_1,t)},ft(Ur).q33=function(t){var n,i=this.o34_1.g2(t);return null==i?(ks(),n=-3):n=i,n},ft(Ur).o33=function(t){return Pu(this.m34_1,t)},ft(Ur).p33=function(t){return Pu(this.l34_1,t)},ft(Ur).s33=function(t){return Lu(this.n34_1,t)},ft(Ur).equals=function(t){var n;t:if(this!==t)if(t instanceof Ur)if(this.j33()===t.j33()){var i=t;if(mn(this.p34_1,i.p34_1))if(this.l33()===t.l33()){var e=0,r=this.l33();if(e=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return!1},ft(Ms).o33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return mt()},ft(Ms).p33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return this.k36_1},ft(Ms).equals=function(t){return this===t||t instanceof Ms&&!(!on(this.k36_1,t.k36_1)||this.j33()!==t.j33())},ft(Ms).hashCode=function(){return lt(Cn(this.k36_1),31)+un(this.j33())|0},ft(Ms).toString=function(){return this.j33()+"("+this.k36_1+")"},ft(Ns).j33=function(){return this.q36_1},ft(Ns).n33=function(){return ds()},ft(Ns).l33=function(){return this.t36_1},ft(Ns).r33=function(t){return t.toString()},ft(Ns).q33=function(t){var n=En(t);if(null==n)throw Zt(t+" is not a valid map index");return n},ft(Ns).s33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return!1},ft(Ns).o33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return mt()},ft(Ns).p33=function(t){var n,i;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));switch(t%2|0){case 0:i=this.r36_1;break;case 1:i=this.s36_1;break;default:throw Sn("Unreached")}return i},ft(Ns).equals=function(t){return this===t||t instanceof Ns&&this.j33()===t.j33()&&!!on(this.r36_1,t.r36_1)&&!!on(this.s36_1,t.s36_1)},ft(Ns).hashCode=function(){var t=un(this.j33());return t=lt(31,t)+Cn(this.r36_1)|0,lt(31,t)+Cn(this.s36_1)|0},ft(Ns).toString=function(){return this.j33()+"("+this.r36_1+", "+this.s36_1+")"},ft(Rs).i32=function(){return this.a37_1},ft(Rs).b37=function(){return _n()},ft(Rs).c37=function(t){return t.g()},ft(Rs).d37=function(t){return this.c37(t instanceof Yt?t:Ot())},ft(Rs).e37=function(t){return t},ft(Rs).f37=function(t){return this.e37(t instanceof Yt?t:Ot())},ft(Rs).g37=function(t){var n=t instanceof Yt?t:null;return null==n?qn(t):n},ft(Rs).h37=function(t){return this.g37(null!=t&&At(t,Gt)?t:Ot())},ft(Rs).i37=function(t,n){return t.ad(n)},ft(Rs).j37=function(t,n){return this.i37(t instanceof Yt?t:Ot(),n)},ft(Rs).k37=function(t,n,i){t.z2(n,i)},ft(Rs).l37=function(t,n,i){var e=t instanceof Yt?t:Ot();return this.k37(e,n,null==i||nn(i)?i:Ot())},ft(Ps).i32=function(){return this.s37_1},ft(Ps).b37=function(){return ln()},ft(Ps).t37=function(t){return t.g()},ft(Ps).d37=function(t){return this.t37(t instanceof Bt?t:Ot())},ft(Ps).u37=function(t){return t},ft(Ps).f37=function(t){return this.u37(t instanceof Bt?t:Ot())},ft(Ps).v37=function(t){var n=t instanceof Bt?t:null;return null==n?On(t):n},ft(Ps).h37=function(t){return this.v37(null!=t&&At(t,Vt)?t:Ot())},ft(Ps).w37=function(t,n){},ft(Ps).j37=function(t,n){return this.w37(t instanceof Bt?t:Ot(),n)},ft(Ps).x37=function(t,n,i){t.a(i)},ft(Ps).l37=function(t,n,i){var e=t instanceof Bt?t:Ot();return this.x37(e,n,null==i||nn(i)?i:Ot())},ft(Ls).i32=function(){return this.z37_1},ft(Ls).b37=function(){return In()},ft(Ls).a38=function(t){return t.g()},ft(Ls).d37=function(t){return this.a38(t instanceof Ut?t:Ot())},ft(Ls).b38=function(t){return t},ft(Ls).f37=function(t){return this.b38(t instanceof Ut?t:Ot())},ft(Ls).v37=function(t){var n=t instanceof Ut?t:null;return null==n?An(t):n},ft(Ls).h37=function(t){return this.v37(null!=t&&At(t,Vt)?t:Ot())},ft(Ls).c38=function(t,n){},ft(Ls).j37=function(t,n){return this.c38(t instanceof Ut?t:Ot(),n)},ft(Ls).d38=function(t,n,i){t.a(i)},ft(Ls).l37=function(t,n,i){var e=t instanceof Ut?t:Ot();return this.d38(e,n,null==i||nn(i)?i:Ot())},ft(Fs).i32=function(){return this.g38_1},ft(Fs).b37=function(){return Tn()},ft(Fs).h38=function(t){return lt(t.g(),2)},ft(Fs).d37=function(t){return this.h38(t instanceof Ft?t:Ot())},ft(Fs).i38=function(t){return t},ft(Fs).f37=function(t){return this.i38(t instanceof Ft?t:Ot())},ft(Fs).j38=function(t){var n=t instanceof Ft?t:null;return null==n?Dn(t):n},ft(Fs).h37=function(t){return this.j38(null!=t&&At(t,Lt)?t:Ot())},ft(Fs).k38=function(t,n){},ft(Fs).j37=function(t,n){return this.k38(t instanceof Ft?t:Ot(),n)},ft(Us).i32=function(){return this.p38_1},ft(Us).b37=function(){return Mn()},ft(Us).q38=function(t){return lt(t.g(),2)},ft(Us).d37=function(t){return this.q38(t instanceof Rt?t:Ot())},ft(Us).r38=function(t){return t},ft(Us).f37=function(t){return this.r38(t instanceof Rt?t:Ot())},ft(Us).j38=function(t){var n=t instanceof Rt?t:null;return null==n?Nn(t):n},ft(Us).h37=function(t){return this.j38(null!=t&&At(t,Lt)?t:Ot())},ft(Us).s38=function(t,n){},ft(Us).j37=function(t,n){return this.s38(t instanceof Rt?t:Ot(),n)},ft(Hs).i32=function(){return this.v38_1},ft(Hs).b37=function(){return _n()},ft(Hs).w38=function(t){return t.g()},ft(Hs).d37=function(t){return this.w38(t instanceof Yt?t:Ot())},ft(Hs).x38=function(t){return function(t,n){return Jt(t)}(t,this.u38_1)},ft(Hs).f37=function(t){return this.x38(t instanceof Yt?t:Ot())},ft(Hs).y38=function(t){return qn(Rn(t))},ft(Hs).h37=function(t){return this.y38(null!=t&&Pn(t)?t:Ot())},ft(Hs).z38=function(t,n){return t.ad(n)},ft(Hs).j37=function(t,n){return this.z38(t instanceof Yt?t:Ot(),n)},ft(Hs).a39=function(t,n,i){t.z2(n,i)},ft(Hs).l37=function(t,n,i){var e=t instanceof Yt?t:Ot();return this.a39(e,n,null==i||nn(i)?i:Ot())},ft(Bs).n37=function(t,n,i,e){if(!(e>=0))throw Zt(Xt("Size must be known in advance when using READ_ALL"));var r=Ln(gn(0,lt(e,2)),2),s=r.y_1,o=r.z_1,u=r.a1_1;if(u>0&&s<=o||u<0&&o<=s)do{var a=s;s=s+u|0,this.o37(t,i+a|0,n,!1)}while(a!==o)},ft(Bs).o37=function(t,n,i,e){var r,s=t.w35(this.i32(),n,this.l38_1);if(e){var o=t.a36(this.i32());if(o!==(n+1|0))throw Zt(Xt("Value must follow key in a map, index for key: "+n+", returned index for value: "+o));r=o}else r=n+1|0;var u=r,a=!i.a2(s)||this.m38_1.i32().n33()instanceof _s?t.w35(this.i32(),u,this.m38_1):t.v35(this.i32(),u,this.m38_1,Fn(i,s));i.f4(s,a)},ft(Ys).n37=function(t,n,i,e){if(!(e>=0))throw Zt(Xt("Size must be known in advance when using READ_ALL"));var r=0;if(r>>6|0)-1|0;Hn();var e=63&n;t.k39_1[i]=t.k39_1[i].xi(new kn(1,0).q8(e))}(this,t)},ft(Zs).m39=function(){for(var t=this.h39_1.l33();!this.j39_1.equals(new kn(-1,-1));){var n=Bn(this.j39_1.wi());if(this.j39_1=this.j39_1.xi(new kn(1,0).q8(n)),this.i39_1(this.h39_1,n))return n}return Hn(),t>64?function(t){var n=0,i=t.k39_1.length-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=e+1|0;Hn();for(var s=lt(r,64),o=t.k39_1[e];!o.equals(new kn(-1,-1));){var u=Bn(o.wi());o=o.xi(new kn(1,0).q8(u));var a=s+u|0;if(t.i39_1(t.h39_1,a))return t.k39_1[e]=o,a}t.k39_1[e]=o}while(n<=i);return ks(),-1}(this):(ks(),-1)},ft(to).m33=function(){return this.z39_1},ft(to).hashCode=function(){return lt(ft(vo).hashCode.call(this),31)},ft(to).equals=function(t){var n;t:if(this!==t)if(t instanceof to)if(this.j33()===t.j33()){var i=t;if(i.z39_1&&mn(this.m3a(),i.m3a()))if(this.l33()===t.l33()){var e=0,r=this.l33();if(e>>1|0}while(s<32);throw Be(e,i.j33())},t.$_$.k2=ku,t.$_$.l2=qu,t.$_$.m2=Ou,t.$_$.n2=function(t,n){Su();var i=new Ou;return i.l3h(t),i.l3h(n),i.f1c()},t.$_$.o2=Me,t.$_$.p2=De,t.$_$.q2=Ye,t.$_$.r2=He,t.$_$.s2=We,t.$_$.t2=function(t){return Je(qu(),t)},t.$_$.u2=Je,t})?e.apply(n,r):e)||(t.exports=s)},730:function(t,n,i){var e,r,s;r=[n,i(645),i(744)],void 0===(s="function"==typeof(e=function(t,n,i){"use strict";var e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt=Math.imul,nt=n.$_$.l2,it=i.$_$.ta,et=i.$_$.sa,rt=i.$_$.ng,st=i.$_$.ua,ot=i.$_$.l9,ut=n.$_$.w1,at=n.$_$.u1,ht=i.$_$.v9,_t=i.$_$.hf,lt=i.$_$.o9,ft=i.$_$.u9,ct=i.$_$.v6,vt=i.$_$.c5,wt=i.$_$.u4,dt=i.$_$.e1,pt=i.$_$.m2,mt=i.$_$.e5,gt=i.$_$.ya,$t=i.$_$.r1,yt=i.$_$.c,bt=i.$_$.t9,kt=i.$_$.i,jt=i.$_$.cg,xt=n.$_$.h2,zt=i.$_$.yd,Et=i.$_$.ae,Ct=i.$_$.wd,St=i.$_$.k4,qt=n.$_$.x,Ot=n.$_$.d2,It=n.$_$.g,At=n.$_$.n1,Tt=n.$_$.p2,Dt=n.$_$.u,Mt=n.$_$.j1,Nt=n.$_$.v,Rt=n.$_$.h,Pt=n.$_$.j,Lt=n.$_$.e1,Ft=i.$_$.ea,Ut=i.$_$.v1,Ht=i.$_$.dg,Vt=n.$_$.h1,Bt=n.$_$.g1,Yt=n.$_$.f1,Wt=i.$_$.ub,Gt=i.$_$.s9,Kt=n.$_$.a2,Jt=i.$_$.f9,Xt=n.$_$.r2,Zt=n.$_$.b,Qt=i.$_$.j9,tn=i.$_$.k9,nn=i.$_$.fb,en=i.$_$.kb,rn=n.$_$.o,sn=n.$_$.k,on=i.$_$.u,un=i.$_$.l,an=i.$_$.s7,hn=i.$_$.d9,_n=i.$_$.j6,ln=i.$_$.r6,fn=i.$_$.e6,cn=i.$_$.f6,vn=i.$_$.q9,wn=n.$_$.l,dn=i.$_$.se,pn=i.$_$.yf,mn=i.$_$.z8,gn=i.$_$.te,$n=i.$_$.rf,yn=i.$_$.l8,bn=n.$_$.y1,kn=i.$_$.d,jn=n.$_$.o2,xn=i.$_$.ha,zn=n.$_$.r1,En=i.$_$.xf,Cn=i.$_$.kc,Sn=i.$_$.fg,qn=n.$_$.q2,On=n.$_$.a,In=i.$_$.wa,An=i.$_$.xe,Tn=i.$_$.ag,Dn=i.$_$.zf,Mn=i.$_$.i9,Nn=n.$_$.t1,Rn=n.$_$.s1,Pn=i.$_$.fe,Ln=i.$_$.i3,Fn=i.$_$.ge,Un=i.$_$.p3,Hn=i.$_$.ee,Vn=i.$_$.a3,Bn=i.$_$.he,Yn=i.$_$.w3,Wn=n.$_$.v1,Gn=i.$_$.r4,Kn=n.$_$.z,Jn=i.$_$.s4,Xn=n.$_$.b1,Zn=i.$_$.q4,Qn=n.$_$.a1,ti=i.$_$.t4,ni=n.$_$.y,ii=i.$_$.r7,ei=i.$_$.ma,ri=i.$_$.t2,si=i.$_$.rc,oi=i.$_$.qe,ui=i.$_$.va,ai=n.$_$.f2,hi=n.$_$.c1,_i=n.$_$.d1,li=n.$_$.m,fi=i.$_$.p1,ci=i.$_$.f4,vi=i.$_$.j4,wi=i.$_$.xa,di=i.$_$.id,pi=n.$_$.i2,mi=i.$_$.k6,gi=i.$_$.i7,$i=i.$_$.a8,yi=i.$_$.ue,bi=n.$_$.p1,ki=n.$_$.i,ji=i.$_$.u2,xi=i.$_$.c7,zi=i.$_$.n7,Ei=i.$_$.ed,Ci=i.$_$.af,Si=i.$_$.p2,qi=i.$_$.o4,Oi=i.$_$.h9,Ii=i.$_$.vc,Ai=i.$_$.n;function Ti(){e=this,Mi.call(this,new Pi,nt())}function Di(){return null==e&&new Ti,e}function Mi(t,n){Di(),this.p3j_1=t,this.q3j_1=n,this.r3j_1=new sr}function Ni(){}function Ri(){}function Pi(t,n,i,e,r,s,o,u,a,h,_,l,f){t=t!==rt&&t,n=n!==rt&&n,i=i!==rt&&i,e=e!==rt&&e,r=r!==rt&&r,s=s===rt||s,o=o===rt?" ":o,u=u!==rt&&u,a=a!==rt&&a,h=h===rt?"type":h,_=_!==rt&&_,l=l===rt||l,f=f===rt?null:f,this.g3k_1=t,this.h3k_1=n,this.i3k_1=i,this.j3k_1=e,this.k3k_1=r,this.l3k_1=s,this.m3k_1=o,this.n3k_1=u,this.o3k_1=a,this.p3k_1=h,this.q3k_1=_,this.r3k_1=l,this.s3k_1=f}function Li(){}function Fi(){r=this}function Ui(){null==r&&new Fi}function Hi(){s=this}function Vi(t){null==s&&new Hi,Ui.call(this),this.v3k_1=t}function Bi(){o=this}function Yi(t){var n=t.r(),i=t.s(),e=dt();return dr(e,n),e.k7(pt(58)),e.k8(i),e.toString()}function Wi(t){null==o&&new Bi,Ui.call(this),this.z3k_1=t}function Gi(){u=this}function Ki(){null==u&&new Gi,Ui.call(this)}function Ji(t,n,i){if(i=i===rt?null:i,Ki.call(this),this.a3l_1=n,this.b3l_1=i,this.c3l_1=gt(t),null!=this.b3l_1&&!this.b3l_1.m33())throw $t(gt("Failed requirement."))}function Xi(){return ye()}function Zi(){a=this,Ki.call(this),this.d3l_1="null";var t=kt();this.e3l_1=jt(t,Xi)}function Qi(){return null==a&&new Zi,a}function te(t){return ee(),function(t){return pr(),!!si(t,"true",!0)||!si(t,"false",!0)&&null}(t.n29())}function ne(t){return ee(),zt(t.n29())}function ie(t){ee();var n,i=t instanceof Ki?t:null;return null==i?function(t,n){throw ee(),$t("Element "+yt(t)+" is not a "+n)}(t,"JsonPrimitive"):n=i,n}function ee(){h||(h=!0,Ot("kotlinx.serialization.json.JsonUnquotedLiteral",qt(St())))}function re(t){return t.s32("JsonPrimitive",be(se)),t.s32("JsonNull",be(oe)),t.s32("JsonLiteral",be(ue)),t.s32("JsonObject",be(ae)),t.s32("JsonArray",be(he)),wt()}function se(){return ge().g3l_1}function oe(){return ye().h3l_1}function ue(){return(null==p&&new ke,p).i3l_1}function ae(){return pe().j3l_1}function he(){return ve().k3l_1}function _e(){_=this;var t=It();this.l3l_1=At("kotlinx.serialization.json.JsonElement",t,[],re)}function le(){return null==_&&new _e,_}function fe(){l=this,this.m3l_1=Dt(le()).i32(),this.n3l_1="kotlinx.serialization.json.JsonArray"}function ce(){f=this,this.k3l_1=(null==l&&new fe,l)}function ve(){return null==f&&new ce,f}function we(){c=this,this.o3l_1=Nt(qt(St()),le()).i32(),this.p3l_1="kotlinx.serialization.json.JsonObject"}function de(){v=this,this.j3l_1=(null==c&&new we,c)}function pe(){return null==v&&new de,v}function me(){w=this,this.g3l_1=At("kotlinx.serialization.json.JsonPrimitive",Rt(),[])}function ge(){return null==w&&new me,w}function $e(){d=this,this.h3l_1=At("kotlinx.serialization.json.JsonNull",Pt(),[])}function ye(){return null==d&&new $e,d}function be(t){return new Ee(t)}function ke(){p=this,this.i3l_1=Lt("kotlinx.serialization.json.JsonLiteral",Rt())}function je(t){var n=Ft(t,Li)?t:null;if(null==n)throw Ut("This serializer can be used only with Json format.Expected Decoder to be JsonDecoder, got "+yt(t));return n}function xe(t){je(t)}function ze(t){return Gt("original",1,Wt,(function(t){return ze(t)}),null),t.q3l_1.s()}function Ee(t){this.q3l_1=Ht(t)}function Ce(t){var n,i;this.r3l_1=new Kt(t,(n=this,i=function(t,i){return r=t,s=i,(e=n).s3l_1=!r.s33(s)&&r.p33(s).f33(),e.s3l_1;var e,r,s},i.callableName="readIfAbsent",i)),this.s3l_1=!1}function Se(t,n){t.t3l("Unexpected special floating-point value "+gt(n)+". By default, non-finite floating point values are prohibited because they do not conform JSON specification",rt,fs())}function qe(t){Ne.call(this,t),Jt(this,qe)}function Oe(t){return new qe("Value of type '"+t.j33()+"' can't be used in JSON as a key in the map. It should have either primitive or enum kind, but its kind is '"+t.n33()+"'.\n"+Q)}function Ie(t){Ne.call(this,t),Jt(this,Ie)}function Ae(t,n,i){return De(t,n+"\nJSON input: "+Re(i,t))}function Te(t,n,i){return De(-1,function(t,n,i){return"Unexpected special floating-point value "+gt(t)+" with key "+n+". By default, non-finite floating point values are prohibited because they do not conform JSON specification. "+fs()+"\nCurrent output: "+Re(i)}(t,n,i))}function De(t,n){return new Ie(t>=0?"Unexpected JSON token at offset "+t+": "+n:n)}function Me(t,n){return De(-1,"Encountered an unknown key '"+t+"'.\n"+J+"\nCurrent input: "+Re(n))}function Ne(t){Zt(t,this),Jt(this,Ne)}function Re(t,n){if(n=n===rt?-1:n,Qt(t)<200)return t;if(-1===n){var i=Qt(t)-60|0;if(i<=0)return t;var e=Qt(t);return"....."+gt(tn(t,i,e))}var r=n-30|0,s=n+30|0,o=r<=0?"":".....",u=s>=Qt(t)?"":".....",a=nn(r,0),h=en(s,Qt(t));return o+gt(tn(t,a,h))+u}function Pe(){return Be(),m}function Le(t,n,i){if(Be(),null!=Fe(t,n))return He(n,t,i);var e=t.q33(i);return rn(),-3!==e?e:n.p3j_1.r3k_1?He(n,t,i):e}function Fe(t,n){return Be(),lt(t.n33(),sn())?n.p3j_1.s3k_1:null}function Ue(t,n){Be();var i,e,r=vs(t),s=Pe();return r.v3l(n,s,(i=n,e=t,function(){return function(t,n){Be();var i=on(),e=Fe(t,n),r=0,s=t.l33();if(r>12),r=wr(i>>8),s=wr(i>>4),o=wr(i);t[i]="\\u"+new oi(e)+new oi(r)+new oi(s)+new oi(o)}while(n<=31);t[34]='\\"',t[92]="\\\\",t[9]="\\t",t[8]="\\b",t[10]="\\n",t[13]="\\r",t[12]="\\f",k=t;var u=new Int8Array(93),a=0;if(a<=31)do{var h=a;a=a+1|0,u[h]=1}while(a<=31);34,u[34]=ui(34),92,u[92]=ui(92),116,u[9]=ui(116),98,u[8]=ui(98),110,u[10]=ui(110),114,u[13]=ui(114),102,u[12]=ui(102)}}function mr(t){var n=t.k3f(),i=null==n?null:t.v3o(n);return null==i?t.s():i}function gr(t,n){throw Ae(-1,"Failed to parse '"+n+"'",gt(mr(t)))}function $r(t,n,i){var e=t instanceof Ji?t:null;if(null==e)throw De(-1,"Unexpected 'null' when "+i+" was expected");return e}function yr(t,n){ai.call(this),this.s3o_1=t,this.t3o_1=n,this.u3o_1=this.t3k().p3j_1}function br(t,n,i,e){var r,s;t:{var o=t.t3k(),u=n.p33(i);if(!u.f33()&&t.v3o(e)instanceof Zi)r=!0;else{if(lt(u.n33(),Pt())){if(u.f33()&&t.v3o(e)instanceof Zi){r=!1;break t}var a=t.v3o(e),h=a instanceof Ki?a:null,_=null==h?null:(s=h,ee(),s instanceof Zi?null:s.n29());if(null==_){r=!1;break t}var l=Le(u,o,_);if(rn(),-3===l){wt(),r=!0;break t}}r=!1}}return r}function kr(t,n,i){return t.r3p_1=!t.t3k().p3j_1.l3k_1&&!n.s33(i)&&n.p33(i).f33(),t.r3p_1}function jr(t,n,i,e){i=i===rt?null:i,e=e===rt?null:e,yr.call(this,t,n),this.n3p_1=n,this.o3p_1=i,this.p3p_1=e,this.q3p_1=0,this.r3p_1=!1}function xr(t,n){yr.call(this,t,n),this.x3p_1=n,this.y3p_1=this.x3p_1.g(),this.z3p_1=-1}function zr(t,n){yr.call(this,t,n),this.f3q_1=n,this.y3f(Cr())}function Er(t,n){jr.call(this,t,n),this.q3q_1=n,this.r3q_1=$i(this.q3q_1.h2()),this.s3q_1=tt(this.r3q_1.g(),2),this.t3q_1=-1}function Cr(){return x}function Sr(){if(q)return wt();q=!0,z=new qr("OBJ",0,Xr(),Zr()),E=new qr("LIST",1,Qr(),ts()),C=new qr("MAP",2,Xr(),Zr()),S=new qr("POLY_OBJ",3,Qr(),ts())}function qr(t,n,i,e){yi.call(this,t,n),this.i3o_1=i,this.j3o_1=e}function Or(t,n){var i,e=n.n33();if(e instanceof hi)Sr(),i=S;else if(lt(e,wn()))i=Tr();else if(lt(e,li())){var r,s=Ir(n.p33(0),t.y35()),o=s.n33();if(o instanceof _i||lt(o,Pt()))r=Dr();else{if(!t.p3j_1.j3k_1)throw Oe(s);r=Tr()}i=r}else i=Ar();return i}function Ir(t,n){var i;if(lt(t.n33(),ki())){var e=bi(n,t),r=null==e?null:Ir(e,n);i=null==r?t:r}else i=t.m33()?Ir(t.p33(0),n):t;return i}function Ar(){return Sr(),z}function Tr(){return Sr(),E}function Dr(){return Sr(),C}function Mr(t,n,i){return t.u3q(n,i),function(t,n){var i=n;-1===(i=t.w3q(i))&&t.t3l("Expected escape sequence to continue, got EOF");var e=t.v3q(),r=i;i=r+1|0;var s=Mn(e,r);if(lt(new oi(s),new oi(pt(117))))return Pr(t,t.v3q(),i);var o=function(t){return t<117?ls().d3r_1[t]:pt(0)}(ri(s));return lt(new oi(o),new oi(pt(0)))&&t.t3l("Invalid escaped char '"+new oi(s)+"'"),t.e3k_1.k7(o),i}(t,i+1|0)}function Nr(t,n,i){t.u3q(n,i);var e=t.e3k_1.toString();return t.e3k_1.kg(0),e}function Rr(t){var n=En(t.d3k_1);return t.d3k_1=null,n}function Pr(t,n,i){return(i+4|0)>=Qt(n)?(t.b3k_1=i,t.x3q(),(t.b3k_1+4|0)>=Qt(n)&&t.t3l("Unexpected EOF during unicode escape"),Pr(t,n,t.b3k_1)):(t.e3k_1.k7(ei((((Lr(t,n,i)<<12)+(Lr(t,n,i+1|0)<<8)|0)+(Lr(t,n,i+2|0)<<4)|0)+Lr(t,n,i+3|0)|0)),i+4|0)}function Lr(t,n,i){var e,r=Mn(n,i);return pt(48)<=r&&r<=pt(57)?e=ri(r)-48|0:pt(97)<=r&&r<=pt(102)?e=10+(ri(r)-97|0)|0:pt(65)<=r&&r<=pt(70)?e=10+(ri(r)-65|0)|0:t.t3l("Invalid toHexChar char '"+new oi(r)+"' in unicode escape"),e}function Fr(t,n){var i=t.w3q(n);(i>=Qt(t.v3q())||-1===i)&&t.t3l("EOF");var e=t.v3q(),r=i;i=r+1|0;var s,o=Mn(e,r),u=32|ri(o);return 116===u?(Ur(t,"rue",i),s=!0):102===u?(Ur(t,"alse",i),s=!1):t.t3l("Expected valid boolean literal prefix, but had '"+t.o3m()+"'"),s}function Ur(t,n,i){(Qt(t.v3q())-i|0)=0&&(t.l8("."),t.l8(r.r33(s)))}else r!==We()&&(t.l8("["),t.l8("'"),t.k8(r),t.l8("'"),t.l8("]"))}while(i=0&<(new oi(t),new oi(pt(34)))&&"null"===this.o3m()&&this.b3r("Expected string literal but 'null' literal was found",this.b3k_1-4|0,"Use 'coerceInputValues = true' in 'Json {}` builder to coerce nulls to default values."),this.z3q(Vr(t))},it(Hr).z3q=function(t){var n=1===t?"quotation mark '\"'":4===t?"comma ','":5===t?"colon ':'":6===t?"start of the object '{'":7===t?"end of the object '}'":8===t?"start of the array '['":9===t?"end of the array ']'":"valid token",i=this.b3k_1===Qt(this.v3q())||this.b3k_1<=0?"EOF":ji(Mn(this.v3q(),this.b3k_1-1|0));this.t3l("Expected "+n+", but had '"+i+"' instead",this.b3k_1-1|0)},it(Hr).l3m=function(){for(var t=this.v3q(),n=this.b3k_1;-1!==(n=this.w3q(n));){var i=Mn(t,n);if(!(lt(new oi(i),new oi(pt(32)))||lt(new oi(i),new oi(pt(10)))||lt(new oi(i),new oi(pt(13)))||lt(new oi(i),new oi(pt(9)))))return this.b3k_1=n,Vr(i);n=n+1|0}return this.b3k_1=n,10},it(Hr).z3n=function(t){var n=this.c3r();n=this.w3q(n);var i=Qt(this.v3q())-n|0;if(i<4||-1===n)return!1;var e=0;if(e<=3)do{var r=e;if(e=e+1|0,!lt(new oi(Mn("null",r)),new oi(Mn(this.v3q(),n+r|0))))return!1}while(e<=3);return!(i>4&&0===Vr(Mn(this.v3q(),n+4|0))||(t&&(this.b3k_1=n+4|0),0))},it(Hr).k3o=function(t,n){return t=t===rt||t,n===rt?this.z3n(t):n.z3n.call(this,t)},it(Hr).c3r=function(){var t=this.b3k_1;t:for(;-1!==(t=this.w3q(t));){var n=Mn(this.v3q(),t);if(!(lt(new oi(n),new oi(pt(32)))||lt(new oi(n),new oi(pt(10)))||lt(new oi(n),new oi(pt(13)))||lt(new oi(n),new oi(pt(9)))))break t;t=t+1|0}return this.b3k_1=t,t},it(Hr).a3o=function(t){var n,i=this.l3m();if(t){if(1!==i&&0!==i)return null;n=this.o3m()}else{if(1!==i)return null;n=this.n3m()}var e=n;return this.d3k_1=e,e},it(Hr).lg=function(t,n){var i=this.v3q();return gt(tn(i,t,n))},it(Hr).n3m=function(){return null!=this.d3k_1?Rr(this):this.d3o()},it(Hr).consumeString2=function(t,n,i){for(var e=i,r=n,s=Mn(t,e),o=!1;!lt(new oi(s),new oi(pt(34)));)lt(new oi(s),new oi(pt(92)))?(o=!0,-1===(e=this.w3q(Mr(this,r,e)))&&this.t3l("EOF",e),r=e):(e=e+1|0)>=Qt(t)&&(o=!0,this.u3q(r,e),-1===(e=this.w3q(e))&&this.t3l("EOF",e),r=e),s=Mn(t,e);var u=o?Nr(this,r,e):this.lg(r,e);return this.b3k_1=e+1|0,u},it(Hr).e3o=function(){var t,n=this.o3m();return"null"===n&&!lt(new oi(Mn((t=this).v3q(),t.b3k_1-1|0)),new oi(pt(34)))&&this.t3l("Unexpected 'null' value instead of string literal"),n},it(Hr).o3m=function(){if(null!=this.d3k_1)return Rr(this);var t=this.c3r();(t>=Qt(this.v3q())||-1===t)&&this.t3l("EOF",t);var n=Vr(Mn(this.v3q(),t));if(1===n)return this.n3m();0!==n&&this.t3l("Expected beginning of the string, but got "+new oi(Mn(this.v3q(),t)));for(var i=!1;0===Vr(Mn(this.v3q(),t));)if((t=t+1|0)>=Qt(this.v3q())){i=!0,this.u3q(this.b3k_1,t);var e=this.w3q(t);if(-1===e)return this.b3k_1=t,Nr(this,0,0);t=e}var r=i?Nr(this,this.b3k_1,t):this.lg(this.b3k_1,t);return this.b3k_1=t,r},it(Hr).u3q=function(t,n){this.e3k_1.ig(this.v3q(),t,n)},it(Hr).c3o=function(t){var n=un(),i=this.l3m();if(8!==i&&6!==i)return this.o3m(),wt();for(;;)if(1!==(i=this.l3m())){var e=i;if(8===e||6===e)n.a(i);else if(9===e){if(8!==xi(n))throw Ae(this.b3k_1,"found ] instead of } at path: "+this.c3k_1,this.v3q());zi(n)}else if(7===e){if(6!==xi(n))throw Ae(this.b3k_1,"found } instead of ] at path: "+this.c3k_1,this.v3q());zi(n)}else 10===e&&this.t3l("Unexpected end of input due to malformed JSON during ignoring unknown keys");if(this.q3m(),0===n.g())return wt()}else t?this.o3m():this.d3o()},it(Hr).toString=function(){return"JsonReader(source='"+this.v3q()+"', currentPosition="+this.b3k_1+")"},it(Hr).b3o=function(t){var n=this.lg(0,this.b3k_1),i=Ei(n,t);this.b3r("Encountered an unknown key '"+t+"'",i,"Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.")},it(Hr).b3r=function(t,n,i){var e=0===Qt(i)?"":"\n"+i;throw Ae(n,t+" at path: "+this.c3k_1.g3m()+e,this.v3q())},it(Hr).t3l=function(t,n,i,e){return n=n===rt?this.b3k_1:n,i=i===rt?"":i,e===rt?this.b3r(t,n,i):e.b3r.call(this,t,n,i)},it(Hr).n3o=function(){var t,n=this.c3r();((n=this.w3q(n))>=Qt(this.v3q())||-1===n)&&this.t3l("EOF"),lt(new oi(Mn(this.v3q(),n)),new oi(pt(34)))?((n=n+1|0)===Qt(this.v3q())&&this.t3l("EOF"),t=!0):t=!1;var i,e=t,r=new Ci(0,0),s=!1,o=n,u=!0;t:for(;u;){var a=Mn(this.v3q(),n);if(lt(new oi(a),new oi(pt(45))))n!==o&&this.t3l("Unexpected symbol '-' in numeric literal"),s=!0,n=n+1|0;else{if(0!==Vr(a))break t;u=!((n=n+1|0)===Qt(this.v3q()));var h=Si(a,pt(48));0<=h&&h<=9||this.t3l("Unexpected symbol '"+new oi(a)+"' in numeric literal"),(r=r.n7(new Ci(10,0)).p7(In(h))).w(new Ci(0,0))>0&&this.t3l("Numeric value overflow")}}if((o===n||s&&o===(n-1|0))&&this.t3l("Expected numeric literal"),e&&(u||this.t3l("EOF"),lt(new oi(Mn(this.v3q(),n)),new oi(pt(34)))||this.t3l("Expected closing quotation mark"),n=n+1|0),this.b3k_1=n,s)i=r;else{var _=r;qi(),_.equals(new Ci(0,-2147483648))?this.t3l("Numeric value overflow"):i=r.l7()}return i},it(Hr).l3o=function(){return Fr(this,this.c3r())},it(Hr).m3o=function(){var t,n=this.c3r();n===Qt(this.v3q())&&this.t3l("EOF"),lt(new oi(Mn(this.v3q(),n)),new oi(pt(34)))?(n=n+1|0,t=!0):t=!1;var i=t,e=Fr(this,n);if(i){this.b3k_1===Qt(this.v3q())&&this.t3l("EOF"),lt(new oi(Mn(this.v3q(),this.b3k_1)),new oi(pt(34)))||this.t3l("Expected closing quotation mark");this.b3k_1=this.b3k_1+1|0}return e},it(cs).v3q=function(){return this.j3r_1},it(cs).w3q=function(t){return t=t.jz_1.length){var i=nt(t.jz_1.length,2),e=t.gz_1,r=Math.min(i,e),s=vn(Array(r),null),o=0;if(o=1))throw e="ArrayChannel capacity must be at least 1, but "+this.gz_1+" was specified",dn(zt(e));this.iz_1=new $o;var r,s,o=this.gz_1;s=Math.min(o,8);var u=vn(Array(s),null);wn(u,ir()),r=u,this.jz_1=r,this.kz_1=0,this.lz_1=yt(0)}function zr(){if(T)return st();T=!0,I=new Er("SUSPEND",0),A=new Er("DROP_OLDEST",1),new Er("DROP_LATEST",2)}function Er(t,n){Bt.call(this,t,n)}function Cr(){return zr(),I}function Sr(){}function qr(t){Sr.call(this),this.mz_1=t}function Or(){D=this,this.zy_1=new Sr}function Ir(){return null==D&&new Or,D}function Ar(){var t,n,i,e;M=this,this.nz_1=2147483647,this.oz_1=0,this.pz_1=-1,this.qz_1=-2,this.rz_1=-3,this.sz_1="kotlinx.coroutines.channels.defaultBuffer",this.tz_1=(t="kotlinx.coroutines.channels.defaultBuffer",n=64,i=(i=1)===ft?1:i,e=(e=2147483646)===ft?bn().MAX_VALUE:e,function(t,n,i,e){var r;i=i===ft?new Gt(1,0):i,e===ft?(Kt(),r=new Gt(-1,2147483647)):r=e,e=r;var s=null;if(null==s)return n;var o=s,u=Cn(o);if(null==u)throw $t(zt("System property '"+t+"' has unrecognized value '"+o+"'"));var a=u;if(!(i.w(a)<=0&&a.w(e)<=0)){var h="System property '"+t+"' should be in range "+zt(i)+".."+zt(e)+", but is '"+zt(a)+"'";throw $t(zt(h))}return a}(t,kn(n),kn(i),kn(e)).c8())}function Tr(){return null==M&&new Ar,M}function Dr(){}function Mr(){}function Nr(t){gn(t,this),Zt(this,Nr)}function Rr(t){yn(t,this),Zt(this,Rr)}function Pr(){return N}function Lr(t,n){var i,e=t.yz_1;if(e===ir())i=null;else{var r=t.uw_1;i=null==r?null:Ds(r,null==e||rt(e)?e:et())}var s=i;return t.yz_1=n,s}function Fr(t){cr.call(this,t),this.xz_1=new $o,this.yz_1=ir()}function Ur(t){cr.call(this,t)}function Hr(t){cr.call(this,t)}function Vr(){return _s(),R}function Br(t){var n=t.o10_1,i=t.n10_1;return n.w(i)<=0?n:i}function Yr(t){var n=Br(t),i=t.p10_1;return n.o7(kn(i)).p7(t.n10_1).c8()}function Wr(t){return t.p10_1+t.q10_1|0}function Gr(t){var n=Br(t),i=t.p10_1;return n.o7(kn(i))}function Kr(t,n){if(0===t.s10_1)return function(t,n){if(0===t.j10_1)return!0;Xr(t,n);var i=t,e=i.p10_1;i.p10_1=e+1|0,t.p10_1>t.j10_1&&Jr(t);var r,s=t,o=Br(t),u=t.p10_1;return r=o.o7(kn(u)),s.o10_1=r,!0}(t,n);if(t.p10_1>=t.k10_1&&t.o10_1.w(t.n10_1)<=0)switch(t.l10_1.l6_1){case 0:return!1;case 2:return!0}Xr(t,n);var i=t,e=i.p10_1;return i.p10_1=e+1|0,t.p10_1>t.k10_1&&Jr(t),Yr(t)>t.j10_1&&Qr(t,t.n10_1.o7(new Gt(1,0)),t.o10_1,Gr(t),function(t){var n=Br(t),i=t.p10_1,e=n.o7(kn(i)),r=t.q10_1;return e.o7(kn(r))}(t)),!0}function Jr(t){hs(pn(t.m10_1),Br(t),null);var n=t,i=n.p10_1;n.p10_1=i-1|0;var e=Br(t).o7(new Gt(1,0));t.n10_1.w(e)<0&&(t.n10_1=e),t.o10_1.w(e)<0&&function(t,n){if(0!==t.s10_1){var i=t.r10_1;if(null==i);else for(var e=jn(i);e.e();){var r=e.f();null!=r&&r.v10_1.w(new Gt(0,0))>=0&&r.v10_1.w(n)<0&&(r.v10_1=n)}}else st();t.o10_1=n}(t,e)}function Xr(t,n){var i=Wr(t),e=t.m10_1;hs(null==e?Zr(t,null,0,2):i>=e.length?Zr(t,e,i,nt(e.length,2)):e,Br(t).o7(kn(i)),n)}function Zr(t,n,i,e){if(!(e>0))throw $t(zt("Buffer size overflow"));var r=vn(Array(e),null);t.m10_1=r;var s=r;if(null==n)return s;var o=Br(t),u=0;if(u0){var e=Br(t),r=Wr(t);i=as(n,e.o7(kn(r)).p7(new Gt(1,0)))===Vr()}else i=!1;if(!i)break t;var s=t,o=s.q10_1;s.q10_1=o-1|0;var u=Br(t),a=Wr(t);hs(n,u.o7(kn(a)),null)}}function ns(t,n){var i,e=ls(),r=is(t,n);if(r.w(new Gt(0,0))<0)i=Vr();else{var s,o=n.v10_1,u=function(t,n){var i=as(pn(t.m10_1),n);return i instanceof rs?i.z10_1:i}(t,r),a=n;s=r.o7(new Gt(1,0)),a.v10_1=s,e=t.b11(o),i=u}for(var h=i,_=e,l=0,f=_.length;l0||i.w(Br(t))>0||0===t.q10_1?new Gt(-1,-1):i}function es(t,n){var i=n,e=n.length;if(0!==t.s10_1){var r=t.r10_1;if(null==r);else for(var s=jn(r);s.e();){var o=s.f();if(null!=o){var u=o.w10_1;if(null!=u){var a=u;if(is(t,o).w(new Gt(0,0))<0)st();else{if(e>=i.length){var h,_=i,l=nt(2,i.length);h=Math.max(2,l),i=xn(_,h)}var f=e;e=f+1|0,i[f]=a,o.w10_1=null}}else st()}}}else st();return i}function rs(t,n,i,e){this.x10_1=t,this.y10_1=n,this.z10_1=i,this.a11_1=e}function ss(t,n,i){dt.call(this,i),this.k11_1=t,this.l11_1=n}function os(t,n,i){fs.call(this),this.j10_1=t,this.k10_1=n,this.l10_1=i,this.m10_1=null,this.n10_1=new Gt(0,0),this.o10_1=new Gt(0,0),this.p10_1=0,this.q10_1=0}function us(){cs.call(this),this.v10_1=new Gt(-1,-1),this.w10_1=null}function as(t,n){return _s(),t[n.c8()&(t.length-1|0)]}function hs(t,n,i){return _s(),t[n.c8()&(t.length-1|0)]=i}function _s(){P||(P=!0,R=new Rs("NO_VALUE"))}function ls(){return F||(F=!0,t=vn(Array(0),null),L=t),L;var t}function fs(){this.r10_1=null,this.s10_1=0,this.t10_1=0,this.u10_1=null}function cs(){}function vs(t,n){if(n.e6(0,(e=t,function(t,n){var i=n.r(),r=e.v12_1.y5(i);if(i!==Ki())return n!==r?bn().MIN_VALUE:t+1|0;var s=null==r||jt(r,Ji)?r:et(),o=function(t,n){for(var i=t,e=n;;){if(null===i)return null;if(i===e)return i;if(!(i instanceof Ms))return i;var r=i.sn();i=r}}(jt(n,Ji)?n:et(),s);if(o!==s)throw $t(zt("Flow invariant is violated:\n\t\tEmission from another coroutine is detected.\n\t\tChild of "+o+", expected child of "+s+".\n\t\tFlowCollector is not thread-safe and concurrent emissions are prohibited.\n\t\tTo mitigate this restriction please use 'channelFlow' builder instead of 'flow'"));return null==s?t:t+1|0}))!==t.w12_1){var i="Flow invariant is violated:\n\t\tFlow was collected in "+t.v12_1+",\n\t\tbut emission happened in "+n+".\n\t\tPlease refer to 'flow' documentation or use 'flowOn' instead";throw $t(zt(i))}var e}function ws(t,n){dt.call(this,n),this.g13_1=t}function ds(){}function ps(t,n,i){dt.call(this,i),this.s13_1=t,this.t13_1=n}function ms(t,n){this.u13_1=n,this.v13_1=t}function gs(){var t;t=vn(Array(16),null),this.kr_1=t,this.lr_1=0,this.mr_1=0}function $s(){}function ys(){return xs(),U}function bs(){return xs(),H}function ks(t,n,i){var e;if(i=i===ft?null:i,xs(),t instanceof js){var r,s=t,o=bi(n,i);if(s.go_1.tq(s.r4()))s.io_1=o,s.uo_1=zs(),s.go_1.uq(s.r4(),s),r=st();else{var u=zs(),a=Bi().xr();if(a.qr())s.io_1=o,s.uo_1=u,a.or(s);else{a.tr(!0);try{var h,_=s.r4().y5(Ki());if(null==_||_.pk())h=!1;else{var l,f=_.ml();s.mp(o,f),Tt(),l=Dt(Mt(f)),s.p4(l),st(),h=!0}for(h||(s.ho_1,s.jo_1,s.ho_1.p4(n),st());a.jr(););}catch(t){if(!(t instanceof Error))throw t;var c=t;s.xp(c,null)}finally{a.ur(!0)}}r=st()}e=r}else t.p4(n),e=st();return e}function js(t,n){Es.call(this,Y),this.go_1=t,this.ho_1=n,this.io_1=ys(),this.jo_1=(this.r4(),0),this.ko_1=Et(null)}function xs(){V||(V=!0,U=new Rs("UNDEFINED"),H=new Rs("REUSABLE_CLAIMED"))}function zs(){return B}function Es(t){po.call(this),this.uo_1=t}function Cs(t){return 1===t||2===t}function Ss(){return K}function qs(t,n,i){var e,r=t.lp(),s=t.vp(r);if(null!=s)Tt(),e=Dt(Mt(s));else{Tt();var o=t.tp(r);e=Dt(o)}var u=e;if(i){var a=n instanceof js?n:et();a.ho_1,a.jo_1,a.ho_1.p4(u),st()}else n.p4(u)}function Os(t){return t===ft?null:t}function Is(t,n){var i,e=t;if(null==e)i=Os(n);else if(e instanceof un){(t instanceof un?t:et()).a(n),i=Os(t)}else{var r=sn(4),s=t;r.a(null==s||rt(s)?s:et()),r.a(n),i=Os(r)}return i}function As(t,n,i){return e=t,r=n,s=i,function(t){return function(t,n,i){var e=Ds(t,n,null);null==e||(Si(i,e),st())}(e,r,s),st()};var e,r,s}function Ts(t,n){Xt(t,n,this),Zt(this,Ts)}function Ds(t,n,i){i=i===ft?null:i;try{t(n)}catch(t){if(!(t instanceof Error))throw t;var e=t;if(null==i||i.cause===e)return new Ts("Exception in undelivered element handler for "+n,e)}return i}function Ms(t,n){Pn.call(this,t,!0,!0),this.rn_1=n}function Ns(t){this.x13_1=t}function Rs(t){this.y13_1=t}function Ps(t,n,i,e){var r;e=e===ft?null:e;try{var s=bt(wt(t,n,i));Tt(),ks(s,Dt(st()),e),r=st()}catch(t){if(!(t instanceof Error))throw t;Fs(i,t),r=st()}return r}function Ls(t,n){var i;try{var e=bt(t);Tt(),ks(e,Dt(st())),i=st()}catch(t){if(!(t instanceof Error))throw t;Fs(n,t),i=st()}return i}function Fs(t,n){return function(t,n){var i;throw Tt(),i=Dt(Mt(n)),t.p4(i),n}(t,n)}function Us(t,n,i){var e,r;try{var s;r="function"==typeof(s=i)?s(n,t):i.ck(n,t)}catch(t){if(!(t instanceof Error))throw t;r=new $i(t)}var o=r;if(o!==pt()){var u=t.xk(o);if(u!==se()){if(u instanceof $i)throw u.uk_1,ko(u.uk_1,t.rn_1);e=Ve(u)}else e=pt()}else e=pt();return e}function Hs(){}function Vs(){bo.call(this)}function Bs(t,n){"function"==typeof t?t(n):t.invoke(n)}function Ys(){}function Ws(t){return zt(t)}function Gs(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&void 0!==navigator.userAgent&&void 0!==navigator.userAgent.match&&navigator.userAgent.match("\\bjsdom\\b")?uo():"undefined"!=typeof window&&null!=window&&void 0!==window.addEventListener?function(t){var n,i=t.coroutineDispatcher;if(null==i){var e=new vo(t);t.coroutineDispatcher=e,n=e}else n=i;return n}(window):"undefined"==typeof process||void 0===process.nextTick?(null==tt&&new ao,tt):uo()}function Ks(t,n){var i=t.ok().f6(n);return i!==io().zq_1&&null==i.y5(mt())?i.f6(io().zq_1):i}function Js(t,n){Ms.call(this,t,n)}function Xs(t,n){console.error(n)}function Zs(){return X}function Qs(t){var n=Sn(t).ye();return null==n?"Unknown":n}function to(t){var n=t.__debug_counter;return"number"!=typeof n&&(n=J=J+1|0,t.__debug_counter=n),(null!=n&&"number"==typeof n?n:et()).toString()}function no(){Z=this,this.zq_1=Gs(),this.ar_1=(null==j&&new tr,j),this.br_1=new eo(this.zq_1,!1),this.cr_1=null}function io(){return null==Z&&new no,Z}function eo(t,n){Je.call(this),this.g14_1=t,this.h14_1=n,this.i14_1=this.h14_1?this:new eo(this.g14_1,!0)}function ro(){Hi.call(this)}function so(t,n,i){qn(t,n,this),Zt(this,so),this.n14_1=i}function oo(){Q=this,_o.call(this)}function uo(){return null==Q&&new oo,Q}function ao(){tt=this,_o.call(this)}function ho(t){var n;this.x14_1=t,lo.call(this),this.w14_1=(n=this,function(){return n.h15(),st()})}function _o(){Ci.call(this),this.z14_1=new ho(this)}function lo(){gs.call(this),this.f15_1=16,this.g15_1=!1}function fo(t){return On(t,new Gt(0,0),new Gt(2147483647,0)).c8()}function co(t){_i.call(this),this.l15_1=t}function vo(t){Ci.call(this),this.n15_1=t,this.o15_1=new wo(this.n15_1)}function wo(t){var n;lo.call(this),this.u15_1=t,this.v15_1="dispatchCoroutine",this.u15_1.addEventListener("message",(n=this,function(t){return t.source==n.u15_1&&t.data==n.v15_1&&(t.stopPropagation(),n.h15(),st()),st()}),!0)}function po(){}function mo(t,n){return t+1|0}function go(t,n){this.u12_1=t,this.v12_1=n,this.w12_1=this.v12_1.e6(0,mo),this.x12_1=null}function $o(){}function yo(){bo.call(this)}function bo(){this.hs_1=this,this.is_1=this,this.js_1=!1}function ko(t,n){return t}function jo(){this.yr_1=null}return ct(Ji,"Job",kt,ft,[nn],ft,ft,[0]),ct(Xi,"ParentJob",kt,ft,[Ji],ft,ft,[0]),ct(Me,"JobSupport",lt,ft,[Ji,Xi],ft,ft,[0]),ct(Mi,"CoroutineScope",kt),ct(Pn,"AbstractCoroutine",lt,Me,[Me,Ji,_t,Mi],ft,ft,[0]),ct(Ln,"StandaloneCoroutine",lt,Pn,ft,ft,ft,[0]),ct(Fn,"LazyStandaloneCoroutine",lt,Ln,ft,ft,ft,[0]),ct(Un,"$awaitCOROUTINE$1",lt,dt),ct(Hn,"DeferredCoroutine",lt,Pn,[Pn,Ji],ft,ft,[0]),ct(Vn,"LazyDeferredCoroutine",lt,Hn,ft,ft,ft,[0]),ct(Ms,"ScopeCoroutine",lt,Pn,ft,ft,ft,[0]),ct(Bn,"DispatchedCoroutine",lt,Ms,ft,ft,ft,[0]),ct(Yn,"CancellableContinuation",kt,ft,[_t]),ct(Ys,"CancelHandlerBase",lt),ct(ci,"NotCompleted",kt),ct(_i,"CancelHandler",lt,Ys,[Ys,ci]),ct(Gn,"DisposeOnCancel",lt,_i),ct(po,"SchedulerTask",lt),ct(Es,"DispatchedTask",lt,po),ct(hi,"CancellableContinuationImpl",lt,Es,[Es,Yn]),ct(li,"Active",Ct,ft,[ci]),ct(vi,"CompletedContinuation",lt),ct(wi,"BeforeResumeCancelHandler",lt,_i),ct(di,"InvokeOnCancel",lt,_i),ct(pi,"$awaitCOROUTINE$2",lt,dt),ct(mi,"CompletableDeferredImpl",lt,Me,[Me,Ji],ft,ft,[0]),ct(gi,"CompletableJob",kt,ft,[Ji],ft,ft,[0]),ct($i,"CompletedExceptionally",lt),ct(yi,"CancelledContinuation",lt,$i),ct(ki,"CompletedWithCancellation",lt),ct(zi,"Key",Ct,Nt),ct(Ci,"CoroutineDispatcher",lt,Rt,[Rt,Ft]),ct(qi,"Key",Ct),ct(Ii,"Key",Ct),ct(Ti,"CoroutineName",lt,Rt),ct(Ni,"GlobalScope",Ct,ft,[Mi]),ct(Pi,"CoroutineStart",lt,Bt),ct(Fi,"Delay",kt,ft,ft,ft,ft,[1]),ct(Hi,"EventLoop",lt,Ci),ct(Vi,"ThreadLocalEventLoop",Ct),ct(Yi,"CompletionHandlerException",lt,Jt),ct(Wi,"CoroutinesInternalError",lt,Qt),ct(Gi,"Key",Ct),ct(Zi,"ChildHandle",kt),ct(Qi,"NonDisposableHandle",Ct,ft,[Zi]),ct(le,"Incomplete",kt),ct(_e,"Empty",lt,ft,[le]),ct(bo,"LinkedListNode",lt),ct(yo,"LinkedListHead",lt,bo),ct(fe,"NodeList",lt,yo,[yo,le]),ct(Vs,"CompletionHandlerBase",lt,bo),ct(ce,"JobNode",lt,Vs,[Vs,le]),ct(Ie,"Finishing",lt,ft,[le]),ct(Ae,"ChildCompletion",lt,ce),ct(Te,"AwaitContinuation",lt,hi),ct(De,"JobSupport$$slambda",lt,dt,ft,ft,ft,[1]),ct(Re,"JobCancellingNode",lt,ce),ct(Pe,"InactiveNodeList",lt,ft,[le]),ct(Le,"ChildHandleNode",lt,Re,[Re,Zi]),ct(Fe,"InvokeOnCancelling",lt,Re),ct(Ue,"InvokeOnCompletion",lt,ce),ct(He,"ResumeOnCompletion",lt,ce),ct(Be,"ResumeAwaitOnCompletion",lt,ce),ct(Ye,"IncompleteStateBox",lt),ct(We,"ChildContinuation",lt,Re),ct(Ge,"JobImpl",lt,Me,[Me,gi],ft,ft,[0]),ct(Je,"MainCoroutineDispatcher",lt,Ci),ct(Ze,"SupervisorJobImpl",lt,Ge,ft,ft,ft,[0]),ct(Qe,"TimeoutCancellationException",lt,on),ct(tr,"Unconfined",Ct,Ci),ct(nr,"Key",Ct),ct(_r,"RemoveReceiveOnCancel",lt,wi),ct(lr,"Itr",lt,ft,ft,ft,ft,[0]),ct($r,"ReceiveOrClosed",kt),ct(br,"Receive",lt,bo,[bo,$r]),ct(fr,"ReceiveHasNext",lt,br),ct(Dr,"SendChannel",kt,ft,ft,ft,ft,[1]),ct(mr,"AbstractSendChannel",lt,ft,[Dr],ft,ft,[1]),ct(Mr,"ReceiveChannel",kt,ft,ft,ft,ft,[0]),ct(cr,"AbstractChannel",lt,mr,[mr,Dr,Mr],ft,ft,[0,1]),ct(gr,"Send",lt,bo),ct(pr,"SendBuffered",lt,gr),ct(yr,"Closed",lt,gr,[gr,$r]),ct(xr,"ArrayChannel",lt,cr,ft,ft,ft,[0,1]),ct(Er,"BufferOverflow",lt,Bt),ct(Sr,"Failed",lt),ct(qr,"Closed",lt,Sr),ct(Or,"Companion",Ct),ct(Ar,"Factory",Ct),ct(Nr,"ClosedReceiveChannelException",lt,mn),ct(Rr,"ClosedSendChannelException",lt,$n),ct(Fr,"ConflatedChannel",lt,cr,ft,ft,ft,[0,1]),ct(Ur,"LinkedListChannel",lt,cr,ft,ft,ft,[0,1]),ct(Hr,"RendezvousChannel",lt,cr,ft,ft,ft,[0,1]),ct(rs,"Emitter",lt),ct(ss,"$collectCOROUTINE$7",lt,dt),ct(fs,"AbstractSharedFlow",lt),ct(os,"SharedFlowImpl",lt,fs,ft,ft,ft,[1]),ct(cs,"AbstractSharedFlowSlot",lt),ct(us,"SharedFlowSlot",lt,cs),ct(ws,"$onSubscriptionCOROUTINE$10",lt,dt),ct(ds,"SubscribedFlowCollector",lt,ft,ft,ft,ft,[1,0]),ct(ps,"$collectCOROUTINE$11",lt,dt),ct(ms,"ReadonlySharedFlow",lt,ft,ft,ft,ft,[1]),ct(gs,"ArrayQueue",lt),ct($s,"OpDescriptor",lt),ct(js,"DispatchedContinuation",lt,Es,[Es,_t]),ct(Ts,"UndeliveredElementException",lt,Jt),ct(Ns,"ContextScope",lt,ft,[Mi]),ct(Rs,"Symbol",lt),ct(Hs,"CloseableCoroutineDispatcher",lt,Ci),ct(Js,"UndispatchedCoroutine",lt,Ms,ft,ft,ft,[0]),ct(no,"Dispatchers",Ct),ct(eo,"JsMainDispatcher",lt,Je),ct(ro,"UnconfinedEventLoop",lt,Hi),ct(so,"JobCancellationException",lt,on),ct(_o,"SetTimeoutBasedDispatcher",lt,Ci,[Ci,Fi],ft,ft,[1]),ct(oo,"NodeDispatcher",Ct,_o,ft,ft,ft,[1]),ct(ao,"SetTimeoutDispatcher",Ct,_o,ft,ft,ft,[1]),ct(lo,"MessageQueue",lt,gs),ct(ho,"ScheduledMessageQueue",lt,lo),ct(co,"ClearTimeout",lt,_i),ct(vo,"WindowDispatcher",lt,Ci,[Ci,Fi],ft,ft,[1]),ct(wo,"WindowMessageQueue",lt,lo),ct(go,"SafeCollector",lt,ft,ft,ft,ft,[1]),ct($o,"NoOpLock",lt),ct(jo,"CommonThreadLocal",lt),it(Pn).r4=function(){return this.nk_1},it(Pn).ok=function(){return this.nk_1},it(Pn).pk=function(){return it(Me).pk.call(this)},it(Pn).qk=function(t){},it(Pn).rk=function(t,n){},it(Pn).sk=function(){return Qs(this)+" was cancelled"},it(Pn).tk=function(t){t instanceof $i?this.rk(t.uk_1,t.wk()):this.qk(null==t||rt(t)?t:et())},it(Pn).p4=function(t){var n=this.xk(bi(t));if(n===se())return st();this.yk(n)},it(Pn).yk=function(t){return this.zk(t)},it(Pn).al=function(t){Si(this.nk_1,t)},it(Pn).bl=function(){var t=(this.nk_1,null);return null==t?it(Me).bl.call(this):'"'+t+'":'+it(Me).bl.call(this)},it(Pn).cl=function(t,n,i){t.fl(i,n,this)},it(Ln).gm=function(t){return Si(this.nk_1,t),!0},it(Fn).ll=function(){Ls(this.pm_1,this)},it(Un).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.ym_1.zm(this))===pt())return t;continue t;case 1:return null==t||rt(t)?t:et();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},it(Hn).dn=function(t){var n=new Un(this,t);return n.jj_1=st(),n.kj_1=null,n.qj()},it(Vn).ll=function(){Ls(this.hn_1,this)},it(Bn).zk=function(t){this.yk(t)},it(Bn).yk=function(t){if(function(t){for(var n=t.mn_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.mn_1.atomicfu$compareAndSet(0,2))return!0;break;case 1:return!1;default:throw $t("Already resumed")}}(this))return st();ks(bt(this.rn_1),ji(t,this.rn_1))},it(Bn).nn=function(){if(function(t){for(var n=t.mn_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.mn_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw $t("Already suspended")}}(this))return pt();var t=Ve(this.il());if(t instanceof $i)throw t.uk_1;return null==t||rt(t)?t:et()},it(Gn).do=function(t){return this.co_1.eo()},it(Gn).invoke=function(t){return this.do(t)},it(Gn).toString=function(){return"DisposeOnCancel["+this.co_1+"]"},it(hi).jp=function(){return this.no_1},it(hi).r4=function(){return this.oo_1},it(hi).il=function(){return this.qo_1.kotlinx$atomicfu$value},it(hi).jl=function(){var t=this.il();return!(null!=t&&jt(t,ci))},it(hi).tn=function(){return this.il()instanceof yi},it(hi).kp=function(){var t=Qn(this);if(null==t)return st();var n=t;this.jl()&&(n.eo(),this.ro_1=te())},it(hi).so=function(){var t=this.qo_1.kotlinx$atomicfu$value;return t instanceof vi&&null!=t.hp_1?(this.xo(),!1):(this.po_1.kotlinx$atomicfu$value=0,this.qo_1.kotlinx$atomicfu$value=fi(),!0)},it(hi).lp=function(){return this.il()},it(hi).mp=function(t,n){for(var i=this.qo_1;;){var e=i.kotlinx$atomicfu$value,r=e;if(null!=r&&jt(r,ci))throw $t("Not completed");if(r instanceof $i)return st();if(r instanceof vi){if(e.np())throw $t(zt("Must be called at most once"));var s=e.op(ft,ft,ft,ft,n);if(this.qo_1.atomicfu$compareAndSet(e,s))return e.pp(this,n),st()}else if(this.qo_1.atomicfu$compareAndSet(e,new vi(e,ft,ft,ft,n)))return st()}return st()},it(hi).yo=function(t){for(var n=this.qo_1;;){var i=n.kotlinx$atomicfu$value;if(null==i||!jt(i,ci))return!1;var e=new yi(this,t,i instanceof _i);if(this.qo_1.atomicfu$compareAndSet(i,e)){var r=i instanceof _i?i:null;return null==r||(this.qp(r,t),st()),ai(this),ii(this,this.uo_1),!0}st()}},it(hi).rp=function(t){if(function(t,n){if(!Xn(t))return!1;var i=t.no_1;return(i instanceof js?i:et()).vo(n)}(this,t))return st();this.yo(t),ai(this)},it(hi).qp=function(t,n){var i;try{t.invoke(n),i=st()}catch(t){if(!(t instanceof Error))throw t;var e=t;Si(this.r4(),new Yi("Exception in invokeOnCancellation handler for "+this,e)),i=st()}return i},it(hi).zo=function(t,n){try{t(n)}catch(t){if(!(t instanceof Error))throw t;var i=t;Si(this.r4(),new Yi("Exception in resume onCancellation handler for "+this,i))}},it(hi).sp=function(t){return t.ml()},it(hi).nn=function(){var t=Xn(this);if(function(t){for(var n=t.po_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.po_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw $t("Already suspended")}}(this))return null==this.ro_1&&Qn(this),t&&ti(this),pt();t&&ti(this);var n=this.il();if(n instanceof $i)throw ko(n.uk_1);if(Cs(this.uo_1)){var i=this.r4().y5(Ki());if(null!=i&&!i.pk()){var e=i.ml();throw this.mp(n,e),ko(e)}}return this.tp(n)},it(hi).p4=function(t){return si(this,function(t,n){var i,e=It(t);if(null==e){var r=At(t);i=null==r||rt(r)?r:et()}else i=new $i(ko(e));return i}(t),this.uo_1)},it(hi).bo=function(t,n){return ri(this,t,this.uo_1,n)},it(hi).zn=function(t){for(var n=function(t,n){return n instanceof _i?n:new di(n)}(0,t),i=this.qo_1;;){var e=i.kotlinx$atomicfu$value,r=e;if(r instanceof li){if(this.qo_1.atomicfu$compareAndSet(e,n))return st()}else if(r instanceof _i)ni(0,t,e);else{if(r instanceof $i){if(e.up()||ni(0,t,e),e instanceof yi){var s=e instanceof $i?e:null;Zn(this,t,null==s?null:s.uk_1)}return st()}if(r instanceof vi){if(null!=e.fp_1&&ni(0,t,e),n instanceof wi)return st();if(e.np())return Zn(this,t,e.ip_1),st();var o=e.op(ft,n);if(this.qo_1.atomicfu$compareAndSet(e,o))return st()}else{if(n instanceof wi)return st();var u=new vi(e,n);if(this.qo_1.atomicfu$compareAndSet(e,u))return st()}}}},it(hi).xo=function(){var t=this.ro_1;if(null==t)return st();t.eo(),this.ro_1=te()},it(hi).un=function(t,n){return oi(this,t,n,null)},it(hi).wn=function(t,n,i){return oi(this,t,n,i)},it(hi).xn=function(t){return oi(this,new $i(t),null,null)},it(hi).yn=function(t){ii(this,this.uo_1)},it(hi).ao=function(t,n){var i=this.no_1,e=i instanceof js?i:null;si(this,n,(null==e?null:e.go_1)===t?G:this.uo_1)},it(hi).tp=function(t){var n;if(t instanceof vi){var i=t.ep_1;n=null==i||rt(i)?i:et()}else n=null==t||rt(t)?t:et();return n},it(hi).vp=function(t){var n=it(Es).vp.call(this,t);return null==n?null:ko(n,this.no_1)},it(hi).toString=function(){return this.bl()+"("+Ws(this.no_1)+"){"+((null!=(t=this.il())&&jt(t,ci)?"Active":t instanceof yi?"Cancelled":"Completed")+"}@")+to(this);var t},it(hi).bl=function(){return"CancellableContinuation"},it(li).toString=function(){return"Active"},it(vi).np=function(){return!(null==this.ip_1)},it(vi).pp=function(t,n){var i=this.fp_1;null==i||(t.qp(i,n),st());var e=this.gp_1;null==e||(t.zo(e,n),st())},it(vi).yp=function(t,n,i,e,r){return new vi(t,n,i,e,r)},it(vi).op=function(t,n,i,e,r,s){return t=t===ft?this.ep_1:t,n=n===ft?this.fp_1:n,i=i===ft?this.gp_1:i,e=e===ft?this.hp_1:e,r=r===ft?this.ip_1:r,s===ft?this.yp(t,n,i,e,r):s.yp.call(this,t,n,i,e,r)},it(vi).toString=function(){return"CompletedContinuation(result="+xt(this.ep_1)+", cancelHandler="+this.fp_1+", onCancellation="+this.gp_1+", idempotentResume="+xt(this.hp_1)+", cancelCause="+this.ip_1+")"},it(vi).hashCode=function(){var t=null==this.ep_1?0:St(this.ep_1);return t=nt(t,31)+(null==this.fp_1?0:St(this.fp_1))|0,t=nt(t,31)+(null==this.gp_1?0:St(this.gp_1))|0,t=nt(t,31)+(null==this.hp_1?0:St(this.hp_1))|0,nt(t,31)+(null==this.ip_1?0:St(this.ip_1))|0},it(vi).equals=function(t){if(this===t)return!0;if(!(t instanceof vi))return!1;var n=t instanceof vi?t:et();return!!(gt(this.ep_1,n.ep_1)&>(this.fp_1,n.fp_1)&>(this.gp_1,n.gp_1)&>(this.hp_1,n.hp_1)&>(this.ip_1,n.ip_1))},it(di).do=function(t){this.zp_1(t)},it(di).invoke=function(t){return this.do(t)},it(di).toString=function(){return"InvokeOnCancel["+Qs(this.zp_1)+"@"+to(this)+"]"},it(pi).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.iq_1.zm(this))===pt())return t;continue t;case 1:return null==t||rt(t)?t:et();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},it(mi).tl=function(){return!0},it(mi).dn=function(t){var n=new pi(this,t);return n.jj_1=st(),n.kj_1=null,n.qj()},it(mi).lq=function(t){return this.mq(t)},it(mi).nq=function(t){return this.mq(new $i(t))},it($i).wk=function(){return this.vk_1.kotlinx$atomicfu$value},it($i).up=function(){return this.vk_1.atomicfu$compareAndSet(!1,!0)},it($i).toString=function(){return Qs(this)+"["+this.uk_1+"]"},it(yi).dp=function(){return this.cp_1.atomicfu$compareAndSet(!1,!0)},it(ki).toString=function(){return"CompletedWithCancellation(result="+xt(this.qq_1)+", onCancellation="+this.rq_1+")"},it(ki).hashCode=function(){var t=null==this.qq_1?0:St(this.qq_1);return nt(t,31)+St(this.rq_1)|0},it(ki).equals=function(t){if(this===t)return!0;if(!(t instanceof ki))return!1;var n=t instanceof ki?t:et();return!!gt(this.qq_1,n.qq_1)&&!!gt(this.rq_1,n.rq_1)},it(Ci).tq=function(t){return!0},it(Ci).w5=function(t){return new js(this,t)},it(Ci).x5=function(t){(t instanceof js?t:et()).vq()},it(Ci).toString=function(){return Qs(this)+"@"+to(this)},it(Ti).toString=function(){return"CoroutineName("+this.yq_1+")"},it(Ti).hashCode=function(){return Ht(this.yq_1)},it(Ti).equals=function(t){if(this===t)return!0;if(!(t instanceof Ti))return!1;var n=t instanceof Ti?t:et();return this.yq_1===n.yq_1},it(Ni).ok=function(){return vt()},it(Pi).fl=function(t,n,i){var e;switch(this.l6_1){case 0:Ps(t,n,i),e=st();break;case 2:Yt(t,n,i),e=st();break;case 3:(function(t,n,i){t:{var e,r=i;try{var s;i.r4(),e="function"==typeof(s=t)?s(n,r):t.ck(n,r)}catch(t){if(t instanceof Error){var o,u=t;Tt(),o=Dt(Mt(u)),r.p4(o),st(),st();break t}throw t}var a=e;if(a!==pt()){var h,_=null==a||rt(a)?a:et();Tt(),h=Dt(_),r.p4(h),st()}}})(t,n,i),e=st();break;case 1:e=st();break;default:Wt()}return e},it(Pi).im=function(){return this===(Ri(),l)},it(Hi).jr=function(){var t=this.ir_1;if(null==t)return!1;var n=t.nr();return null!=n&&(n.wp(),!0)},it(Hi).or=function(t){var n,i=this.ir_1;if(null==i){var e=new gs;this.ir_1=e,n=e}else n=i;n.pr(t)},it(Hi).qr=function(){return this.gr_1.w(Ui(0,!0))>=0},it(Hi).rr=function(){var t=this.ir_1,n=null==t?null:t.sr();return null==n||n},it(Hi).tr=function(t){this.gr_1=this.gr_1.o7(Ui(0,t)),t||(this.hr_1=!0)},it(Hi).ur=function(t){if(this.gr_1=this.gr_1.p7(Ui(0,t)),this.gr_1.w(new Gt(0,0))>0)return st();this.hr_1&&this.vr()},it(Hi).vr=function(){},it(Vi).xr=function(){var t,n=this.wr_1.zr();if(null==n){var i=new ro;Bi().wr_1.as(i),t=i}else t=n;return t},it(Qi).sn=function(){return null},it(Qi).eo=function(){},it(Qi).yl=function(t){return!1},it(Qi).toString=function(){return"NonDisposableHandle"},it(_e).pk=function(){return this.bs_1},it(_e).cs=function(){return null},it(_e).toString=function(){return"Empty{"+(this.bs_1?"Active":"New")+"}"},it(fe).pk=function(){return!0},it(fe).cs=function(){return this},it(fe).gs=function(t){var n=en();n.l8("List{"),n.l8(t),n.l8("}[");for(var i=!0,e=this.hs_1;!gt(e,this);){if(e instanceof ce){var r=e;i?i=!1:n.l8(", "),n.k8(r)}e=e.hs_1}return n.l8("]"),n.toString()},it(fe).toString=function(){return Zs()?this.gs("Active"):it(yo).toString.call(this)},it(ce).vs=function(){var t=this.us_1;if(null!=t)return t;rn("job")},it(ce).pk=function(){return!0},it(ce).cs=function(){return null},it(ce).eo=function(){return this.vs().sl(this)},it(ce).toString=function(){return Qs(this)+"@"+to(this)+"[job@"+to(this.vs())+"]"},it(Ie).cs=function(){return this.xs_1},it(Ie).it=function(t){this.ys_1.kotlinx$atomicfu$value=t},it(Ie).et=function(){return this.ys_1.kotlinx$atomicfu$value},it(Ie).ot=function(t){this.zs_1.kotlinx$atomicfu$value=t},it(Ie).ht=function(){return this.zs_1.kotlinx$atomicfu$value},it(Ie).ft=function(){return we(this)===ae()},it(Ie).bt=function(){return!(null==this.ht())},it(Ie).pk=function(){return null==this.ht()},it(Ie).ct=function(t){var n,i=we(this);if(null==i)n=de();else if(i instanceof Error){var e=de();e.a(i),n=e}else{if(!(i instanceof un)){var r="State is "+xt(i);throw $t(zt(r))}n=i instanceof un?i:et()}var s=n,o=this.ht(),u=o;return null==u||(s.z2(0,u),st()),null==t||gt(t,o)||s.a(t),ve(this,ae()),s},it(Ie).gt=function(t){var n=this.ht();if(null==n)return this.ot(t),st();if(t===n)return st();var i=we(this);if(null==i)ve(this,t);else if(i instanceof Error){if(t===i)return st();var e=de();e.a(i),e.a(t),ve(this,e)}else{if(!(i instanceof un)){var r="State is "+xt(i);throw $t(zt(r))}(i instanceof un?i:et()).a(t)}},it(Ie).toString=function(){return"Finishing[cancelling="+this.bt()+", completing="+this.et()+", rootCause="+this.ht()+", exceptions="+xt(we(this))+", list="+this.xs_1+"]"},it(Ae).do=function(t){!function(t,n,i,e){var r=qe(i);if(null!=r&&Se(t,n,r,e))return st();var s=pe(t,n,e);t.zk(s)}(this.tt_1,this.ut_1,this.vt_1,this.wt_1)},it(Ae).invoke=function(t){return this.do(t)},it(Te).sp=function(t){var n=this.du_1.il();if(n instanceof Ie){var i=n.ht();if(null!=i)return i}return n instanceof $i?n.uk_1:t.ml()},it(Te).bl=function(){return"AwaitContinuation"},it(De).tu=function(t,n){var i=this.uu(t,n);return i.jj_1=st(),i.kj_1=null,i.qj()},it(De).ck=function(t,n){return this.tu(t instanceof an?t:et(),n)},it(De).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=8,this.ou_1=this.mu_1.il(),this.ou_1 instanceof Le){if(this.hj_1=6,(t=this.nu_1.k4(this.ou_1.nt_1,this))===pt())return t;continue t}var n=this.ou_1;if(null!=n&&jt(n,le)){if(this.pu_1=this.ou_1.cs(),null==this.pu_1){this.qu_1=null,this.hj_1=5;continue t}this.ru_1=this.pu_1.hs_1,this.hj_1=1;continue t}this.hj_1=7;continue t;case 1:if(gt(this.ru_1,this.pu_1)){this.hj_1=4;continue t}if(this.ru_1 instanceof Le){if(this.su_1=this.ru_1,this.hj_1=2,(t=this.nu_1.k4(this.su_1.nt_1,this))===pt())return t;continue t}this.hj_1=3;continue t;case 2:this.hj_1=3;continue t;case 3:this.ru_1=this.ru_1.hs_1,this.hj_1=1;continue t;case 4:this.qu_1=st(),this.hj_1=5;continue t;case 5:case 6:this.hj_1=7;continue t;case 7:return st();case 8:throw this.kj_1}}catch(t){var i=t;if(8===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},it(De).uu=function(t,n){var i=new De(this.mu_1,n);return i.nu_1=t,i},it(Me).r=function(){return Ki()},it(Me).gl=function(t){this.jk_1.kotlinx$atomicfu$value=t},it(Me).hl=function(){return this.jk_1.kotlinx$atomicfu$value},it(Me).kk=function(t){if(null==t)return this.gl(te()),st();t.kl();var n=t.cm(this);this.gl(n),this.jl()&&(n.eo(),this.gl(te()))},it(Me).il=function(){for(var t=this.ik_1;;){var n=t.kotlinx$atomicfu$value;if(!(n instanceof $s))return n;n.vu(this)}},it(Me).pk=function(){var t=this.il();return!(null==t||!jt(t,le))&&t.pk()},it(Me).jl=function(){var t=this.il();return!(null!=t&&jt(t,le))},it(Me).kl=function(){for(;;){var t=ye(this,this.il());if(0===t)return!1;if(1===t)return!0}},it(Me).ll=function(){},it(Me).ml=function(){var t,n=this.il();if(n instanceof Ie){var i=n.ht(),e=null==i?null:this.nl(i,Qs(this)+" is cancelling");if(null==e)throw $t(zt("Job is still new or active: "+this));t=e}else{if(null!=n&&jt(n,le))throw $t(zt("Job is still new or active: "+this));t=n instanceof $i?this.ol(n.uk_1):new so(Qs(this)+" has completed normally",null,this)}return t},it(Me).nl=function(t,n){var i,e=t instanceof on?t:null;if(null==e){var r=n;i=new so(null==r?this.sk():r,t,this)}else i=e;return i},it(Me).ol=function(t,n,i){return n=n===ft?null:n,i===ft?this.nl(t,n):i.nl.call(this,t,n)},it(Me).pl=function(t){return this.ql(!1,!0,t)},it(Me).ql=function(t,n,i){for(var e=function(t,n,i){var e;if(i){var r=n instanceof Re?n:null;e=null==r?new Fe(n):r}else{var s=n instanceof ce?n:null,o=null==s?null:s;e=null==o?new Ue(n):o}var u=e;return u.us_1=t,u}(this,i,t);;)t:{var r=this.il(),s=r;if(s instanceof _e)if(r.bs_1){if(this.ik_1.atomicfu$compareAndSet(r,e))return e}else ke(this,r);else{if(null==s||!jt(s,le)){if(n){var o=r instanceof $i?r:null;Bs(i,null==o?null:o.uk_1)}return te()}var u=r.cs();if(null==u)je(this,r instanceof ce?r:et());else{var a=null,h=te();if(t&&r instanceof Ie&&(null==(a=r.ht())||i instanceof Le&&!r.et())){if(!be(this,r,u,e)){st();break t}if(null==a)return e;h=e,st()}if(null!=a)return n&&Bs(i,a),h;if(be(this,r,u,e))return e}}}},it(Me).pq=function(t){return function(t){for(;;){var n=t.il();if(null==n||!jt(n,le))return!1;if(ye(t,n)>=0)return!0}}(this)?function(t,n){var i,e=new hi(bt(n),zs());return e.kp(),i=new He(e),Wn(e,t.pl(i)),e.nn()}(this,t):(ne(t.r4()),st())},it(Me).sl=function(t){for(;;){var n=this.il();if(!(n instanceof ce))return null!=n&&jt(n,le)?(null!=n.cs()&&t.ns(),st()):st();if(n!==t)return st();if(this.ik_1.atomicfu$compareAndSet(n,he()))return st()}},it(Me).tl=function(){return!1},it(Me).ul=function(t){var n,i=t;if(null==i){n=new so(this.sk(),null,this)}else n=i;this.wl(n)},it(Me).sk=function(){return"Job was cancelled"},it(Me).wl=function(t){this.zl(t)},it(Me).xl=function(t){this.zl(t)},it(Me).yl=function(t){return t instanceof on||!!this.zl(t)&&this.fm()},it(Me).zl=function(t){var n,i=re();return!(!this.tl()||(i=function(t,n){for(;;){var i=t.il();if(null==i||!jt(i,le)||i instanceof Ie&&i.et())return re();var e=Ce(t,i,new $i(xe(t,n)));if(e!==oe())return e}}(this,t))!==se())||(i===re()&&(i=function(t,n){for(var i=null;;)t:{var e=t.il(),r=e;if(r instanceof Ie){if(e.ft())return ue();var s=e.bt();if(null!=n||!s){var o,u=i;if(null==u){var a=xe(t,n);i=a,o=a}else o=u;var h=o;e.gt(h)}var _=e.ht(),l=s?null:_;return null==l||(ge(t,e.xs_1,l),st()),re()}if(null==r||!jt(r,le))return ue();var f,c=i;if(null==c){var v=xe(t,n);i=v,f=v}else f=c;var w=f;if(!e.pk()){var d=Ce(t,e,new $i(w));if(d===re()){var p="Cannot happen in "+xt(e);throw $t(zt(p))}if(d===oe()){st();break t}return d}if(Ee(t,e,w))return re()}}(this,t)),i===re()||i===se()?n=!0:i===ue()?n=!1:(this.zk(i),n=!0),n)},it(Me).am=function(){var t,n=this.il(),i=n;if(i instanceof Ie)t=n.ht();else if(i instanceof $i)t=n.uk_1;else{if(null!=i&&jt(i,le)){var e="Cannot be cancelling child in this state: "+xt(n);throw $t(zt(e))}t=null}var r=t,s=r instanceof on?r:null;return null==s?new so("Parent job is "+Oe(0,n),r,this):s},it(Me).mq=function(t){for(;;){var n=Ce(this,this.il(),t);if(n===re())return!1;if(n===se())return!0;if(n!==oe())return this.zk(n),!0;st()}},it(Me).xk=function(t){for(;;){var n=Ce(this,this.il(),t);if(n===re())throw hn("Job "+this+" is already complete or completing, but is being completed with "+xt(t),(e=void 0,null==(e=(i=t)instanceof $i?i:null)?null:e.uk_1));if(n!==oe())return n;st()}var i,e},it(Me).bm=function(){return _n((t=new De(this,null),(n=function(n,i){return t.tu(n,i)}).$arity=1,n));var t,n},it(Me).cm=function(t){var n;n=new Le(t);var i=this.rl(!0,ft,n);return jt(i,Zi)?i:et()},it(Me).al=function(t){throw t},it(Me).dm=function(t){},it(Me).em=function(){return!1},it(Me).fm=function(){return!0},it(Me).gm=function(t){return!1},it(Me).tk=function(t){},it(Me).zk=function(t){},it(Me).toString=function(){return this.hm()+"@"+to(this)},it(Me).hm=function(){return this.bl()+"{"+Oe(0,this.il())+"}"},it(Me).bl=function(){return Qs(this)},it(Me).zm=function(t){t:for(;;){var n=this.il();if(null==n||!jt(n,le)){if(n instanceof $i)throw n.uk_1;return Ve(n)}if(ye(this,n)>=0)break t}return function(t,n){var i,e=new Te(bt(n),t);return e.kp(),i=new Be(e),Wn(e,t.pl(i)),e.nn()}(this,t)},it(Pe).cs=function(){return this.dt_1},it(Pe).pk=function(){return!1},it(Pe).toString=function(){return Zs()?this.dt_1.gs("New"):ln(this)},it(Le).sn=function(){return this.vs()},it(Le).do=function(t){return this.nt_1.xl(this.vs())},it(Le).invoke=function(t){return this.do(t)},it(Le).yl=function(t){return this.vs().yl(t)},it(Fe).do=function(t){this.bv_1.atomicfu$compareAndSet(0,1)&&this.av_1(t)},it(Fe).invoke=function(t){return this.do(t)},it(Ue).do=function(t){return this.gv_1(t)},it(Ue).invoke=function(t){return this.do(t)},it(He).do=function(t){var n,i=this.lv_1;return Tt(),n=Dt(st()),i.p4(n),st()},it(He).invoke=function(t){return this.do(t)},it(Be).do=function(t){var n=this.vs().il();if(n instanceof $i){var i,e=this.rv_1,r=n.uk_1;Tt(),i=Dt(Mt(r)),e.p4(i),st()}else{var s,o=this.rv_1,u=Ve(n),a=null==u||rt(u)?u:et();Tt(),s=Dt(a),o.p4(s),st()}},it(Be).invoke=function(t){return this.do(t)},it(We).do=function(t){this.wv_1.rp(this.wv_1.sp(this.vs()))},it(We).invoke=function(t){return this.do(t)},it(Ge).tl=function(){return!0},it(Ge).fm=function(){return this.zv_1},it(Ge).oq=function(){return this.mq(st())},it(Ge).nq=function(t){return this.mq(new $i(t))},it(Je).toString=function(){var t=this.cw();return null==t?Qs(this)+"@"+to(this):t},it(Je).cw=function(){var t,n=io().dr();if(this===n)return"Dispatchers.Main";try{t=n.bw()}catch(n){if(!(n instanceof fn))throw n;t=null}return this===t?"Dispatchers.Main.immediate":null},it(Ze).yl=function(t){return!1},it(tr).tq=function(t){return!1},it(tr).uq=function(t,n){var i=t.y5((null==x&&new nr,x));if(null!=i)return i.iw_1=!0,st();throw cn("Dispatchers.Unconfined.dispatch function can only be used by the yield function. If you wrap Unconfined dispatcher in your code, make sure you properly delegate isDispatchNeeded and dispatch calls.")},it(tr).toString=function(){return"Dispatchers.Unconfined"},it(_r).do=function(t){this.zw_1.ns()&&this.ax_1.bx()},it(_r).invoke=function(t){return this.do(t)},it(_r).toString=function(){return"RemoveReceiveOnCancel["+this.zw_1+"]"},it(lr).cx=function(t){return this.pw_1!==sr()?ur(0,this.pw_1):(this.pw_1=this.ow_1.tw(),this.pw_1!==sr()?ur(0,this.pw_1):function(t,n){var i=Kn(bt(n));t:for(var e=new fr(t,i);;){if(ar(t.ow_1,e)){hr(t.ow_1,i,e),st();break t}var r=t.ow_1.tw();if(t.pw_1=r,r instanceof yr){if(null==r.mw_1){var s;Tt(),s=Dt(!1),i.p4(s),st()}else{var o,u=r.nw();Tt(),o=Dt(Mt(u)),i.p4(o),st()}st();break t}if(r!==sr()){var a,h=t.ow_1.uw_1;a=null==h?null:As(h,null==r||rt(r)?r:et(),i.r4()),i.bo(!0,a),st();break t}}return i.nn()}(this,t))},it(lr).f=function(){var t=this.pw_1;if(t instanceof yr)throw t.nw();if(t!==sr())return this.pw_1=sr(),null==t||rt(t)?t:et();throw $t("'hasNext' should be called prior to 'next' invocation")},it(fr).ix=function(t,n){var i=n;return null==this.hx_1.wn(!0,null==i?null:i.kx_1,this.mx(t))?null:(null==n||n.nx(),Jn())},it(fr).ox=function(t){this.gx_1.pw_1=t,this.hx_1.yn(Jn())},it(fr).px=function(t){var n=null==t.mw_1?this.hx_1.vn(!1):this.hx_1.xn(t.nw());null!=n&&(this.gx_1.pw_1=t,this.hx_1.yn(n))},it(fr).mx=function(t){var n=this.gx_1.ow_1.uw_1;return null==n?null:As(n,t,this.hx_1.r4())},it(fr).toString=function(){return"ReceiveHasNext@"+to(this)},it(cr).tw=function(){for(;;){var t=this.wx();if(null==t)return sr();var n=t;if(null!=n.ay(null))return n.by(),n.cy();n.dy()}},it(cr).ey=function(){return null!=this.fy()&&this.vx()},it(cr).xw=function(t){var n;if(this.ux()){var i,e=this.vw_1;e.is_1 instanceof gr?i=!1:(e.os(t),i=!0),n=i}else{var r,s=this.vw_1;s.is_1 instanceof gr?r=!1:this.vx()?(s.os(t),r=!0):r=!1,n=r}return n},it(cr).ul=function(t){if(this.ey())return st();var n=t;this.gy(null==n?Ot(Qs(this)+" was cancelled"):n)},it(cr).gy=function(t){var n=this.iy(t);return this.jy(n),n},it(cr).jy=function(t){var n=this.ky();if(null==n)throw $t("Cannot happen");var i=n,e=Os();t:for(;;){var r=i.is_1;if(r instanceof yo)break t;r.ns()?e=Is(e,r instanceof gr?r:et()):r.qs()}this.ly(e,i)},it(cr).ly=function(t,n){if(null!=t)if(t instanceof un){var i=t instanceof un?t:et(),e=i.g()-1|0;if(0<=e)do{var r=e;e=e+-1|0,i.h(r).my(n)}while(0<=e)}else{var s=t;(null==s||rt(s)?s:et()).my(n)}else st()},it(cr).d=function(){return new lr(this)},it(cr).ny=function(){var t=it(mr).ny.call(this);return null!=t&&!(t instanceof yr)&&this.bx(),t},it(cr).yw=function(){},it(cr).bx=function(){},it(pr).cy=function(){return this.xy_1},it(pr).ay=function(t){var n=Jn();return null==t||t.nx(),n},it(pr).by=function(){},it(pr).my=function(t){},it(pr).toString=function(){return"SendBuffered@"+to(this)+"("+this.xy_1+")"},it(mr).oy=function(t){for(;;){var n=this.ny();if(null==n)return rr();var i=n;if(null!=i.ix(t,null))return i.ox(t),i.tx()}},it(mr).ky=function(){var t,n,i=(t=this.vw_1.is_1)instanceof yr?t:null;return null==i?n=null:(wr(this,i),n=i),n},it(mr).fy=function(){var t,n,i=(t=this.vw_1.hs_1)instanceof yr?t:null;return null==i?n=null:(wr(this,i),n=i),n},it(mr).wx=function(){var t,n=this.vw_1,i=n.hs_1;if(i!==n)if(i instanceof gr)if(i instanceof yr)t=i;else{if(!i.ps())throw $t(zt("Should remove"));t=i}else t=null;else t=null;return t},it(mr).yy=function(t){var n=this.vw_1,i=new pr(t),e=n.is_1;return jt(e,$r)?e:(n.os(i),null)},it(mr).py=function(t){var n,i=this.oy(t);if(i===er())n=Ir().cz(st());else if(i===rr()){var e=this.ky();if(null==e)return Ir().bz();var r=e;n=Ir().az(vr(this,r))}else{if(!(i instanceof yr)){var s="trySend returned "+zt(i);throw $t(zt(s))}n=Ir().az(vr(this,i))}return n},it(mr).iy=function(t){var n,i=new yr(t),e=this.vw_1;e.is_1 instanceof yr?n=!1:(e.os(i),n=!0);var r,s=n;return wr(this,s?i:(r=this.vw_1.is_1)instanceof yr?r:et()),s&&function(t,n){var i=t.ww_1.kotlinx$atomicfu$value;null!==i&&i!==or()&&t.ww_1.atomicfu$compareAndSet(i,or())&&(null!=i&&"function"==typeof i?i:et())(n)}(this,t),s},it(mr).ry=function(t){},it(mr).ny=function(){var t,n=this.vw_1,i=n.hs_1;if(i!==n)if(jt(i,$r))if(i instanceof yr)t=i;else{if(!i.ps())throw $t(zt("Should remove"));t=i}else t=null;else t=null;return t},it(mr).toString=function(){return Qs(this)+"@"+to(this)+"{"+dr(this)+"}"+this.sy()},it(mr).sy=function(){return""},it(gr).dy=function(){},it(yr).ty=function(){var t=this.mw_1;return null==t?new Rr(Pr()):t},it(yr).nw=function(){var t=this.mw_1;return null==t?new Nr(Pr()):t},it(yr).tx=function(){return this},it(yr).cy=function(){return this},it(yr).ay=function(t){var n=Jn();return null==t||t.nx(),n},it(yr).by=function(){},it(yr).ix=function(t,n){var i=Jn();return null==n||n.nx(),i},it(yr).ox=function(t){},it(yr).my=function(t){return st()},it(yr).toString=function(){return"Closed@"+to(this)+"["+this.mw_1+"]"},it(br).tx=function(){return er()},it(xr).ux=function(){return!1},it(xr).vx=function(){return 0===this.lz_1.kotlinx$atomicfu$value},it(xr).ey=function(){return this.iz_1,it(cr).ey.call(this)},it(xr).oy=function(t){var n=null;this.iz_1;t:{var i=this.lz_1.kotlinx$atomicfu$value,e=this.ky();if(null!=e)return e;var r=function(t,n){if(n0)return ls();var n=Br(this),i=this.p10_1,e=n.o7(kn(i));if(0===this.k10_1&&this.q10_1>0&&(e=e.ui()),0!==this.s10_1){var r=this.r10_1;if(null==r);else for(var s=jn(r);s.e();){var o=s.f();null!=o&&o.v10_1.w(new Gt(0,0))>=0&&o.v10_1.w(e)<0&&(e=o.v10_1)}}else st();if(e.w(this.o10_1)<=0)return ls();var u,a=Gr(this);if(this.s10_1>0){var h=a.p7(e).c8(),_=this.q10_1,l=this.k10_1-h|0;u=Math.min(_,l)}else u=this.q10_1;var f=u,c=ls(),v=a,w=this.q10_1,d=v.o7(kn(w));if(f>0){c=vn(Array(f),null);var p=0,m=pn(this.m10_1),g=a;if(g.w(d)<0)t:do{var $=g;g=g.o7(new Gt(1,0));var y=as(m,$);if(y!==Vr()){y instanceof rs||et();var b=p;if(p=b+1|0,c[b]=y.a11_1,hs(m,$,Vr()),hs(m,a,y.z10_1),a=a.ui(),p>=f)break t}}while(g.w(d)<0)}var k=a.p7(n).c8();0===this.s10_1&&(e=a);var j=this.n10_1,x=a,z=this.j10_1,E=Math.min(z,k),C=x.p7(kn(E)),S=j.w(C)>=0?j:C;return 0===this.k10_1&&S.w(d)<0&>(as(pn(this.m10_1),S),Vr())&&(a=a.ui(),S=S.ui()),Qr(this,S,e,a,d),ts(this),!(0===c.length)&&(c=es(this,c)),c},it(os).b12=function(){return new us},it(os).c12=function(t){return vn(Array(t),null)},it(us).d12=function(t){return!(this.v10_1.w(new Gt(0,0))>=0||(this.v10_1=t.a12(),0))},it(us).e12=function(t){return this.d12(t instanceof os?t:et())},it(us).f12=function(t){var n=this.v10_1;return this.v10_1=new Gt(-1,-1),this.w10_1=null,t.b11(n)},it(us).g12=function(t){return this.f12(t instanceof os?t:et())},it(fs).q11=function(){var t,n=null,i=this.r10_1;if(null==i){var e=this.c12(2);this.r10_1=e,t=e}else{var r;if(this.s10_1>=i.length){var s=xn(i,nt(2,i.length));this.r10_1=s,r=s}else r=i;t=r}var o,u=t,a=this.t10_1;t:for(;;){var h,_=u[a];if(null==_){var l=this.b12();u[a]=l,h=l}else h=_;if(o=h,(a=a+1|0)>=u.length&&(a=0),(o instanceof cs?o:et()).e12(this))break t}this.t10_1=a;var f=this.s10_1;this.s10_1=f+1|0;var c=o;return null==(n=this.u10_1)||n.t12(1),c},it(fs).v11=function(t){var n=null,i=this.s10_1;this.s10_1=i-1|0,n=this.u10_1,0===this.s10_1&&(this.t10_1=0);for(var e=(t instanceof cs?t:et()).g12(this),r=0,s=e.length;r"},it(Js).yk=function(t){return this.rn_1.p4(ji(t,this.rn_1))},it(no).dr=function(){var t=this.cr_1;return null==t?this.br_1:t},it(eo).bw=function(){return this.i14_1},it(eo).tq=function(t){return!this.h14_1},it(eo).uq=function(t,n){return this.g14_1.uq(t,n)},it(eo).toString=function(){var t=this.cw();return null==t?this.g14_1.toString():t},it(ro).uq=function(t,n){!function(){throw cn("runBlocking event loop is not supported")}()},it(so).toString=function(){return it(on).toString.call(this)+"; job="+this.n14_1},it(so).equals=function(t){return t===this||!!(t instanceof so&&t.message==this.message&>(t.n14_1,this.n14_1))&>(t.cause,this.cause)},it(so).hashCode=function(){var t=nt(nt(Ht(pn(this.message)),31)+St(this.n14_1)|0,31),n=this.cause,i=null==n?null:St(n);return t+(null==i?0:i)|0},it(oo).q14=function(){process.nextTick(this.z14_1.w14_1)},it(ao).q14=function(){setTimeout(this.z14_1.w14_1,0)},it(ho).i15=function(){this.x14_1.q14()},it(ho).j15=function(){setTimeout(this.w14_1,0)},it(_o).uq=function(t,n){this.z14_1.k15(n)},it(_o).er=function(t,n){var i,e,r;i=new co(setTimeout((e=n,r=this,function(){return e.ao(r,st()),st(),st()}),fo(t))),n.zn(i)},it(lo).k15=function(t){this.pr(t),this.g15_1||(this.g15_1=!0,this.i15())},it(lo).h15=function(){try{var t=this.f15_1,n=0;if(n=0))throw dn(zt("replay cannot be negative, but was "+t));if(!(n>=0))throw dn(zt("extraBufferCapacity cannot be negative, but was "+n));if(!(t>0||n>0||i.equals(Cr())))throw dn(zt("replay or extraBufferCapacity must be positive with non-default onBufferOverflow strategy "+i));var e=t+n|0;return new os(t,e<0?bn().MAX_VALUE:e,i)},t.$_$.p=function(t){return new ms(t,null)},t.$_$.q=bo,t.$_$.r=ko,t.$_$.s=hi,t.$_$.t=Hs,t.$_$.u=function(t){return new mi(t=t===ft?null:t)},t.$_$.v=gi,t.$_$.w=Ti,t.$_$.x=function(t){return new Ns(null!=t.y5(Ki())?t:t.f6(ee()))},t.$_$.y=Mi,t.$_$.z=ee,t.$_$.a1=Ji,t.$_$.b1=zs,t.$_$.c1=function(){return new Ns(Xe().f6(io().dr()))},t.$_$.d1=Xe,t.$_$.e1=function(t,n,i,e){n=n===ft?vt():n,i=i===ft?Li():i;var r=Ks(t,n),s=i.im()?new Vn(r,e):new Hn(r,!0);return s.cl(i,s,e),s},t.$_$.f1=function(t,n){n=n===ft?null:n;var i=t.y5(Ki()),e=null==i?null:i.bm();if(null==e);else for(var r=e.d();r.e();)r.f().ul(n)},t.$_$.g1=Di,t.$_$.h1=function(t,n){n=n===ft?null:n;var i=t.y5(Ki());null==i||i.ul(n)},t.$_$.i1=function(t,n,i){return Di(t,Vt(n,i=i===ft?null:i))},t.$_$.j1=function(t,n,i){return i=i===ft?null:i,t.ul(Vt(n,i))},t.$_$.k1=function(t){var n=t.ok().y5(Ki()),i=null==n?null:n.pk();return null==i||i},t.$_$.l1=function(t){var n=t.y5(Ki());if(null==n)throw $t(zt("Current context doesn't contain Job in it: "+t));return n},t.$_$.m1=function(t,n,i,e){n=n===ft?vt():n,i=i===ft?Li():i;var r=Ks(t,n),s=i.im()?new Fn(r,e):new Ln(r,!0);return s.cl(i,s,e),s},t})?e.apply(n,r):e)||(t.exports=s)},220:function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,factory;factory=function(_,kotlin_kotlin,kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core,kotlin_io_ktor_ktor_utils,kotlin_org_jetbrains_kotlinx_atomicfu,kotlin_io_ktor_ktor_events,kotlin_io_ktor_ktor_io,kotlin_io_ktor_ktor_http,kotlin_io_ktor_ktor_websockets){"use strict";var imul=Math.imul,protoOf=kotlin_kotlin.$_$.ta,objectCreate=kotlin_kotlin.$_$.ra,cancel=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.g1,Unit_getInstance=kotlin_kotlin.$_$.u4,CoroutineImpl=kotlin_kotlin.$_$.z8,THROW_CCE=kotlin_kotlin.$_$.hf,PipelineContext=kotlin_io_ktor_ktor_utils.$_$.g,isObject=kotlin_kotlin.$_$.ha,toString=kotlin_kotlin.$_$.ya,getKClassFromExpression=kotlin_kotlin.$_$.c,IllegalStateException_init_$Create$=kotlin_kotlin.$_$.v1,get_COROUTINE_SUSPENDED=kotlin_kotlin.$_$.l8,classMeta=kotlin_kotlin.$_$.l9,VOID=kotlin_kotlin.$_$.ng,setMetadataFor=kotlin_kotlin.$_$.ua,atomic$boolean$1=kotlin_org_jetbrains_kotlinx_atomicfu.$_$.a,Key_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.l,Job=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.z,AttributesJsFn=kotlin_io_ktor_ktor_utils.$_$.m,Events=kotlin_io_ktor_ktor_events.$_$.b,AttributeKey=kotlin_io_ktor_ktor_utils.$_$.l,Closeable=kotlin_io_ktor_ktor_io.$_$.r,isInterface=kotlin_kotlin.$_$.ea,CoroutineScope=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.y,ensureNotNull=kotlin_kotlin.$_$.xf,LinkedHashMap_init_$Create$=kotlin_kotlin.$_$.u,PlatformUtils_getInstance=kotlin_io_ktor_ktor_utils.$_$.c,ByteReadChannel=kotlin_io_ktor_ktor_io.$_$.e1,objectMeta=kotlin_kotlin.$_$.sa,instanceOf=kotlin_io_ktor_ktor_utils.$_$.j,NullBody_getInstance=kotlin_io_ktor_ktor_http.$_$.a,equals=kotlin_kotlin.$_$.o9,cancel_0=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.i1,throwUninitializedPropertyAccessException=kotlin_kotlin.$_$.jg,IllegalStateException=kotlin_kotlin.$_$.ye,IllegalStateException_init_$Init$=kotlin_kotlin.$_$.t1,captureStack=kotlin_kotlin.$_$.f9,defineProp=kotlin_kotlin.$_$.n9,UnsupportedOperationException=kotlin_kotlin.$_$.sf,UnsupportedOperationException_init_$Init$=kotlin_kotlin.$_$.h2,flattenEntries=kotlin_io_ktor_ktor_utils.$_$.u,joinToString=kotlin_kotlin.$_$.v6,trimMargin=kotlin_kotlin.$_$.je,ByteReadChannel_0=kotlin_io_ktor_ktor_io.$_$.d1,readBytes=kotlin_io_ktor_ktor_io.$_$.v,IllegalStateException_init_$Init$_0=kotlin_kotlin.$_$.u1,WriterScope=kotlin_io_ktor_ktor_io.$_$.f1,ReadChannelContent=kotlin_io_ktor_ktor_http.$_$.l,noWhenBranchMatchedException=kotlin_kotlin.$_$.eg,GlobalScope_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.k,writer=kotlin_io_ktor_ktor_io.$_$.h1,WriteChannelContent=kotlin_io_ktor_ktor_http.$_$.m,Companion_getInstance=kotlin_io_ktor_ktor_io.$_$.g,NoContent=kotlin_io_ktor_ktor_http.$_$.j,ProtocolUpgrade=kotlin_io_ktor_ktor_http.$_$.k,ByteArrayContent=kotlin_io_ktor_ktor_http.$_$.i,IllegalArgumentException_init_$Create$=kotlin_kotlin.$_$.r1,JsType_getInstance=kotlin_io_ktor_ktor_utils.$_$.b,PrimitiveClasses_getInstance=kotlin_kotlin.$_$.l4,arrayOf=kotlin_kotlin.$_$.uf,createKType=kotlin_kotlin.$_$.a,typeInfoImpl=kotlin_io_ktor_ktor_utils.$_$.k,OutgoingContent=kotlin_io_ktor_ktor_http.$_$.n,get_job=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.l1,async=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.e1,emptySet=kotlin_kotlin.$_$.k6,interfaceMeta=kotlin_kotlin.$_$.v9,ArrayList_init_$Create$=kotlin_kotlin.$_$.l,HttpHeaders_getInstance=kotlin_io_ktor_ktor_http.$_$.e,UnsafeHeaderException=kotlin_io_ktor_ktor_http.$_$.s,CancellationException_init_$Create$=kotlin_kotlin.$_$.z,CoroutineName=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.w,SilentSupervisor=kotlin_io_ktor_ktor_utils.$_$.n,lazy=kotlin_kotlin.$_$.dg,CompletableJob=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.v,CloseableCoroutineDispatcher=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.t,KProperty1=kotlin_kotlin.$_$.ub,getPropertyCallableRef=kotlin_kotlin.$_$.s9,setOf=kotlin_kotlin.$_$.q7,get=kotlin_kotlin.$_$.v8,fold=kotlin_kotlin.$_$.u8,minusKey=kotlin_kotlin.$_$.w8,plus=kotlin_kotlin.$_$.y8,Element=kotlin_kotlin.$_$.x8,setOf_0=kotlin_kotlin.$_$.r7,PipelinePhase=kotlin_io_ktor_ktor_utils.$_$.h,contentLength=kotlin_io_ktor_ktor_http.$_$.x,MalformedInputException=kotlin_io_ktor_ktor_io.$_$.h,KtorSimpleLogger=kotlin_io_ktor_ktor_utils.$_$.f,Application_getInstance=kotlin_io_ktor_ktor_http.$_$.b,toLong=kotlin_kotlin.$_$.wa,toLong_0=kotlin_kotlin.$_$.ae,contentType=kotlin_io_ktor_ktor_http.$_$.y,isByteArray=kotlin_kotlin.$_$.y9,Text_getInstance=kotlin_io_ktor_ktor_http.$_$.c,TextContent=kotlin_io_ktor_ktor_http.$_$.o,Companion_getInstance_0=kotlin_kotlin.$_$.o4,Long=kotlin_kotlin.$_$.af,copyTo=kotlin_io_ktor_ktor_io.$_$.a,CancellationException=kotlin_kotlin.$_$.k8,cancel_1=kotlin_io_ktor_ktor_io.$_$.g1,HttpStatusCode=kotlin_io_ktor_ktor_http.$_$.q,getKClass=kotlin_kotlin.$_$.d,toByteArray=kotlin_io_ktor_ktor_utils.$_$.a,Input=kotlin_io_ktor_ktor_io.$_$.s,ByteReadPacket=kotlin_io_ktor_ktor_io.$_$.q,Unit=kotlin_kotlin.$_$.rf,toString_0=kotlin_kotlin.$_$.kg,toInt=kotlin_kotlin.$_$.yd,reversed=kotlin_kotlin.$_$.p7,LinkedHashSet_init_$Create$=kotlin_kotlin.$_$.w,Charsets_getInstance=kotlin_io_ktor_ktor_io.$_$.f,charset=kotlin_io_ktor_ktor_http.$_$.w,withCharset=kotlin_io_ktor_ktor_http.$_$.d1,compareValues=kotlin_kotlin.$_$.j8,get_name=kotlin_io_ktor_ktor_io.$_$.l,toList=kotlin_kotlin.$_$.z7,sortedWith=kotlin_kotlin.$_$.v7,StringBuilder_init_$Create$=kotlin_kotlin.$_$.e1,charSequenceLength=kotlin_kotlin.$_$.j9,roundToInt=kotlin_kotlin.$_$.bb,firstOrNull=kotlin_kotlin.$_$.o6,charset_0=kotlin_io_ktor_ktor_http.$_$.v,readText=kotlin_io_ktor_ktor_io.$_$.x,get_authority=kotlin_io_ktor_ktor_http.$_$.u,takeFrom=kotlin_io_ktor_ktor_http.$_$.c1,isSecure=kotlin_io_ktor_ktor_http.$_$.z,get_authority_0=kotlin_io_ktor_ktor_http.$_$.t,EventDefinition=kotlin_io_ktor_ktor_events.$_$.a,Companion_getInstance_1=kotlin_io_ktor_ktor_http.$_$.h,Companion_getInstance_2=kotlin_io_ktor_ktor_http.$_$.f,SupervisorJob=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.d1,cancel_2=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.j1,get_lastIndex=kotlin_kotlin.$_$.z6,downTo=kotlin_kotlin.$_$.ob,delay=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.b,isWebsocket=kotlin_io_ktor_ktor_http.$_$.a1,launch=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.m1,IOException=kotlin_io_ktor_ktor_io.$_$.b1,IOException_init_$Init$=kotlin_io_ktor_ktor_io.$_$.d,URLBuilder=kotlin_io_ktor_ktor_http.$_$.r,HeadersBuilder=kotlin_io_ktor_ktor_http.$_$.p,takeFrom_0=kotlin_io_ktor_ktor_http.$_$.b1,appendAll=kotlin_io_ktor_ktor_utils.$_$.t,putAll=kotlin_io_ktor_ktor_utils.$_$.w,GMTDate=kotlin_io_ktor_ktor_utils.$_$.e,Pipeline=kotlin_io_ktor_ktor_utils.$_$.i,decode=kotlin_io_ktor_ktor_io.$_$.i,hashCode=kotlin_kotlin.$_$.u9,get_ByteArrayPool=kotlin_io_ktor_ktor_io.$_$.c1,readAvailable=kotlin_io_ktor_ktor_io.$_$.b,Companion_getInstance_3=kotlin_io_ktor_ktor_http.$_$.g,CoroutineScope_0=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.x,CancellationException_init_$Create$_0=kotlin_kotlin.$_$.b1,cancel_3=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.h1,Companion_getInstance_4=kotlin_io_ktor_ktor_http.$_$.d,Dispatchers_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.j,intercepted=kotlin_kotlin.$_$.n8,get_MODE_CANCELLABLE=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.b1,CancellableContinuationImpl=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.s,extendThrowable=kotlin_kotlin.$_$.p9,Companion_getInstance_5=kotlin_kotlin.$_$.p4,createFailure=kotlin_kotlin.$_$.wf,_Result___init__impl__xyqfz8=kotlin_kotlin.$_$.v2,toTypedArray=kotlin_kotlin.$_$.h8,writeFully=kotlin_io_ktor_ktor_io.$_$.c,Error_init_$Create$=kotlin_kotlin.$_$.i1,Error_init_$Create$_0=kotlin_kotlin.$_$.k1,_ChannelResult___get_isSuccess__impl__odq1z9=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.f,Channel=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.m,Companion_getInstance_6=kotlin_io_ktor_ktor_websockets.$_$.f,Codes_CLOSED_ABNORMALLY_getInstance=kotlin_io_ktor_ktor_websockets.$_$.a,Text_init_$Create$=kotlin_io_ktor_ktor_websockets.$_$.e,Binary_init_$Create$=kotlin_io_ktor_ktor_websockets.$_$.c,CloseReason=kotlin_io_ktor_ktor_websockets.$_$.g,Close_init_$Create$=kotlin_io_ktor_ktor_websockets.$_$.d,String_0=kotlin_io_ktor_ktor_io.$_$.t,BytePacketBuilder=kotlin_io_ktor_ktor_io.$_$.p,writeFully_0=kotlin_io_ktor_ktor_io.$_$.y,readShort=kotlin_io_ktor_ktor_io.$_$.w,cancelConsumed=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.n,Codes_INTERNAL_ERROR_getInstance=kotlin_io_ktor_ktor_websockets.$_$.b,CompletableDeferred=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.u,Factory_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.g,Companion_instance,CALL_COROUTINE,CLIENT_CONFIG,properties_initialized_HttpClientEngine_kt_5uiebb,ENGINE_CAPABILITIES_KEY,DEFAULT_CAPABILITIES,properties_initialized_HttpClientEngineCapability_kt_qarzcf,KTOR_DEFAULT_USER_AGENT,DATE_HEADERS,Companion_instance_0,properties_initialized_Utils_kt_xvi83j,UploadProgressListenerAttributeKey,DownloadProgressListenerAttributeKey,Plugin_instance,properties_initialized_BodyProgress_kt_pmfrhr,ValidateMark,LOGGER,properties_initialized_DefaultResponseValidation_kt_akvzqt,LOGGER_0,properties_initialized_DefaultTransform_kt_ossax9,LOGGER_1,ExpectSuccessAttributeKey,Companion_instance_1,properties_initialized_HttpCallValidator_kt_xrx49w,PLUGIN_INSTALLED_LIST,properties_initialized_HttpClientPlugin_kt_p98320,LOGGER_2,Plugin_instance_0,properties_initialized_HttpPlainText_kt_2nx4ox,ALLOWED_FOR_REDIRECT,LOGGER_3,Plugin_instance_1,properties_initialized_HttpRedirect_kt_klj746,LOGGER_4,Plugin_instance_2,properties_initialized_HttpRequestLifecycle_kt_3hmcrf,Plugin_instance_3,LOGGER_5,Companion_instance_2,Plugin_instance_4,properties_initialized_HttpTimeout_kt_9oyjbd,WebSocketCapability_instance,Companion_instance_3,Phases_instance,Phases_instance_0,BodyTypeAttributeKey,properties_initialized_RequestBody_kt_agyv1b,Phases_instance_1,Phases_instance_2,HttpRequestCreated,HttpRequestIsReadyForSending,HttpResponseReceived,HttpResponseReceiveFailed,HttpResponseCancelled,properties_initialized_ClientEvents_kt_rdee4m,EmptyContent_instance,Js_instance;function get_coroutineContext(){return this.l2a().ok()}function get_supportedCapabilities(){return emptySet()}function install(t){var n=Phases_getInstance_0().v27_1;t.e25_1.n1r(n,HttpClientEngine$install$slambda_0(t,this,null))}function HttpClient_init_$Init$(t,n,i,e){return HttpClient.call(e,t,n),e.y24_1=i,e}function HttpClient_init_$Create$(t,n,i){return HttpClient_init_$Init$(t,n,i,objectCreate(protoOf(HttpClient)))}function HttpClient$lambda(t){return function(n){return null!=n&&(cancel(t.w24_1),Unit_getInstance()),Unit_getInstance()}}function HttpClient$slambda(t,n){this.s25_1=t,CoroutineImpl.call(this,n)}function HttpClient$slambda_0(t,n){var i=new HttpClient$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function HttpClient$lambda_0(t){return defaultTransformers(t),Unit_getInstance()}function HttpClient$slambda_1(t,n){this.n26_1=t,CoroutineImpl.call(this,n)}function HttpClient$slambda_2(t,n){var i=new HttpClient$slambda_1(t,n),e=function(t,n,e){return i.q26(t,n,e)};return e.$arity=2,e}function $executeCOROUTINE$0(t,n,i){CoroutineImpl.call(this,i),this.a27_1=t,this.b27_1=n}function HttpClient(t,n){n=n===VOID?new HttpClientConfig:n,this.w24_1=t,this.x24_1=n,this.y24_1=!1,this.z24_1=atomic$boolean$1(!1),this.a25_1=Job(this.w24_1.ok().y5(Key_getInstance())),this.b25_1=this.w24_1.ok().f6(this.a25_1),this.c25_1=new HttpRequestPipeline(this.x24_1.p27_1),this.d25_1=new HttpResponsePipeline(this.x24_1.p27_1),this.e25_1=new HttpSendPipeline(this.x24_1.p27_1),this.f25_1=new HttpReceivePipeline(this.x24_1.p27_1),this.g25_1=AttributesJsFn(!0),this.h25_1=this.w24_1.q27(),this.i25_1=new Events,this.j25_1=new HttpClientConfig,this.y24_1&&this.a25_1.pl(HttpClient$lambda(this)),this.w24_1.r27(this);var i=Phases_getInstance_0().w27_1;this.e25_1.n1r(i,HttpClient$slambda_0(this,null));var e=this.x24_1;this.j25_1.x27(Plugin_getInstance_2()),this.j25_1.x27(Plugin_getInstance()),e.n27_1&&this.j25_1.y27("DefaultTransformers",HttpClient$lambda_0),this.j25_1.x27(Plugin_getInstance_3()),this.j25_1.x27(Companion_getInstance_9()),e.m27_1&&this.j25_1.x27(Plugin_getInstance_1()),this.j25_1.z27(e),e.n27_1&&this.j25_1.x27(Plugin_getInstance_0()),addDefaultResponseValidation(this.j25_1),this.j25_1.r27(this),Unit_getInstance();var r=Phases_getInstance_1().a28_1;this.d25_1.n1r(r,HttpClient$slambda_2(this,null))}function HttpClient_0(t,n){n=n===VOID?HttpClient$lambda_1:n;var i=new HttpClientConfig;n(i);var e=i,r=t.g28(e.l27_1),s=HttpClient_init_$Create$(r,e,!0);return ensureNotNull(s.b25_1.y5(Key_getInstance())).pl(HttpClient$lambda_2(r)),s}function HttpClient$lambda_1(t){return Unit_getInstance()}function HttpClient$lambda_2(t){return function(n){return t.a14(),Unit_getInstance()}}function HttpClientConfig$engineConfig$lambda(t){return Unit_getInstance()}function HttpClientConfig$install$lambda(t){return Unit_getInstance()}function HttpClientConfig$install$lambda_0(t,n){return function(i){return null==t||t(i),n(isObject(i)?i:THROW_CCE()),Unit_getInstance()}}function HttpClientConfig$install$lambda$lambda(){return AttributesJsFn(!0)}function HttpClientConfig$install$lambda_1(t){return function(n){var i=get_PLUGIN_INSTALLED_LIST(),e=n.g25_1.b1n(i,HttpClientConfig$install$lambda$lambda),r=ensureNotNull(n.j25_1.j27_1.g2(t.r())),s=t.h28(r);return t.i28(s,n),e.z1m(t.r(),s),Unit_getInstance()}}function HttpClientConfig(){var t,n,i;t=LinkedHashMap_init_$Create$(),this.i27_1=t,n=LinkedHashMap_init_$Create$(),this.j27_1=n,i=LinkedHashMap_init_$Create$(),this.k27_1=i,this.l27_1=HttpClientConfig$engineConfig$lambda,this.m27_1=!0,this.n27_1=!0,this.o27_1=!1,this.p27_1=PlatformUtils_getInstance().h1s_1}function HttpClientCall_init_$Init$(t,n,i,e){HttpClientCall.call(e,t),e.a26_1=new DefaultHttpRequest(e,n),e.b26_1=new DefaultHttpResponse(e,i);var r=i.o28_1;return isInterface(r,ByteReadChannel)||e.r28().z1m(Companion_getInstance_7().s28_1,i.o28_1),e}function HttpClientCall_init_$Create$(t,n,i){return HttpClientCall_init_$Init$(t,n,i,objectCreate(protoOf(HttpClientCall)))}function Companion(){Companion_instance=this,this.s28_1=new AttributeKey("CustomResponse")}function Companion_getInstance_7(){return null==Companion_instance&&new Companion,Companion_instance}function $bodyNullableCOROUTINE$1(t,n,i){CoroutineImpl.call(this,i),this.b29_1=t,this.c29_1=n}function HttpClientCall(t){Companion_getInstance_7(),this.y25_1=t,this.z25_1=atomic$boolean$1(!1),this.c26_1=!1}function DoubleReceiveException(t){IllegalStateException_init_$Init$(this),captureStack(this,DoubleReceiveException),this.r29_1="Response already received: "+t}function NoTransformationFoundException$message$lambda(t){return t.d4()+": "+t.e4()+"\n"}function NoTransformationFoundException(t,n,i){UnsupportedOperationException_init_$Init$(this),captureStack(this,NoTransformationFoundException);var e=get_request(t).p29(),r=t.q29(),s=flattenEntries(t.k1y());this.s29_1=trimMargin("No transformation found: "+n+" -> "+i+"\n |with response from "+e+":\n |status: "+r+"\n |response headers: \n |"+joinToString(s,VOID,VOID,VOID,VOID,VOID,NoTransformationFoundException$message$lambda)+"\n ")}function save(t,n){var i=new $saveCOROUTINE$3(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()}function SavedHttpCall(t,n,i,e){HttpClientCall.call(this,t),this.h2a_1=e,this.a26_1=new SavedHttpRequest(this,n),this.b26_1=new SavedHttpResponse(this,this.h2a_1,i),this.i2a_1=!0}function SavedHttpRequest(t,n){this.j2a_1=t,this.k2a_1=n}function SavedHttpResponse(t,n,i){HttpResponse.call(this),this.n2a_1=t,this.o2a_1=Job(),this.p2a_1=i.q29(),this.q2a_1=i.w2a(),this.r2a_1=i.x2a(),this.s2a_1=i.y2a(),this.t2a_1=i.k1y(),this.u2a_1=i.ok().f6(this.o2a_1),this.v2a_1=ByteReadChannel_0(n)}function $saveCOROUTINE$3(t,n){CoroutineImpl.call(this,n),this.b2a_1=t}function UnsupportedContentTypeException(t){IllegalStateException_init_$Init$_0("Failed to write body: "+getKClassFromExpression(t),this),captureStack(this,UnsupportedContentTypeException)}function ObservableContent$content$slambda(t,n){this.h2b_1=t,CoroutineImpl.call(this,n)}function ObservableContent$content$slambda_0(t,n){var i=new ObservableContent$content$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function ObservableContent(t,n,i){ReadChannelContent.call(this),this.m2b_1=n,this.n2b_1=i;var e,r=t;if(r instanceof ByteArrayContent)e=ByteReadChannel_0(t.n23());else{if(r instanceof ProtocolUpgrade)throw new UnsupportedContentTypeException(t);if(r instanceof NoContent)e=Companion_getInstance().f1g();else if(r instanceof ReadChannelContent)e=t.j23();else if(r instanceof WriteChannelContent){var s=GlobalScope_getInstance();e=writer(s,this.m2b_1,!0,ObservableContent$content$slambda_0(t,null)).u1e()}else noWhenBranchMatchedException()}this.o2b_1=e,this.p2b_1=t}function get_CALL_COROUTINE(){return _init_properties_HttpClientEngine_kt__h91z5h(),CALL_COROUTINE}function get_CLIENT_CONFIG(){return _init_properties_HttpClientEngine_kt__h91z5h(),CLIENT_CONFIG}function HttpClientEngine$install$slambda$lambda(t,n){return function(i){return null!=i&&(t.i25_1.u23(get_HttpResponseCancelled(),n),Unit_getInstance()),Unit_getInstance()}}function _get_closed__iwkfs1(t){var n=t.ok().y5(Key_getInstance()),i=null==n?null:n.pk();return!(null!=i&&i)}function executeWithinCallContext(t,n,i){var e=new $executeWithinCallContextCOROUTINE$4(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()}function checkExtensions(t,n){for(var i=n.i2c_1.d();i.e();){var e=i.f();if(!t.j2c().n(e))throw IllegalArgumentException_init_$Create$(toString("Engine doesn't support "+e))}}function HttpClientEngine$install$slambda(t,n,i){this.s2c_1=t,this.t2c_1=n,CoroutineImpl.call(this,i)}function HttpClientEngine$install$slambda_0(t,n,i){var e=new HttpClientEngine$install$slambda(t,n,i),r=function(t,n,i){return e.w25(t,n,i)};return r.$arity=2,r}function HttpClientEngine$executeWithinCallContext$slambda(t,n,i){this.l2d_1=t,this.m2d_1=n,CoroutineImpl.call(this,i)}function HttpClientEngine$executeWithinCallContext$slambda_0(t,n,i){var e=new HttpClientEngine$executeWithinCallContext$slambda(t,n,i),r=function(t,n){return e.o2d(t,n)};return r.$arity=1,r}function $executeWithinCallContextCOROUTINE$4(t,n,i){CoroutineImpl.call(this,i),this.y2b_1=t,this.z2b_1=n}function HttpClientEngine(){}function validateHeaders(t){_init_properties_HttpClientEngine_kt__h91z5h();for(var n=t.e2c_1.o1o(),i=ArrayList_init_$Create$(),e=n.d();e.e();){var r=e.f();HttpHeaders_getInstance().d1y_1.n(r)&&i.a(r)}var s=i;if(!s.m())throw new UnsafeHeaderException(toString(s))}function createCallContext(t,n,i){var e=Job(n),r=t.ok().f6(e).f6(get_CALL_COROUTINE()),s=i.r4().y5(Key_getInstance());if(null!=s){var o=s.rl(!0,VOID,createCallContext$lambda(e));e.pl(createCallContext$lambda_0(o))}else Unit_getInstance();return r}function createCallContext$lambda(t){return function(n){return null==n||t.ul(CancellationException_init_$Create$(n.message)),Unit_getInstance()}}function createCallContext$lambda_0(t){return function(n){return t.eo(),Unit_getInstance()}}function _init_properties_HttpClientEngine_kt__h91z5h(){properties_initialized_HttpClientEngine_kt_5uiebb||(properties_initialized_HttpClientEngine_kt_5uiebb=!0,CALL_COROUTINE=new CoroutineName("call-context"),CLIENT_CONFIG=new AttributeKey("client-config"))}function ClientEngineClosedException(t){t=t===VOID?null:t,IllegalStateException_init_$Init$_0("Client already closed",this),captureStack(this,ClientEngineClosedException),this.q2d_1=t}function HttpClientEngineBase$coroutineContext$delegate$lambda(t){return function(){return SilentSupervisor().f6(t.r2d()).f6(new CoroutineName(t.s2d_1+"-context"))}}function HttpClientEngineBase$close$lambda(t){return function(n){return close(t.r2d()),Unit_getInstance()}}function HttpClientEngineBase(t){this.s2d_1=t,this.t2d_1=atomic$boolean$1(!1),this.u2d_1=lazy(HttpClientEngineBase$coroutineContext$delegate$lambda(this))}function close(t){try{(t instanceof CloseableCoroutineDispatcher||isInterface(t,Closeable))&&t.a14()}catch(t){if(!(t instanceof Error))throw t}}function coroutineContext$factory(){return getPropertyCallableRef("coroutineContext",1,KProperty1,(function(t){return t.ok()}),null)}function get_ENGINE_CAPABILITIES_KEY(){return _init_properties_HttpClientEngineCapability_kt__ifvyst(),ENGINE_CAPABILITIES_KEY}function _init_properties_HttpClientEngineCapability_kt__ifvyst(){properties_initialized_HttpClientEngineCapability_kt_qarzcf||(properties_initialized_HttpClientEngineCapability_kt_qarzcf=!0,ENGINE_CAPABILITIES_KEY=new AttributeKey("EngineCapabilities"),DEFAULT_CAPABILITIES=setOf(Plugin_getInstance_4()))}function HttpClientEngineConfig(){this.v2d_1=4,this.w2d_1=!1,this.x2d_1=null}function get_KTOR_DEFAULT_USER_AGENT(){return _init_properties_Utils_kt__jo07cx(),KTOR_DEFAULT_USER_AGENT}function get_DATE_HEADERS(){return _init_properties_Utils_kt__jo07cx(),DATE_HEADERS}function Companion_0(){Companion_instance_0=this}function Companion_getInstance_8(){return null==Companion_instance_0&&new Companion_0,Companion_instance_0}function KtorCallContextElement(t){Companion_getInstance_8(),this.y2d_1=t}function callContext(t){var n;return n=t.r4(),ensureNotNull(n.y5(Companion_getInstance_8())).y2d_1}function mergeHeaders(t,n,i){_init_properties_Utils_kt__jo07cx(),buildHeaders(mergeHeaders$lambda(t,n)).q1o(mergeHeaders$lambda_0(i)),null==t.q1n(HttpHeaders_getInstance().g1x_1)&&null==n.k1y().q1n(HttpHeaders_getInstance().g1x_1)&&needUserAgent()&&i(HttpHeaders_getInstance().g1x_1,get_KTOR_DEFAULT_USER_AGENT());var e=n.g23(),r=null==e?null:e.toString(),s=null==r?n.k1y().q1n(HttpHeaders_getInstance().a1v_1):r,o=null==s?t.q1n(HttpHeaders_getInstance().a1v_1):s,u=n.h23(),a=null==u?null:u.toString(),h=null==a?n.k1y().q1n(HttpHeaders_getInstance().x1u_1):a,_=null==h?t.q1n(HttpHeaders_getInstance().x1u_1):h,l=o;null==l||i(HttpHeaders_getInstance().a1v_1,l);var f=_;null==f||i(HttpHeaders_getInstance().x1u_1,f)}function needUserAgent(){return _init_properties_Utils_kt__jo07cx(),!PlatformUtils_getInstance().d1s_1}function mergeHeaders$lambda(t,n){return function(i){return i.y1o(t),i.y1o(n.k1y()),Unit_getInstance()}}function mergeHeaders$lambda_0(t){return function(n,i){if(HttpHeaders_getInstance().x1u_1===n)return Unit_getInstance();if(HttpHeaders_getInstance().a1v_1===n)return Unit_getInstance();if(get_DATE_HEADERS().n(n)){for(var e=i.d();e.e();){var r=e.f();t(n,r)}Unit_getInstance()}else t(n,joinToString(i,","));return Unit_getInstance()}}function _init_properties_Utils_kt__jo07cx(){properties_initialized_Utils_kt_xvi83j||(properties_initialized_Utils_kt_xvi83j=!0,KTOR_DEFAULT_USER_AGENT="Ktor client",DATE_HEADERS=setOf_0([HttpHeaders_getInstance().d1v_1,HttpHeaders_getInstance().j1v_1,HttpHeaders_getInstance().v1v_1,HttpHeaders_getInstance().q1v_1,HttpHeaders_getInstance().u1v_1]))}function get_UploadProgressListenerAttributeKey(){return _init_properties_BodyProgress_kt__s0v569(),UploadProgressListenerAttributeKey}function get_DownloadProgressListenerAttributeKey(){return _init_properties_BodyProgress_kt__s0v569(),DownloadProgressListenerAttributeKey}function handle(t,n){var i=new PipelinePhase("ObservableContent");n.c25_1.k1r(Phases_getInstance().c2e_1,i),n.c25_1.n1r(i,BodyProgress$handle$slambda_0(null));var e=Phases_getInstance_2().g2e_1;n.f25_1.n1r(e,BodyProgress$handle$slambda_2(null))}function Plugin(){Plugin_instance=this,this.h2e_1=new AttributeKey("BodyProgress")}function Plugin_getInstance(){return null==Plugin_instance&&new Plugin,Plugin_instance}function BodyProgress$handle$slambda(t){CoroutineImpl.call(this,t)}function BodyProgress$handle$slambda_0(t){var n=new BodyProgress$handle$slambda(t),i=function(t,i,e){return n.w25(t,i,e)};return i.$arity=2,i}function BodyProgress$handle$slambda_1(t){CoroutineImpl.call(this,t)}function BodyProgress$handle$slambda_2(t){var n=new BodyProgress$handle$slambda_1(t),i=function(t,i,e){return n.i2f(t,i,e)};return i.$arity=2,i}function BodyProgress(){Plugin_getInstance()}function withObservableDownload(t,n){_init_properties_BodyProgress_kt__s0v569();var i=observable(t.n29(),t.ok(),contentLength(t),n);return wrapWithContent(t,i)}function _init_properties_BodyProgress_kt__s0v569(){properties_initialized_BodyProgress_kt_pmfrhr||(properties_initialized_BodyProgress_kt_pmfrhr=!0,UploadProgressListenerAttributeKey=new AttributeKey("UploadProgressListenerAttributeKey"),DownloadProgressListenerAttributeKey=new AttributeKey("DownloadProgressListenerAttributeKey"))}function get_ValidateMark(){return _init_properties_DefaultResponseValidation_kt__wcn8vr(),ValidateMark}function get_LOGGER(){return _init_properties_DefaultResponseValidation_kt__wcn8vr(),LOGGER}function addDefaultResponseValidation(t){_init_properties_DefaultResponseValidation_kt__wcn8vr(),HttpResponseValidator(t,addDefaultResponseValidation$lambda(t))}function ResponseException(t,n){IllegalStateException_init_$Init$_0("Bad response: "+t+'. Text: "'+n+'"',this),captureStack(this,ResponseException),this.k2f_1=t}function RedirectResponseException(t,n){ResponseException.call(this,t,n),captureStack(this,RedirectResponseException),this.m2f_1="Unhandled redirect: "+t.l2a().m29().m2a().t1y_1+" "+t.l2a().m29().p29()+". Status: "+t.q29()+'. Text: "'+n+'"'}function ClientRequestException(t,n){ResponseException.call(this,t,n),captureStack(this,ClientRequestException),this.o2f_1="Client request("+t.l2a().m29().m2a().t1y_1+" "+t.l2a().m29().p29()+") invalid: "+t.q29()+'. Text: "'+n+'"'}function ServerResponseException(t,n){ResponseException.call(this,t,n),captureStack(this,ServerResponseException),this.q2f_1="Server error("+t.l2a().m29().m2a().t1y_1+" "+t.l2a().m29().p29()+": "+t.q29()+'. Text: "'+n+'"'}function addDefaultResponseValidation$lambda$slambda(t){CoroutineImpl.call(this,t)}function addDefaultResponseValidation$lambda$slambda_0(t){var n=new addDefaultResponseValidation$lambda$slambda(t),i=function(t,i){return n.h2g(t,i)};return i.$arity=1,i}function addDefaultResponseValidation$lambda(t){return function(n){return n.l2g_1=t.o27_1,n.m2g(addDefaultResponseValidation$lambda$slambda_0(null)),Unit_getInstance()}}function _init_properties_DefaultResponseValidation_kt__wcn8vr(){properties_initialized_DefaultResponseValidation_kt_akvzqt||(properties_initialized_DefaultResponseValidation_kt_akvzqt=!0,ValidateMark=new AttributeKey("ValidateMark"),LOGGER=KtorSimpleLogger("io.ktor.client.plugins.DefaultResponseValidation"))}function get_LOGGER_0(){return _init_properties_DefaultTransform_kt__20knxx(),LOGGER_0}function defaultTransformers(t){_init_properties_DefaultTransform_kt__20knxx();var n=Phases_getInstance().c2e_1;t.c25_1.n1r(n,defaultTransformers$slambda_0(null));var i=Phases_getInstance_1().b28_1;t.d25_1.n1r(i,defaultTransformers$slambda_2(null)),platformResponseDefaultTransformers(t)}function defaultTransformers$1$content$1(t,n){this.q2g_1=n,ByteArrayContent.call(this);var i=t;this.o2g_1=null==i?Application_getInstance().a1t_1:i,this.p2g_1=toLong(n.length)}function defaultTransformers$1$content$2(t,n,i){this.u2g_1=i,ReadChannelContent.call(this);var e=t.j1r_1.e27_1.q1n(HttpHeaders_getInstance().x1u_1);this.s2g_1=null==e?null:toLong_0(e);var r=n;this.t2g_1=null==r?Application_getInstance().a1t_1:r}function defaultTransformers$slambda(t){CoroutineImpl.call(this,t)}function defaultTransformers$slambda_0(t){var n=new defaultTransformers$slambda(t),i=function(t,i,e){return n.w25(t,i,e)};return i.$arity=2,i}function defaultTransformers$slambda$slambda(t,n,i){this.p2h_1=t,this.q2h_1=n,CoroutineImpl.call(this,i)}function defaultTransformers$slambda$slambda_0(t,n,i){var e=new defaultTransformers$slambda$slambda(t,n,i),r=function(t,n){return e.j2b(t,n)};return r.$arity=1,r}function defaultTransformers$slambda$lambda(t){return function(n){return t.oq(),Unit_getInstance()}}function defaultTransformers$slambda_1(t){CoroutineImpl.call(this,t)}function defaultTransformers$slambda_2(t){var n=new defaultTransformers$slambda_1(t),i=function(t,i,e){return n.q26(t,i,e)};return i.$arity=2,i}function _init_properties_DefaultTransform_kt__20knxx(){properties_initialized_DefaultTransform_kt_ossax9||(properties_initialized_DefaultTransform_kt_ossax9=!0,LOGGER_0=KtorSimpleLogger("io.ktor.client.plugins.defaultTransformers"))}function get_LOGGER_1(){return _init_properties_HttpCallValidator_kt__r6yh2y(),LOGGER_1}function get_ExpectSuccessAttributeKey(){return _init_properties_HttpCallValidator_kt__r6yh2y(),ExpectSuccessAttributeKey}function HttpCallValidator$Companion$install$slambda$lambda(t){return function(){return t.v2i_1}}function HttpCallValidator$Companion$install$slambda(t,n){this.e2j_1=t,CoroutineImpl.call(this,n)}function HttpCallValidator$Companion$install$slambda_0(t,n){var i=new HttpCallValidator$Companion$install$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function HttpCallValidator$Companion$install$slambda_1(t,n){this.r2j_1=t,CoroutineImpl.call(this,n)}function HttpCallValidator$Companion$install$slambda_2(t,n){var i=new HttpCallValidator$Companion$install$slambda_1(t,n),e=function(t,n,e){return i.q26(t,n,e)};return e.$arity=2,e}function HttpCallValidator$Companion$install$slambda_3(t,n){this.e2k_1=t,CoroutineImpl.call(this,n)}function HttpCallValidator$Companion$install$slambda_4(t,n){var i=new HttpCallValidator$Companion$install$slambda_3(t,n),e=function(t,n,e){return i.i2k(t,n,e)};return e.$arity=2,e}function validateResponse(t,n,i){var e=new $validateResponseCOROUTINE$5(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()}function processException(t,n,i,e){var r=new $processExceptionCOROUTINE$6(t,n,i,e);return r.jj_1=Unit_getInstance(),r.kj_1=null,r.qj()}function Config(){var t,n;t=ArrayList_init_$Create$(),this.j2g_1=t,n=ArrayList_init_$Create$(),this.k2g_1=n,this.l2g_1=!0}function Companion_1(){Companion_instance_1=this,this.m2l_1=new AttributeKey("HttpResponseValidator")}function Companion_getInstance_9(){return null==Companion_instance_1&&new Companion_1,Companion_instance_1}function $validateResponseCOROUTINE$5(t,n,i){CoroutineImpl.call(this,i),this.s2k_1=t,this.t2k_1=n}function $processExceptionCOROUTINE$6(t,n,i,e){CoroutineImpl.call(this,e),this.f2l_1=t,this.g2l_1=n,this.h2l_1=i}function HttpCallValidator(t,n,i){Companion_getInstance_9(),this.t2i_1=t,this.u2i_1=n,this.v2i_1=i}function ExceptionHandlerWrapper(){}function RequestExceptionHandlerWrapper(){}function HttpRequest(t){return _init_properties_HttpCallValidator_kt__r6yh2y(),new HttpRequest$1(t)}function HttpResponseValidator(t,n){_init_properties_HttpCallValidator_kt__r6yh2y(),t.j28(Companion_getInstance_9(),n)}function set_expectSuccess(t,n){return _init_properties_HttpCallValidator_kt__r6yh2y(),t.h27_1.z1m(get_ExpectSuccessAttributeKey(),n)}function HttpRequest$1(t){this.y2l_1=t,this.u2l_1=t.d27_1,this.v2l_1=t.c27_1.f1c(),this.w2l_1=t.h27_1,this.x2l_1=t.e27_1.f1c()}function _init_properties_HttpCallValidator_kt__r6yh2y(){properties_initialized_HttpCallValidator_kt_xrx49w||(properties_initialized_HttpCallValidator_kt_xrx49w=!0,LOGGER_1=KtorSimpleLogger("io.ktor.client.plugins.HttpCallValidator"),ExpectSuccessAttributeKey=new AttributeKey("ExpectSuccessAttributeKey"))}function get_PLUGIN_INSTALLED_LIST(){return _init_properties_HttpClientPlugin_kt__cypu1m(),PLUGIN_INSTALLED_LIST}function plugin(t,n){_init_properties_HttpClientPlugin_kt__cypu1m();var i=pluginOrNull(t,n);if(null==i)throw IllegalStateException_init_$Create$("Plugin "+n+" is not installed. Consider using `install("+n.r()+")` in client config first.");return i}function HttpClientPlugin(){}function pluginOrNull(t,n){_init_properties_HttpClientPlugin_kt__cypu1m();var i=t.g25_1.x1m(get_PLUGIN_INSTALLED_LIST());return null==i?null:i.x1m(n.r())}function _init_properties_HttpClientPlugin_kt__cypu1m(){properties_initialized_HttpClientPlugin_kt_p98320||(properties_initialized_HttpClientPlugin_kt_p98320=!0,PLUGIN_INSTALLED_LIST=new AttributeKey("ApplicationPluginRegistry"))}function get_LOGGER_2(){return _init_properties_HttpPlainText_kt__iy89z1(),LOGGER_2}function HttpPlainText$Plugin$install$slambda(t,n){this.h2m_1=t,CoroutineImpl.call(this,n)}function HttpPlainText$Plugin$install$slambda_0(t,n){var i=new HttpPlainText$Plugin$install$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function HttpPlainText$Plugin$install$slambda_1(t,n){this.x2m_1=t,CoroutineImpl.call(this,n)}function HttpPlainText$Plugin$install$slambda_2(t,n){var i=new HttpPlainText$Plugin$install$slambda_1(t,n),e=function(t,n,e){return i.q26(t,n,e)};return e.$arity=2,e}function Config_0(){var t,n;t=LinkedHashSet_init_$Create$(),this.f2n_1=t,n=LinkedHashMap_init_$Create$(),this.g2n_1=n,this.h2n_1=null,this.i2n_1=Charsets_getInstance().e1j_1}function Plugin_0(){Plugin_instance_0=this,this.j2n_1=new AttributeKey("HttpPlainText")}function Plugin_getInstance_0(){return null==Plugin_instance_0&&new Plugin_0,Plugin_instance_0}function wrapContent(t,n,i,e){var r=e,s=null==r?Text_getInstance().r1t_1:r,o=null==e?null:charset(e),u=null==o?t.m2m_1:o;return get_LOGGER_2().j1s("Sending request body to "+n.c27_1+" as text/plain with charset "+u),new TextContent(i,withCharset(s,u))}function sam$kotlin_Comparator$0(t){this.l2n_1=t}function HttpPlainText$lambda(t,n){var i,e=n.c4_1;return i=t.c4_1,compareValues(e,i)}function HttpPlainText$lambda_0(t,n){var i,e=get_name(t);return i=get_name(n),compareValues(e,i)}function HttpPlainText(t,n,i,e){Plugin_getInstance_0(),this.l2m_1=e;var r,s=toList(n);r=new sam$kotlin_Comparator$0(HttpPlainText$lambda);for(var o=sortedWith(s,r),u=ArrayList_init_$Create$(),a=t.d();a.e();){var h=a.f();!n.a2(h)&&u.a(h)}var _,l=u;_=new sam$kotlin_Comparator$0(HttpPlainText$lambda_0);for(var f,c=sortedWith(l,_),v=StringBuilder_init_$Create$(),w=c.d();w.e();){var d=w.f();charSequenceLength(v)>0&&v.l8(","),v.l8(get_name(d))}for(var p=o.d();p.e();){var m=p.f(),g=m.d4(),$=m.e4();if(charSequenceLength(v)>0&&v.l8(","),!(0<=$&&$<=1))throw IllegalStateException_init_$Create$(toString("Check failed."));var y=roundToInt(100*$)/100;v.l8(get_name(g)+";q="+y)}0===charSequenceLength(v)&&v.l8(get_name(this.l2m_1)),f=v.toString(),this.n2m_1=f;var b,k=i,j=null==k?firstOrNull(c):k;if(null==j){var x=firstOrNull(o);b=null==x?null:x.b4_1}else b=j;var z=b;this.m2m_1=null==z?Charsets_getInstance().e1j_1:z}function _init_properties_HttpPlainText_kt__iy89z1(){properties_initialized_HttpPlainText_kt_2nx4ox||(properties_initialized_HttpPlainText_kt_2nx4ox=!0,LOGGER_2=KtorSimpleLogger("io.ktor.client.plugins.HttpPlainText"))}function get_ALLOWED_FOR_REDIRECT(){return _init_properties_HttpRedirect_kt__ure7fo(),ALLOWED_FOR_REDIRECT}function get_LOGGER_3(){return _init_properties_HttpRedirect_kt__ure7fo(),LOGGER_3}function handleCall(t,n,i,e,r,s,o){var u=new $handleCallCOROUTINE$7(n,t,i,e,r,s,o);return u.jj_1=Unit_getInstance(),u.kj_1=null,u.qj()}function HttpRedirect$Plugin$install$slambda(t,n,i){this.n2o_1=t,this.o2o_1=n,CoroutineImpl.call(this,i)}function HttpRedirect$Plugin$install$slambda_0(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.i2k(t,n,i)};return r.$arity=2,r}function $handleCallCOROUTINE$7(t,n,i,e,r,s,o){CoroutineImpl.call(this,o),this.u2n_1=t,this.v2n_1=n,this.w2n_1=i,this.x2n_1=e,this.y2n_1=r,this.z2n_1=s}function Config_1(){this.w2o_1=!0,this.x2o_1=!1}function Plugin_1(){Plugin_instance_1=this,this.u2o_1=new AttributeKey("HttpRedirect"),this.v2o_1=new EventDefinition}function Plugin_getInstance_1(){return null==Plugin_instance_1&&new Plugin_1,Plugin_instance_1}function HttpRedirect(t,n){Plugin_getInstance_1(),this.s2o_1=t,this.t2o_1=n}function isRedirect(t){_init_properties_HttpRedirect_kt__ure7fo();var n=t.e21_1;return n===Companion_getInstance_1().o1z_1.e21_1||n===Companion_getInstance_1().p1z_1.e21_1||n===Companion_getInstance_1().u1z_1.e21_1||n===Companion_getInstance_1().v1z_1.e21_1||n===Companion_getInstance_1().q1z_1.e21_1}function _init_properties_HttpRedirect_kt__ure7fo(){properties_initialized_HttpRedirect_kt_klj746||(properties_initialized_HttpRedirect_kt_klj746=!0,ALLOWED_FOR_REDIRECT=setOf_0([Companion_getInstance_2().l1y_1,Companion_getInstance_2().q1y_1]),LOGGER_3=KtorSimpleLogger("io.ktor.client.plugins.HttpRedirect"))}function get_LOGGER_4(){return _init_properties_HttpRequestLifecycle_kt__jgkmfx(),LOGGER_4}function HttpRequestLifecycle$Plugin$install$slambda(t,n){this.h2p_1=t,CoroutineImpl.call(this,n)}function HttpRequestLifecycle$Plugin$install$slambda_0(t,n){var i=new HttpRequestLifecycle$Plugin$install$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function Plugin_2(){Plugin_instance_2=this,this.m2p_1=new AttributeKey("RequestLifecycle")}function Plugin_getInstance_2(){return null==Plugin_instance_2&&new Plugin_2,Plugin_instance_2}function HttpRequestLifecycle(){Plugin_getInstance_2()}function attachToClientEngineJob(t,n){_init_properties_HttpRequestLifecycle_kt__jgkmfx();var i=n.pl(attachToClientEngineJob$lambda(t));t.pl(attachToClientEngineJob$lambda_0(i))}function attachToClientEngineJob$lambda(t){return function(n){return null!=n?(get_LOGGER_4().j1s("Cancelling request because engine Job failed with error: "+n),cancel_2(t,"Engine failed",n),Unit_getInstance()):(get_LOGGER_4().j1s("Cancelling request because engine Job completed"),t.oq(),Unit_getInstance()),Unit_getInstance()}}function attachToClientEngineJob$lambda_0(t){return function(n){return t.eo(),Unit_getInstance()}}function _init_properties_HttpRequestLifecycle_kt__jgkmfx(){properties_initialized_HttpRequestLifecycle_kt_3hmcrf||(properties_initialized_HttpRequestLifecycle_kt_3hmcrf=!0,LOGGER_4=KtorSimpleLogger("io.ktor.client.plugins.HttpRequestLifecycle"))}function HttpSend$Plugin$install$slambda(t,n,i){this.w2p_1=t,this.x2p_1=n,CoroutineImpl.call(this,i)}function HttpSend$Plugin$install$slambda_0(t,n,i){var e=new HttpSend$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.w25(t,n,i)};return r.$arity=2,r}function $executeCOROUTINE$8(t,n,i){CoroutineImpl.call(this,i),this.l2q_1=t,this.m2q_1=n}function Config_2(){this.r2q_1=20}function Plugin_3(){Plugin_instance_3=this,this.s2q_1=new AttributeKey("HttpSend")}function Plugin_getInstance_3(){return null==Plugin_instance_3&&new Plugin_3,Plugin_instance_3}function InterceptedSender(t,n){this.u2q_1=t,this.v2q_1=n}function DefaultSender(t,n){this.n2q_1=t,this.o2q_1=n,this.p2q_1=0,this.q2q_1=null}function HttpSend(t){var n;Plugin_getInstance_3(),t=t===VOID?20:t,this.p2l_1=t,n=ArrayList_init_$Create$(),this.q2l_1=n}function Sender(){}function SendCountExceedException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,SendCountExceedException)}function get_LOGGER_5(){return _init_properties_HttpTimeout_kt__pucqrr(),LOGGER_5}function HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,e){return t=t===VOID?null:t,n=n===VOID?null:n,i=i===VOID?null:i,HttpTimeoutCapabilityConfiguration.call(e),e.z2q(t),e.a2r(n),e.b2r(i),e}function HttpTimeoutCapabilityConfiguration_init_$Create$(t,n,i){return HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,objectCreate(protoOf(HttpTimeoutCapabilityConfiguration)))}function checkTimeoutValue(t,n){if(!(null==n||n.w(new Long(0,0))>0))throw IllegalArgumentException_init_$Create$(toString("Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS"));return n}function Companion_2(){Companion_instance_2=this,this.c2r_1=new AttributeKey("TimeoutConfiguration")}function Companion_getInstance_10(){return null==Companion_instance_2&&new Companion_2,Companion_instance_2}function HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e){this.l2r_1=t,this.m2r_1=n,this.n2r_1=i,CoroutineImpl.call(this,e)}function HttpTimeout$Plugin$install$slambda$slambda_0(t,n,i,e){var r=new HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e),s=function(t,n){return r.n1f(t,n)};return s.$arity=1,s}function HttpTimeout$Plugin$install$slambda$lambda(t){return function(n){return t.vl(),Unit_getInstance()}}function HttpTimeout$Plugin$install$slambda(t,n,i){this.x2r_1=t,this.y2r_1=n,CoroutineImpl.call(this,i)}function HttpTimeout$Plugin$install$slambda_0(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.i2k(t,n,i)};return r.$arity=2,r}function HttpTimeoutCapabilityConfiguration(){Companion_getInstance_10(),this.w2q_1=new Long(0,0),this.x2q_1=new Long(0,0),this.y2q_1=new Long(0,0)}function hasNotNullTimeouts(t){return null!=t.g2s_1||null!=t.h2s_1||!(null==t.i2s_1)}function Plugin_4(){Plugin_instance_4=this,this.l2s_1=new AttributeKey("TimeoutPlugin"),this.m2s_1=new Long(-1,2147483647)}function Plugin_getInstance_4(){return null==Plugin_instance_4&&new Plugin_4,Plugin_instance_4}function HttpTimeout(t,n,i){Plugin_getInstance_4(),this.g2s_1=t,this.h2s_1=n,this.i2s_1=i}function HttpRequestTimeoutException_init_$Init$(t,n){var i=t.c27_1.y22(),e=t.d2s(Plugin_getInstance_4());return HttpRequestTimeoutException.call(n,i,null==e?null:e.k2s()),n}function HttpRequestTimeoutException_init_$Create$(t){var n=HttpRequestTimeoutException_init_$Init$(t,objectCreate(protoOf(HttpRequestTimeoutException)));return captureStack(n,HttpRequestTimeoutException_init_$Create$),n}function HttpRequestTimeoutException(t,n){IOException_init_$Init$("Request timeout has expired [url="+t+", request_timeout="+toString(null==n?"unknown":n)+" ms]",this),captureStack(this,HttpRequestTimeoutException)}function _init_properties_HttpTimeout_kt__pucqrr(){properties_initialized_HttpTimeout_kt_9oyjbd||(properties_initialized_HttpTimeout_kt_9oyjbd=!0,LOGGER_5=KtorSimpleLogger("io.ktor.client.plugins.HttpTimeout"))}function wrapWithContent(t,n){return new DelegatedResponse(t.l2a(),n,t)}function DelegatedResponse(t,n,i){HttpResponse.call(this),this.p2s_1=t,this.q2s_1=n,this.r2s_1=i,this.s2s_1=this.r2s_1.ok()}function WebSocketCapability(){WebSocketCapability_instance=this}function WebSocketCapability_getInstance(){return null==WebSocketCapability_instance&&new WebSocketCapability,WebSocketCapability_instance}function WebSocketException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,WebSocketException)}function ClientUpgradeContent(){}function DefaultHttpRequest(t,n){this.t2s_1=t,this.u2s_1=n.d2c_1,this.v2s_1=n.c2c_1,this.w2s_1=n.f2c_1,this.x2s_1=n.e2c_1,this.y2s_1=n.h2c_1}function HttpRequest_0(){}function Companion_3(){Companion_instance_3=this}function Companion_getInstance_11(){return null==Companion_instance_3&&new Companion_3,Companion_instance_3}function HttpRequestBuilder$setCapability$lambda(){return LinkedHashMap_init_$Create$()}function HttpRequestBuilder(){Companion_getInstance_11(),this.c27_1=new URLBuilder,this.d27_1=Companion_getInstance_2().l1y_1,this.e27_1=new HeadersBuilder,this.f27_1=EmptyContent_getInstance(),this.g27_1=SupervisorJob(),this.h27_1=AttributesJsFn(!0)}function HttpRequestData(t,n,i,e,r,s){this.c2c_1=t,this.d2c_1=n,this.e2c_1=i,this.f2c_1=e,this.g2c_1=r,this.h2c_1=s;var o=this.h2c_1.x1m(get_ENGINE_CAPABILITIES_KEY()),u=null==o?null:o.h2();this.i2c_1=null==u?emptySet():u}function HttpResponseData(t,n,i,e,r,s){this.k28_1=t,this.l28_1=n,this.m28_1=i,this.n28_1=e,this.o28_1=r,this.p28_1=s,this.q28_1=GMTDate()}function url(t,n){takeFrom(t.c27_1,n)}function isUpgradeRequest(t){return t.f2c_1 instanceof ClientUpgradeContent}function Phases(){Phases_instance=this,this.z2d_1=new PipelinePhase("Before"),this.a2e_1=new PipelinePhase("State"),this.b2e_1=new PipelinePhase("Transform"),this.c2e_1=new PipelinePhase("Render"),this.d2e_1=new PipelinePhase("Send")}function Phases_getInstance(){return null==Phases_instance&&new Phases,Phases_instance}function HttpRequestPipeline(t){Phases_getInstance(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance().z2d_1,Phases_getInstance().a2e_1,Phases_getInstance().b2e_1,Phases_getInstance().c2e_1,Phases_getInstance().d2e_1]),this.i2t_1=t}function Phases_0(){Phases_instance_0=this,this.s27_1=new PipelinePhase("Before"),this.t27_1=new PipelinePhase("State"),this.u27_1=new PipelinePhase("Monitoring"),this.v27_1=new PipelinePhase("Engine"),this.w27_1=new PipelinePhase("Receive")}function Phases_getInstance_0(){return null==Phases_instance_0&&new Phases_0,Phases_instance_0}function HttpSendPipeline(t){Phases_getInstance_0(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_0().s27_1,Phases_getInstance_0().t27_1,Phases_getInstance_0().u27_1,Phases_getInstance_0().v27_1,Phases_getInstance_0().w27_1]),this.q2t_1=t}function get_BodyTypeAttributeKey(){return _init_properties_RequestBody_kt__bo3lwf(),BodyTypeAttributeKey}function _init_properties_RequestBody_kt__bo3lwf(){properties_initialized_RequestBody_kt_agyv1b||(properties_initialized_RequestBody_kt_agyv1b=!0,BodyTypeAttributeKey=new AttributeKey("BodyTypeAttributeKey"))}function DefaultHttpResponse(t,n){HttpResponse.call(this),this.r2t_1=t,this.s2t_1=n.p28_1,this.t2t_1=n.k28_1,this.u2t_1=n.n28_1,this.v2t_1=n.l28_1,this.w2t_1=n.q28_1;var i=n.o28_1,e=isInterface(i,ByteReadChannel)?i:null;this.x2t_1=null==e?Companion_getInstance().f1g():e,this.y2t_1=n.m28_1}function HttpResponse(){}function get_request(t){return t.l2a().m29()}function complete(t){var n=ensureNotNull(t.ok().y5(Key_getInstance()));(isInterface(n,CompletableJob)?n:THROW_CCE()).oq()}function bodyAsText(t,n,i){var e=new $bodyAsTextCOROUTINE$12(t,n=n===VOID?Charsets_getInstance().e1j_1:n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()}function $bodyAsTextCOROUTINE$12(t,n,i){CoroutineImpl.call(this,i),this.h2u_1=t,this.i2u_1=n}function Phases_1(){Phases_instance_1=this,this.a28_1=new PipelinePhase("Receive"),this.b28_1=new PipelinePhase("Parse"),this.c28_1=new PipelinePhase("Transform"),this.d28_1=new PipelinePhase("State"),this.e28_1=new PipelinePhase("After")}function Phases_getInstance_1(){return null==Phases_instance_1&&new Phases_1,Phases_instance_1}function HttpResponsePipeline(t){Phases_getInstance_1(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_1().a28_1,Phases_getInstance_1().b28_1,Phases_getInstance_1().c28_1,Phases_getInstance_1().d28_1,Phases_getInstance_1().e28_1]),this.s2u_1=t}function Phases_2(){Phases_instance_2=this,this.e2e_1=new PipelinePhase("Before"),this.f2e_1=new PipelinePhase("State"),this.g2e_1=new PipelinePhase("After")}function Phases_getInstance_2(){return null==Phases_instance_2&&new Phases_2,Phases_instance_2}function HttpReceivePipeline(t){Phases_getInstance_2(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_2().e2e_1,Phases_getInstance_2().f2e_1,Phases_getInstance_2().g2e_1]),this.a2v_1=t}function HttpResponseContainer(t,n){this.k29_1=t,this.l29_1=n}function checkCapabilities(t){var n,i=t.b2v_1.h27_1.x1m(get_ENGINE_CAPABILITIES_KEY()),e=null==i?null:i.h2();if(null==e)n=null;else{for(var r=ArrayList_init_$Create$(),s=e.d();s.e();){var o=s.f();null!=o&&isInterface(o,HttpClientPlugin)&&r.a(o)}n=r}if(null==n);else for(var u=n.d();u.e();){var a=u.f();if(null==pluginOrNull(t.c2v_1,a))throw IllegalArgumentException_init_$Create$(toString("Consider installing "+a+" plugin because the request requires it to be installed"))}}function HttpStatement$execute$slambda(t){CoroutineImpl.call(this,t)}function HttpStatement$execute$slambda_0(t){var n=new HttpStatement$execute$slambda(t),i=function(t,i){return n.m2v(t,i)};return i.$arity=1,i}function $executeCOROUTINE$13(t,n,i){CoroutineImpl.call(this,i),this.v2v_1=t,this.w2v_1=n}function $executeUnsafeCOROUTINE$14(t,n){CoroutineImpl.call(this,n),this.m2w_1=t}function $cleanupCOROUTINE$15(t,n,i){CoroutineImpl.call(this,i),this.x2w_1=t,this.y2w_1=n}function HttpStatement(t,n){this.b2v_1=t,this.c2v_1=n,checkCapabilities(this)}function observable(t,n,i,e){var r=GlobalScope_getInstance();return writer(r,n,!0,observable$slambda_0(i,t,e,null)).u1e()}function observable$slambda(t,n,i,e){this.l2x_1=t,this.m2x_1=n,this.n2x_1=i,CoroutineImpl.call(this,e)}function observable$slambda_0(t,n,i,e){var r=new observable$slambda(t,n,i,e),s=function(t,n){return r.j2b(t,n)};return s.$arity=1,s}function get_HttpRequestCreated(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestCreated}function get_HttpRequestIsReadyForSending(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestIsReadyForSending}function get_HttpResponseReceived(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceived}function get_HttpResponseReceiveFailed(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceiveFailed}function get_HttpResponseCancelled(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseCancelled}function HttpResponseReceiveFail(t,n){this.x2x_1=t,this.y2x_1=n}function _init_properties_ClientEvents_kt__xuvbz8(){properties_initialized_ClientEvents_kt_rdee4m||(properties_initialized_ClientEvents_kt_rdee4m=!0,HttpRequestCreated=new EventDefinition,HttpRequestIsReadyForSending=new EventDefinition,HttpResponseReceived=new EventDefinition,HttpResponseReceiveFailed=new EventDefinition,HttpResponseCancelled=new EventDefinition)}function EmptyContent(){EmptyContent_instance=this,NoContent.call(this),this.a2y_1=new Long(0,0)}function EmptyContent_getInstance(){return null==EmptyContent_instance&&new EmptyContent,EmptyContent_instance}function buildHeaders(t){t=t===VOID?buildHeaders$lambda:t;var n=new HeadersBuilder;return t(n),n.f1c()}function buildHeaders$lambda(t){return Unit_getInstance()}function HttpClient_1(t){return t=t===VOID?HttpClient$lambda_3:t,HttpClient_0(JsClient(),t)}function HttpClient$lambda_3(t){return Unit_getInstance()}function JsClient(){return Js_getInstance()}function Js(){Js_instance=this}function Js_getInstance(){return null==Js_instance&&new Js,Js_instance}function createWebSocket($this,urlString_capturingHack,headers){var tmp;if(PlatformUtils_getInstance().e1s_1){var ws_capturingHack=eval("require")("ws"),headers_capturingHack=new JsClientEngine$createWebSocket$headers_capturingHack$1;headers.q1o(JsClientEngine$createWebSocket$lambda(headers_capturingHack)),tmp=new ws_capturingHack(urlString_capturingHack,{headers:headers_capturingHack})}else tmp=new WebSocket(urlString_capturingHack);return tmp}function executeWebSocketRequest(t,n,i,e){var r=new $executeWebSocketRequestCOROUTINE$17(t,n,i,e);return r.jj_1=Unit_getInstance(),r.kj_1=null,r.qj()}function JsClientEngine$createWebSocket$headers_capturingHack$1(){}function JsClientEngine$createWebSocket$lambda(t){return function(n,i){return t[n]=joinToString(i,","),Unit_getInstance()}}function $executeCOROUTINE$16(t,n,i){CoroutineImpl.call(this,i),this.y2y_1=t,this.z2y_1=n}function $executeWebSocketRequestCOROUTINE$17(t,n,i,e){CoroutineImpl.call(this,e),this.k2y_1=t,this.l2y_1=n,this.m2y_1=i}function JsClientEngine(t){if(HttpClientEngineBase.call(this,"ktor-js"),this.h2z_1=t,this.i2z_1=Dispatchers_getInstance().zq_1,this.j2z_1=setOf_0([Plugin_getInstance_4(),WebSocketCapability_getInstance()]),null!=this.h2z_1.x2d_1)throw IllegalStateException_init_$Create$(toString("Proxy unsupported in Js engine."))}function mapToKtor(t){return buildHeaders(mapToKtor$lambda(t))}function awaitConnection(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());if(i.kp(),i.tn())Unit_getInstance();else{var e=awaitConnection$lambda(i,t);t.addEventListener("open",e),t.addEventListener("error",e),i.zn(awaitConnection$lambda_0(t,e))}return i.nn()}function asString(t){var n,i=StringBuilder_init_$Create$(),e=JSON;return n=["message","target","type","isTrusted"],i.l8(e.stringify(t,n)),i.toString()}function JsError(t){extendThrowable(this,"Error from javascript["+t+"]."),captureStack(this,JsError),this.k2z_1=t}function mapToKtor$lambda$lambda(t){return function(n,i){return t.x1o(i,n),Unit_getInstance()}}function mapToKtor$lambda(t){return function(n){return t.forEach(mapToKtor$lambda$lambda(n)),Unit_getInstance()}}function awaitConnection$lambda(t,n){return function(i){var e,r=i.type;if("open"===r)Companion_getInstance_5(),e=_Result___init__impl__xyqfz8(n),t.p4(e),Unit_getInstance();else if("error"===r){var s,o=new WebSocketException(asString(i));Companion_getInstance_5(),s=_Result___init__impl__xyqfz8(createFailure(o)),t.p4(s),Unit_getInstance()}return Unit_getInstance()}}function awaitConnection$lambda_0(t,n){return function(i){return t.removeEventListener("open",n),t.removeEventListener("error",n),null!=i&&(t.close(),Unit_getInstance()),Unit_getInstance()}}function toRaw(t,n,i,e){var r=new $toRawCOROUTINE$18(t,n,i,e);return r.jj_1=Unit_getInstance(),r.kj_1=null,r.qj()}function buildObject(t){var n={},i=null==n||isObject(n)?n:THROW_CCE();return t(i),i}function toRaw$lambda(t){return function(n,i){return t[n]=i,Unit_getInstance()}}function toRaw$slambda(t,n){this.h30_1=t,CoroutineImpl.call(this,n)}function toRaw$slambda_0(t,n){var i=new toRaw$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function toRaw$lambda_0(t,n,i,e){return function(r){var s;r.method=t.d2c_1.t1y_1,r.headers=n,s=i.m27_1?"follow":"manual",r.redirect=s;var o=e;return null==o||(r.body=new Uint8Array(toTypedArray(o)),Unit_getInstance()),Unit_getInstance()}}function $toRawCOROUTINE$18(t,n,i,e){CoroutineImpl.call(this,e),this.t2z_1=t,this.u2z_1=n,this.v2z_1=i}function asByteArray(t){return new Int8Array(t.buffer,t.byteOffset,t.length)}function readBodyBrowser(t,n){var i=n.body;return null==i?Companion_getInstance().f1g():channelFromStream(t,i)}function channelFromStream(t,n){return writer(t,VOID,VOID,channelFromStream$slambda_0(n,null)).u1e()}function readChunk(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());return i.kp(),t.read().then(readChunk$lambda(i)).catch(readChunk$lambda_0(i)),i.nn()}function channelFromStream$slambda(t,n){this.r30_1=t,CoroutineImpl.call(this,n)}function channelFromStream$slambda_0(t,n){var i=new channelFromStream$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function readChunk$lambda(t){return function(n){var i,e=n.value,r=n.done||null==e?null:e;return Companion_getInstance_5(),i=_Result___init__impl__xyqfz8(r),t.p4(i),Unit_getInstance()}}function readChunk$lambda_0(t){return function(n){var i;return Companion_getInstance_5(),i=_Result___init__impl__xyqfz8(createFailure(n)),t.p4(i),Unit_getInstance(),Unit_getInstance()}}function commonFetch(t,n,i){var e=new CancellableContinuationImpl(intercepted(i),get_MODE_CANCELLABLE());e.kp();var r=AbortController_0();n.signal=r.signal,e.zn(commonFetch$lambda(r));var s=PlatformUtils_getInstance().d1s_1?fetch(t,n):jsRequireNodeFetch()(t,n),o=commonFetch$lambda_0(e);return s.then(o,commonFetch$lambda_1(e)),e.nn()}function readBody(t,n){return PlatformUtils_getInstance().d1s_1?readBodyBrowser(t,n):readBodyNode(t,n)}function AbortController_0(){var tmp;if(PlatformUtils_getInstance().d1s_1)tmp=new AbortController;else{var controller=eval("require")("abort-controller");tmp=new controller}return tmp}function jsRequireNodeFetch(){var tmp;try{tmp=eval("require")("node-fetch")}catch(t){var tmp_0,cause=t;throw Error_init_$Create$("Error loading module 'node-fetch': "+cause)}return tmp}function commonFetch$lambda(t){return function(n){return t.abort(),Unit_getInstance()}}function commonFetch$lambda_0(t){return function(n){var i;return Companion_getInstance_5(),i=_Result___init__impl__xyqfz8(n),t.p4(i),Unit_getInstance()}}function commonFetch$lambda_1(t){return function(n){Companion_getInstance_5();var i,e=Error_init_$Create$_0("Fail to fetch",n);return i=_Result___init__impl__xyqfz8(createFailure(e)),t.p4(i),Unit_getInstance()}}function readBodyNode(t,n){return writer(t,VOID,VOID,readBodyNode$slambda_0(n,null)).u1e()}function readBodyNode$slambda$lambda(t,n){return function(i){return _ChannelResult___get_isSuccess__impl__odq1z9(t.py(asByteArray(new Uint8Array(i)))),n.pause()}}function readBodyNode$slambda$lambda_0(t,n){return function(i){var e=new JsError(i);return t.iy(e),n.u1e().iy(e)}}function readBodyNode$slambda$lambda_1(t){return function(){return t.qy()}}function readBodyNode$slambda(t,n){this.f31_1=t,CoroutineImpl.call(this,n)}function readBodyNode$slambda_0(t,n){var i=new readBodyNode$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function platformRequestDefaultTransform(t,n,i){return null}function platformResponseDefaultTransformers(t){}function isReservedStatusCode(t,n){var i=Companion_getInstance_6().e24(t);return null==i||equals(i,Codes_CLOSED_ABNORMALLY_getInstance())}function JsWebSocketSession$lambda(t){return function(n){var i,e=n,r=e.data;if(r instanceof ArrayBuffer){var s=new Int8Array(r);i=Binary_init_$Create$(!1,s)}else{if(null==r||"string"!=typeof r){var o=IllegalStateException_init_$Create$("Unknown frame type: "+e.type);throw t.n31_1.nq(o),o}i=Text_init_$Create$(r)}var u=i;return t.o31_1.py(u),Unit_getInstance()}}function JsWebSocketSession$lambda_0(t){return function(n){var i=new WebSocketException(""+n);return t.n31_1.nq(i),t.o31_1.iy(i),t.p31_1.hy(),Unit_getInstance()}}function JsWebSocketSession$lambda_1(t){return function(n){var i=n.code,e=null!=i&&"number"==typeof i?i:THROW_CCE(),r=n.reason,s=new CloseReason(e,null!=r&&"string"==typeof r?r:THROW_CCE());return t.n31_1.lq(s),t.o31_1.py(Close_init_$Create$(s)),t.o31_1.qy(),t.p31_1.hy(),Unit_getInstance()}}function JsWebSocketSession$slambda(t,n){this.b32_1=t,CoroutineImpl.call(this,n)}function JsWebSocketSession$slambda_0(t,n){var i=new JsWebSocketSession$slambda(t,n),e=function(t,n){return i.n1f(t,n)};return e.$arity=1,e}function JsWebSocketSession$lambda_2(t){return function(n){return null==n?(t.m31_1.close(),Unit_getInstance()):(t.m31_1.close(Codes_INTERNAL_ERROR_getInstance().b24_1,"Client failed"),Unit_getInstance()),Unit_getInstance()}}function JsWebSocketSession(t,n){this.l31_1=t,this.m31_1=n,this.n31_1=CompletableDeferred(),Factory_getInstance(),this.o31_1=Channel(2147483647),Factory_getInstance(),this.p31_1=Channel(2147483647),this.q31_1=this.o31_1,this.r31_1=this.p31_1,this.s31_1=this.n31_1,this.m31_1.binaryType="arraybuffer",this.m31_1.addEventListener("message",JsWebSocketSession$lambda(this)),this.m31_1.addEventListener("error",JsWebSocketSession$lambda_0(this)),this.m31_1.addEventListener("close",JsWebSocketSession$lambda_1(this)),launch(this,VOID,VOID,JsWebSocketSession$slambda_0(this,null));var i=this.l31_1.y5(Key_getInstance());null==i||i.pl(JsWebSocketSession$lambda_2(this))}function unwrapCancellationException(t){for(var n=t;n instanceof CancellationException;){if(equals(n,n.cause))return t;n=n.cause}return null==n?t:n}return setMetadataFor(HttpClient$slambda,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpClient$slambda_1,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$0,"$executeCOROUTINE$0",classMeta,CoroutineImpl),setMetadataFor(HttpClient,"HttpClient",classMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,[1]),setMetadataFor(HttpClientConfig,"HttpClientConfig",classMeta),setMetadataFor(Companion,"Companion",objectMeta),setMetadataFor($bodyNullableCOROUTINE$1,"$bodyNullableCOROUTINE$1",classMeta,CoroutineImpl),setMetadataFor(HttpClientCall,"HttpClientCall",classMeta,VOID,[CoroutineScope],VOID,VOID,[0,1]),setMetadataFor(DoubleReceiveException,"DoubleReceiveException",classMeta,IllegalStateException),setMetadataFor(NoTransformationFoundException,"NoTransformationFoundException",classMeta,UnsupportedOperationException),setMetadataFor(SavedHttpCall,"SavedHttpCall",classMeta,HttpClientCall,VOID,VOID,VOID,[0,1]),setMetadataFor(HttpRequest_0,"HttpRequest",interfaceMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpRequest,"SavedHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpResponse,"HttpResponse",classMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpResponse,"SavedHttpResponse",classMeta,HttpResponse),setMetadataFor($saveCOROUTINE$3,"$saveCOROUTINE$3",classMeta,CoroutineImpl),setMetadataFor(UnsupportedContentTypeException,"UnsupportedContentTypeException",classMeta,IllegalStateException),setMetadataFor(ObservableContent$content$slambda,"ObservableContent$content$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(ObservableContent,"ObservableContent",classMeta,ReadChannelContent),setMetadataFor(HttpClientEngine$install$slambda,"HttpClientEngine$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpClientEngine$executeWithinCallContext$slambda,"HttpClientEngine$executeWithinCallContext$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor($executeWithinCallContextCOROUTINE$4,"$executeWithinCallContextCOROUTINE$4",classMeta,CoroutineImpl),setMetadataFor(HttpClientEngine,"HttpClientEngine",interfaceMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,[1]),setMetadataFor(ClientEngineClosedException,"ClientEngineClosedException",classMeta,IllegalStateException),setMetadataFor(HttpClientEngineBase,"HttpClientEngineBase",classMeta,VOID,[HttpClientEngine],VOID,VOID,[1]),setMetadataFor(HttpClientEngineConfig,"HttpClientEngineConfig",classMeta),setMetadataFor(Companion_0,"Companion",objectMeta),setMetadataFor(KtorCallContextElement,"KtorCallContextElement",classMeta,VOID,[Element]),setMetadataFor(HttpClientPlugin,"HttpClientPlugin",interfaceMeta),setMetadataFor(Plugin,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(BodyProgress$handle$slambda,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress$handle$slambda_1,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress,"BodyProgress",classMeta),setMetadataFor(ResponseException,"ResponseException",classMeta,IllegalStateException),setMetadataFor(RedirectResponseException,"RedirectResponseException",classMeta,ResponseException),setMetadataFor(ClientRequestException,"ClientRequestException",classMeta,ResponseException),setMetadataFor(ServerResponseException,"ServerResponseException",classMeta,ResponseException),setMetadataFor(addDefaultResponseValidation$lambda$slambda,"addDefaultResponseValidation$lambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$1$content$1,VOID,classMeta,ByteArrayContent),setMetadataFor(defaultTransformers$1$content$2,VOID,classMeta,ReadChannelContent),setMetadataFor(defaultTransformers$slambda,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(defaultTransformers$slambda$slambda,"defaultTransformers$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$slambda_1,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_1,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_3,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(Config,"Config",classMeta),setMetadataFor(Companion_1,"Companion",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor($validateResponseCOROUTINE$5,"$validateResponseCOROUTINE$5",classMeta,CoroutineImpl),setMetadataFor($processExceptionCOROUTINE$6,"$processExceptionCOROUTINE$6",classMeta,CoroutineImpl),setMetadataFor(HttpCallValidator,"HttpCallValidator",classMeta,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(ExceptionHandlerWrapper,"ExceptionHandlerWrapper",classMeta),setMetadataFor(RequestExceptionHandlerWrapper,"RequestExceptionHandlerWrapper",classMeta),setMetadataFor(HttpRequest$1,VOID,classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpPlainText$Plugin$install$slambda,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpPlainText$Plugin$install$slambda_1,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(Config_0,"Config",classMeta),setMetadataFor(Plugin_0,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(sam$kotlin_Comparator$0,"sam$kotlin_Comparator$0",classMeta),setMetadataFor(HttpPlainText,"HttpPlainText",classMeta),setMetadataFor(HttpRedirect$Plugin$install$slambda,"HttpRedirect$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor($handleCallCOROUTINE$7,"$handleCallCOROUTINE$7",classMeta,CoroutineImpl),setMetadataFor(Config_1,"Config",classMeta),setMetadataFor(Plugin_1,"Plugin",objectMeta,VOID,[HttpClientPlugin],VOID,VOID,[4]),setMetadataFor(HttpRedirect,"HttpRedirect",classMeta),setMetadataFor(HttpRequestLifecycle$Plugin$install$slambda,"HttpRequestLifecycle$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(Plugin_2,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpRequestLifecycle,"HttpRequestLifecycle",classMeta),setMetadataFor(HttpSend$Plugin$install$slambda,"HttpSend$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$8,"$executeCOROUTINE$8",classMeta,CoroutineImpl),setMetadataFor(Config_2,"Config",classMeta),setMetadataFor(Plugin_3,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(Sender,"Sender",interfaceMeta,VOID,VOID,VOID,VOID,[1]),setMetadataFor(InterceptedSender,"InterceptedSender",classMeta,VOID,[Sender],VOID,VOID,[1]),setMetadataFor(DefaultSender,"DefaultSender",classMeta,VOID,[Sender],VOID,VOID,[1]),setMetadataFor(HttpSend,"HttpSend",classMeta),setMetadataFor(SendCountExceedException,"SendCountExceedException",classMeta,IllegalStateException),setMetadataFor(Companion_2,"Companion",objectMeta),setMetadataFor(HttpTimeout$Plugin$install$slambda$slambda,"HttpTimeout$Plugin$install$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(HttpTimeout$Plugin$install$slambda,"HttpTimeout$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpTimeoutCapabilityConfiguration,"HttpTimeoutCapabilityConfiguration",classMeta),setMetadataFor(Plugin_4,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpTimeout,"HttpTimeout",classMeta),setMetadataFor(HttpRequestTimeoutException,"HttpRequestTimeoutException",classMeta,IOException),setMetadataFor(DelegatedResponse,"DelegatedResponse",classMeta,HttpResponse),setMetadataFor(WebSocketCapability,"WebSocketCapability",objectMeta),setMetadataFor(WebSocketException,"WebSocketException",classMeta,IllegalStateException),setMetadataFor(ClientUpgradeContent,"ClientUpgradeContent",classMeta,NoContent,VOID,VOID,VOID,[1]),setMetadataFor(DefaultHttpRequest,"DefaultHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(Companion_3,"Companion",objectMeta),setMetadataFor(HttpRequestBuilder,"HttpRequestBuilder",classMeta),setMetadataFor(HttpRequestData,"HttpRequestData",classMeta),setMetadataFor(HttpResponseData,"HttpResponseData",classMeta),setMetadataFor(Phases,"Phases",objectMeta),setMetadataFor(HttpRequestPipeline,"HttpRequestPipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(Phases_0,"Phases",objectMeta),setMetadataFor(HttpSendPipeline,"HttpSendPipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(DefaultHttpResponse,"DefaultHttpResponse",classMeta,HttpResponse),setMetadataFor($bodyAsTextCOROUTINE$12,"$bodyAsTextCOROUTINE$12",classMeta,CoroutineImpl),setMetadataFor(Phases_1,"Phases",objectMeta),setMetadataFor(HttpResponsePipeline,"HttpResponsePipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(Phases_2,"Phases",objectMeta),setMetadataFor(HttpReceivePipeline,"HttpReceivePipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(HttpResponseContainer,"HttpResponseContainer",classMeta),setMetadataFor(HttpStatement$execute$slambda,"HttpStatement$execute$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor($executeCOROUTINE$13,"$executeCOROUTINE$13",classMeta,CoroutineImpl),setMetadataFor($executeUnsafeCOROUTINE$14,"$executeUnsafeCOROUTINE$14",classMeta,CoroutineImpl),setMetadataFor($cleanupCOROUTINE$15,"$cleanupCOROUTINE$15",classMeta,CoroutineImpl),setMetadataFor(HttpStatement,"HttpStatement",classMeta,VOID,VOID,VOID,VOID,[1,0]),setMetadataFor(observable$slambda,"observable$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(HttpResponseReceiveFail,"HttpResponseReceiveFail",classMeta),setMetadataFor(EmptyContent,"EmptyContent",objectMeta,NoContent),setMetadataFor(Js,"Js",objectMeta),setMetadataFor(JsClientEngine$createWebSocket$headers_capturingHack$1,VOID,classMeta),setMetadataFor($executeCOROUTINE$16,"$executeCOROUTINE$16",classMeta,CoroutineImpl),setMetadataFor($executeWebSocketRequestCOROUTINE$17,"$executeWebSocketRequestCOROUTINE$17",classMeta,CoroutineImpl),setMetadataFor(JsClientEngine,"JsClientEngine",classMeta,HttpClientEngineBase,VOID,VOID,VOID,[1,2]),setMetadataFor(JsError,"JsError",classMeta,Error),setMetadataFor(toRaw$slambda,"toRaw$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor($toRawCOROUTINE$18,"$toRawCOROUTINE$18",classMeta,CoroutineImpl),setMetadataFor(channelFromStream$slambda,"channelFromStream$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(readBodyNode$slambda,"readBodyNode$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession$slambda,"JsWebSocketSession$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession,"JsWebSocketSession",classMeta,VOID,[CoroutineScope],VOID,VOID,[0,1]),protoOf(HttpClient$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpClient$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpClient$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,!(this.u25_1 instanceof HttpClientCall)){var n="Error: HttpClientCall expected, but found "+toString(this.u25_1)+"("+getKClassFromExpression(this.u25_1)+").";throw IllegalStateException_init_$Create$(toString(n))}if(this.hj_1=1,(t=this.s25_1.f25_1.i1r(Unit_getInstance(),this.u25_1.d26(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.v25_1=t,this.u25_1.e26(this.v25_1),this.hj_1=2,(t=this.t25_1.n1q(this.u25_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var i=t;if(3===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpClient$slambda).x25=function(t,n,i){var e=new HttpClient$slambda(this.s25_1,i);return e.t25_1=t,e.u25_1=n,e},protoOf(HttpClient$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpClient$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpClient$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.ij_1=2,this.hj_1=1,(t=this.o26_1.o1q(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof Error){var n=this.kj_1;throw this.n26_1.i25_1.u23(get_HttpResponseReceiveFailed(),new HttpResponseReceiveFail(this.o26_1.j1r_1.d26(),n)),n}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,Unit_getInstance()}}catch(t){var i=t;if(3===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpClient$slambda_1).r26=function(t,n,i){var e=new HttpClient$slambda_1(this.n26_1,i);return e.o26_1=t,e.p26_1=n,e},protoOf($executeCOROUTINE$0).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.a27_1.i25_1.u23(get_HttpRequestCreated(),this.b27_1),this.hj_1=1,(t=this.a27_1.c25_1.i1r(this.b27_1,this.b27_1.f27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t instanceof HttpClientCall?t:THROW_CCE();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpClient).ok=function(){return this.b25_1},protoOf(HttpClient).f28=function(t,n){var i=new $executeCOROUTINE$0(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpClient).a14=function(){if(!this.z24_1.atomicfu$compareAndSet(!1,!0))return Unit_getInstance();for(var t=this.g25_1.w1m(get_PLUGIN_INSTALLED_LIST()),n=t.c1n().d();n.e();){var i=n.f(),e=t.w1m(i instanceof AttributeKey?i:THROW_CCE());isInterface(e,Closeable)&&e.a14()}this.a25_1.oq(),this.y24_1&&this.w24_1.a14()},protoOf(HttpClient).toString=function(){return"HttpClient["+this.w24_1+"]"},protoOf(HttpClientConfig).j28=function(t,n){var i=this.j27_1.g2(t.r()),e=this.j27_1,r=t.r();if(e.f4(r,HttpClientConfig$install$lambda_0(i,n)),this.i27_1.a2(t.r()))return Unit_getInstance();var s=this.i27_1,o=t.r();s.f4(o,HttpClientConfig$install$lambda_1(t))},protoOf(HttpClientConfig).x27=function(t,n,i){var e;return n=n===VOID?HttpClientConfig$install$lambda:n,i===VOID?(this.j28(t,n),e=Unit_getInstance()):e=i.j28.call(this,t,n),e},protoOf(HttpClientConfig).y27=function(t,n){this.k27_1.f4(t,n)},protoOf(HttpClientConfig).r27=function(t){for(var n=this.i27_1.i2().d();n.e();)n.f()(t);for(var i=this.k27_1.i2().d();i.e();)i.f()(t)},protoOf(HttpClientConfig).z27=function(t){this.m27_1=t.m27_1,this.n27_1=t.n27_1,this.o27_1=t.o27_1;var n=this.i27_1,i=t.i27_1;n.zc(i);var e=this.j27_1,r=t.j27_1;e.zc(r);var s=this.k27_1,o=t.k27_1;s.zc(o)},protoOf($bodyNullableCOROUTINE$1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=10,this.hj_1=1;continue t;case 1:this.hj_1=2;continue t;case 2:if(this.ij_1=9,this.ij_1=8,instanceOf(this.b29_1.d26(),this.c29_1.z1r_1)){this.d29_1=this.b29_1.d26(),this.ij_1=10,this.hj_1=7;continue t}this.hj_1=3;continue t;case 3:if(!this.b29_1.i29()&&!this.b29_1.z25_1.atomicfu$compareAndSet(!1,!0))throw new DoubleReceiveException(this.b29_1);if(this.e29_1=this.b29_1.r28().x1m(Companion_getInstance_7().s28_1),null==this.e29_1){if(this.hj_1=4,(t=this.b29_1.j29(this))===get_COROUTINE_SUSPENDED())return t;continue t}this.f29_1=this.e29_1,this.hj_1=5;continue t;case 4:this.f29_1=t,this.hj_1=5;continue t;case 5:if(this.g29_1=this.f29_1,this.h29_1=new HttpResponseContainer(this.c29_1,this.g29_1),this.hj_1=6,(t=this.b29_1.y25_1.d25_1.i1r(this.b29_1,this.h29_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var n=t.l29_1,i=equals(n,NullBody_getInstance())?null:n;if(null!=i&&!instanceOf(i,this.c29_1.z1r_1)){var e=getKClassFromExpression(i),r=this.c29_1.z1r_1;throw new NoTransformationFoundException(this.b29_1.d26(),e,r)}this.d29_1=i,this.ij_1=10,this.hj_1=7;continue t;case 7:var s=this.d29_1;return complete(this.b29_1.d26()),s;case 8:if(this.ij_1=9,this.kj_1 instanceof Error){var o=this.kj_1;throw cancel_0(this.b29_1.d26(),"Receive failed",o),o}throw this.kj_1;case 9:this.ij_1=10;var u=this.kj_1;throw complete(this.b29_1.d26()),u;case 10:throw this.kj_1;case 11:return complete(this.b29_1.d26()),Unit_getInstance()}}catch(t){var a=t;if(10===this.ij_1)throw a;this.hj_1=this.ij_1,this.kj_1=a}},protoOf(HttpClientCall).ok=function(){return this.d26().ok()},protoOf(HttpClientCall).r28=function(){return this.m29().r28()},protoOf(HttpClientCall).m29=function(){var t=this.a26_1;if(null!=t)return t;throwUninitializedPropertyAccessException("request")},protoOf(HttpClientCall).d26=function(){var t=this.b26_1;if(null!=t)return t;throwUninitializedPropertyAccessException("response")},protoOf(HttpClientCall).i29=function(){return this.c26_1},protoOf(HttpClientCall).j29=function(t){return this.d26().n29()},protoOf(HttpClientCall).o29=function(t,n){var i=new $bodyNullableCOROUTINE$1(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpClientCall).toString=function(){return"HttpClientCall["+this.m29().p29()+", "+this.d26().q29()+"]"},protoOf(HttpClientCall).e26=function(t){this.b26_1=t},protoOf(DoubleReceiveException).g1=function(){return this.r29_1},defineProp(protoOf(DoubleReceiveException),"message",(function(){return this.g1()})),protoOf(NoTransformationFoundException).g1=function(){return this.s29_1},defineProp(protoOf(NoTransformationFoundException),"message",(function(){return this.g1()})),protoOf(SavedHttpCall).j29=function(t){return ByteReadChannel_0(this.h2a_1)},protoOf(SavedHttpCall).i29=function(){return this.i2a_1},protoOf(SavedHttpRequest).l2a=function(){return this.j2a_1},protoOf(SavedHttpRequest).r28=function(){return this.k2a_1.r28()},protoOf(SavedHttpRequest).ok=function(){return this.k2a_1.ok()},protoOf(SavedHttpRequest).k1y=function(){return this.k2a_1.k1y()},protoOf(SavedHttpRequest).m2a=function(){return this.k2a_1.m2a()},protoOf(SavedHttpRequest).p29=function(){return this.k2a_1.p29()},protoOf(SavedHttpResponse).l2a=function(){return this.n2a_1},protoOf(SavedHttpResponse).q29=function(){return this.p2a_1},protoOf(SavedHttpResponse).w2a=function(){return this.q2a_1},protoOf(SavedHttpResponse).x2a=function(){return this.r2a_1},protoOf(SavedHttpResponse).y2a=function(){return this.s2a_1},protoOf(SavedHttpResponse).k1y=function(){return this.t2a_1},protoOf(SavedHttpResponse).ok=function(){return this.u2a_1},protoOf(SavedHttpResponse).n29=function(){return this.v2a_1},protoOf($saveCOROUTINE$3).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.b2a_1.d26().n29().l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=readBytes(t);return new SavedHttpCall(this.b2a_1.y25_1,this.b2a_1.m29(),this.b2a_1.d26(),n);case 2:throw this.kj_1}}catch(t){var i=t;if(2===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(ObservableContent$content$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(ObservableContent$content$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(ObservableContent$content$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.h2b_1.l23(this.i2b_1.u1e(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(ObservableContent$content$slambda).k2b=function(t,n){var i=new ObservableContent$content$slambda(this.h2b_1,n);return i.i2b_1=t,i},protoOf(ObservableContent).g23=function(){return this.p2b_1.g23()},protoOf(ObservableContent).h23=function(){return this.p2b_1.h23()},protoOf(ObservableContent).k1y=function(){return this.p2b_1.k1y()},protoOf(ObservableContent).j23=function(){return observable(this.o2b_1,this.m2b_1,this.h23(),this.n2b_1)},protoOf(HttpClientEngine$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpClientEngine$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpClientEngine$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=3;var n=new HttpRequestBuilder;n.b2d(this.u2c_1.j1r_1);var i=this.v2c_1;if(null==i){n.f27_1=NullBody_getInstance();var e,r=JsType_getInstance(),s=PrimitiveClasses_getInstance().nf();try{e=createKType(PrimitiveClasses_getInstance().nf(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;e=null}n.c2d(typeInfoImpl(r,s,e))}else if(i instanceof OutgoingContent)n.f27_1=this.v2c_1,n.c2d(null);else{n.f27_1=this.v2c_1;var o,u=JsType_getInstance(),a=PrimitiveClasses_getInstance().nf();try{o=createKType(PrimitiveClasses_getInstance().nf(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;o=null}n.c2d(typeInfoImpl(u,a,o))}this.w2c_1=n,this.s2c_1.i25_1.u23(get_HttpRequestIsReadyForSending(),this.w2c_1);var h=this.w2c_1.f1c();if(h.h2c_1.z1m(get_CLIENT_CONFIG(),this.s2c_1.j25_1),this.x2c_1=h,validateHeaders(this.x2c_1),checkExtensions(this.t2c_1,this.x2c_1),this.hj_1=1,(t=executeWithinCallContext(this.t2c_1,this.x2c_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.y2c_1=t,this.z2c_1=HttpClientCall_init_$Create$(this.s2c_1,this.x2c_1,this.y2c_1),this.a2d_1=this.z2c_1.d26(),this.s2c_1.i25_1.u23(get_HttpResponseReceived(),this.a2d_1),get_job(this.a2d_1.ok()).pl(HttpClientEngine$install$slambda$lambda(this.s2c_1,this.a2d_1)),this.hj_1=2,(t=this.u2c_1.n1q(this.z2c_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var _=t;if(3===this.ij_1)throw _;this.hj_1=this.ij_1,this.kj_1=_}},protoOf(HttpClientEngine$install$slambda).x25=function(t,n,i){var e=new HttpClientEngine$install$slambda(this.s2c_1,this.t2c_1,i);return e.u2c_1=t,e.v2c_1=n,e},protoOf(HttpClientEngine$executeWithinCallContext$slambda).o2d=function(t,n){var i=this.o1f(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpClientEngine$executeWithinCallContext$slambda).ck=function(t,n){return this.o2d(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpClientEngine$executeWithinCallContext$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,_get_closed__iwkfs1(this.l2d_1))throw new ClientEngineClosedException;if(this.hj_1=1,(t=this.l2d_1.p2d(this.m2d_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t;case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpClientEngine$executeWithinCallContext$slambda).o1f=function(t,n){var i=new HttpClientEngine$executeWithinCallContext$slambda(this.l2d_1,this.m2d_1,n);return i.n2d_1=t,i},protoOf($executeWithinCallContextCOROUTINE$4).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,(t=createCallContext(this.y2b_1,this.z2b_1.g2c_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.a2c_1=t,this.b2c_1=this.a2c_1.f6(new KtorCallContextElement(this.a2c_1)),this.hj_1=2,(t=async(this.y2b_1,this.b2c_1,VOID,HttpClientEngine$executeWithinCallContext$slambda_0(this.y2b_1,this.z2b_1,null)).dn(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(ClientEngineClosedException).h1=function(){return this.q2d_1},defineProp(protoOf(ClientEngineClosedException),"cause",(function(){return this.h1()})),protoOf(HttpClientEngineBase).ok=function(){return coroutineContext$factory(),this.u2d_1.s()},protoOf(HttpClientEngineBase).a14=function(){if(!this.t2d_1.atomicfu$compareAndSet(!1,!0))return Unit_getInstance();var t=this.ok().y5(Key_getInstance()),n=null!=t&&isInterface(t,CompletableJob)?t:null;if(null==n)return Unit_getInstance();var i=n;i.oq(),i.pl(HttpClientEngineBase$close$lambda(this))},protoOf(KtorCallContextElement).r=function(){return Companion_getInstance_8()},protoOf(Plugin).r=function(){return this.h2e_1},protoOf(Plugin).i2e=function(t){return new BodyProgress},protoOf(Plugin).h28=function(t){return this.i2e(t)},protoOf(Plugin).j2e=function(t,n){handle(t,n)},protoOf(Plugin).i28=function(t,n){return this.j2e(t instanceof BodyProgress?t:THROW_CCE(),n)},protoOf(BodyProgress$handle$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(BodyProgress$handle$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n,i=this.s2e_1.j1r_1.h27_1.x1m(get_UploadProgressListenerAttributeKey());if(null==i)return Unit_getInstance();n=i,this.u2e_1=n;var e=this.t2e_1;if(this.v2e_1=new ObservableContent(e instanceof OutgoingContent?e:THROW_CCE(),this.s2e_1.j1r_1.g27_1,this.u2e_1),this.hj_1=1,(t=this.s2e_1.n1q(this.v2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var r=t;if(2===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(BodyProgress$handle$slambda).x25=function(t,n,i){var e=new BodyProgress$handle$slambda(i);return e.s2e_1=t,e.t2e_1=n,e},protoOf(BodyProgress$handle$slambda_1).i2f=function(t,n,i){var e=this.j2f(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(BodyProgress$handle$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.i2f(e,n instanceof HttpResponse?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n,i=this.f2f_1.l2a().m29().r28().x1m(get_DownloadProgressListenerAttributeKey());if(null==i)return Unit_getInstance();if(n=i,this.g2f_1=n,this.h2f_1=withObservableDownload(this.f2f_1,this.g2f_1),this.hj_1=1,(t=this.e2f_1.n1q(this.h2f_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var e=t;if(2===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(BodyProgress$handle$slambda_1).j2f=function(t,n,i){var e=new BodyProgress$handle$slambda_1(i);return e.e2f_1=t,e.f2f_1=n,e},protoOf(RedirectResponseException).g1=function(){return this.m2f_1},defineProp(protoOf(RedirectResponseException),"message",(function(){return this.g1()})),protoOf(ClientRequestException).g1=function(){return this.o2f_1},defineProp(protoOf(ClientRequestException),"message",(function(){return this.g1()})),protoOf(ServerResponseException).g1=function(){return this.q2f_1},defineProp(protoOf(ServerResponseException),"message",(function(){return this.g1()})),protoOf(addDefaultResponseValidation$lambda$slambda).h2g=function(t,n){var i=this.i2g(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(addDefaultResponseValidation$lambda$slambda).ck=function(t,n){return this.h2g(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(addDefaultResponseValidation$lambda$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=5,this.a2g_1=this.z2f_1.l2a().r28().w1m(get_ExpectSuccessAttributeKey()),!this.a2g_1)return get_LOGGER().j1s("Skipping default response validation for "+this.z2f_1.l2a().m29().p29()),Unit_getInstance();if(this.b2g_1=this.z2f_1.q29().e21_1,this.c2g_1=this.z2f_1.l2a(),this.b2g_1<300||this.c2g_1.r28().y1m(get_ValidateMark()))return Unit_getInstance();if(this.hj_1=1,(t=save(this.c2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.d2g_1=t,this.d2g_1.r28().z1m(get_ValidateMark(),Unit_getInstance()),this.e2g_1=this.d2g_1,this.f2g_1=this.e2g_1.d26(),this.ij_1=3,this.hj_1=2,(t=bodyAsText(this.f2g_1,VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.g2g_1=t,this.ij_1=5,this.hj_1=4;continue t;case 3:if(this.ij_1=5,this.kj_1 instanceof MalformedInputException){this.kj_1,this.g2g_1="",this.hj_1=4;continue t}throw this.kj_1;case 4:this.ij_1=5;var n=this.g2g_1,i=this.b2g_1,e=300<=i&&i<=399?new RedirectResponseException(this.f2g_1,n):400<=i&&i<=499?new ClientRequestException(this.f2g_1,n):500<=i&&i<=599?new ServerResponseException(this.f2g_1,n):new ResponseException(this.f2g_1,n);throw get_LOGGER().j1s("Default response validation for "+this.z2f_1.l2a().m29().p29()+" failed with "+e),e;case 5:throw this.kj_1}}catch(t){var r=t;if(5===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(addDefaultResponseValidation$lambda$slambda).i2g=function(t,n){var i=new addDefaultResponseValidation$lambda$slambda(n);return i.z2f_1=t,i},protoOf(defaultTransformers$1$content$1).g23=function(){return this.o2g_1},protoOf(defaultTransformers$1$content$1).h23=function(){return this.p2g_1},protoOf(defaultTransformers$1$content$1).n23=function(){return this.q2g_1},protoOf(defaultTransformers$1$content$2).h23=function(){return this.s2g_1},protoOf(defaultTransformers$1$content$2).g23=function(){return this.t2g_1},protoOf(defaultTransformers$1$content$2).j23=function(){return this.u2g_1},protoOf(defaultTransformers$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(defaultTransformers$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=3,null==this.d2h_1.j1r_1.e27_1.q1n(HttpHeaders_getInstance().i1u_1)&&this.d2h_1.j1r_1.e27_1.x1o(HttpHeaders_getInstance().i1u_1,"*/*"),this.f2h_1=contentType(this.d2h_1.j1r_1);var n,i=this.e2h_1;if("string"==typeof i){var e=this.f2h_1;n=new TextContent(this.e2h_1,null==e?Text_getInstance().r1t_1:e)}else n=isByteArray(i)?new defaultTransformers$1$content$1(this.f2h_1,this.e2h_1):isInterface(i,ByteReadChannel)?new defaultTransformers$1$content$2(this.d2h_1,this.f2h_1,this.e2h_1):i instanceof OutgoingContent?this.e2h_1:platformRequestDefaultTransform(this.f2h_1,this.d2h_1.j1r_1,this.e2h_1);this.g2h_1=n;var r=this.g2h_1;if(null!=(null==r?null:r.g23())){if(this.d2h_1.j1r_1.e27_1.z1o(HttpHeaders_getInstance().a1v_1),get_LOGGER_0().j1s("Transformed with default transformers request body for "+this.d2h_1.j1r_1.c27_1+" from "+getKClassFromExpression(this.e2h_1)),this.hj_1=1,(t=this.d2h_1.n1q(this.g2h_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=2;continue t;case 1:this.hj_1=2;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var s=t;if(3===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(defaultTransformers$slambda).x25=function(t,n,i){var e=new defaultTransformers$slambda(i);return e.d2h_1=t,e.e2h_1=n,e},protoOf(defaultTransformers$slambda$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(defaultTransformers$slambda$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(defaultTransformers$slambda$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=5,this.hj_1=1;continue t;case 1:this.ij_1=4,this.ij_1=3,this.hj_1=2;var n=this.r2h_1.u1e();if(Companion_getInstance_0(),(t=copyTo(this.p2h_1,n,new Long(-1,2147483647),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.s2h_1=Unit_getInstance(),this.ij_1=5,this.hj_1=6;continue t;case 3:if(this.ij_1=4,this.kj_1 instanceof CancellationException){var i=this.kj_1;throw cancel(this.q2h_1,i),i}if(this.kj_1 instanceof Error){var e=this.kj_1;throw cancel_0(this.q2h_1,"Receive failed",e),e}throw this.kj_1;case 4:this.ij_1=5;var r=this.kj_1;throw complete(this.q2h_1),r;case 5:throw this.kj_1;case 6:return complete(this.q2h_1),Unit_getInstance()}}catch(t){var s=t;if(5===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(defaultTransformers$slambda$slambda).k2b=function(t,n){var i=new defaultTransformers$slambda$slambda(this.p2h_1,this.q2h_1,n);return i.r2h_1=t,i},protoOf(defaultTransformers$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(defaultTransformers$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=11,this.d2i_1=this.c2i_1.d4(),this.e2i_1=this.c2i_1.e4();var n=this.e2i_1;if(!isInterface(n,ByteReadChannel))return Unit_getInstance();if(this.f2i_1=this.b2i_1.j1r_1.d26(),this.g2i_1=this.d2i_1.z1r_1,this.g2i_1.equals(getKClass(Unit))){if(cancel_1(this.e2i_1),this.hj_1=9,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,Unit_getInstance()),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(PrimitiveClasses_getInstance().tf())){if(this.hj_1=7,(t=this.e2i_1.l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(getKClass(ByteReadPacket))||this.g2i_1.equals(getKClass(Input))){if(this.hj_1=5,(t=this.e2i_1.l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(PrimitiveClasses_getInstance().bg())){if(this.hj_1=3,(t=toByteArray(this.e2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(getKClass(ByteReadChannel))){this.i2i_1=Job(this.f2i_1.ok().y5(Key_getInstance()));var i=this.f2i_1.ok(),e=writer(this.b2i_1,i,VOID,defaultTransformers$slambda$slambda_0(this.e2i_1,this.f2i_1,null));if(e.pl(defaultTransformers$slambda$lambda(this.i2i_1)),this.j2i_1=e.u1e(),this.hj_1=2,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,this.j2i_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(getKClass(HttpStatusCode))){if(cancel_1(this.e2i_1),this.hj_1=1,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,this.f2i_1.q29()),this))===get_COROUTINE_SUSPENDED())return t;continue t}this.h2i_1=null,this.hj_1=10;continue t;case 1:case 2:case 4:case 6:case 8:case 9:this.h2i_1=t,this.hj_1=10;continue t;case 3:if(this.k2i_1=t,this.l2i_1=contentLength(this.f2i_1),this.m2i_1=!PlatformUtils_getInstance().d1s_1&&null==this.f2i_1.k1y().q1n(HttpHeaders_getInstance().v1u_1),this.m2i_1&&null!=this.l2i_1&&this.l2i_1.w(new Long(0,0))>0&&this.k2i_1.length!==this.l2i_1.c8()){var r="Expected "+toString_0(this.l2i_1)+", actual "+this.k2i_1.length;throw IllegalStateException_init_$Create$(toString(r))}if(this.hj_1=4,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,this.k2i_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.n2i_1=t,this.o2i_1=new HttpResponseContainer(this.d2i_1,this.n2i_1),this.hj_1=6,(t=this.b2i_1.n1q(this.o2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:if(this.p2i_1=t,this.q2i_1=this.p2i_1.v1i(),this.r2i_1=toInt(this.q2i_1),this.s2i_1=new HttpResponseContainer(this.d2i_1,this.r2i_1),this.hj_1=8,(t=this.b2i_1.n1q(this.s2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 10:return null!=this.h2i_1&&get_LOGGER_0().j1s("Transformed with default transformers response body for "+this.b2i_1.j1r_1.m29().p29()+" to "+this.d2i_1.z1r_1),Unit_getInstance();case 11:throw this.kj_1}}catch(t){var s=t;if(11===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(defaultTransformers$slambda_1).r26=function(t,n,i){var e=new defaultTransformers$slambda_1(i);return e.b2i_1=t,e.c2i_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpCallValidator$Companion$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=5,this.ij_1=3;var n=get_ExpectSuccessAttributeKey();if(this.f2j_1.j1r_1.h27_1.b1n(n,HttpCallValidator$Companion$install$slambda$lambda(this.e2j_1)),this.hj_1=1,(t=this.f2j_1.n1q(this.g2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=5,this.hj_1=2;continue t;case 2:return this.ij_1=5,Unit_getInstance();case 3:if(this.ij_1=5,this.kj_1 instanceof Error){if(this.h2j_1=this.kj_1,this.i2j_1=unwrapCancellationException(this.h2j_1),this.hj_1=4,(t=processException(this.e2j_1,this.i2j_1,HttpRequest(this.f2j_1.j1r_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.kj_1;case 4:throw this.i2j_1;case 5:throw this.kj_1}}catch(t){var i=t;if(5===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpCallValidator$Companion$install$slambda).x25=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda(this.e2j_1,i);return e.f2j_1=t,e.g2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpCallValidator$Companion$install$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=5,this.ij_1=3,this.hj_1=1,(t=this.s2j_1.n1q(this.t2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=5,this.hj_1=2;continue t;case 2:return this.ij_1=5,Unit_getInstance();case 3:if(this.ij_1=5,this.kj_1 instanceof Error){if(this.u2j_1=this.kj_1,this.v2j_1=unwrapCancellationException(this.u2j_1),this.hj_1=4,(t=processException(this.r2j_1,this.v2j_1,this.s2j_1.j1r_1.m29(),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.kj_1;case 4:throw this.v2j_1;case 5:throw this.kj_1}}catch(t){var n=t;if(5===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_1).r26=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_1(this.r2j_1,i);return e.s2j_1=t,e.t2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_3).i2k=function(t,n,i){var e=this.j2k(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpCallValidator$Companion$install$slambda_3).z8=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.i2k(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_3).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,(t=this.f2k_1.f28(this.g2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.h2k_1=t,this.hj_1=2,(t=validateResponse(this.e2k_1,this.h2k_1.d26(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return this.h2k_1;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_3).j2k=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_3(this.e2k_1,i);return e.f2k_1=t,e.g2k_1=n,e},protoOf(Config).m2g=function(t){this.j2g_1.a(t)},protoOf(Companion_1).r=function(){return this.m2l_1},protoOf(Companion_1).n2l=function(t){var n=new Config;t(n);var i=n;return new HttpCallValidator(reversed(i.j2g_1),reversed(i.k2g_1),i.l2g_1)},protoOf(Companion_1).h28=function(t){return this.n2l(t)},protoOf(Companion_1).o2l=function(t,n){var i=Phases_getInstance().z2d_1;n.c25_1.n1r(i,HttpCallValidator$Companion$install$slambda_0(t,null));var e=new PipelinePhase("BeforeReceive");n.d25_1.m1r(Phases_getInstance_1().a28_1,e),n.d25_1.n1r(e,HttpCallValidator$Companion$install$slambda_2(t,null)),plugin(n,Plugin_getInstance_3()).r2l(HttpCallValidator$Companion$install$slambda_4(t,null))},protoOf(Companion_1).i28=function(t,n){return this.o2l(t instanceof HttpCallValidator?t:THROW_CCE(),n)},protoOf($validateResponseCOROUTINE$5).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=4,get_LOGGER_1().j1s("Validating response for request "+this.t2k_1.l2a().m29().p29()),this.u2k_1=this.s2k_1.t2i_1,this.v2k_1=this.u2k_1.d(),this.hj_1=1;continue t;case 1:if(!this.v2k_1.e()){this.hj_1=3;continue t}if(this.w2k_1=this.v2k_1.f(),this.hj_1=2,(t=this.w2k_1(this.t2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.hj_1=1;continue t;case 3:return Unit_getInstance();case 4:throw this.kj_1}}catch(t){var n=t;if(4===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf($processExceptionCOROUTINE$6).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,get_LOGGER_1().j1s("Processing exception "+this.g2l_1+" for request "+this.h2l_1.p29()),this.i2l_1=this.f2l_1.u2i_1,this.j2l_1=this.i2l_1.d(),this.hj_1=1;continue t;case 1:if(!this.j2l_1.e()){this.hj_1=5;continue t}if(this.k2l_1=this.j2l_1.f(),this.l2l_1=this.k2l_1,this.l2l_1 instanceof ExceptionHandlerWrapper){if(this.hj_1=3,(t=this.k2l_1.t2l_1(this.g2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.l2l_1 instanceof RequestExceptionHandlerWrapper){if(this.hj_1=2,(t=this.k2l_1.s2l_1(this.g2l_1,this.h2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=4;continue t;case 2:case 3:this.hj_1=4;continue t;case 4:this.hj_1=1;continue t;case 5:return Unit_getInstance();case 6:throw this.kj_1}}catch(t){var n=t;if(6===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpRequest$1).l2a=function(){throw IllegalStateException_init_$Create$("Call is not initialized")},protoOf(HttpRequest$1).m2a=function(){return this.u2l_1},protoOf(HttpRequest$1).p29=function(){return this.v2l_1},protoOf(HttpRequest$1).r28=function(){return this.w2l_1},protoOf(HttpRequest$1).k1y=function(){return this.x2l_1},protoOf(HttpPlainText$Plugin$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpPlainText$Plugin$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.h2m_1.o2m(this.i2m_1.j1r_1),"string"!=typeof this.j2m_1)return Unit_getInstance();if(this.k2m_1=contentType(this.i2m_1.j1r_1),null!=this.k2m_1&&this.k2m_1.b1u_1!==Text_getInstance().r1t_1.b1u_1)return Unit_getInstance();if(this.hj_1=1,(t=this.i2m_1.n1q(wrapContent(this.h2m_1,this.i2m_1.j1r_1,this.j2m_1,this.k2m_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpPlainText$Plugin$install$slambda).x25=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda(this.h2m_1,i);return e.i2m_1=t,e.j2m_1=n,e},protoOf(HttpPlainText$Plugin$install$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpPlainText$Plugin$install$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:var n;if(this.ij_1=3,this.a2n_1=this.z2m_1.d4(),this.b2n_1=this.z2m_1.e4(),this.a2n_1.z1r_1.equals(PrimitiveClasses_getInstance().xf())){var i=this.b2n_1;n=!isInterface(i,ByteReadChannel)}else n=!0;if(n)return Unit_getInstance();if(this.hj_1=1,(t=this.b2n_1.l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.c2n_1=t,this.d2n_1=this.x2m_1.e2n(this.y2m_1.j1r_1,this.c2n_1),this.hj_1=2,(t=this.y2m_1.n1q(new HttpResponseContainer(this.a2n_1,this.d2n_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(HttpPlainText$Plugin$install$slambda_1).r26=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda_1(this.x2m_1,i);return e.y2m_1=t,e.z2m_1=n,e},protoOf(Plugin_0).r=function(){return this.j2n_1},protoOf(Plugin_0).n2l=function(t){var n=new Config_0;t(n);var i=n;return new HttpPlainText(i.f2n_1,i.g2n_1,i.h2n_1,i.i2n_1)},protoOf(Plugin_0).h28=function(t){return this.n2l(t)},protoOf(Plugin_0).k2n=function(t,n){var i=Phases_getInstance().c2e_1;n.c25_1.n1r(i,HttpPlainText$Plugin$install$slambda_0(t,null));var e=Phases_getInstance_1().c28_1;n.d25_1.n1r(e,HttpPlainText$Plugin$install$slambda_2(t,null))},protoOf(Plugin_0).i28=function(t,n){return this.k2n(t instanceof HttpPlainText?t:THROW_CCE(),n)},protoOf(sam$kotlin_Comparator$0).sh=function(t,n){return this.l2n_1(t,n)},protoOf(sam$kotlin_Comparator$0).compare=function(t,n){return this.sh(t,n)},protoOf(HttpPlainText).e2n=function(t,n){var i=charset_0(t.d26()),e=null==i?this.l2m_1:i;return get_LOGGER_2().j1s("Reading response body for "+t.m29().p29()+" as String with charset "+e),readText(n,e)},protoOf(HttpPlainText).o2m=function(t){if(null!=t.e27_1.q1n(HttpHeaders_getInstance().j1u_1))return Unit_getInstance();get_LOGGER_2().j1s("Adding Accept-Charset="+this.n2m_1+" to "+t.c27_1),t.e27_1.v1o(HttpHeaders_getInstance().j1u_1,this.n2m_1)},protoOf(HttpRedirect$Plugin$install$slambda).i2k=function(t,n,i){var e=this.j2k(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpRedirect$Plugin$install$slambda).z8=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.i2k(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpRedirect$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,(t=this.p2o_1.f28(this.q2o_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.r2o_1=t,this.n2o_1.s2o_1&&!get_ALLOWED_FOR_REDIRECT().n(this.r2o_1.m29().m2a()))return this.r2o_1;if(this.hj_1=2,(t=handleCall(this.p2o_1,Plugin_getInstance_1(),this.q2o_1,this.r2o_1,this.n2o_1.t2o_1,this.o2o_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpRedirect$Plugin$install$slambda).j2k=function(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(this.n2o_1,this.o2o_1,i);return e.p2o_1=t,e.q2o_1=n,e},protoOf($handleCallCOROUTINE$7).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,!isRedirect(this.x2n_1.d26().q29()))return this.x2n_1;this.a2o_1=this.x2n_1,this.b2o_1=this.w2n_1,this.c2o_1=this.x2n_1.m29().p29().v21_1,this.d2o_1=get_authority(this.x2n_1.m29().p29()),this.hj_1=1;continue t;case 1:this.z2n_1.i25_1.u23(this.u2n_1.v2o_1,this.a2o_1.d26()),this.e2o_1=this.a2o_1.d26().k1y().q1n(HttpHeaders_getInstance().w1v_1),get_LOGGER_3().j1s("Received redirect response to "+this.e2o_1+" for request "+this.w2n_1.c27_1);var n=new HttpRequestBuilder;n.b2d(this.b2o_1),n.c27_1.s21_1.d3();var i=this.e2o_1;if(null==i||takeFrom(n.c27_1,i),!this.y2n_1&&isSecure(this.c2o_1)&&!isSecure(n.c27_1.j21_1))return get_LOGGER_3().j1s("Can not redirect "+this.w2n_1.c27_1+" because of security downgrade"),this.a2o_1;if(this.d2o_1!==get_authority_0(n.c27_1)&&(n.e27_1.z1o(HttpHeaders_getInstance().r1u_1),get_LOGGER_3().j1s("Removing Authorization header from redirect for "+this.w2n_1.c27_1)),this.b2o_1=n,this.hj_1=2,(t=this.v2n_1.f28(this.b2o_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.a2o_1=t,!isRedirect(this.a2o_1.d26().q29()))return this.a2o_1;this.hj_1=1;continue t;case 3:throw this.kj_1;case 4:return Unit_getInstance()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(Plugin_1).r=function(){return this.u2o_1},protoOf(Plugin_1).n2l=function(t){var n=new Config_1;t(n);var i=n;return new HttpRedirect(i.w2o_1,i.x2o_1)},protoOf(Plugin_1).h28=function(t){return this.n2l(t)},protoOf(Plugin_1).y2o=function(t,n){plugin(n,Plugin_getInstance_3()).r2l(HttpRedirect$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_1).i28=function(t,n){return this.y2o(t instanceof HttpRedirect?t:THROW_CCE(),n)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpRequestLifecycle$Plugin$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,this.k2p_1=SupervisorJob(this.i2p_1.j1r_1.g27_1),attachToClientEngineJob(this.k2p_1,ensureNotNull(this.h2p_1.b25_1.y5(Key_getInstance()))),this.hj_1=1;continue t;case 1:if(this.ij_1=4,this.ij_1=3,this.i2p_1.j1r_1.g27_1=this.k2p_1,this.hj_1=2,(t=this.i2p_1.o1q(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.l2p_1=Unit_getInstance(),this.ij_1=6,this.hj_1=5;continue t;case 3:if(this.ij_1=4,this.kj_1 instanceof Error){var n=this.kj_1;throw this.k2p_1.nq(n),n}throw this.kj_1;case 4:this.ij_1=6;var i=this.kj_1;throw this.k2p_1.oq(),i;case 5:return this.k2p_1.oq(),Unit_getInstance();case 6:throw this.kj_1}}catch(t){var e=t;if(6===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(HttpRequestLifecycle$Plugin$install$slambda).x25=function(t,n,i){var e=new HttpRequestLifecycle$Plugin$install$slambda(this.h2p_1,i);return e.i2p_1=t,e.j2p_1=n,e},protoOf(Plugin_2).r=function(){return this.m2p_1},protoOf(Plugin_2).i2e=function(t){return new HttpRequestLifecycle},protoOf(Plugin_2).h28=function(t){return this.i2e(t)},protoOf(Plugin_2).n2p=function(t,n){var i=Phases_getInstance().z2d_1;n.c25_1.n1r(i,HttpRequestLifecycle$Plugin$install$slambda_0(n,null))},protoOf(Plugin_2).i28=function(t,n){return this.n2p(t instanceof HttpRequestLifecycle?t:THROW_CCE(),n)},protoOf(HttpSend$Plugin$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpSend$Plugin$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpSend$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,!(this.z2p_1 instanceof OutgoingContent)){var n=trimMargin("\n|Fail to prepare request body for sending. \n|The body type is: "+getKClassFromExpression(this.z2p_1)+", with Content-Type: "+contentType(this.y2p_1.j1r_1)+".\n|\n|If you expect serialized body, please check that you have installed the corresponding plugin(like `ContentNegotiation`) and set `Content-Type` header.");throw IllegalStateException_init_$Create$(toString(n))}var i=this.y2p_1.j1r_1,e=this.z2p_1,r=e;if(null==r){i.f27_1=NullBody_getInstance();var s,o=JsType_getInstance(),u=getKClass(OutgoingContent);try{s=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;s=null}i.c2d(typeInfoImpl(o,u,s))}else if(r instanceof OutgoingContent)i.f27_1=e,i.c2d(null);else{i.f27_1=e;var a,h=JsType_getInstance(),_=getKClass(OutgoingContent);try{a=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;a=null}i.c2d(typeInfoImpl(h,_,a))}this.a2q_1=new DefaultSender(this.w2p_1.p2l_1,this.x2p_1),this.b2q_1=this.a2q_1;var l=downTo(get_lastIndex(this.w2p_1.q2l_1),0),f=l.y_1,c=l.z_1,v=l.a1_1;if(v>0&&f<=c||v<0&&c<=f)do{var w=f;f=f+v|0;var d=this.w2p_1.q2l_1.h(w);this.b2q_1=new InterceptedSender(d,this.b2q_1)}while(w!==c);if(this.hj_1=1,(t=this.b2q_1.f28(this.y2p_1.j1r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.c2q_1=t,this.hj_1=2,(t=this.y2p_1.n1q(this.c2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var p=t;if(3===this.ij_1)throw p;this.hj_1=this.ij_1,this.kj_1=p}},protoOf(HttpSend$Plugin$install$slambda).x25=function(t,n,i){var e=new HttpSend$Plugin$install$slambda(this.w2p_1,this.x2p_1,i);return e.y2p_1=t,e.z2p_1=n,e},protoOf($executeCOROUTINE$8).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n=this.l2q_1.q2q_1;if(null==n||cancel(n),this.l2q_1.p2q_1>=this.l2q_1.n2q_1)throw new SendCountExceedException("Max send count "+this.l2q_1.n2q_1+" exceeded. Consider increasing the property maxSendCount if more is required.");var i=this.l2q_1,e=i.p2q_1;if(i.p2q_1=e+1|0,this.hj_1=1,(t=this.l2q_1.o2q_1.e25_1.i1r(this.m2q_1,this.m2q_1.f27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var r=t instanceof HttpClientCall?t:null;if(null==r){var s="Failed to execute send pipeline. Expected [HttpClientCall], but received "+toString(t);throw IllegalStateException_init_$Create$(toString(s))}var o=r;return this.l2q_1.q2q_1=o,o;case 2:throw this.kj_1}}catch(t){var u=t;if(2===this.ij_1)throw u;this.hj_1=this.ij_1,this.kj_1=u}},protoOf(Plugin_3).r=function(){return this.s2q_1},protoOf(Plugin_3).n2l=function(t){var n=new Config_2;return t(n),new HttpSend(n.r2q_1)},protoOf(Plugin_3).h28=function(t){return this.n2l(t)},protoOf(Plugin_3).t2q=function(t,n){var i=Phases_getInstance().d2e_1;n.c25_1.n1r(i,HttpSend$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_3).i28=function(t,n){return this.t2q(t instanceof HttpSend?t:THROW_CCE(),n)},protoOf(InterceptedSender).f28=function(t,n){return this.u2q_1(this.v2q_1,t,n)},protoOf(DefaultSender).f28=function(t,n){var i=new $executeCOROUTINE$8(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpSend).r2l=function(t){this.q2l_1.a(t)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpTimeout$Plugin$install$slambda$slambda).ck=function(t,n){return this.n1f(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=delay(this.l2r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=HttpRequestTimeoutException_init_$Create$(this.m2r_1);return get_LOGGER_5().j1s("Request timeout: "+this.m2r_1.c27_1),cancel_2(this.n2r_1,ensureNotNull(n.message),n),Unit_getInstance();case 2:throw this.kj_1}}catch(t){var i=t;if(2===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpTimeout$Plugin$install$slambda$slambda).o1f=function(t,n){var i=new HttpTimeout$Plugin$install$slambda$slambda(this.l2r_1,this.m2r_1,this.n2r_1,n);return i.o2r_1=t,i},protoOf(HttpTimeout$Plugin$install$slambda).i2k=function(t,n,i){var e=this.j2k(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpTimeout$Plugin$install$slambda).z8=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.i2k(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpTimeout$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=4,this.b2s_1=isWebsocket(this.a2s_1.c27_1.j21_1),this.b2s_1||this.a2s_1.f27_1 instanceof ClientUpgradeContent){if(this.hj_1=3,(t=this.z2r_1.f28(this.a2s_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=1;continue t;case 1:this.c2s_1=this.a2s_1.d2s(Plugin_getInstance_4()),null==this.c2s_1&&hasNotNullTimeouts(this.x2r_1)&&(this.c2s_1=HttpTimeoutCapabilityConfiguration_init_$Create$(),this.a2s_1.e2s(Plugin_getInstance_4(),this.c2s_1));var n=this.c2s_1;if(null==n);else n:do{var i=n.f2s();n.a2r(null==i?this.x2r_1.h2s_1:i);var e=n.j2s();n.b2r(null==e?this.x2r_1.i2s_1:e);var r=n.k2s();n.z2q(null==r?this.x2r_1.g2s_1:r);var s,o=n.k2s(),u=null==o?this.x2r_1.g2s_1:o;if(null==u?s=!0:(Plugin_getInstance_4(),s=equals(u,new Long(-1,2147483647))),s){Unit_getInstance();break n}var a=this.a2s_1.g27_1,h=launch(this.y2r_1,VOID,VOID,HttpTimeout$Plugin$install$slambda$slambda_0(u,this.a2s_1,a,null));this.a2s_1.g27_1.pl(HttpTimeout$Plugin$install$slambda$lambda(h))}while(0);if(this.hj_1=2,(t=this.z2r_1.f28(this.a2s_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:case 3:return t;case 4:throw this.kj_1}}catch(t){var _=t;if(4===this.ij_1)throw _;this.hj_1=this.ij_1,this.kj_1=_}},protoOf(HttpTimeout$Plugin$install$slambda).j2k=function(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(this.x2r_1,this.y2r_1,i);return e.z2r_1=t,e.a2s_1=n,e},protoOf(HttpTimeoutCapabilityConfiguration).z2q=function(t){this.w2q_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).k2s=function(){return this.w2q_1},protoOf(HttpTimeoutCapabilityConfiguration).a2r=function(t){this.x2q_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).f2s=function(){return this.x2q_1},protoOf(HttpTimeoutCapabilityConfiguration).b2r=function(t){this.y2q_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).j2s=function(){return this.y2q_1},protoOf(HttpTimeoutCapabilityConfiguration).f1c=function(){return new HttpTimeout(this.k2s(),this.f2s(),this.j2s())},protoOf(HttpTimeoutCapabilityConfiguration).equals=function(t){return!!(this===t||null!=t&&getKClassFromExpression(this).equals(getKClassFromExpression(t))&&(t instanceof HttpTimeoutCapabilityConfiguration||THROW_CCE(),equals(this.w2q_1,t.w2q_1)&&equals(this.x2q_1,t.x2q_1)&&equals(this.y2q_1,t.y2q_1)))},protoOf(HttpTimeoutCapabilityConfiguration).hashCode=function(){var t=this.w2q_1,n=null==t?null:t.hashCode(),i=null==n?0:n,e=imul(31,i),r=this.x2q_1,s=null==r?null:r.hashCode(),o=imul(31,i=e+(null==s?0:s)|0),u=this.y2q_1,a=null==u?null:u.hashCode();return o+(null==a?0:a)|0},protoOf(Plugin_4).r=function(){return this.l2s_1},protoOf(Plugin_4).n2s=function(t){var n=HttpTimeoutCapabilityConfiguration_init_$Create$();return t(n),n.f1c()},protoOf(Plugin_4).h28=function(t){return this.n2s(t)},protoOf(Plugin_4).o2s=function(t,n){plugin(n,Plugin_getInstance_3()).r2l(HttpTimeout$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_4).i28=function(t,n){return this.o2s(t instanceof HttpTimeout?t:THROW_CCE(),n)},protoOf(DelegatedResponse).l2a=function(){return this.p2s_1},protoOf(DelegatedResponse).n29=function(){return this.q2s_1},protoOf(DelegatedResponse).ok=function(){return this.s2s_1},protoOf(DelegatedResponse).q29=function(){return this.r2s_1.q29()},protoOf(DelegatedResponse).w2a=function(){return this.r2s_1.w2a()},protoOf(DelegatedResponse).x2a=function(){return this.r2s_1.x2a()},protoOf(DelegatedResponse).y2a=function(){return this.r2s_1.y2a()},protoOf(DelegatedResponse).k1y=function(){return this.r2s_1.k1y()},protoOf(WebSocketCapability).toString=function(){return"WebSocketCapability"},protoOf(DefaultHttpRequest).l2a=function(){return this.t2s_1},protoOf(DefaultHttpRequest).ok=function(){return this.l2a().ok()},protoOf(DefaultHttpRequest).m2a=function(){return this.u2s_1},protoOf(DefaultHttpRequest).p29=function(){return this.v2s_1},protoOf(DefaultHttpRequest).k1y=function(){return this.x2s_1},protoOf(DefaultHttpRequest).r28=function(){return this.y2s_1},protoOf(HttpRequestBuilder).k1y=function(){return this.e27_1},protoOf(HttpRequestBuilder).c2d=function(t){null!=t?this.h27_1.z1m(get_BodyTypeAttributeKey(),t):this.h27_1.a1n(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).z2s=function(){return this.h27_1.x1m(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).f1c=function(){var t=this.c27_1.f1c(),n=this.d27_1,i=this.e27_1.f1c(),e=this.f27_1,r=e instanceof OutgoingContent?e:null;if(null==r){var s="No request transformation found: "+toString(this.f27_1);throw IllegalStateException_init_$Create$(toString(s))}return new HttpRequestData(t,n,i,r,this.g27_1,this.h27_1)},protoOf(HttpRequestBuilder).b2d=function(t){return this.g27_1=t.g27_1,this.a2t(t)},protoOf(HttpRequestBuilder).a2t=function(t){return this.d27_1=t.d27_1,this.f27_1=t.f27_1,this.c2d(t.z2s()),takeFrom_0(this.c27_1,t.c27_1),this.c27_1.q21_1=this.c27_1.q21_1,appendAll(this.e27_1,t.e27_1),putAll(this.h27_1,t.h27_1),this},protoOf(HttpRequestBuilder).e2s=function(t,n){var i=get_ENGINE_CAPABILITIES_KEY();this.h27_1.b1n(i,HttpRequestBuilder$setCapability$lambda).f4(t,n)},protoOf(HttpRequestBuilder).d2s=function(t){var n=this.h27_1.x1m(get_ENGINE_CAPABILITIES_KEY()),i=null==n?null:n.g2(t);return null==i||isObject(i)?i:THROW_CCE()},protoOf(HttpRequestData).toString=function(){return"HttpRequestData(url="+this.c2c_1+", method="+this.d2c_1+")"},protoOf(HttpResponseData).toString=function(){return"HttpResponseData=(statusCode="+this.k28_1+")"},protoOf(HttpRequestPipeline).h1r=function(){return this.i2t_1},protoOf(HttpSendPipeline).h1r=function(){return this.q2t_1},protoOf(DefaultHttpResponse).l2a=function(){return this.r2t_1},protoOf(DefaultHttpResponse).ok=function(){return this.s2t_1},protoOf(DefaultHttpResponse).q29=function(){return this.t2t_1},protoOf(DefaultHttpResponse).w2a=function(){return this.u2t_1},protoOf(DefaultHttpResponse).x2a=function(){return this.v2t_1},protoOf(DefaultHttpResponse).y2a=function(){return this.w2t_1},protoOf(DefaultHttpResponse).n29=function(){return this.x2t_1},protoOf(DefaultHttpResponse).k1y=function(){return this.y2t_1},protoOf(HttpResponse).toString=function(){return"HttpResponse["+get_request(this).p29()+", "+this.q29()+"]"},protoOf($bodyAsTextCOROUTINE$12).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n=charset_0(this.h2u_1);this.j2u_1=null==n?this.i2u_1:n,this.k2u_1=this.j2u_1.h1j(),this.hj_1=1;var i,e=this.h2u_1.l2a(),r=JsType_getInstance(),s=getKClass(Input);try{i=createKType(getKClass(Input),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;i=null}if((t=e.o29(typeInfoImpl(r,s,i),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var o=t instanceof Input?t:THROW_CCE();return decode(this.k2u_1,o);case 2:throw this.kj_1}}catch(t){var u=t;if(2===this.ij_1)throw u;this.hj_1=this.ij_1,this.kj_1=u}},protoOf(HttpResponsePipeline).h1r=function(){return this.s2u_1},protoOf(HttpReceivePipeline).h1r=function(){return this.a2v_1},protoOf(HttpResponseContainer).d4=function(){return this.k29_1},protoOf(HttpResponseContainer).e4=function(){return this.l29_1},protoOf(HttpResponseContainer).toString=function(){return"HttpResponseContainer(expectedType="+this.k29_1+", response="+toString(this.l29_1)+")"},protoOf(HttpResponseContainer).hashCode=function(){var t=this.k29_1.hashCode();return imul(t,31)+hashCode(this.l29_1)|0},protoOf(HttpResponseContainer).equals=function(t){if(this===t)return!0;if(!(t instanceof HttpResponseContainer))return!1;var n=t instanceof HttpResponseContainer?t:THROW_CCE();return!!this.k29_1.equals(n.k29_1)&&!!equals(this.l29_1,n.l29_1)},protoOf(HttpStatement$execute$slambda).m2v=function(t,n){var i=this.i2g(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpStatement$execute$slambda).ck=function(t,n){return this.m2v(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(HttpStatement$execute$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=save(this.l2v_1.l2a(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t.d26();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpStatement$execute$slambda).i2g=function(t,n){var i=new HttpStatement$execute$slambda(n);return i.l2v_1=t,i},protoOf($executeCOROUTINE$13).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=13,this.hj_1=1;continue t;case 1:if(this.ij_1=12,this.hj_1=2,(t=this.v2v_1.c2w(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.y2v_1=t,this.hj_1=3;continue t;case 3:this.hj_1=4;continue t;case 4:if(this.ij_1=10,this.hj_1=5,(t=this.w2v_1(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:this.z2v_1=t,this.hj_1=6;continue t;case 6:if(this.a2w_1=this.z2v_1,this.hj_1=7,(t=this.v2v_1.d2w(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:return this.a2w_1;case 8:if(this.hj_1=9,(t=this.v2v_1.d2w(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 9:this.x2v_1=Unit_getInstance(),this.ij_1=13,this.hj_1=15;continue t;case 10:if(this.ij_1=12,this.b2w_1=this.kj_1,this.hj_1=11,(t=this.v2v_1.d2w(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 11:throw this.b2w_1;case 12:if(this.ij_1=13,this.kj_1 instanceof CancellationException)throw unwrapCancellationException(this.kj_1);throw this.kj_1;case 13:throw this.kj_1;case 14:this.ij_1=13,this.hj_1=15;continue t;case 15:return this.x2v_1}}catch(t){var n=t;if(13===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf($executeUnsafeCOROUTINE$14).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=4,this.hj_1=1;continue t;case 1:if(this.ij_1=3,this.o2w_1=(new HttpRequestBuilder).b2d(this.m2w_1.b2v_1),this.hj_1=2,(t=this.m2w_1.c2v_1.f28(this.o2w_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t.d26();case 3:if(this.ij_1=4,this.kj_1 instanceof CancellationException)throw unwrapCancellationException(this.kj_1);throw this.kj_1;case 4:throw this.kj_1;case 5:this.ij_1=4,this.hj_1=6;continue t;case 6:return this.n2w_1}}catch(t){var n=t;if(4===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf($cleanupCOROUTINE$15).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=4;var n=ensureNotNull(this.y2w_1.ok().y5(Key_getInstance()));this.z2w_1=isInterface(n,CompletableJob)?n:THROW_CCE(),this.z2w_1.oq(),this.ij_1=1,cancel_1(this.y2w_1.n29()),this.ij_1=4,this.hj_1=2;continue t;case 1:if(this.ij_1=4,this.kj_1 instanceof Error){this.a2x_1=this.kj_1,this.hj_1=2;continue t}throw this.kj_1;case 2:if(this.ij_1=4,this.hj_1=3,(t=this.z2w_1.pq(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:return Unit_getInstance();case 4:throw this.kj_1}}catch(t){var i=t;if(4===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpStatement).b2x=function(t,n){var i=new $executeCOROUTINE$13(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpStatement).c2x=function(t){return this.b2x(HttpStatement$execute$slambda_0(null),t)},protoOf(HttpStatement).c2w=function(t){var n=new $executeUnsafeCOROUTINE$14(this,t);return n.jj_1=Unit_getInstance(),n.kj_1=null,n.qj()},protoOf(HttpStatement).d2w=function(t,n){var i=new $cleanupCOROUTINE$15(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpStatement).toString=function(){return"HttpStatement["+this.b2v_1.c27_1+"]"},protoOf(observable$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(observable$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(observable$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=15,this.hj_1=1;continue t;case 1:this.q2x_1=get_ByteArrayPool(),this.r2x_1=this.q2x_1.p1f(),this.hj_1=2;continue t;case 2:this.hj_1=3;continue t;case 3:this.ij_1=14;var n=this.l2x_1;this.t2x_1=null==n?new Long(-1,-1):n,this.u2x_1=new Long(0,0),this.hj_1=4;continue t;case 4:if(this.m2x_1.f19()){this.hj_1=8;continue t}if(this.hj_1=5,(t=readAvailable(this.m2x_1,this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.v2x_1=t,this.hj_1=6,(t=this.o2x_1.u1e().j1e(this.r2x_1,0,this.v2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var i=this.u2x_1;if(this.u2x_1=i.o7(toLong(this.v2x_1)),this.hj_1=7,(t=this.n2x_1(this.u2x_1,this.t2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:this.hj_1=4;continue t;case 8:if(this.w2x_1=this.m2x_1.p18(),this.o2x_1.u1e().iy(this.w2x_1),null==this.w2x_1&&this.u2x_1.equals(new Long(0,0))){if(this.hj_1=9,(t=this.n2x_1(this.u2x_1,this.t2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=10;continue t;case 9:this.hj_1=10;continue t;case 10:this.s2x_1=Unit_getInstance(),this.ij_1=15,this.hj_1=11;continue t;case 11:this.q2x_1.u1h(this.r2x_1),this.p2x_1=Unit_getInstance(),this.hj_1=13;continue t;case 12:this.q2x_1.u1h(this.r2x_1),this.hj_1=13;continue t;case 13:return Unit_getInstance();case 14:this.ij_1=15;var e=this.kj_1;throw this.q2x_1.u1h(this.r2x_1),e;case 15:throw this.kj_1}}catch(t){var r=t;if(15===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(observable$slambda).k2b=function(t,n){var i=new observable$slambda(this.l2x_1,this.m2x_1,this.n2x_1,n);return i.o2x_1=t,i},protoOf(EmptyContent).h23=function(){return this.a2y_1},protoOf(EmptyContent).toString=function(){return"EmptyContent"},protoOf(Js).b2y=function(t){var n=new HttpClientEngineConfig;return t(n),new JsClientEngine(n)},protoOf(Js).g28=function(t){return this.b2y(t)},protoOf($executeCOROUTINE$16).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=6,this.hj_1=1,(t=callContext(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.a2z_1=t,this.b2z_1=this.z2y_1.h2c_1.w1m(get_CLIENT_CONFIG()),isUpgradeRequest(this.z2y_1)){if(this.hj_1=5,(t=executeWebSocketRequest(this.y2y_1,this.z2y_1,this.a2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=2;continue t;case 2:if(this.c2z_1=GMTDate(),this.hj_1=3,(t=toRaw(this.z2y_1,this.b2z_1,this.a2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:if(this.d2z_1=t,this.hj_1=4,(t=commonFetch(this.z2y_1.c2c_1.toString(),this.d2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:var n=t,i=new HttpStatusCode(n.status,n.statusText),e=mapToKtor(n.headers),r=Companion_getInstance_3().v1y_1,s=readBody(CoroutineScope_0(this.a2z_1),n);return new HttpResponseData(i,this.c2z_1,e,r,s,this.a2z_1);case 5:return t;case 6:throw this.kj_1}}catch(t){var o=t;if(6===this.ij_1)throw o;this.hj_1=this.ij_1,this.kj_1=o}},protoOf($executeWebSocketRequestCOROUTINE$17).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=4,this.n2y_1=GMTDate(),this.o2y_1=this.l2y_1.c2c_1.toString(),this.p2y_1=createWebSocket(this.k2y_1,this.o2y_1,this.l2y_1.e2c_1),this.ij_1=2,this.hj_1=1,(t=awaitConnection(this.p2y_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=4,this.hj_1=3;continue t;case 2:if(this.ij_1=4,this.kj_1 instanceof Error){var n=this.kj_1;throw cancel_3(this.m2y_1,CancellationException_init_$Create$_0("Failed to connect to "+this.o2y_1,n)),n}throw this.kj_1;case 3:this.ij_1=4;var i=new JsWebSocketSession(this.m2y_1,this.p2y_1);return new HttpResponseData(Companion_getInstance_1().f1z_1,this.n2y_1,Companion_getInstance_4().f1u_1,Companion_getInstance_3().v1y_1,i,this.m2y_1);case 4:throw this.kj_1}}catch(t){var e=t;if(4===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(JsClientEngine).q27=function(){return this.h2z_1},protoOf(JsClientEngine).r2d=function(){return this.i2z_1},protoOf(JsClientEngine).j2c=function(){return this.j2z_1},protoOf(JsClientEngine).p2d=function(t,n){var i=new $executeCOROUTINE$16(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(toRaw$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(toRaw$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(toRaw$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.h30_1.l23(this.i30_1.u1e(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(toRaw$slambda).k2b=function(t,n){var i=new toRaw$slambda(this.h30_1,n);return i.i30_1=t,i},protoOf($toRawCOROUTINE$18).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=4,this.w2z_1={},mergeHeaders(this.t2z_1.e2c_1,this.t2z_1.f2c_1,toRaw$lambda(this.w2z_1)),this.x2z_1=this.t2z_1.f2c_1,this.x2z_1 instanceof ByteArrayContent){this.y2z_1=this.x2z_1.n23(),this.hj_1=3;continue t}if(this.x2z_1 instanceof ReadChannelContent){if(this.hj_1=2,(t=this.x2z_1.j23().l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2z_1 instanceof WriteChannelContent){this.hj_1=1;var n=GlobalScope_getInstance();if((t=writer(n,this.v2z_1,VOID,toRaw$slambda_0(this.x2z_1,null)).u1e().l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.y2z_1=null,this.hj_1=3;continue t;case 1:var i=t;this.y2z_1=readBytes(i),this.hj_1=3;continue t;case 2:var e=t;this.y2z_1=readBytes(e),this.hj_1=3;continue t;case 3:var r=this.y2z_1;return buildObject(toRaw$lambda_0(this.t2z_1,this.w2z_1,this.u2z_1,r));case 4:throw this.kj_1}}catch(t){var s=t;if(4===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(channelFromStream$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(channelFromStream$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(channelFromStream$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,this.t30_1=this.r30_1.getReader(),this.hj_1=1;continue t;case 1:if(this.ij_1=5,this.hj_1=2,(t=readChunk(this.t30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.u30_1=t,null==this.u30_1){this.ij_1=6,this.hj_1=8;continue t}this.v30_1=this.u30_1,this.hj_1=3;continue t;case 3:if(this.w30_1=this.v30_1,this.hj_1=4,(t=writeFully(this.s30_1.u1e(),asByteArray(this.w30_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:this.ij_1=6,this.hj_1=7;continue t;case 5:if(this.ij_1=6,this.kj_1 instanceof Error){var n=this.kj_1;throw this.t30_1.cancel(n),n}throw this.kj_1;case 6:throw this.kj_1;case 7:this.ij_1=6,this.hj_1=1;continue t;case 8:return Unit_getInstance()}}catch(t){var i=t;if(6===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(channelFromStream$slambda).k2b=function(t,n){var i=new channelFromStream$slambda(this.r30_1,n);return i.s30_1=t,i},protoOf(readBodyNode$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(readBodyNode$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(readBodyNode$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6;var n,i=this.f31_1.body;if(null==i)throw IllegalStateException_init_$Create$("Fail to get body");n=i,this.h31_1=n,this.i31_1=Channel(1),this.h31_1.on("data",readBodyNode$slambda$lambda(this.i31_1,this.h31_1)),this.h31_1.on("error",readBodyNode$slambda$lambda_0(this.i31_1,this.g31_1)),this.h31_1.on("end",readBodyNode$slambda$lambda_1(this.i31_1)),this.ij_1=5,this.j31_1=this.i31_1.d(),this.hj_1=1;continue t;case 1:if(this.hj_1=2,(t=this.j31_1.cx(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(!t){this.hj_1=4;continue t}if(this.k31_1=this.j31_1.f(),this.hj_1=3,(t=writeFully(this.g31_1.u1e(),this.k31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:this.h31_1.resume(),this.hj_1=1;continue t;case 4:this.ij_1=6,this.hj_1=7;continue t;case 5:if(this.ij_1=6,this.kj_1 instanceof Error){var e=this.kj_1;throw this.h31_1.destroy(e),e}throw this.kj_1;case 6:throw this.kj_1;case 7:return this.ij_1=6,Unit_getInstance()}}catch(t){var r=t;if(6===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(readBodyNode$slambda).k2b=function(t,n){var i=new readBodyNode$slambda(this.f31_1,n);return i.g31_1=t,i},protoOf(JsWebSocketSession$slambda).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(JsWebSocketSession$slambda).ck=function(t,n){return this.n1f(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(JsWebSocketSession$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=10,this.d32_1=this.b32_1.p31_1,this.hj_1=1;continue t;case 1:this.f32_1=null,this.hj_1=2;continue t;case 2:this.hj_1=3;continue t;case 3:this.ij_1=9,this.ij_1=8,this.h32_1=this.d32_1.d(),this.hj_1=4;continue t;case 4:if(this.hj_1=5,(t=this.h32_1.cx(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(!t){this.hj_1=6;continue t}var n=this.h32_1.f();switch(n.q24_1.l6_1){case 0:var i=n.r24_1;this.b32_1.m31_1.send(String_0(i));break;case 1:var e=n.r24_1,r=e instanceof Int8Array?e:THROW_CCE(),s=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength|0);this.b32_1.m31_1.send(s);break;case 2:var o;n:do{var u=new BytePacketBuilder;try{writeFully_0(u,n.r24_1),o=u.f1c();break n}catch(t){if(t instanceof Error){var a=t;throw u.vq(),a}throw t}}while(0);var h=o,_=readShort(h),l=h.v1i();this.b32_1.n31_1.lq(new CloseReason(_,l)),isReservedStatusCode(_,this.b32_1)?this.b32_1.m31_1.close():this.b32_1.m31_1.close(_,l)}this.hj_1=4;continue t;case 6:this.g32_1=Unit_getInstance(),this.ij_1=10,this.hj_1=7;continue t;case 7:cancelConsumed(this.d32_1,this.f32_1),this.e32_1=Unit_getInstance(),this.hj_1=12;continue t;case 8:if(this.ij_1=9,this.kj_1 instanceof Error){var f=this.kj_1;throw this.f32_1=f,f}throw this.kj_1;case 9:this.ij_1=10;var c=this.kj_1;throw cancelConsumed(this.d32_1,this.f32_1),c;case 10:throw this.kj_1;case 11:cancelConsumed(this.d32_1,this.f32_1),this.hj_1=12;continue t;case 12:return Unit_getInstance()}}catch(t){var v=t;if(10===this.ij_1)throw v;this.hj_1=this.ij_1,this.kj_1=v}},protoOf(JsWebSocketSession$slambda).o1f=function(t,n){var i=new JsWebSocketSession$slambda(this.b32_1,n);return i.c32_1=t,i},protoOf(JsWebSocketSession).ok=function(){return this.l31_1},protoOf(HttpClientEngineBase).j2c=get_supportedCapabilities,protoOf(HttpClientEngineBase).r27=install,protoOf(KtorCallContextElement).y5=get,protoOf(KtorCallContextElement).e6=fold,protoOf(KtorCallContextElement).d6=minusKey,protoOf(KtorCallContextElement).f6=plus,protoOf(HttpRequest$1).ok=get_coroutineContext,protoOf(JsClientEngine).r27=install,_.$_$=_.$_$||{},_.$_$.a=bodyAsText,_.$_$.b=Plugin_getInstance_4,_.$_$.c=set_expectSuccess,_.$_$.d=HttpRequestBuilder,_.$_$.e=url,_.$_$.f=HttpStatement,_.$_$.g=HttpClient_1,_},__WEBPACK_AMD_DEFINE_ARRAY__=[exports,__webpack_require__(744),__webpack_require__(646),__webpack_require__(781),__webpack_require__(868),__webpack_require__(246),__webpack_require__(538),__webpack_require__(813),__webpack_require__(524)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},246:function(t,n,i){var e,r,s;r=[n,i(646),i(744),i(781)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r=n.$_$.q,s=i.$_$.l9,o=(i.$_$.ng,i.$_$.ua),u=e.$_$.d,a=i.$_$.o9,h=i.$_$.hf,_=i.$_$.tf,l=i.$_$.u4,f=i.$_$.ta;function c(){}function v(){this.t23_1=new u}function w(){}return o(c,"HandlerRegistration",s,r),o(v,"Events",s),o(w,"EventDefinition",s),f(v).u23=function(t,n){var i=null,e=this.t23_1.g2(t);if(null==e);else for(var r=e.hs_1;!a(r,e);){if(r instanceof c){var s=r;try{var o=s.y23_1;("function"==typeof o?o:h())(n)}catch(t){if(!(t instanceof Error))throw t;var u,f=t;null==i?u=null:(_(i,f),u=l()),null==u&&(i=f,l())}}r=r.hs_1}if(null!=i)throw i},t.$_$=t.$_$||{},t.$_$.a=w,t.$_$.b=v,t})?e.apply(n,r):e)||(t.exports=s)},813:function(t,n,i){var e,r,s;r=[n,i(744),i(538),i(781)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I=Math.imul,A=n.$_$.ng,T=n.$_$.e1,D=i.$_$.f,M=i.$_$.k,N=n.$_$.u4,R=i.$_$.n,P=i.$_$.o,L=i.$_$.m,F=n.$_$.h9,U=n.$_$.m2,H=n.$_$.jc,V=n.$_$.i9,B=n.$_$.qe,Y=n.$_$.o9,W=n.$_$.ya,G=n.$_$.ad,K=n.$_$.r2,J=n.$_$.q2,X=n.$_$.d1,Z=n.$_$.j9,Q=n.$_$.k9,tt=n.$_$.va,nt=i.$_$.t,it=n.$_$.we,et=n.$_$.l1,rt=n.$_$.f9,st=n.$_$.ta,ot=n.$_$.l9,ut=n.$_$.ua,at=n.$_$.p2,ht=n.$_$.ma,_t=n.$_$.s2,lt=n.$_$.j7,ft=n.$_$.k7,ct=n.$_$.q5,vt=n.$_$.k,wt=n.$_$.t2,dt=n.$_$.f8,pt=n.$_$.r7,mt=n.$_$.i7,gt=n.$_$.e7,$t=n.$_$.i6,yt=n.$_$.ra,bt=n.$_$.rc,kt=n.$_$.x4,jt=n.$_$.ea,xt=n.$_$.wc,zt=n.$_$.c7,Et=n.$_$.vc,Ct=n.$_$.hf,St=n.$_$.aa,qt=n.$_$.le,Ot=n.$_$.lc,It=n.$_$.sa,At=n.$_$.l7,Tt=n.$_$.t9,Dt=n.$_$.u9,Mt=i.$_$.e,Nt=n.$_$.xe,Rt=i.$_$.l,Pt=n.$_$.z6,Lt=n.$_$.fd,Ft=n.$_$.sc,Ut=n.$_$.cd,Ht=e.$_$.q,Vt=n.$_$.k6,Bt=e.$_$.p,Yt=e.$_$.o,Wt=e.$_$.s,Gt=e.$_$.r,Kt=n.$_$.j6,Jt=n.$_$.vd,Xt=n.$_$.pb,Zt=n.$_$.h,Qt=n.$_$.cg,tn=n.$_$.lg,nn=n.$_$.l,en=n.$_$.m5,rn=n.$_$.o2,sn=n.$_$.q1,on=n.$_$.ae,un=n.$_$.f7,an=n.$_$.fb,hn=n.$_$.t,_n=n.$_$.v9,ln=n.$_$.bd,fn=n.$_$.nd,cn=n.$_$.g9,vn=n.$_$.kd,wn=n.$_$.d8,dn=n.$_$.p6,pn=n.$_$.v6,mn=n.$_$.r1,gn=e.$_$.x,$n=n.$_$.tc,yn=n.$_$.h6,bn=n.$_$.ye,kn=n.$_$.w1,jn=n.$_$.uc,xn=n.$_$.yd,zn=n.$_$.d7,En=e.$_$.y,Cn=e.$_$.v,Sn=e.$_$.t,qn=n.$_$.md,On=n.$_$.k5,In=n.$_$.x6,An=n.$_$.kg,Tn=n.$_$.dg,Dn=n.$_$.c,Mn=n.$_$.ub,Nn=n.$_$.s9,Rn=n.$_$.pc,Pn=i.$_$.j,Ln=n.$_$.wa,Fn=n.$_$.rd,Un=e.$_$.c;function Hn(){return ui(),r}function Vn(){return ui(),s}function Bn(){return ui(),o}function Yn(){return ui(),a}function Wn(t,n){n=n!==A&&n,ui();var i,e,r=T();return Zn(M(D().e1j_1.i1j(),t),(i=r,e=n,function(t){return Hn().n(t)||(ui(),h).n(t)?(i.k7(ht(t)),N()):e&&t===tt(32)?(i.k7(U(43)),N()):(i.l8(Qn(t)),N()),N()})),r.toString()}function Gn(t,n,i,e){return n=n===A?0:n,i=i===A?t.length:i,e=e===A?D().e1j_1:e,ui(),ti(t,n,i,!1,e)}function Kn(t,n,i,e){n=n!==A&&n,i=i!==A&&i,e=e===A?D().e1j_1:e,ui();var r,s,o,a=T();return Zn(M(e.i1j(),t),(r=i,s=a,o=n,function(t){return t===tt(32)?r?(s.k7(U(43)),N()):(s.l8("%20"),N()):Hn().n(t)||!o&&(ui(),u).n(t)?(s.k7(ht(t)),N()):(s.l8(Qn(t)),N()),N()})),a.toString()}function Jn(t,n,i,e,r){return n=n===A?0:n,i=i===A?t.length:i,e=e!==A&&e,r=r===A?D().e1j_1:r,ui(),ti(t,n,i,e,r)}function Xn(t){return ui(),function(t,n){ui();for(var i=T(),e=D().e1j_1,r=0;rs.n1a_1;)n(s.v1g());i=!1;var o=P(t,r);if(null==o)break t;r=o,i=!0}}finally{i&&L(t,r)}}else N()}function Qn(t){ui();var n=255&t,i=F(3);return i[0]=U(37),i[1]=ni(n>>4),i[2]=ni(15&n),H(i)}function ti(t,n,i,e,r){ui();var s=n;if(s255?o/3|0:o);e>n&&u.ig(t,n,e);for(var a=e,h=null;a=i){var f=a,c=Z(t);throw new ei("Incomplete trailing HEX escape: "+W(Q(t,f,c))+", in "+t+" at "+a)}var v=ri(V(t,a+1|0)),w=ri(V(t,a+2|0));if(-1===v||-1===w)throw new ei("Wrong HEX escape: %"+new B(V(t,a+1|0))+new B(V(t,a+2|0))+", in "+t+", at "+a);var d=l;l=d+1|0,h[d]=tt(I(v,16)+w|0),a=a+3|0}u.l8(nt(h,0,l,s))}else u.k7(_),a=a+1|0}return u.toString()}function ei(t){et(t,this),rt(this,ei)}function ri(t){ui();var n=t;return U(48)<=n&&n<=U(57)?at(t,U(48)):U(65)<=n&&n<=U(70)?at(t,U(65))+10|0:U(97)<=n&&n<=U(102)?at(t,U(97))+10|0:-1}function si(t){return ui(),Wn(t,!0)}function oi(t){return function(n){return t.l8(Qn(n)),N()}}function ui(){if(_);else{_=!0;for(var t=ft(lt(_t(U(97),U(122)),_t(U(65),U(90))),_t(U(48),U(57))),n=vt(ct(t,10)),i=t.d();i.e();){var e,l,f=i.f().j7_1;l=wt(f),e=tt(l),n.a(e)}r=dt(n),s=dt(ft(lt(_t(U(97),U(122)),_t(U(65),U(90))),_t(U(48),U(57)))),o=dt(ft(lt(_t(U(97),U(102)),_t(U(65),U(70))),_t(U(48),U(57))));for(var c=pt([new B(U(58)),new B(U(47)),new B(U(63)),new B(U(35)),new B(U(91)),new B(U(93)),new B(U(64)),new B(U(33)),new B(U(36)),new B(U(38)),new B(U(39)),new B(U(40)),new B(U(41)),new B(U(42)),new B(U(44)),new B(U(59)),new B(U(61)),new B(U(45)),new B(U(46)),new B(U(95)),new B(U(126)),new B(U(43))]),v=vt(ct(c,10)),w=c.d();w.e();){var d,p,m=w.f().j7_1;p=wt(m),d=tt(p),v.a(d)}u=v,a=pt([new B(U(58)),new B(U(64)),new B(U(33)),new B(U(36)),new B(U(38)),new B(U(39)),new B(U(40)),new B(U(41)),new B(U(42)),new B(U(43)),new B(U(44)),new B(U(59)),new B(U(61)),new B(U(45)),new B(U(46)),new B(U(95)),new B(U(126))]),mt(Vn(),pt([new B(U(33)),new B(U(35)),new B(U(36)),new B(U(38)),new B(U(43)),new B(U(45)),new B(U(46)),new B(U(94)),new B(U(95)),new B(U(96)),new B(U(124)),new B(U(126))]));for(var g=gt([new B(U(45)),new B(U(46)),new B(U(95)),new B(U(126))]),$=vt(ct(g,10)),y=g.d();y.e();){var b,k,j=y.f().j7_1;k=wt(j),b=tt(k),$.a(b)}h=$}}function ai(t,n,i){return function(t,n,i,e){return i=i===A?$t():i,ci.call(e,t,n,t+"/"+n,i),e}(t,n,i,yt(st(ci)))}function hi(){l=this,this.p1s_1=ai("*","*")}function _i(){return null==l&&new hi,l}function li(){f=this,this.u1s_1=ai("application","*"),this.v1s_1=ai("application","atom+xml"),this.w1s_1=ai("application","cbor"),this.x1s_1=ai("application","json"),this.y1s_1=ai("application","hal+json"),this.z1s_1=ai("application","javascript"),this.a1t_1=ai("application","octet-stream"),this.b1t_1=ai("application","font-woff"),this.c1t_1=ai("application","rss+xml"),this.d1t_1=ai("application","xml"),this.e1t_1=ai("application","xml-dtd"),this.f1t_1=ai("application","zip"),this.g1t_1=ai("application","gzip"),this.h1t_1=ai("application","x-www-form-urlencoded"),this.i1t_1=ai("application","pdf"),this.j1t_1=ai("application","vnd.openxmlformats-officedocument.spreadsheetml.sheet"),this.k1t_1=ai("application","vnd.openxmlformats-officedocument.wordprocessingml.document"),this.l1t_1=ai("application","vnd.openxmlformats-officedocument.presentationml.presentation"),this.m1t_1=ai("application","protobuf"),this.n1t_1=ai("application","wasm"),this.o1t_1=ai("application","problem+json"),this.p1t_1=ai("application","problem+xml")}function fi(){c=this,this.q1t_1=ai("text","*"),this.r1t_1=ai("text","plain"),this.s1t_1=ai("text","css"),this.t1t_1=ai("text","csv"),this.u1t_1=ai("text","html"),this.v1t_1=ai("text","javascript"),this.w1t_1=ai("text","vcard"),this.x1t_1=ai("text","xml"),this.y1t_1=ai("text","event-stream")}function ci(t,n,i,e){_i(),e=e===A?$t():e,mi.call(this,i,e),this.b1u_1=t,this.c1u_1=n}function vi(t){et("Bad Content-Type format: "+t,this),rt(this,vi)}function wi(t){var n,i=t.e1u("charset");if(null==i)n=null;else{var e;try{e=Mt().f1m(i)}catch(t){if(!(t instanceof Nt))throw t;e=null}n=e}return n}function di(){w=this}function pi(){return null==w&&new di,w}function mi(t,n){pi(),n=n===A?$t():n,this.k1s_1=t,this.l1s_1=n}function gi(t){if(yi(),0===Z(t))return!0;if(function(t){if(yi(),t.length<2)return!1;if(!Y(new B(Ft(t)),new B(U(34)))||!Y(new B(Lt(t)),new B(U(34))))return!1;var n=1;t:do{var i=Et(t,U(34),n);if(i===Ut(t))break t;for(var e=0,r=i-1|0;Y(new B(V(t,r)),new B(U(92)));)e=e+1|0,r=r-1|0;if(0==(e%2|0))return!1;n=i+1|0}while(nUt(t))r=ne().g21_1;else{ne();var s=ee();(function(t,n,i,e,r){var s=0,o=i,u=-1,a=i,h=Ut(n);if(a<=h)do{var _=a;if(a=a+1|0,s===e)return N();var l=V(n,_);Y(new B(l),new B(U(38)))?(ae(t,n,o,u,_,r),o=_+1|0,u=-1,s=s+1|0):Y(new B(l),new B(U(61)))&&-1===u&&(u=_)}while(_!==h);if(s===e)return N();ae(t,n,o,u,n.length,r)})(s,t,n,i,e),r=s.f1c()}return r}function ae(t,n,i,e,r,s){if(-1===e){var o=he(i,r,n),u=_e(o,r,n);if(u>o){var a=s?Jn(n,o,u):n.substring(o,u);t.u1o(a,$t())}return N()}var h=he(i,e,n),_=_e(h,e,n);if(_>h){var l=s?Jn(n,h,_):n.substring(h,_),f=he(e+1|0,r,n),c=_e(f,r,n),v=s?Jn(n,f,c,!0):n.substring(f,c);t.x1o(l,v)}}function he(t,n,i){for(var e=t;et&&ln(V(i,e-1|0));)e=e-1|0;return e}function le(t){var n=t.k21_1;if(Z(n)>0||"file"===t.j21_1.t21_1)return N();t.k21_1=ce().l22_1.w21_1,t.j21_1.equals(Ce().m22_1)&&(t.j21_1=ce().l22_1.v21_1),0===t.l21_1&&(t.l21_1=ce().l22_1.x21_1)}function fe(){x=this,this.l22_1=function(t){return be(new ve,t)}(function(t){var n,i;if(Un().d1s_1){var e=(i="",(i="undefined"!=typeof window?window.location.origin:self.location.origin)&&"null"!=i?i:"http://localhost");n=null!=e&&"string"==typeof e?e:Ct()}else n="http://localhost";return n}()).f1c()}function ce(){return null==x&&new fe,x}function ve(t,n,i,e,r,s,o,u,a){ce(),t=t===A?Ce().m22_1:t,n=n===A?"":n,i=i===A?0:i,e=e===A?null:e,r=r===A?null:r,s=s===A?$t():s,o=o===A?ne().g21_1:o,u=u===A?"":u,a=a!==A&&a,this.j21_1=t,this.k21_1=n,this.l21_1=i,this.m21_1=a;var h=e;this.n21_1=null==h?null:Wn(h);var _=r;this.o21_1=null==_?null:Wn(_),this.p21_1=Kn(u);for(var l,f=vt(ct(s,10)),c=s.d();c.e();){var v;v=Xn(c.f()),f.a(v)}l=f,this.q21_1=l,this.r21_1=function(t){var n=ee();return function(t,n){for(var i=n.o1o().d();i.e();){for(var e,r=i.f(),s=n.n1o(r),o=null==s?$t():s,u=Wn(r),a=vt(ct(o,10)),h=o.d();h.e();){var _;_=si(h.f()),a.a(_)}e=a,t.u1o(u,e)}}(n,t),n}(o),this.s21_1=new Te(this.r21_1)}function we(t){var n=T();return n.l8(me(t)),n.l8(t.k21_1),0!==t.l21_1&&t.l21_1!==t.j21_1.u21_1&&(n.l8(":"),n.l8(t.l21_1.toString())),n.toString()}function de(){return z}function pe(t,n){n.b(t.j21_1.t21_1);var i=t.j21_1.t21_1;if("file"===i)return function(t,n,i){t.b("://"),t.b(n),fn(i,U(47))||t.k7(U(47)),t.b(i)}(n,t.k21_1,$e(t)),n;if("mailto"===i)return function(t,n,i){t.b(":"),t.b(n),t.b(i)}(n,me(t),t.k21_1),n;n.b("://"),n.b(we(t)),function(t,n,i,e){!xt(n)&&!qn(n,"/")&&t.k7(U(47)),t.b(n),i.m()&&!e||t.b("?");for(var r=i.p1o(),s=nn(),o=r.d();o.e();){var u,a=o.f(),h=a.r(),_=a.s();if(_.m())u=zn(tn(h,null));else{for(var l=vt(ct(_,10)),f=_.d();f.e();){var c,v=f.f();c=tn(h,v),l.a(c)}u=l}On(s,u)}In(s,t,"&",A,A,A,A,Oe)}(n,$e(t),t.r21_1,t.m21_1);var e=t.p21_1;return Z(e)>0&&(n.k7(U(35)),n.b(t.p21_1)),n}function me(t){var n=T();return qe(n,t.n21_1,t.o21_1),n.toString()}function ge(t,n){t.q21_1=xt(n)?$t():"/"===n?ye():wn(vn(n,cn([U(47)])))}function $e(t){return function(t){if(t.m())return"";if(1===t.g()){var n=dn(t);return 0===Z(n)?"/":dn(t)}return pn(t,"/")}(t.q21_1)}function ye(){return ze(),E}function be(t,n){if(ze(),xt(n))return t;var i;try{i=function(t,n){var i;ze();t:{var e=0,r=Z(n)-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=V(n,s);if(!ln(o)){i=s;break t}}while(e<=r);i=-1}var u,a=i;t:{var h=Z(n)-1|0;if(0<=h)do{var _=h;h=h+-1|0;var l=V(n,_);if(!ln(l)){u=_;break t}}while(0<=h);u=-1}var f=u+1|0,c=function(t,n,i){ze();var e=n,r=-1,s=V(t,e);for(U(97)<=s&&s<=U(122)||U(65)<=s&&s<=U(90)||(r=e);e0){var v=a,w=a+c|0,d=n.substring(v,w);t.j21_1=Ce().z22(d),a=a+(c+1|0)|0}var p=function(t,n,i,e){ze();for(var r=0;(n+r|0)=2)t:for(;;){var m,g=$n(n,gn("@/\\?#"),a),$=null==(m=g>0?g:null)?f:m;if(!($=f)return t.q21_1=Y(new B(V(n,f-1|0)),new B(U(47)))?ye():$t(),t;var O,I,T=t;O=0===p?yn(t.q21_1,1):$t(),T.q21_1=O;var D=$n(n,gn("?#"),a),M=null==(I=D>0?D:null)?f:I;if(M>a){var R,P=a,L=n.substring(P,M);if(1===t.q21_1.g()){var F=dn(t.q21_1);R=0===Z(F)}else R=!1;var H=R?$t():t.q21_1,G="/"===L?ye():vn(L,cn([U(47)])),K=ft(1===p?ye():$t(),G);t.q21_1=ft(H,K),a=M}return a0?s:null)?e:r,u=i+1|0;return ue(n.substring(u,o),A,A,!1).q1o((a=t,function(t,n){return a.r21_1.u1o(t,n),N()})),o;var a}(t,n,a,f)),function(t,n,i,e){if(ze(),i0?o:null)?e:r,a=t;if(s=n.substring(i,u),a.k21_1=s,(u+1|0)?@[\\]{}',s))throw new Ui(t,u)}},st(Li).f1y=function(t){for(var n=0,i=t,e=0,r=i.length;e=0?i:new U(16,0)}return n}(n),s=(e.w(r)<=0?e:r).c8(),o=_t(s);return function(t,n,i,e){var r=Oe(he(ge(t)),!0),s=0,o=!0,u=Di(n,1);if(null!=u){var a=u,h=1;try{t:do{var _,l,f=a,c=f.o1a_1-f.n1a_1|0;if(c>=h)try{var v,w=a,d=e-s|0,p=w.o1a_1-w.n1a_1|0;if(d0&&w.l1g(p),E=0}else E=s0)}finally{o&&Ti(n,a)}}else O();if(s=L)try{var B=P,Y=B.m1a_1,W=B.n1a_1,G=B.o1a_1,K=ke(new Int8Array(Y.g1g_1.buffer,Y.g1g_1.byteOffset+W|0,G-W|0),r,e-s|0);i.b(K.q1m_1),s=s+K.q1m_1.length|0;var J=K.r1m_1;B.h1g(J),L=M=J>0?1:M===ye()?0:M+1|0}finally{var X=P;F=X.o1a_1-X.n1a_1|0}else F=V;if(N=!1,0===F)U=Mi(n,P);else{var Z;if(F0)}finally{N&&Ti(n,P)}}else O()}}(t,n,o,i),o.toString()}function kn(t,n,i,e,r){var s=e;if(s>=r)return 0;var o=0,u=Ni(n,1,null);try{var a;t:for(;;){var h=u,_=h.q1a_1-h.o1a_1|0,l=me(t,i,s,r,h);if(!(l>=0))throw D(I("Check failed."));if(s=s+l|0,o=o+(_-(h.q1a_1-h.o1a_1|0)|0)|0,(a=s>=r?0:0===l?8:1)<=0)break t;u=Ni(n,a,u)}}finally{n.d1g()}return o+function(t,n){var i=1,e=0,r=Ni(n,1,null);try{t:for(;;){var s=r,o=s.q1a_1-s.o1a_1|0;if(i=0,e=e+(o-(s.q1a_1-s.o1a_1|0)|0)|0,!(i>0))break t;r=Ni(n,1,r)}}finally{n.d1g()}return e}(0,n)|0}function jn(){o=this,this.e1g_1=8}function xn(){return null==o&&new jn,o}function zn(t){xn(),this.m1a_1=t,this.n1a_1=0,this.o1a_1=0,this.p1a_1=0;var n;n=this.m1a_1.g1g_1.byteLength,this.q1a_1=n;var i;i=this.m1a_1.g1g_1.byteLength,this.r1a_1=i}function En(t,n){throw new Ce("Unable to discard "+t+" bytes: only "+n+" available for reading")}function Cn(t,n){throw new Ce("Unable to discard "+t+" bytes: only "+n+" available for writing")}function Sn(t,n,i){var e=function(t,n,i,e){return qn.call(e,"Not enough free space to write "+t+" of "+n+" bytes, available "+i+" bytes."),e}(t,n,i,ct(R(qn)));return J(e,Sn),e}function qn(t){wt(t=t===L?"Not enough free space":t,this),J(this,qn)}function On(t,n,i){var e=n.o1a_1-n.n1a_1|0,r=Math.min(e,i);(t.q1a_1-t.o1a_1|0)<=r&&function(t,n){if(((t.q1a_1-t.o1a_1|0)+(t.r1a_1-t.q1a_1|0)|0)0&&t.t1g()}(t,r);var s=t.m1a_1,o=t.o1a_1,u=(t.q1a_1,n.m1a_1),a=n.n1a_1;n.o1a_1,u.y1g(s,a,r,o);var h=r;n.h1g(h);var _=h;return t.i1g(_),_}function In(){return h||(h=!0,u=new An),u}function An(t,n,i){t=t===L?4096:t,n=n===L?1e3:n,i=i===L?te():i,Ne.call(this,n),this.c1h_1=t,this.d1h_1=i}function Tn(t,n,i,e){i=i===L?0:i,e=e===L?n.length-i|0:e;var r=t.m1a_1,s=t.o1a_1,o=t.q1a_1-s|0;if(o=0))throw A(I("length shouldn't be negative: "+i));if(!(i<=(n.o1a_1-n.n1a_1|0)))throw e=n.o1a_1-n.n1a_1|0,A(I("length shouldn't be greater than the source read remaining: "+i+" > "+e));if(!(i<=(t.q1a_1-t.o1a_1|0)))throw r=t.q1a_1-t.o1a_1|0,A(I("length shouldn't be greater than the destination write remaining space: "+i+" > "+r));var s=t.m1a_1,o=t.o1a_1,u=t.q1a_1-o|0;if(u=0))throw A(I("Failed requirement."));if(!(i<=(n.q1a_1-n.o1a_1|0)))throw A(I("Failed requirement."));var s=t.m1a_1,o=t.n1a_1;if((t.o1a_1-o|0)(i=Math.min(e,r)))!function(t,n,i,e){var r=t.v1b_1.p1f(),s=t.v1b_1.p1f();xn(),r.n1g(8),xn(),s.n1g(8),r.c1j(s),s.c1j(n.v1h()),On(r,n,i-e|0),On(s,n,e),Yn(t,r),t.p1i(Rn(s))}(t,n,e,i);else{var s=t.v1b_1.p1f();xn(),s.n1g(8),s.c1j(n.v1h()),On(s,n,e),Yn(t,s)}n.c1g(t.v1b_1)}function Jn(t){if(t.b1c_1)return null;var n=t.m1i();return null==n?(t.b1c_1=!0,null):(function(t,n){var i=Pn(t.w1b_1);if(i===gi().d1e_1){if(Yn(t,n),!t.a1c_1.equals(new U(0,0)))throw D("It should be no tail remaining bytes if current tail is EmptyBuffer");var e=n.q1h(),r=null==e?null:Rn(e);t.p1i(null==r?new U(0,0):r)}else{i.c1j(n);var s=t;s.p1i(s.a1c_1.o7(Rn(n)))}}(t,n),n)}function Xn(t,n,i){for(var e=t,r=n,s=i;;){var o=e.z1b_1-e.y1b_1|0;if(o>=r)return s;var u=s.q1h(),a=null==u?Jn(e):u;if(null==a)return null;var h=a;if(0!==o){var _=On(s,h,r-o|0);e.z1b_1=s.o1a_1;var l,f=e;if(l=f.a1c_1.p7(T(_)),f.p1i(l),h.o1a_1>h.n1a_1?h.m1g(_):(s.c1j(null),s.c1j(h.v1h()),h.c1g(e.v1b_1)),(s.o1a_1-s.n1a_1|0)>=r)return s;var c=r;xn(),c>8&&Zn(0,r)}else s!==gi().d1e_1&&e.b1j(s),s=h}}function Zn(t,n){throw xn(),D("minSize of "+n+" is too big (should be less than 8)")}function Qn(t,n){0==(n.o1a_1-n.n1a_1|0)&&t.b1j(n)}function ti(){l=this}function ni(t,n,i){null==l&&new ti,t=t===L?gi().d1e_1:t,n=n===L?Rn(t):n,i=i===L?gi().b1e_1:i,this.v1b_1=i,this.w1b_1=t,this.x1b_1=t.m1a_1,this.y1b_1=t.n1a_1,this.z1b_1=t.o1a_1;var e,r=this.z1b_1-this.y1b_1|0;e=n.p7(T(r)),this.a1c_1=e,this.b1c_1=!1}function ii(t,n,i,e){var r;i=i===L?0:i;var s=e=e===L?n.length-i|0:e,o=i,u=!0,a=Di(t,1);if(null!=a){var h=a;try{t:for(;;){var _=h,l=s,f=_.o1a_1-_.n1a_1|0,c=Math.min(l,f);if(Mn(_,n,o,c),o=o+c|0,!((s=s-c|0)>0))break t;u=!1;var v=Mi(t,h);if(null==v)break t;h=v,u=!0}}finally{u&&Ti(t,h)}}else O();(r=s)>0&&li(r)}function ei(t,n,i){var e,r,s;i===L?(r=n.q1a_1-n.o1a_1|0,O(),e=r):e=i;var o=i=e,u=0,a=!0,h=Di(t,1);if(null!=h){var _=h;try{t:for(;;){var l=_,f=o,c=l.o1a_1-l.n1a_1|0,v=Math.min(f,c);if(Nn(l,n,v),u=u+v|0,!((o=o-v|0)>0))break t;a=!1;var w=Mi(t,_);if(null==w)break t;_=w,a=!0}}finally{a&&Ti(t,_)}}else O();(s=o)>0&&li(s)}function ri(t){var n=t.f18_1.p1f();return xn(),n.n1g(8),t.b1g(n),n}function si(t,n,i,e){var r=t.h18_1;if(null==r)t.g18_1=n,t.m18_1=0;else{r.c1j(n);var s=t.j18_1;r.j1g(s);var o=t;o.m18_1=o.m18_1+(s-t.l18_1|0)|0}t.h18_1=i;var u=t;u.m18_1=u.m18_1+e|0,t.i18_1=i.m1a_1,t.j18_1=i.o1a_1,t.l18_1=i.n1a_1,t.k18_1=i.q1a_1}function oi(t,n,i,e){n.j1g(t.j18_1);var r=n.o1a_1-n.n1a_1|0,s=i.o1a_1-i.n1a_1|0,o=Ee(),u=s0))break t;u=Ni(t,1,u)}}finally{t.d1g()}}function hi(t,n,i,e){var r=i=i===L?0:i,s=e=e===L?n.length-i|0:e,o=Ni(t,1,null);try{t:for(;;){var u=o,a=s,h=u.q1a_1-u.o1a_1|0,_=Math.min(a,h);if(Tn(u,n,r,_),r=r+_|0,!((s=s-_|0)>0))break t;o=Ni(t,1,o)}}finally{t.d1g()}}function _i(t,n){var i,e;if(n===L){var r,s=t.c1c();if(s.w(T(ht().MAX_VALUE))>0)throw A("Unable to convert to a ByteArray: packet is too big");r=s.c8(),O(),i=r}else i=n;if(0!==(n=i)){var o=new Int8Array(n);ii(t,o,0,n),e=o}else e=Ai();return e}function li(t){throw new Ce("Premature end of stream: expected "+t+" bytes")}function fi(t,n,i){return function(t,n,i){if(0===i)return"";if((n.z1b_1-n.y1b_1|0)>=i){var e,r=Oe(ge(t).g1j_1,!0),s=n.a1i(),o=n.x1b_1.g1g_1;t:try{var u=0===s.n1a_1&&i===o.byteLength?o:new DataView(o.buffer,o.byteOffset+s.n1a_1|0,i);e=r.s1m(u);break t}catch(t){if(t instanceof Error){var a=t.message;throw new fe("Failed to decode bytes: "+(null==a?"no cause provided":a))}throw t}var h=e;return n.h1g(i),h}return function(t,n,i){var e=Oe(he(ge(t)),!0),r=i,s=_t(i);t:try{var o=!0,u=Di(n,6);if(null!=u){var a=u,h=6;try{n:do{var _,l,f=a,c=f.o1a_1-f.n1a_1|0;if(c>=h)try{var v,w=a,d=w.o1a_1-w.n1a_1|0,p=r,m=Math.min(d,p);if(0===w.n1a_1&&w.m1a_1.g1g_1.byteLength===m){var g;i:{var $=w.m1a_1.g1g_1;try{g=e.o1m($,Ie(!0));break i}catch(t){if(t instanceof Error){var y=t.message;throw new fe("Failed to decode bytes: "+(null==y?"no cause provided":y))}throw t}}v=g}else{var b;i:{var k=new Int8Array(w.m1a_1.g1g_1.buffer,w.m1a_1.g1g_1.byteOffset+w.n1a_1|0,m);try{b=e.o1m(k,Ie(!0));break i}catch(t){if(t instanceof Error){var j=t.message;throw new fe("Failed to decode bytes: "+(null==j?"no cause provided":j))}throw t}}v=b}var x=v;s.l8(x),w.h1g(m),h=(r=r-m|0)>0?6:0}finally{var z=a;_=z.o1a_1-z.n1a_1|0}else _=c;if(o=!1,0===_)l=Mi(n,a);else{var E;if(_0)}finally{o&&Ti(n,a)}}else O();if(r>0){var I=!0,A=Di(n,1);if(null!=A){var T=A;try{n:for(;;){var D,M=T,N=M.o1a_1-M.n1a_1|0,R=r,P=Math.min(N,R);if(0===M.n1a_1&&M.m1a_1.g1g_1.byteLength===P)D=e.s1m(M.m1a_1.g1g_1);else{var L;i:{var F=new Int8Array(M.m1a_1.g1g_1.buffer,M.m1a_1.g1g_1.byteOffset+M.n1a_1|0,P);try{L=e.o1m(F,Ie(!0));break i}catch(t){if(t instanceof Error){var U=t.message;throw new fe("Failed to decode bytes: "+(null==U?"no cause provided":U))}throw t}}D=L}var H=D;s.l8(H),M.h1g(P),r=r-P|0,I=!1;var V=Mi(n,T);if(null==V)break n;T=V,I=!0}}finally{I&&Ti(n,T)}}else O()}s.l8(e.p1m());break t}catch(t){if(t instanceof Error){var B=t.message;throw new fe("Failed to decode bytes: "+(null==B?"no cause provided":B))}throw t}if(r>0)throw new Ce("Not enough bytes available: had only "+(i-r|0)+" instead of "+i);return s.toString()}(t,n,i)}((i=i===L?le().e1j_1:i).h1j(),t,n)}function ci(t,n,i,e,r){if(i=i===L?0:i,e=e===L?lt(n):e,(r=r===L?le().e1j_1:r)===le().e1j_1)return function(t,n,i,e){var r=i,s=Ni(t,1,null);try{var o;t:for(;;){var u,a=s,h=Oi(a.m1a_1,n,r,e,a.o1a_1,a.q1a_1),_=bi(h),l=ki(h);if(r=r+(65535&yt(_))|0,u=65535&yt(l),a.i1g(u),(o=0==(65535&yt(_))&&r>>16|0),jt(n)}(t)}function ki(t){return function(t){var n;return n=kt(65535&t),jt(n)}(t)}function ji(t){wt(t,this),J(this,ji)}function xi(t){throw new ji("Expected "+t+" more character bytes")}function zi(t){return 0==(t>>>16|0)}function Ei(t){return t<=1114111}function Ci(t){throw A("Malformed code-point "+t+" found")}function Si(t){return 55232+(t>>>10|0)|0}function qi(t){return 56320+(1023&t)|0}function Oi(t,n,i,e,r,s){xt();var o,u=jt(-1),a=i+(65535&yt(u))|0,h=Math.min(e,a);xt();var _=jt(-1);o=65535&yt(_);var l=mt(s,o),f=r,c=i;t:for(;;){if(f>=l||c>=h)return yi(jt(kt(c-i|0)),jt(kt(f-r|0)));var v=c;c=v+1|0;var w=zt(n,v),d=65535>(w);if(0!=(65408&d))break t;var p=f;f=p+1|0;var m=p,g=$t(d);t.g1g_1.setInt8(m,g)}return function(t,n,i,e,r,s,o,u){var a=i,h=s,_=o-3|0;for(;!((_-h|0)<=0||a>=e);){var l=a;a=l+1|0;var f,c=zt(n,l);if(Ct(c)){var v;if(a!==e&&Et(zt(n,a))){var w=a;a=w+1|0,v=Ii(c,zt(n,w))}else v=63;f=v}else f=gt(c);var d,p=f,m=h,g=p;if(0<=g&&g<=127){var $=$t(p);t.g1g_1.setInt8(m,$),d=1}else if(128<=g&&g<=2047){var y=$t(192|p>>6&31);t.g1g_1.setInt8(m,y),O();var b=m+1|0,k=$t(128|63&p);t.g1g_1.setInt8(b,k),O(),d=2}else if(2048<=g&&g<=65535){var j=$t(224|p>>12&15);t.g1g_1.setInt8(m,j),O();var x=m+1|0,z=$t(128|p>>6&63);t.g1g_1.setInt8(x,z),O();var E=m+2|0,C=$t(128|63&p);t.g1g_1.setInt8(E,C),O(),d=3}else if(65536<=g&&g<=1114111){var S=$t(240|p>>18&7);t.g1g_1.setInt8(m,S),O();var q=m+1|0,I=$t(128|p>>12&63);t.g1g_1.setInt8(q,I),O();var A=m+2|0,T=$t(128|p>>6&63);t.g1g_1.setInt8(A,T),O();var D=m+3|0,M=$t(128|63&p);t.g1g_1.setInt8(D,M),O(),d=4}else Ci(p);h=h+d|0}return h===_?function(t,n,i,e,r,s,o,u){var a=i,h=s;t:for(;;){var _=o-h|0;if(_<=0||a>=e)break t;var l=a;a=l+1|0;var f,c=zt(n,l);if(Ct(c)){var v;if(a!==e&&Et(zt(n,a))){var w=a;a=w+1|0,v=Ii(c,zt(n,w))}else v=63;f=v}else f=gt(c);var d,p=f;if(1<=p&&p<=127?d=1:128<=p&&p<=2047?d=2:2048<=p&&p<=65535?d=3:65536<=p&&p<=1114111?d=4:Ci(p),d>_){a=a-1|0;break t}var m,g=h,$=p;if(0<=$&&$<=127){var y=$t(p);t.g1g_1.setInt8(g,y),m=1}else if(128<=$&&$<=2047){var b=$t(192|p>>6&31);t.g1g_1.setInt8(g,b),O();var k=g+1|0,j=$t(128|63&p);t.g1g_1.setInt8(k,j),O(),m=2}else if(2048<=$&&$<=65535){var x=$t(224|p>>12&15);t.g1g_1.setInt8(g,x),O();var z=g+1|0,E=$t(128|p>>6&63);t.g1g_1.setInt8(z,E),O();var C=g+2|0,S=$t(128|63&p);t.g1g_1.setInt8(C,S),O(),m=3}else if(65536<=$&&$<=1114111){var q=$t(240|p>>18&7);t.g1g_1.setInt8(g,q),O();var I=g+1|0,A=$t(128|p>>12&63);t.g1g_1.setInt8(I,A),O();var T=g+2|0,D=$t(128|p>>6&63);t.g1g_1.setInt8(T,D),O();var M=g+3|0,N=$t(128|63&p);t.g1g_1.setInt8(M,N),O(),m=4}else Ci(p);h=h+m|0}return yi(jt(kt(a-r|0)),jt(kt(h-u|0)))}(t,n,a,e,r,h,o,u):yi(jt(kt(a-r|0)),jt(kt(h-u|0)))}(t,n,c=c-1|0,h,i,f,l,r)}function Ii(t,n){return(gt(t)-55232|0)<<10|gt(n)-56320|0}function Ai(){return Ri(),c}function Ti(t,n){if(Ri(),n===t)return O();if(n.o1a_1>n.n1a_1){var i=n.r1a_1-n.q1a_1|0;xn(),i<8?t.z1i(n):t.y1b_1=n.n1a_1}else t.y1i(n)}function Di(t,n){return Ri(),t.w1i(n)}function Mi(t,n){return Ri(),n===t?t.s1c()?t:null:t.x1i(n)}function Ni(t,n,i){return Ri(),null!=i&&t.d1g(),t.c1i(n)}function Ri(){v||(v=!0,c=new Int8Array(0))}function Pi(t,n,i){M.call(this,i),this.g1k_1=t,this.h1k_1=n}function Li(t,n,i){M.call(this,i),this.u1j_1=t,this.v1j_1=n}function Fi(){this.v17_1=H(null)}function Ui(t,n,i,e){M.call(this,e),this.q1k_1=t,this.r1k_1=n,this.s1k_1=i}function Hi(t,n,i,e){M.call(this,e),this.f1l_1=t,this.g1l_1=n,this.h1l_1=i}function Vi(){Ne.call(this,128)}function Bi(){}function Yi(){}function Wi(t){return function(n){return t.d1m_1=null,null!=n&&(t.yo(function(t){for(var n=t;n instanceof G;){if(at(n,n.cause))return t;var i=n.cause;if(null==i)return n;n=i}return n}(n)),O()),O()}}function Gi(t,n){vn.call(this,t,n),this.d1m_1=null}function Ki(){var t=new Gi(gi().d1e_1,!1);return t.iy(null),t}function Ji(){p=this,this.o1l_1=It(Ki)}function Xi(){return null==p&&new Ji,p}function Zi(){}function Qi(){m=this}function te(){return null==m&&new Qi,m}function ne(t,n,i,e){return i=i===L?0:i,e=e===L?n.byteLength-i|0:e,new re(new DataView(n,i,e))}function ie(){g=this,this.d1j_1=new re(new DataView(new ArrayBuffer(0)))}function ee(){return null==g&&new ie,g}function re(t){ee(),this.g1g_1=t}function se(t,n,i,e,r){!function(t,n,i,e,r){var s=new Int8Array(t,i,e);new Int8Array(n.g1g_1.buffer,n.g1g_1.byteOffset+r|0,e).set(s,0)}(t.buffer,n,i+t.byteOffset|0,e,r)}function oe(){$=this}function ue(){return null==$&&new oe,$}function ae(t){ue(),this.g1j_1=t}function he(t){return t.g1j_1}function _e(){y=this,this.e1j_1=new we("UTF-8"),this.f1j_1=new we("ISO-8859-1")}function le(){return null==y&&new _e,y}function fe(t){Lt(this,t),J(this,fe)}function ce(t){this.g1m_1=t}function ve(t){this.h1m_1=t}function we(t){ae.call(this,t),this.j1m_1=t}function de(t){ve.call(this,t),this.l1m_1=t}function pe(t){ce.call(this,t),this.n1m_1=t}function me(t,n,i,e,r){if(!(i<=e))throw A(I("Failed requirement."));if($e(t).equals(le().f1j_1))return function(t,n,i,e){if(n>=i)return 0;var r=e.m1a_1,s=e.o1a_1,o=e.q1a_1,u=r.e1m(s,o-s|0).g1g_1,a=new Int8Array(u.buffer,u.byteOffset,u.byteLength),h=0,_=n;if(_255&&je(c);var v=h;h=v+1|0;var w=v,d=$t(c);a[w]=d}while(_0;){var a,h=e-o|0,_=u/6|0;a=Math.min(h,_);var l,f=pt(a,1),c=Ct(zt(n,(o+f|0)-1|0)),v=c&&1===f?o+2|0:c?(o+f|0)-1|0:o+f|0;l=I(Ft(n,o,v));var w=s.encode(l);if(w.length>u)break t;xe(r,w),o=v,u=u-w.length|0}return o-i|0}function ge(t){return t.g1m_1}function $e(t){return t.h1m_1}function ye(){return b}function be(t,n){this.q1m_1=t,this.r1m_1=n}function ke(t,n,i){if(0===i)return new be("",0);try{var e=mt(i,t.byteLength),r=n.s1m(t.subarray(0,e));if(r.length<=i)return new be(r,e)}catch(t){}return function(t,n,i){for(var e=mt(i>=268435455?ht().MAX_VALUE:S(i,8),t.byteLength);e>8;){try{var r=n.s1m(t.subarray(0,e));if(r.length<=i)return new be(r,e)}catch(t){}e=e/2|0}for(e=8;e>0;){try{var s=n.s1m(t.subarray(0,e));if(s.length<=i)return new be(s,e)}catch(t){}e=e-1|0}t:try{n.s1m(t);break t}catch(t){if(t instanceof Error){var o=t.message;throw new fe("Failed to decode bytes: "+(null==o?"no cause provided":o))}throw t}throw new fe("Unable to decode buffer")}(t,n,i)}function je(t){throw new fe("The character with unicode point "+t+" couldn't be mapped to ISO-8859-1 character")}function xe(t,n,i,e){i=i===L?0:i,e=e===L?n.byteLength-i|0:e;var r=t.m1a_1,s=t.o1a_1;if((t.q1a_1-s|0)=0))throw A(I("Failed requirement."));if(this.hj_1=1,(t=this.y1d_1.a1e(this.z1d_1,this))===N())return t;continue t;case 1:this.y1d_1.r1c();var n=this.y1d_1.p18();if(null!=n)throw n;return!this.y1d_1.f19()&&this.y1d_1.d19()>=this.z1d_1;case 2:throw this.kj_1}}catch(t){var i=t;if(2===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},R(vn).g1e=function(){return this.g17_1},R(vn).q18=function(){return!(null==this.m17_1.kotlinx$atomicfu$value)},R(vn).d19=function(){return this.k17_1.kotlinx$atomicfu$value},R(vn).e19=function(){var t=4088-this.l17_1.kotlinx$atomicfu$value|0;return Math.max(0,t)},R(vn).f19=function(){return!(t=this,n=t.m17_1.kotlinx$atomicfu$value,null==(null==n?null:n.u17_1)&&(!this.q18()||0!==this.l17_1.kotlinx$atomicfu$value));var t,n},R(vn).p18=function(){var t=this.m17_1.kotlinx$atomicfu$value;return null==t?null:t.u17_1},R(vn).l1a=function(t,n){var i=new rn(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).a1e=function(t,n){var i=new sn(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).h1e=function(){Zt(this)},R(vn).r1c=function(){this.s17_1,function(t,n){Ri();var i=n.g(),e=n.n18();if(null==e)return 0;var r=e;i<=Ee()&&null==r.q1h()&&t.s1i(r)?n.d1i():t.r1i(r)}(this.o17_1,this.t17_1)},R(vn).i1e=function(t,n){var i=new on(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).j1e=function(t,n,i,e){var r=new un(this,t,n,i,e);return r.jj_1=O(),r.kj_1=null,r.qj()},R(vn).e1c=function(t){(function(t,n){var i,e;if(!(n>=0))throw A(I("Can't read negative amount of bytes: "+n));if(t.l17_1.atomicfu$getAndAdd(0|-n),t.i17_1.atomicfu$addAndGet$long(T(n)),t.k17_1.atomicfu$getAndAdd(0|-n),!(t.l17_1.kotlinx$atomicfu$value>=0))throw i="Readable bytes count is negative: "+t.d19()+", "+n+" in "+t,D(I(i));if(!(t.d19()>=0))throw e="Readable bytes count is negative: "+t.d19()+", "+n+" in "+t,D(I(e))})(this,t),this.r17_1.w17()},R(vn).k1e=function(t,n){var i=new an(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).m1e=function(t,n){return this.n1e(t instanceof zn?t:Y(),n)},R(vn).n1e=function(t,n){var i=new _n(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).o1e=function(t,n,i,e){var r=new ln(this,t,n,i,e);return r.jj_1=O(),r.kj_1=null,r.qj()},R(vn).p1e=function(t){var n=new fn(this,t);return n.jj_1=O(),n.kj_1=null,n.qj()},R(vn).g1c=function(t,n){var i=new cn(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).yo=function(t){if(null!=this.p18()||this.q18())return!1;var n=t;return this.iy(null==n?W("Channel cancelled"):n)},R(vn).iy=function(t){var n=null==t?dn():new pn(t);return!!this.m17_1.atomicfu$compareAndSet(null,n)&&(null!=t?(this.o17_1.vq(),this.n17_1.vq(),this.t17_1.vq()):this.h1e(),this.r17_1.q1e(t),!0)},R(vn).r1e=function(t,n){var i,e=this.o17_1.c1c();return e.w(n)<=0?(t.n17_1.s1e(this.o17_1),t.s1a(e.c8()),this.e1c(e.c8()),i=e):i=new U(0,0),i},R(vn).s1a=function(t){(function(t,n){var i;if(!(n>=0))throw A(I("Can't write negative amount of bytes: "+n));if(t.l17_1.atomicfu$getAndAdd(n),t.j17_1.atomicfu$addAndGet$long(T(n)),!(t.l17_1.kotlinx$atomicfu$value>=0))throw i="Readable bytes count is negative: "+t.l17_1.kotlinx$atomicfu$value+", "+n+" in "+t,D(I(i))})(this,t),this.q18()&&(this.n17_1.vq(),function(t){if(t.q18()){var n=t.p18();throw null==n?new wn("Channel "+t+" is already closed"):n}}(this)),(this.g1e()||0===this.e19())&&this.h1e()},R(gn).u1e=function(){return this.w1e_1},R(gn).bm=function(){return this.v1e_1.bm()},R(gn).pk=function(){return this.v1e_1.pk()},R(gn).r=function(){return this.v1e_1.r()},R(gn).cm=function(t){return this.v1e_1.cm(t)},R(gn).ul=function(t){this.v1e_1.ul(t)},R(gn).e6=function(t,n){return this.v1e_1.e6(t,n)},R(gn).y5=function(t){return this.v1e_1.y5(t)},R(gn).ml=function(){return this.v1e_1.ml()},R(gn).ql=function(t,n,i){return this.v1e_1.ql(t,n,i)},R(gn).pl=function(t){return this.v1e_1.pl(t)},R(gn).d6=function(t){return this.v1e_1.d6(t)},R(gn).f6=function(t){return this.v1e_1.f6(t)},R(gn).kl=function(){return this.v1e_1.kl()},R(gn).toString=function(){return"ChannelJob["+this.v1e_1+"]"},R($n).u1e=function(){return this.x1e_1},R($n).ok=function(){return this.y1e_1.ok()},R(yn).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(yn).ck=function(t,n){return this.n1f(null!=t&&st(t,Z)?t:Y(),n)},R(yn).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=3,this.h1f_1&&this.i1f_1.t1e(q(this.l1f_1.ok().y5(ot())));var n=new $n(this.l1f_1,this.i1f_1);if(this.m1f_1=st(n,Z)?n:Y(),this.ij_1=2,this.hj_1=1,(t=this.j1f_1(this.m1f_1,this))===N())return t;continue t;case 1:this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof Error){var i=this.kj_1;if(!at(this.k1f_1,ut().ar_1)&&null!=this.k1f_1)throw i;this.i1f_1.yo(i),this.hj_1=4;continue t}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,O()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},R(yn).o1f=function(t,n){var i=new yn(this.h1f_1,this.i1f_1,this.j1f_1,this.k1f_1,n);return i.l1f_1=t,i},R(jn).f1g=function(){return gi().d1e_1},R(zn).h1g=function(t){if(0===t)return O();var n=this.n1a_1+t|0;(t<0||n>this.o1a_1)&&En(t,this.o1a_1-this.n1a_1|0),this.n1a_1=n},R(zn).i1g=function(t){var n=this.o1a_1+t|0;(t<0||n>this.q1a_1)&&Cn(t,this.q1a_1-this.o1a_1|0),this.o1a_1=n},R(zn).j1g=function(t){var n=this.q1a_1;if(t=n){if(t===n)return this.o1a_1=t,!1;Cn(t-this.o1a_1|0,this.q1a_1-this.o1a_1|0)}return this.o1a_1=t,!0},R(zn).k1g=function(t){(t<0||t>this.o1a_1)&&En(t-this.n1a_1|0,this.o1a_1-this.n1a_1|0),this.n1a_1!==t&&(this.n1a_1=t)},R(zn).l1g=function(t){var n=this.n1a_1-t|0;n=0))throw A(I("startGap shouldn't be negative: "+t));return this.n1a_1>=t?(this.p1a_1=t,O()):this.n1a_1===this.o1a_1?(t>this.q1a_1&&function(t,n){if(n>t.r1a_1)throw A("Start gap "+n+" is bigger than the capacity "+t.r1a_1);var i;throw i=t.r1a_1-t.q1a_1|0,D("Unable to reserve "+n+" start gap: there are already "+i+" bytes reserved in the end")}(this,t),this.o1a_1=t,this.n1a_1=t,this.p1a_1=t,O()):void function(t,n){var i,e="Unable to reserve "+n+" start gap: ";throw i=t.o1a_1-t.n1a_1|0,D(e+"there are already "+i+" content bytes starting at offset "+t.n1a_1)}(this,t)},R(zn).n1g=function(t){if(!(t>=0))throw A(I("endGap shouldn't be negative: "+t));var n=this.r1a_1-t|0;return n>=this.o1a_1?(this.q1a_1=n,O()):(n<0&&function(t,n){throw A("End gap "+n+" is too big: capacity is "+t.r1a_1)}(this,t),n=0))throw A(I("newReadPosition shouldn't be negative: "+t));if(!(t<=this.n1a_1))throw n="newReadPosition shouldn't be ahead of the read position: "+t+" > "+this.n1a_1,A(I(n));this.n1a_1=t,this.p1a_1>t&&(this.p1a_1=t)},R(zn).u1g=function(t){t.q1a_1=this.q1a_1,t.p1a_1=this.p1a_1,t.n1a_1=this.n1a_1,t.o1a_1=this.o1a_1},R(zn).v1g=function(){var t=this.n1a_1;if(t===this.o1a_1)throw new Ce("No readable bytes available.");return this.n1a_1=t+1|0,this.m1a_1.g1g_1.getInt8(t)},R(zn).w1g=function(t){var n=this.o1a_1;if(n===this.q1a_1)throw new qn("No free space in the buffer to write a byte");this.m1a_1.g1g_1.setInt8(n,t),O(),this.o1a_1=n+1|0},R(zn).x1g=function(){this.r1g(),this.p1g()},R(zn).toString=function(){return"Buffer("+(this.o1a_1-this.n1a_1|0)+" used, "+(this.q1a_1-this.o1a_1|0)+" free, "+(this.p1a_1+(this.r1a_1-this.q1a_1|0)|0)+" reserved of "+this.r1a_1+")"},R(An).e1h=function(){return new $i(this.d1h_1.f1h(this.c1h_1),null,this)},R(An).g1h=function(t){this.d1h_1.h1h(t.m1a_1),R(Ne).l1h.call(this,t),t.m1h()},R(An).l1h=function(t){return this.g1h(t instanceof $i?t:Y())},R(An).n1h=function(t){R(Ne).o1h.call(this,t);var n=t.m1a_1;if(!T(n.g1g_1.byteLength).equals(T(this.c1h_1))){var i,e,r=t.m1a_1;throw e=T(r.g1g_1.byteLength),i="Buffer size mismatch. Expected: "+this.c1h_1+", actual: "+I(e),D(I(i))}if(t===gi().d1e_1)throw D(I("ChunkBuffer.Empty couldn't be recycled"));if(t===xn().f1g())throw D(I("Empty instance couldn't be recycled"));if(0!==t.p1h())throw D(I("Unable to clear buffer: it is still in use."));if(null!=t.q1h())throw D(I("Recycled instance shouldn't be a part of a chain."));if(null!=t.z1f_1)throw D(I("Recycled instance shouldn't be a view or another buffer."))},R(An).o1h=function(t){return this.n1h(t instanceof $i?t:Y())},R(An).r1h=function(t){var n=R(Ne).s1h.call(this,t);return n.t1h(),n.x1g(),n},R(An).s1h=function(t){return this.r1h(t instanceof $i?t:Y())},R(Fn).g=function(){return this.w1h()},R(Fn).sr=function(){return 0===this.w1h()},R(Fn).x1h=function(){},R(Fn).y1h=function(t,n,i){},R(Fn).k7=function(t){var n=R(ui).k7.call(this,t);return n instanceof Fn?n:Y()},R(Fn).b=function(t){var n=R(ui).b.call(this,t);return n instanceof Fn?n:Y()},R(Fn).ig=function(t,n,i){var e=R(ui).ig.call(this,t,n,i);return e instanceof Fn?e:Y()},R(Fn).f1c=function(){var t=this.g(),n=this.n18();return null==n?Vn().z1h_1:new Bn(n,T(t),this.f18_1)},R(Fn).toString=function(){return"BytePacketBuilder("+this.g()+" bytes written)"},R(Bn).m1i=function(){return null},R(Bn).n1i=function(t,n,i){return 0},R(Bn).o1i=function(){},R(Bn).toString=function(){return"ByteReadPacket("+I(this.c1c())+" bytes remaining)"},R(ni).p1d=function(){return!(0!=(this.z1b_1-this.y1b_1|0)||!this.a1c_1.equals(new U(0,0))||!this.b1c_1&&null!=Jn(this))},R(ni).a1i=function(){var t=this.w1b_1;return t.k1g(this.y1b_1),t},R(ni).p1i=function(t){var n;if(!(t.w(new U(0,0))>=0))throw n="tailRemaining shouldn't be negative: "+I(t),A(I(n));this.a1c_1=t},R(ni).c1c=function(){var t;return t=this.z1b_1-this.y1b_1|0,T(t).o7(this.a1c_1)},R(ni).s1c=function(){return this.y1b_1!==this.z1b_1||!this.a1c_1.equals(new U(0,0))},R(ni).vq=function(){var t=this.a1i(),n=gi().d1e_1;t!==n&&(Yn(this,n),this.p1i(new U(0,0)),Ln(t,this.v1b_1))},R(ni).a14=function(){this.vq(),this.b1c_1||(this.b1c_1=!0),this.o1i()},R(ni).n18=function(){var t=this.a1i(),n=gi().d1e_1;return t===n?null:(Yn(this,n),this.p1i(new U(0,0)),t)},R(ni).q1i=function(){var t=this.a1i(),n=t.q1h(),i=gi().d1e_1;if(t===i)return null;if(null==n)Yn(this,i),this.p1i(new U(0,0));else{Yn(this,n);var e,r=this.a1c_1,s=n.o1a_1-n.n1a_1|0;e=r.p7(T(s)),this.p1i(e)}return t.c1j(null),t},R(ni).r1i=function(t){if(t===gi().d1e_1)return O();var n=Rn(t);if(this.w1b_1===gi().d1e_1){var i;Yn(this,t);var e=this.z1b_1-this.y1b_1|0;i=n.p7(T(e)),this.p1i(i)}else{Pn(this.w1b_1).c1j(t);this.p1i(this.a1c_1.o7(n))}},R(ni).s1i=function(t){var n=Pn(this.a1i()),i=t.o1a_1-t.n1a_1|0;if(0===i||(n.q1a_1-n.o1a_1|0)=0))throw A(I("Negative discard is not allowed: "+t));return function(t,n,i){for(var e=n,r=i;;){if(0===e)return r;var s=t.a1j(1);if(null==s)return r;var o=s,u=o.o1a_1-o.n1a_1|0,a=e,h=Math.min(u,a);o.h1g(h);var _=t;_.y1b_1=_.y1b_1+h|0,Qn(t,o),e=e-h|0,r=r+h|0}}(this,t,0)},R(ni).h1g=function(t){if(this.t1i(t)!==t)throw new Ce("Unable to discard "+t+" bytes due to end of packet")},R(ni).u1i=function(t,n){if(0===t&&(0===n||this.p1d()))return"";var i=this.c1c();if(i.w(new U(0,0))>0&&T(n).w(i)>=0)return fi(this,i.c8());var e=mt(pt(t,16),n),r=_t(e);return Wn(this,r,t,n),r.toString()},R(ni).v1i=function(t,n,i){return t=t===L?0:t,n=n===L?ht().MAX_VALUE:n,i===L?this.u1i(t,n):i.u1i.call(this,t,n)},R(ni).w1i=function(t){return Xn(this,t,this.a1i())},R(ni).x1i=function(t){return this.y1i(t)},R(ni).y1i=function(t){return function(t,n,i){for(var e=t,r=n,s=i;;){if(r===s)return Jn(e);var o=r.v1h();if(r.c1g(e.v1b_1),null!=o){if(o.o1a_1>o.n1a_1){Yn(e,o);var u,a=e,h=a.a1c_1,_=o.o1a_1-o.n1a_1|0;return u=h.p7(T(_)),a.p1i(u),o}r=o}else Yn(e,s),e.p1i(new U(0,0)),r=s}}(this,t,gi().d1e_1)},R(ni).z1i=function(t){var n=t.q1h();if(null==n)return Kn(this,t);var i=n,e=t.o1a_1-t.n1a_1|0;xn();var r,s,o=8-(t.r1a_1-t.q1a_1|0)|0,u=Math.min(e,o);if(i.p1a_1u){t.t1g(),this.z1b_1=t.o1a_1;var a;a=this.a1c_1.o7(T(u)),this.p1i(a)}else{Yn(this,i);var h,_=this.a1c_1,l=(i.o1a_1-i.n1a_1|0)-u|0;h=_.p7(T(l)),this.p1i(h),t.v1h(),t.c1g(this.v1b_1)}},R(ni).m1i=function(){var t=this.v1b_1.p1f();try{xn(),t.n1g(8);var n,i=t.o1a_1;n=t.q1a_1-t.o1a_1|0;var e=this.n1i(t.m1a_1,i,n);return 0!==e||(this.b1c_1=!0,t.o1a_1>t.n1a_1)?(t.i1g(e),t):(t.c1g(this.v1b_1),null)}catch(n){if(n instanceof Error){var r=n;throw t.c1g(this.v1b_1),r}throw n}},R(ni).e1i=function(){this.b1c_1||(this.b1c_1=!0)},R(ni).a1j=function(t){var n=this.a1i();return(this.z1b_1-this.y1b_1|0)>=t?n:Xn(this,t,n)},R(ni).b1j=function(t){var n=t.v1h(),i=null==n?gi().d1e_1:n;Yn(this,i);var e,r=this.a1c_1,s=i.o1a_1-i.n1a_1|0;return e=r.p7(T(s)),this.p1i(e),t.c1g(this.v1b_1),i},R(ui).w1h=function(){return this.m18_1+(this.j18_1-this.l18_1|0)|0},R(ui).a1i=function(){var t=this.g18_1;return null==t?gi().d1e_1:t},R(ui).h1e=function(){!function(t){var n=t.n18();if(null==n)return O();var i=n;try{var e=i;t:for(;;){var r,s=e,o=s.n1a_1;r=s.o1a_1-s.n1a_1|0,t.y1h(s.m1a_1,o,r);var u=e.q1h();if(null==u)break t;e=u}}finally{Ln(i,t.f18_1)}}(this)},R(ui).n18=function(){var t=this.g18_1;if(null==t)return null;var n=t,i=this.h18_1;return null==i||i.j1g(this.j18_1),this.g18_1=null,this.h18_1=null,this.j18_1=0,this.k18_1=0,this.l18_1=0,this.m18_1=0,this.i18_1=ee().d1j_1,n},R(ui).b1g=function(t){if(null!=t.q1h())throw D(I("It should be a single buffer chunk."));si(this,t,t,0)},R(ui).b1i=function(t){var n=Pn(t),i=Rn(t),e=n.o1a_1-n.n1a_1|0,r=i.p7(T(e));r.w(T(ht().MAX_VALUE))>=0&&function(t,n){throw A("Long value "+I(t)+" of "+n+" doesn't fit into 32-bit integer")}(r,"total size increase"),si(this,t,n,r.c8())},R(ui).w1g=function(t){var n=this.j18_1;return n=3){var i,e=this.i18_1,r=gt(t),s=r;if(0<=s&&s<=127){var o=$t(r);e.g1g_1.setInt8(n,o),i=1}else if(128<=s&&s<=2047){var u=$t(192|r>>6&31);e.g1g_1.setInt8(n,u),O();var a=n+1|0,h=$t(128|63&r);e.g1g_1.setInt8(a,h),O(),i=2}else if(2048<=s&&s<=65535){var _=$t(224|r>>12&15);e.g1g_1.setInt8(n,_),O();var l=n+1|0,f=$t(128|r>>6&63);e.g1g_1.setInt8(l,f),O();var c=n+2|0,v=$t(128|63&r);e.g1g_1.setInt8(c,v),O(),i=3}else if(65536<=s&&s<=1114111){var w=$t(240|r>>18&7);e.g1g_1.setInt8(n,w),O();var d=n+1|0,p=$t(128|r>>12&63);e.g1g_1.setInt8(d,p),O();var m=n+2|0,g=$t(128|r>>6&63);e.g1g_1.setInt8(m,g),O();var $=n+3|0,y=$t(128|63&r);e.g1g_1.setInt8($,y),O(),i=4}else Ci(r);var b=i;return this.j18_1=n+b|0,this}return function(t,n){t:{var i=t.c1i(3);try{var e,r=i.m1a_1,s=i.o1a_1,o=gt(n),u=o;if(0<=u&&u<=127){var a=$t(o);r.g1g_1.setInt8(s,a),e=1}else if(128<=u&&u<=2047){var h=$t(192|o>>6&31);r.g1g_1.setInt8(s,h),O();var _=s+1|0,l=$t(128|63&o);r.g1g_1.setInt8(_,l),O(),e=2}else if(2048<=u&&u<=65535){var f=$t(224|o>>12&15);r.g1g_1.setInt8(s,f),O();var c=s+1|0,v=$t(128|o>>6&63);r.g1g_1.setInt8(c,v),O();var w=s+2|0,d=$t(128|63&o);r.g1g_1.setInt8(w,d),O(),e=3}else if(65536<=u&&u<=1114111){var p=$t(240|o>>18&7);r.g1g_1.setInt8(s,p),O();var m=s+1|0,g=$t(128|o>>12&63);r.g1g_1.setInt8(m,g),O();var $=s+2|0,y=$t(128|o>>6&63);r.g1g_1.setInt8($,y),O();var b=s+3|0,k=$t(128|63&o);r.g1g_1.setInt8(b,k),O(),e=4}else Ci(o);var j=e;if(i.i1g(j),!(j>=0))throw D(I("The returned value shouldn't be negative"));break t}finally{t.d1g()}}}(this,t),this},R(ui).b=function(t){return null==t?this.ig("null",0,4):this.ig(t,0,lt(t)),this},R(ui).ig=function(t,n,i){return null==t?this.ig("null",n,i):(ci(this,t,n,i,le().e1j_1),this)},R(ui).s1e=function(t){var n=t.n18();if(null==n)return t.vq(),O();var i=this.h18_1;if(null==i)return this.b1i(n),O();oi(this,i,n,t.v1b_1)},R(ui).o18=function(t){var n=this.h18_1;if(null==n)return this.b1i(t),O();oi(this,n,t,this.f18_1)},R(ui).d1c=function(t,n){var i=n;t:for(;i.w(new U(0,0))>0;){var e;e=t.z1b_1-t.y1b_1|0;var r=T(e);if(!(r.w(i)<=0)){var s,o=t.a1j(1);null==o?li(1):s=o;var u=s,a=u.n1a_1;try{ai(this,u,i.c8())}finally{var h=u.n1a_1;if(h=t){var n=this.h18_1;if(null!=n)return n.j1g(this.j18_1),n}return ri(this)},R(ui).d1g=function(){var t=this.h18_1;null==t||(this.j18_1=t.o1a_1,O())},R(ui).d1i=function(){var t=this.a1i();if(t!==gi().d1e_1){if(null!=t.q1h())throw D(I("Check failed."));t.p1g(),xn(),t.n1g(8),this.j18_1=t.o1a_1,this.l18_1=this.j18_1,this.k18_1=t.q1a_1}},R(vi).p1f=function(){return In().p1f()},R(vi).j1j=function(t){In().u1h(t)},R(vi).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R(vi).eo=function(){In().eo()},R(wi).p1f=function(){return gi().d1e_1},R(wi).j1j=function(t){if(t!==gi().d1e_1)throw A(I("Only ChunkBuffer.Empty instance could be recycled."))},R(wi).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R(wi).eo=function(){},R(di).p1f=function(){return new $i(te().f1h(a),null,this)},R(di).j1j=function(t){te().h1h(t.m1a_1)},R(di).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R(pi).p1f=function(){throw bt("This pool doesn't support borrow")},R(pi).j1j=function(t){},R(pi).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R($i).c1j=function(t){null==t?this.v1h():function(t,n){if(!t.x1f_1.atomicfu$compareAndSet(null,n))throw D("This chunk has already a next chunk.")}(this,t)},R($i).q1h=function(){return this.x1f_1.kotlinx$atomicfu$value},R($i).p1h=function(){return this.y1f_1.kotlinx$atomicfu$value},R($i).v1h=function(){return this.x1f_1.atomicfu$getAndSet(null)},R($i).a1g=function(){var t=this.z1f_1,n=null==t?this:t;n.k1j();var i=new $i(this.m1a_1,n,this.w1f_1);return this.u1g(i),i},R($i).c1g=function(t){if(this.l1j()){var n=this.z1f_1;if(null!=n)this.m1h(),n.c1g(t);else{var i=this.w1f_1;(null==i?t:i).u1h(this)}}},R($i).m1h=function(){if(!this.y1f_1.atomicfu$compareAndSet(0,-1))throw D("Unable to unlink: buffer is in use.");this.v1h(),this.z1f_1=null},R($i).k1j=function(){t:for(var t=this.y1f_1;;){var n=t.kotlinx$atomicfu$value;if(n<=0)throw D("Unable to acquire chunk: it is already released.");var i=n+1|0;if(t.atomicfu$compareAndSet(n,i)){O();break t}}},R($i).t1h=function(){t:for(var t=this.y1f_1;;){var n=t.kotlinx$atomicfu$value;if(n<0)throw D("This instance is already disposed and couldn't be borrowed.");if(n>0)throw D("This instance is already in use but somehow appeared in the pool.");if(t.atomicfu$compareAndSet(n,1)){O();break t}}},R($i).l1j=function(){var t;t:for(var n=this.y1f_1;;){var i=n.kotlinx$atomicfu$value;if(i<=0)throw D("Unable to release: it is already released.");var e=i-1|0;if(n.atomicfu$compareAndSet(i,e)){t=e;break t}}return 0===t},R($i).x1g=function(){if(null!=this.z1f_1)throw A(I("Unable to reset buffer with origin"));R(zn).x1g.call(this),this.x1f_1.kotlinx$atomicfu$value=null},R(Pi).qj=function(){var t,n,i,e=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,t=this.g1k_1,n=this.h1k_1,i=void 0,(i=new Li(t,n,this)).jj_1=O(),i.kj_1=null,(e=i.qj())===N())return e;continue t;case 1:if(e)return O();this.hj_1=2;continue t;case 2:return this.g1k_1.w17(),O();case 3:throw this.kj_1}}catch(t){var r=t;if(3===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},R(Li).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.w1j_1=!1,this.x1j_1=St(),this.u1j_1.v17_1.atomicfu$compareAndSet(null,this.x1j_1)&&this.v1j_1()){if(this.w1j_1=!0,this.hj_1=1,(t=this.x1j_1.pq(this))===N())return t;continue t}this.hj_1=2;continue t;case 1:this.hj_1=2;continue t;case 2:return this.w1j_1;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},R(Fi).q19=function(t,n){var i=new Pi(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(Fi).w17=function(){var t=this.v17_1.atomicfu$getAndSet(null);null==t||t.oq()},R(Fi).q1e=function(t){var n=this.v17_1.atomicfu$getAndSet(null);if(null==n)return O();var i=n;null!=t?i.nq(t):i.oq()},R(Ui).qj=function(){var t,n,i,e,r=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=10,this.q1k_1===this.r1k_1)throw A(I("Failed requirement."));if(null!=this.q1k_1.p18())return this.r1k_1.iy(this.q1k_1.p18()),new U(0,0);this.t1k_1=this.s1k_1,this.hj_1=1;continue t;case 1:if(!(this.t1k_1.w(new U(0,0))>0)){this.hj_1=9;continue t}if(this.hj_1=2,(r=this.q1k_1.p1e(this))===N())return r;continue t;case 2:if(this.u1k_1=r,this.u1k_1){this.hj_1=3;continue t}this.hj_1=9;continue t;case 3:if(this.v1k_1=this.q1k_1.r1e(this.r1k_1,this.t1k_1),this.v1k_1.equals(new U(0,0))){if(this.hj_1=6,t=this.q1k_1,n=this.r1k_1,i=this.t1k_1,e=void 0,(e=new Hi(t,n,i,this)).jj_1=O(),e.kj_1=null,(r=e.qj())===N())return r;continue t}if(0===this.r1k_1.e19()){if(this.hj_1=4,(r=this.r1k_1.l1a(1,this))===N())return r;continue t}this.hj_1=5;continue t;case 4:this.hj_1=5;continue t;case 5:this.w1k_1=this.v1k_1,this.hj_1=8;continue t;case 6:var s=r;if(s.equals(new U(0,0))){this.hj_1=9;continue t}this.hj_1=7;continue t;case 7:this.w1k_1=s,this.hj_1=8;continue t;case 8:var o=this.w1k_1;this.t1k_1=this.t1k_1.p7(o),o.w(new U(0,0))>0&&this.r1k_1.h1e(),this.hj_1=1;continue t;case 9:return this.s1k_1.p7(this.t1k_1);case 10:throw this.kj_1}}catch(t){var u=t;if(10===this.ij_1)throw u;this.hj_1=this.ij_1,this.kj_1=u}},R(Hi).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=9,this.i1l_1=gi().b1e_1.p1f(),this.hj_1=1;continue t;case 1:this.hj_1=2;continue t;case 2:if(this.ij_1=8,this.i1l_1.q1g(qt(this.h1l_1,T(this.i1l_1.r1a_1)).c8()),this.hj_1=3,(t=this.f1l_1.m1e(this.i1l_1,this))===N())return t;continue t;case 3:if(this.k1l_1=t,-1===this.k1l_1){this.i1l_1.c1g(gi().b1e_1),this.j1l_1=new U(0,0),this.ij_1=9,this.hj_1=6;continue t}this.hj_1=4;continue t;case 4:if(this.hj_1=5,(t=this.g1l_1.i1e(this.i1l_1,this))===N())return t;continue t;case 5:this.j1l_1=T(this.k1l_1),this.ij_1=9,this.hj_1=6;continue t;case 6:var n=this.j1l_1;return this.i1l_1.c1g(gi().b1e_1),n;case 7:return this.i1l_1.c1g(gi().b1e_1),O();case 8:this.ij_1=9;var i=this.kj_1;throw this.i1l_1.c1g(gi().b1e_1),i;case 9:throw this.kj_1}}catch(t){var e=t;if(9===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},R(Vi).e1h=function(){return new Int8Array(4096)},R(Yi).u1h=function(t){},R(Yi).eo=function(){},R(Gi).t1e=function(t){var n=this.d1m_1;null==n||n.vl(),this.d1m_1=t,t.rl(!0,L,Wi(this))},R(Gi).toString=function(){return"ByteChannel["+this.d1m_1+", "+Ot(this)+"]"},R(Ji).f1g=function(){return Dt("Empty",1,Tt,(function(t){return t.f1g()}),null),this.o1l_1.s()},R(Qi).f1h=function(t){return new re(new DataView(new ArrayBuffer(t)))},R(Qi).h1h=function(t){},R(re).e1m=function(t,n){if(!(t>=0))throw A(I("offset shouldn't be negative: "+t));if(!(n>=0))throw A(I("length shouldn't be negative: "+n));var i,e,r=T(t+n|0);if(i=T(this.g1g_1.byteLength),r.w(i)>0)throw e=T(this.g1g_1.byteLength),Mt("offset + length > size: "+t+" + "+n+" > "+I(e));return new re(new DataView(this.g1g_1.buffer,this.g1g_1.byteOffset+t|0,n))},R(re).y1g=function(t,n,i,e){var r=new Int8Array(this.g1g_1.buffer,this.g1g_1.byteOffset+n|0,i);new Int8Array(t.g1g_1.buffer,t.g1g_1.byteOffset+e|0,i).set(r)},R(oe).f1m=function(t){switch(t){case"UTF-8":case"utf-8":case"UTF8":case"utf8":return le().e1j_1}var n;switch(t){case"ISO-8859-1":case"iso-8859-1":n=!0;break;default:var i=Rt(t,Nt(95),Nt(45));n="iso-8859-1"===i||"iso-8859-1"===i.toLowerCase()}if(n||"latin1"===t||"Latin1"===t)return le().f1j_1;throw A("Charset "+t+" is not supported")},R(ae).equals=function(t){return this===t||null!=t&&this.constructor==t.constructor&&(t instanceof ae||Y(),this.g1j_1===t.g1j_1)},R(ae).hashCode=function(){return Pt(this.g1j_1)},R(ae).toString=function(){return this.g1j_1},R(we).i1j=function(){return new de(this)},R(we).h1j=function(){return new pe(this)},R(we).toString=function(){return"CharsetImpl(name="+this.j1m_1+")"},R(we).hashCode=function(){return Pt(this.j1m_1)},R(we).equals=function(t){if(this===t)return!0;if(!(t instanceof we))return!1;var n=t instanceof we?t:Y();return this.j1m_1===n.j1m_1},R(de).toString=function(){return"CharsetEncoderImpl(charset="+this.l1m_1+")"},R(de).hashCode=function(){return this.l1m_1.hashCode()},R(de).equals=function(t){if(this===t)return!0;if(!(t instanceof de))return!1;var n=t instanceof de?t:Y();return!!this.l1m_1.equals(n.l1m_1)},R(pe).toString=function(){return"CharsetDecoderImpl(charset="+this.n1m_1+")"},R(pe).hashCode=function(){return this.n1m_1.hashCode()},R(pe).equals=function(t){if(this===t)return!0;if(!(t instanceof pe))return!1;var n=t instanceof pe?t:Y();return!!this.n1m_1.equals(n.n1m_1)},R(be).toString=function(){return"DecodeBufferResult(charactersDecoded="+this.q1m_1+", bytesConsumed="+this.r1m_1+")"},R(be).hashCode=function(){var t=Pt(this.q1m_1);return S(t,31)+this.r1m_1|0},R(be).equals=function(t){if(this===t)return!0;if(!(t instanceof be))return!1;var n=t instanceof be?t:Y();return this.q1m_1===n.q1m_1&&this.r1m_1===n.r1m_1},R(Ae).p1m=function(){return this.t1m_1.decode()},R(Ae).s1m=function(t){return this.t1m_1.decode(t)},R(Ae).o1m=function(t,n){return this.t1m_1.decode(t,n)},R(Te).p1m=function(){return""},R(Te).s1m=function(t){var n;t:{var i=new Fn;try{var e=t instanceof Int8Array?t:Y(),r=0,s=e.length;if(r255&&i.w1g($t(u>>8)),i.w1g($t(255&u))}while(r=(e=e===L?lt(n):e))return Ai();var s=gi().b1e_1.p1f();try{var o;if((r=r+me(t,n,r,e,s)|0)===e){var u;u=s.o1a_1-s.n1a_1|0;var a=new Int8Array(u),h=a.length-0|0;return Mn(s instanceof zn?s:Y(),a,0,h),a}t:{var _=new Fn;try{_.b1g(s.a1g()),kn(t,_,n,r,e),o=_.f1c();break t}catch(t){if(t instanceof Error){var l=t;throw _.vq(),l}throw t}}return _i(o)}finally{s.c1g(gi().b1e_1)}}(t,n,i=i===L?0:i,e=e===L?lt(n):e)},t.$_$.k=function(t,n,i,e){var r;i=i===L?0:i,e=e===L?lt(n):e;t:{var s=new Fn;try{kn(t,s,n,i,e),r=s.f1c();break t}catch(t){if(t instanceof Error){var o=t;throw s.vq(),o}throw t}}return r},t.$_$.l=he,t.$_$.m=Ti,t.$_$.n=Di,t.$_$.o=Mi,t.$_$.p=Fn,t.$_$.q=Bn,t.$_$.r=ze,t.$_$.s=ni,t.$_$.t=function(t,n,i,e){n=n===L?0:n,i=i===L?t.length:i,e=e===L?le().e1j_1:e,(n<0||i<0||(n+i|0)>t.length)&&function(t,n,i){if(!(t>=0))throw Mt("offset ("+t+") shouldn't be negative");if(!(n>=0))throw Mt("length ("+n+") shouldn't be negative");if(!((t+n|0)<=i.length))throw Mt("offset ("+t+") + length ("+n+") > bytes.size ("+i.length+")");throw Ut()}(n,i,t);var r=t,s=r.byteOffset+n|0,o=r.buffer.slice(s,s+i|0),u=new $i(ne(ee(),o),null,gi().e1e_1);u.o1g();var a=Un(u,gi().f1e_1);return bn(e.h1j(),a,ht().MAX_VALUE)},t.$_$.u=function(t,n){},t.$_$.v=_i,t.$_$.w=function(t){var n;if((t.z1b_1-t.y1b_1|0)>2){var i=t.y1b_1;t.y1b_1=i+2|0,n=t.x1b_1.g1g_1.getInt16(i,!1)}else n=function(t){var n,i=Di(t,2);null==i?li(2):n=i;var e=n,r=function(t){var n,i=t.m1a_1,e=t.n1a_1;if((t.o1a_1-e|0)<2)throw new Ce("Not enough bytes to read a short integer of size 2.");return n=i.g1g_1.getInt16(e,!1),t.h1g(2),n}(e);return Ti(t,e),r}(t);return n},t.$_$.x=function(t,n,i){return n=n===L?le().e1j_1:n,i=i===L?ht().MAX_VALUE:i,bn(n.h1j(),t,i)},t.$_$.y=hi,t.$_$.z=function(t,n){var i,e=t.j18_1;(t.k18_1-e|0)>2?(t.j18_1=e+2|0,t.i18_1.g1g_1.setInt16(e,n,!1),i=!0):i=!1,i||function(t,n){(function(t,n){var i=t.m1a_1,e=t.o1a_1,r=t.q1a_1-e|0;if(r<2)throw Sn("short integer",2,r);i.g1g_1.setInt16(e,n,!1),t.i1g(2),O()})(t.c1i(2),n),t.d1g()}(t,n)},t.$_$.a1=ci,t.$_$.b1=qe,t.$_$.c1=function(){return d||(d=!0,w=new Vi),w},t.$_$.d1=function(t){return function(t,n,i){if(0===t.length)return Xi().f1g();var e=gi().b1e_1.p1f(),r=e,s=n,o=s+i|0;t:for(;;){r.n1g(8);var u=o-s|0,a=r,h=a.q1a_1-a.o1a_1|0,_=Math.min(u,h);if(Tn(r instanceof zn?r:Y(),t,s,_),(s=s+_|0)===o)break t;var l=r;r=gi().b1e_1.p1f(),l.c1j(r)}var f=new Gi(e,!1);return c=f,c.iy(null),f;var c}(t,0,t.length)},t.$_$.e1=Zi,t.$_$.f1=mn,t.$_$.g1=function(t){return t.yo(null)},t.$_$.h1=function(t,n,i,e){return function(t,n,i,e,r){var s=t.ok().y5(et()),o=rt(t,n,L,(u=e,a=i,h=r,_=s,l=null,f=new yn(u,a,h,_,l),c=function(t,n){return f.n1f(t,n)},c.$arity=1,c));var u,a,h,_,l,f,c;return o.pl(function(t){return function(n){return t.iy(n),O()}}(i)),new gn(o,i)}(t,n=n===L?X():n,function(t){return t=t!==L&&t,new Gi(gi().d1e_1,t)}(i=i!==L&&i),!0,e)},t})?e.apply(n,r):e)||(t.exports=s)},781:function(t,n,i){var e,r,s;r=[n,i(744),i(538),i(646),i(868)],void 0===(s="function"==typeof(e=function(t,n,i,e,r){"use strict";var s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T=Math.imul,D=n.$_$.j9,M=n.$_$.u4,N=n.$_$.v1,R=n.$_$.ta,P=n.$_$.c,L=n.$_$.hf,F=n.$_$.t9,U=n.$_$.l9,H=n.$_$.ng,V=n.$_$.ua,B=n.$_$.v9,Y=n.$_$.z8,W=n.$_$.l8,G=i.$_$.v,K=n.$_$.u,J=n.$_$.ha,X=n.$_$.o9,Z=n.$_$.u9,Q=n.$_$.h5,tt=n.$_$.xf,nt=n.$_$.d5,it=n.$_$.ea,et=n.$_$.g5,rt=n.$_$.h9,st=n.$_$.i9,ot=n.$_$.u2,ut=n.$_$.qe,at=e.$_$.d1,ht=n.$_$.o8,_t=e.$_$.i,lt=n.$_$.v8,ft=n.$_$.u8,ct=n.$_$.w8,vt=n.$_$.y8,wt=n.$_$.x8,dt=n.$_$.q5,pt=n.$_$.k,mt=n.$_$.j5,gt=n.$_$.ya,$t=n.$_$.i5,yt=n.$_$.o6,bt=n.$_$.l,kt=n.$_$.t,jt=n.$_$.j6,xt=n.$_$.lg,zt=n.$_$.k5,Et=n.$_$.d1,Ct=n.$_$.cd,St=n.$_$.m2,qt=n.$_$.r2,Ot=n.$_$.rc,It=r.$_$.c,At=n.$_$.af,Tt=n.$_$.sa,Dt=n.$_$.re,Mt=n.$_$.ue,Nt=n.$_$.ja,Rt=n.$_$.f5,Pt=n.$_$.ra,Lt=n.$_$.w4,Ft=n.$_$.i6,Ut=n.$_$.z6,Ht=n.$_$.c7,Vt=n.$_$.h7,Bt=e.$_$.y,Yt=n.$_$.p9,Wt=n.$_$.f9,Gt=e.$_$.r,Kt=n.$_$.p4,Jt=n.$_$.v2,Xt=n.$_$.wf,Zt=n.$_$.w2,Qt=n.$_$.x2,tn=n.$_$.i4,nn=n.$_$.t8,en=n.$_$.q9,rn=n.$_$.n8,sn=n.$_$.a8,on=n.$_$.bg,un=n.$_$.pa,an=n.$_$.ye,hn=n.$_$.u1;function _n(t){this.v1m_1=t;var n=this.v1m_1;if(0===D(n))throw N("Name can't be blank")}function ln(){}function fn(t,n){Y.call(this,n),this.l1n_1=t}function cn(t){return t.m1n_1}function vn(t){return qn(t)}function wn(t){return new mn(t.r().m1n_1,t.s())}function dn(t){return new mn(qn(t.r()),t.s())}function pn(){var t;t=K(),this.o1n_1=t}function mn(t,n){this.u1n_1=t,this.v1n_1=n}function gn(){return new pn}function $n(){ht.call(this,_t())}function yn(t){this.z1n_1=t,this.y1n_1=t.a1o_1.d()}function bn(t,n,i){this.a1o_1=t,this.b1o_1=n,this.c1o_1=i,this.d1o_1=this.a1o_1.g()}function kn(){}function jn(t,n){var i,e=t.s1o_1.g2(n);if(null==e){var r=bt();t.t1o(n),t.s1o_1.f4(n,r),i=r}else i=e;return i}function xn(t,n){t=t!==H&&t,n=n===H?8:n,this.r1o_1=t,this.s1o_1=this.r1o_1?gn():kt(n)}function zn(t,n){return t.b1p_1.g2(n)}function En(t,n){t=t!==H&&t,n=n===H?jt():n,this.a1p_1=t;for(var i=this.a1p_1?gn():K(),e=n.q().d();e.e();){var r=e.f(),s=r.r(),o=r.s(),u=o.g(),a=pt(u),h=0;if(h=this.f1q_1.g()){this.d1q_1.m1q(),this.hj_1=5;continue t}this.hj_1=3;continue t;case 3:this.g1q_1=this.f1q_1.h(this.e1q_1),this.d1q_1.l1q_1=this.e1q_1+1|0,this.hj_1=4;var n=this.g1q_1;if((t=(Nt(n,2)?n:L())(this.d1q_1,this.d1q_1.k1q_1,this))===W())return t;continue t;case 4:this.hj_1=1;continue t;case 5:return this.d1q_1.k1q_1;case 6:throw this.kj_1}}catch(t){var i=t;if(6===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},R(Hn).ok=function(){return this.j1q_1},R(Hn).m1q=function(){this.l1q_1=-1},R(Hn).n1q=function(t,n){return this.k1q_1=t,this.o1q(n)},R(Hn).o1q=function(t){var n=this.l1q_1;return n<0?this.k1q_1:n>=this.i1q_1.g()?(this.m1q(),this.k1q_1):function(t,n){var i=new Un(t,n);return i.jj_1=M(),i.kj_1=null,i.qj()}(this,t)},R(Hn).p1q=function(t,n){return this.l1q_1=0,this.k1q_1=t,this.o1q(n)},R(Wn).sr=function(){return this.t1q_1.m()},R(Wn).g=function(){return this.t1q_1.g()},R(Wn).w1q=function(t){var n;this.u1q_1&&((n=this).t1q_1=n.v1q(),n.u1q_1=!1),this.t1q_1.a(t)},R(Wn).x1q=function(t){var n=this.t1q_1;t instanceof Lt&&t.ad(t.g()+n.g()|0);var i=0,e=n.g();if(i=0)throw N("Already started");return this.o1q(n)},R(vi).toString=function(){return"TypeInfo(type="+this.z1r_1+", reifiedType="+this.a1s_1+", kotlinType="+this.b1s_1+")"},R(vi).hashCode=function(){var t=this.z1r_1.hashCode();return t=T(t,31)+Z(this.a1s_1)|0,T(t,31)+(null==this.b1s_1?0:Z(this.b1s_1))|0},R(vi).equals=function(t){if(this===t)return!0;if(!(t instanceof vi))return!1;var n=t instanceof vi?t:L();return!!this.z1r_1.equals(n.z1r_1)&&!!X(this.a1s_1,n.a1s_1)&&!!X(this.b1s_1,n.b1s_1)},R(di).x1m=function(t){var n=this.c1s_1.g2(t);return null==n||J(n)?n:L()},R(di).y1m=function(t){return this.c1s_1.a2(t)},R(di).z1m=function(t,n){this.c1s_1.f4(t,n)},R(di).a1n=function(t){this.c1s_1.wc(t)},R(di).b1n=function(t,n){var i=this.c1s_1.g2(t);if(null!=i)return J(i)?i:L();var e=n();return this.c1s_1.f4(t,e),e},R(di).c1n=function(){return sn(this.c1s_1.h2())},R($i).j1s=function(t){console.info("TRACE: "+t)},R($n).y5=lt,R($n).e6=ft,R($n).d6=ct,R($n).f6=vt,R(di).w1m=function(t){var n=this.x1m(t);if(null==n)throw N("No instance for key "+t);return n},I=!1,t.$_$=t.$_$||{},t.$_$.a=function(t,n){var i=new fn(t,n);return i.jj_1=M(),i.kj_1=null,i.qj()},t.$_$.b=function(){return null==A&&new yi,A},t.$_$.c=function(){return null==O&&new pi,O},t.$_$.d=On,t.$_$.e=mi,t.$_$.f=function(t){return new $i},t.$_$.g=ei,t.$_$.h=ri,t.$_$.i=ii,t.$_$.j=function(t,n){return n.ze(t)},t.$_$.k=function(t,n,i){return new vi(n,t,i)},t.$_$.l=_n,t.$_$.m=wi,t.$_$.n=function(t){var n,i=at(t=t===H?null:t);return n=new $n,i.f6(n)},t.$_$.o=function(t){for(var n=this.p1o().d();n.e();){var i=n.f();t(i.r(),i.s())}return M()},t.$_$.p=function(t){var n=this.n1o(t);return null==n?null:yt(n)},t.$_$.q=xn,t.$_$.r=En,t.$_$.s=kn,t.$_$.t=function(t,n){for(var i=n.p1o().d();i.e();){var e=i.f(),r=e.r(),s=e.s();t.u1o(r,s)}return t},t.$_$.u=function(t){for(var n=t.p1o(),i=bt(),e=n.d();e.e();){for(var r=e.f(),s=r.s(),o=pt(dt(s,10)),u=s.d();u.e();){var a,h=u.f();a=xt(r.r(),h),o.a(a)}zt(i,o)}return i},t.$_$.v=function(t){var n,i=ot(t).toLowerCase();return n=st(i,0),X(new ut(n),new ut(t))},t.$_$.w=function(t,n){for(var i=n.c1n().d();i.e();){var e=i.f();t.z1m(e instanceof _n?e:L(),n.w1m(e))}},t.$_$.x=function(t){for(var n=0,i=t.length,e=rt(i);n=e)throw new qt(n,"Unexpected end of string "+(null==r?"":" in ["+r+"]"),i);return P(n,i)}function Et(t,n){var i,e=n,r=t.x4n_1,s=r.t6_1;if(e<=r.u6_1&&s<=e)i=L(n)-48|0;else{var o=t.u4n_1,u=o.t6_1;if(e<=o.u6_1&&u<=e)i=(10+L(n)|0)-97|0;else{var a=t.w4n_1,h=a.t6_1;i=e<=a.u6_1&&h<=e?(10+L(n)|0)-65|0:-1}}return i}function Ct(){s=this,this.t4n_1=F(f(97),f(122)),this.u4n_1=F(f(97),f(102)),this.v4n_1=F(f(65),f(90)),this.w4n_1=F(f(65),f(70)),this.x4n_1=F(f(48),f(57)),this.y4n_1=U([new D(f(95)),new D(f(45)),new D(f(33)),new D(f(46)),new D(f(126)),new D(f(39)),new D(f(40)),new D(f(41)),new D(f(42))]);var t;t=c([f(48),f(49),f(50),f(51),f(52),f(53),f(54),f(55),f(56),f(57),f(65),f(66),f(67),f(68),f(69),f(70)]),this.z4n_1=t,this.a4o_1=f(65533)}function St(){return null==s&&new Ct,s}function qt(t,n,i){if(i=i===m?-1:i,Q(n,this),tt(this,qt),this.a4p_1=t,this.b4p_1=n,this.c4p_1=i,!(this.c4p_1>=-1))throw k(b("Failed requirement."))}function Ot(){return o}function It(t){return Z("internalDecoded",1,X,(function(t){return It(t)}),null),t.g4o_1.s()}function At(t){return Z("internalEncoded",1,X,(function(t){return At(t)}),null),t.h4o_1.s()}function Tt(){u=this,this.d4p_1=1,this.e4p_1=2}function Dt(){return null==u&&new Tt,u}function Mt(t,n){var i,e,r;Dt(),this.e4o_1=!(t===ct().x4m_1),this.f4o_1=!(n===ct().x4m_1),this.g4o_1=N((i=this,e=n,r=t,function(){return i.e4o_1||e===ct().x4m_1?St().y4o(r):e})),this.h4o_1=N(function(t,n,i){return function(){return t===ct().x4m_1?n.f4p(i):t}}(t,this,n));var s;if(t!==ct().x4m_1)Dt(),s=1;else{if(n===ct().x4m_1)throw k("Neither encoded nor decoded");Dt(),s=2}this.i4o_1=s}function Nt(t){if(Lt.call(this,t,t),null!=t&&0!==S(t))throw k(b("Expected empty value, got: "+t));this.m4p_1=!0}function Rt(){a=this,this.k4n_1=new Nt(null),this.l4n_1=new Nt("")}function Pt(){return null==a&&new Rt,a}function Lt(t,n){Pt(),Mt.call(this,t,n)}function Ft(){h=this,this.k4o_1=new Ht(null,null),this.l4o_1=new Ht("","")}function Ut(){return null==h&&new Ft,h}function Ht(t,n){var i;Ut(),Mt.call(this,t,n),this.z4p_1=N((i=t,function(){var t=i;if(null==t)return wt().y4m_1;var n,e=t,r=new mt,s=0;t:for(;;){var o=M(e,f(47),s);if(n=o,!(o>-1))break t;if(s57)return Ot()}while(0<=i);return Ot()}function Yt(){var t;this.a4q_1=N((t=this,function(){var n=t.w22();return n.m()?null:et(n)})),this.b4q_1=N(function(t){return function(){var n=t.g4q();if(null==n)return Pt().d4o(null);var i,e=n,r=rt(e,f(64)),s=Pt();return i=r===Ot()?null:e.substring(0,r),s.d4o(i)}}(this)),this.c4q_1=N(function(t){return function(){return Vt(t).g4p()}}(this)),this.d4q_1=N(function(t){return function(){return Vt(t).j4o()}}(this)),this.e4q_1=N(function(t){return function(){var n=t.g4q();if(null==n)return null;var i,e=n,r=rt(e,f(64)),s=Bt(0,e);if(s===Ot()){var o=r+1|0;i=e.substring(o)}else{var u=r+1|0;i=e.substring(u,s)}var a=i;return St().z4o(a)}}(this)),this.f4q_1=N(function(t){return function(){var n=t.g4q();if(null==n)return-1;var i=n,e=Bt(0,i);if(e===Ot())return-1;var r,s=St(),o=e+1|0;r=i.substring(o);var u,a=s.z4o(r);try{u=st(a)}catch(t){if(!(t instanceof ot))throw t;u=-1}return u}}(this))}function Wt(t){return Z("ssp",1,X,(function(t){return Wt(t)}),null),t.u4q_1.s()}function Gt(t,n){var i=n.o4q_1.j4o();null!=i&&t.l8("//").l8(i);var e=n.p4q_1.j4o();null!=e&&t.l8(e),n.q4q_1.sr()||t.k7(f(63)).l8(n.q4q_1.j4o())}function Kt(t){return Z("uriString",1,X,(function(t){return Kt(t)}),null),t.g4r_1.s()}function Jt(t){return function(){return Pt().d4o((n=t,Gt(i=H(),n),i.toString()));var n,i}}function Xt(t,n,i,e,r){Yt.call(this),this.n4q_1=t,this.o4q_1=Pt().s4p(n);var s,o=i;this.p4q_1=null==o?Ut().k4o_1:o,this.q4q_1=Pt().s4p(e),this.r4q_1=Pt().s4p(r),this.s4q_1=!0,this.t4q_1=null==this.n4q_1,this.u4q_1=N(Jt(this)),this.v4q_1=N((s=this,function(){return Wt(s).j4o()})),this.w4q_1=N(function(t){return function(){return Wt(t).g4p()}}(this)),this.x4q_1=N(function(t){return function(){return t.o4q_1.g4p()}}(this)),this.y4q_1=N(function(t){return function(){return t.o4q_1.j4o()}}(this)),this.z4q_1=N(function(t){return function(){return t.p4q_1.j4o()}}(this)),this.a4r_1=N(function(t){return function(){return t.p4q_1.g4p()}}(this)),this.b4r_1=N(function(t){return function(){return t.q4q_1.g4p()}}(this)),this.c4r_1=N(function(t){return function(){return t.q4q_1.j4o()}}(this)),this.d4r_1=N(function(t){return function(){return t.r4q_1.g4p()}}(this)),this.e4r_1=N(function(t){return function(){return t.r4q_1.j4o()}}(this)),this.f4r_1=N(function(t){return function(){return t.p4q_1.w22()}}(this)),this.g4r_1=N(function(t){return function(){var n=H();return null!=t.n4q_1&&n.l8(t.n4q_1).k7(f(58)),Gt(n,t),t.r4q_1.sr()||n.k7(f(35)).l8(t.h4r()),n.toString()}}(this))}function Zt(t){return Z("cachedString",1,X,(function(t){return Zt(t)}),null),t.d4s_1.s()}function Qt(t,n,i){this.i4r_1=t,this.j4r_1=n;var e,r=i;this.k4r_1=null==r?Pt().k4n_1:r,this.l4r_1=!1,this.m4r_1=null==this.i4r_1,this.n4r_1=N((e=this,function(){return e.j4r_1.j4o()})),this.o4r_1=N(function(t){return function(){return t.j4r_1.g4p()}}(this)),this.p4r_1=null,this.q4r_1=null,this.r4r_1=null,this.s4r_1=null,this.t4r_1=null,this.u4r_1=null,this.v4r_1=N(function(t){return function(){return t.k4r_1.g4p()}}(this)),this.w4r_1=N(function(t){return function(){return t.k4r_1.j4o()}}(this)),this.x4r_1=_t(),this.y4r_1=null,this.z4r_1=null,this.a4s_1=null,this.b4s_1=null,this.c4s_1=-1,this.d4s_1=N(function(t){return function(){var n=H();return n.l8(t.i4r_1).k7(f(58)),n.l8(t.e4s()),t.k4r_1.sr()||n.k7(f(35)).l8(t.h4r()),n.toString()}}(this))}function tn(t){return Z("cachedSsi",1,X,(function(t){return tn(t)}),null),t.m4s_1.s()}function nn(t){return Z("cachedFsi",1,X,(function(t){return nn(t)}),null),t.n4s_1.s()}function en(t){return Z("ssp",1,X,(function(t){return en(t)}),null),t.r4s_1.s()}function rn(t){return Z("authorityPart",1,X,(function(t){return rn(t)}),null),t.s4s_1.s()}function sn(t){return Z("pathPart",1,X,(function(t){return sn(t)}),null),t.v4s_1.s()}function on(t){return Z("queryPart",1,X,(function(t){return on(t)}),null),t.z4s_1.s()}function un(t){return Z("fragmentPart",1,X,(function(t){return un(t)}),null),t.c4t_1.s()}function an(){_=this}function hn(){return null==_&&new an,_}function _n(t){var n;hn(),Yt.call(this),this.l4s_1=t,this.m4s_1=N((n=this,function(){return M(n.l4s_1,f(58))})),this.n4s_1=N(function(t){return function(){return M(t.l4s_1,f(35),tn(t))}}(this)),this.o4s_1=N(function(t){return function(){var n=tn(t);return n===Ot()||t.l4s_1.length!==(n+1|0)&&O(new D(P(t.l4s_1,n+1|0)),new D(f(47)))}}(this)),this.p4s_1=N(function(t){return function(){return tn(t)===Ot()}}(this)),this.q4s_1=N(function(t){return function(){var n=tn(t);return n===Ot()?null:t.l4s_1.substring(0,n)}}(this)),this.r4s_1=N(function(t){return function(){var n,i=tn(t),e=nn(t),r=Pt();if(e===Ot()){var s=i+1|0;n=t.l4s_1.substring(s)}else{var o=i+1|0;n=t.l4s_1.substring(o,e)}return r.d4o(n)}}(this)),this.s4s_1=N(function(t){return function(){var n=hn().f4t(t.l4s_1,tn(t));return Pt().d4o(n)}}(this)),this.t4s_1=N(function(t){return function(){return rn(t).g4p()}}(this)),this.u4s_1=N(function(t){return function(){return rn(t).j4o()}}(this)),this.v4s_1=N(function(t){return function(){var n=tn(t),i=n>-1?(n+1|0)===t.l4s_1.length?null:O(new D(P(t.l4s_1,n+1|0)),new D(f(47)))?hn().g4t(t.l4s_1,n):null:hn().g4t(t.l4s_1,n);return Ut().d4o(i)}}(this)),this.w4s_1=N(function(t){return function(){return sn(t).g4p()}}(this)),this.x4s_1=N(function(t){return function(){return sn(t).j4o()}}(this)),this.y4s_1=N(function(t){return function(){return sn(t).w22()}}(this)),this.z4s_1=N(function(t){return function(){var n,i=M(t.l4s_1,f(63),tn(t));if(i===Ot())n=null;else{var e,r=nn(t);if(r===Ot()){var s=i+1|0;e=t.l4s_1.substring(s)}else if(r=this.a4n_1)throw y("Index "+t+" should be less than "+this.a4n_1);if(null==this.z4m_1)throw k(b("Required value was null."));return this.z4m_1[t]},d(mt).d4n=function(t){if(null!=this.b4n_1){if((this.c4n_1+1|0)===pt(this).length){for(var n=0,i=l(pt(this).length,2),e=z(Array(i),null);nr&&i.ig(t,r,o);for(var u=(r=o)+1|0;u>4]),i.k7(this.z4n_1[15&l[w]])}while(v-1&&(t.l8(" at index "),t.k8(this.c4p_1)),t.l8(": "),t.l8(this.a4p_1),t.toString()},nt(d(qt),"message",(function(){return this.g1()})),d(Mt).g4p=function(){return It(this)},d(Mt).j4o=function(){return At(this)},d(Nt).sr=function(){return this.m4p_1},d(Rt).s4p=function(t){var n=t;return null==n?this.k4n_1:n},d(Rt).d4o=function(t){return this.t4p(t,ct().x4m_1)},d(Rt).t4p=function(t,n){return null==t?this.k4n_1:0===S(t)?this.l4n_1:null==n?this.k4n_1:0===S(n)?this.l4n_1:new Lt(t,n)},d(Lt).sr=function(){return!1},d(Lt).f4p=function(t){return St().v4o(t)},d(Ft).d4o=function(t){return this.t4p(t,ct().x4m_1)},d(Ft).t4p=function(t,n){return null==t?this.k4o_1:0===S(t)?this.l4o_1:new Ht(t,n)},d(Ft).m4o=function(t){var n=t.e4o_1?t.j4o():t.g4p();return null==n||0===S(n)||it(n,"/")?t:new Ht(t.e4o_1?"/"+t.j4o():ct().x4m_1,t.f4o_1?"/"+t.g4p():ct().x4m_1)},d(Ht).f4p=function(t){return St().c4o(t,"/")},d(Ht).w22=function(){return Z("pathSegments",1,X,(function(t){return t.w22()}),null),this.z4p_1.s()},d(Yt).p8=function(t){return this.p4o(null!=t&&at(t,yt)?t:ut())},d(Xt).g4q=function(){return Z("encodedAuthority",1,X,(function(t){return t.g4q()}),null),this.y4q_1.s()},d(Xt).h4r=function(){return Z("encodedFragment",1,X,(function(t){return t.h4r()}),null),this.e4r_1.s()},d(Xt).w22=function(){return Z("pathSegments",1,X,(function(t){return t.w22()}),null),this.f4r_1.s()},d(Xt).equals=function(t){return!(null==t||!at(t,yt))&&this.toString()===b(t)},d(Xt).hashCode=function(){return ht(this.toString())},d(Xt).toString=function(){return Kt(this)},d(Xt).q4o=function(){return(new gt).m4n(this.n4q_1).o4n(this.o4q_1).p4n(this.p4q_1).q4n(this.q4q_1).r4n(this.r4q_1)},d(Xt).p8=function(t){return this.p4o(null!=t&&at(t,yt)?t:ut())},d(Qt).e4s=function(){return Z("encodedSchemeSpecificPart",1,X,(function(t){return t.e4s()}),null),this.n4r_1.s()},d(Qt).h4r=function(){return Z("encodedFragment",1,X,(function(t){return t.h4r()}),null),this.w4r_1.s()},d(Qt).equals=function(t){return!(null==t||!at(t,yt))&&this.toString()===b(t)},d(Qt).hashCode=function(){return ht(this.toString())},d(Qt).toString=function(){return Zt(this)},d(Qt).q4o=function(){return(new gt).m4n(this.i4r_1).n4n(this.j4r_1).r4n(this.k4r_1)},d(Qt).p8=function(t){return this.p4o(null!=t&&at(t,yt)?t:ut())},d(an).f4t=function(t,n){var i,e=t.length;if(e>(n+2|0)&&O(new D(P(t,n+1|0)),new D(f(47)))&&O(new D(P(t,n+2|0)),new D(f(47)))){var r=n+3|0;t:for(;r(n+2|0)&&O(new D(P(t,n+1|0)),new D(f(47)))&&O(new D(P(t,n+2|0)),new D(f(47)))){i=n+3|0;t:for(;i=0&&!i.m()&&t.f3u_1!==t.h3u_1){t.l3u("\n");try{t.y3t_1=vt();var e=t.h3u_1,r=0;if(r":"/>":">";t.x3z_1.b(i)}function Xe(t,n){xt.call(this,t,n)}function Ze(t,n,i,e){var r,s=i;if(gn(pn(i),pn(mn(55295)))<=0){var o,u=pn(i);o=$n(bn(u)),r=yn(o)}else r=yn($n(0));var a=r;if(s===mn(0))throw fn("XML documents may not contain null strings directly or indirectly");if(ft(new vn(a),new vn(ot(38))))t.b("&");else if(ft(new vn(a),new vn(ot(60)))&&!e.equals(hr()))t.b("<");else if(ft(new vn(a),new vn(ot(62)))&&e.equals(fr()))t.b(">");else if(ft(new vn(a),new vn(ot(34)))&&e.equals(_r()))t.b(""");else if(ft(new vn(a),new vn(ot(39)))&&e.equals(lr()))t.b("'");else{var h,_=new kn(mn(1),mn(8)),l=_.la_1;if(jn(s,_.ma_1)<=0&&0<=jn(s,l)||s===mn(11)||s===mn(12))h=!0;else{var f=new kn(mn(14),mn(31)),c=f.la_1;h=jn(s,f.ma_1)<=0&&0<=jn(s,c)}if(h){var v=n.a40_1.l6_1;0===v?ar(n,s):1===v&&ur(t,s)}else{var w,d=new kn(mn(127),mn(132)),p=d.la_1;if(jn(s,d.ma_1)<=0&&0<=jn(s,p))w=!0;else{var m=new kn(mn(134),mn(159)),g=m.la_1;w=jn(s,m.ma_1)<=0&&0<=jn(s,g)}if(w){var $=n.a40_1.l6_1;0===$?t.k7(a):1===$&&ur(t,s)}else{var y=new kn(mn(55296),mn(57343)),b=y.la_1;if(jn(s,y.ma_1)<=0&&0<=jn(s,b)||s===mn(65534)||s===mn(65535))ar(n,s);else if(gn(pn(s),pn(mn(65535)))>0){var k,j=mn(pn(s)-pn(mn(65536))|0);k=mn(pn(j)>>>10|0);var x,z=mn(pn(k)+pn(mn(55296))|0);x=mn(pn(j)&pn(mn(1023)));var E,C,S=mn(pn(x)+pn(mn(56320))|0),q=pn(z);E=$n(bn(q)),t.k7(yn(E));var O=pn(S);C=$n(bn(O)),t.k7(yn(C))}else t.k7(a)}}}}function Qe(t,n,i){for(var e=pr(n).d();e.e();){var r=e.f().y9_1;Ze(t.x3z_1,t,r,i)}}function tr(t){0===t.e40_1.l6_1&&(t.z3z_1.equals(Re())||t.c3v(null,null,null),t.e40_1=vr())}function nr(t,n){var i=t.y3t_1;if(t.g40_1>=0&&!i.m()&&t.g40_1!==t.i3t()){t.l3u("\n");try{t.y3t_1=vt();for(var e=function(t,n){if(!t.d().e())return vt();var i=mt(),e=null,r=0;if(r0&&null!=i&&t.f40_1.h40(i)!=n&&t.x3u(i,n)}function er(t,n,i,e){t.x3z_1.k7(ot(32)),tt(n)>0&&t.x3z_1.b(n).k7(ot(58)),t.x3z_1.b(i).k7(ot(61));var r=-1===bt(e,ot(34))?new xn(new vn(ot(34)),_r()):new xn(new vn(ot(39)),lr()),s=r.d4().j7_1,o=r.e4();t.x3z_1.k7(s),Qe(t,e,o),t.x3z_1.k7(s)}function rr(){N=this,this.i40_1=-1,this.j40_1=2147483647}function sr(){return null==N&&new rr,N}function or(t,n){xt.call(this,t,n)}function ur(t,n){t.b("&#x").b(zn(n,16)).k7(ot(59))}function ar(t,n){throw fn("In xml "+t.a40_1.m40_1+" the character 0x"+zn(n,16)+" is not valid")}function hr(){return Be(),z}function _r(){return Be(),E}function lr(){return Be(),C}function fr(){return Be(),S}function cr(){return Ye(),O}function vr(){return Ye(),I}function wr(){return Ye(),T}function dr(t,n,i,e){sr(),n=n===et||n,i=i===et?Re():i,e=e===et?br():e,Dr.call(this),this.x3z_1=t,this.y3z_1=n,this.z3z_1=i,this.a40_1=e,this.b40_1=!0,this.c40_1=!1;var r;r=Ht(Array(12),null),this.d40_1=r,this.e40_1=cr(),this.f40_1=new Or;sr(),this.g40_1=-1}function pr(t){return new gr(t)}function mr(t){this.u40_1=t,this.t40_1=0}function gr(t){this.v40_1=t}function $r(){if(L)return G();L=!0,R=new yr("XML10",0,"1.0"),P=new yr("XML11",1,"1.1")}function yr(t,n,i){xt.call(this,t,n),this.m40_1=i}function br(){return $r(),P}function kr(t,n){var i=0===n?0:jr(t,n-1|0)/2|0,e=jr(t,n)/2|0;return Z(i,e)}function jr(t,n){return Y(t.n3y_1[n],2)}function xr(t,n){return Y(n,2)}function zr(t,n){return Y(n,2)+1|0}function Er(t,n){return lt(t.m3y_1[xr(0,n)])}function Cr(t,n){return lt(t.m3y_1[zr(0,n)])}function Sr(t){this.w40_1=t}function qr(t){this.y40_1=t,this.x40_1=0}function Or(){this.l3y_1=1;var t;t=Ht(Array(10),null),this.m3y_1=t,this.n3y_1=new Int32Array(20),this.o3y_1=0,this.p3y_1=new Sr(this)}function Ir(t,n){if(tt(t)>0){var i=t.toString();if(!function(t){var n;t:{for(var i=Rn("isIgnorableWhitespace",1,Nn,(function(t){return function(t){var n=t;return!!(ft(new vn(n),new vn(ot(32)))||ft(new vn(n),new vn(ot(9)))||ft(new vn(n),new vn(ot(13)))||ft(new vn(n),new vn(ot(10))))}(t.j7_1)}),null),e=t,r=0;r=d;){switch(null==p?-1:p.l6_1){case 1:var m=new ci(f,!0);He(m,t,w),Te(t,m),Ve(m,w,t),m.a14();break;case 9:case 4:f.appendChild(lt(f.ownerDocument).createTextNode(t.j3t()));break;case 5:f.appendChild(lt(f.ownerDocument).createCDATASection(t.j3t()));break;case 3:f.appendChild(lt(f.ownerDocument).createComment(t.j3t()));break;case 8:throw ze("Entity references are not expected here");case 10:throw Ln("Attributes are not expected in the event stream")}p=t.e()?t.f():null}""===w.g2("")&&w.wc("");var g=Nt(w.q()),$=Fn(g,Yr),y=_t(Un($,(c=f,function(t){var n=t.r(),i=t.s();return oe(),c.setAttributeNS("http://www.w3.org/2000/xmlns/",""===n?"xmlns":"xmlns:"+n,i),new ke(n,i)}))),b=(new XMLSerializer).serializeToString(f instanceof Node?f:J()),k=bt(b,ot(62),19)+1|0,j=(b.length-19|0)-3|0;return ns(y,b.substring(k,j))}catch(t){if(t instanceof Se)throw Ce("Failure to parse children into string at "+v,t);if(t instanceof ln)throw Ce("Failure to parse children into string at "+v,t);throw t}}function Yr(t){var n,i=t.r();return n=t.s(),""!==i||!(""===n)}function Wr(){H=this}function Gr(){hn(this,Gr)}function Kr(t){t||console.error("Assertion failed")}function Jr(t,n){t||console.error("Assertion failed: "+n())}function Xr(t){return Yn(t).name}function Zr(){}function Qr(t){return function(t,n){return ts(vt(),t,n),n}(t,Vt(K(rs)))}function ts(t,n,i){return rs.call(i),i.t41_1=ne().b3x(t),i.u41_1=n,i}function ns(t,n){return ts(t,n,Vt(K(rs)))}function is(){V=this,this.v41_1=new Zr}function es(t){return'"'+t.g3t()+" -> "+t.e3t()+'"'}function rs(){null==V&&new is}function ss(t){return t.prototype}function os(t,n,i,e){return function(t,n,i){for(var e=0,r=Y(t.length,2),s=Ht(Array(r),null);e");var a=e.toString()+n+"",h=(new DOMParser).parseFromString(a,"text/xml");return new ri(Q(h)?h:J())}(ls(),t,n));var i;i=[],this.d42_1=us(null,[],i),this.jp().l3t()===Si()&&hs(this)}return rt(Zn,"DomReader$$o$iterator$slambda",it,W,et,et,et,[1]),rt(Vi,"IterableNamespaceContext",Mt),rt(ii,et,it,et,[Vi]),rt(ei,"DomReader$$slambda",it,W,et,et,et,[1]),rt(qe,"XmlReader",Mt),rt(ri,"DomReader",it,et,[qe]),rt(_i,"Companion",pt),rt(fi,et,it),rt(Dr,"PlatformXmlWriterBase",it),rt(ci,"DomWriter",it,Dr),rt(Ei,"EventType",it,xt),rt(vi,"START_DOCUMENT",it,Ei),rt(wi,"START_ELEMENT",it,Ei),rt(di,"END_ELEMENT",it,Ei),rt(pi,"COMMENT",it,Ei),rt(mi,"TEXT",it,Ei),rt(gi,"CDSECT",it,Ei),rt($i,"DOCDECL",it,Ei),rt(yi,"END_DOCUMENT",it,Ei),rt(bi,"ENTITY_REF",it,Ei),rt(ki,"IGNORABLE_WHITESPACE",it,Ei),rt(ji,"ATTRIBUTE",it,Ei),rt(xi,"PROCESSING_INSTRUCTION",it,Ei),rt(Fi,"Companion",pt,et,[Ot]),rt(Hi,"Namespace",Mt),rt(Yi,"QNameSerializer",pt,et,[Ot]),rt(Gi,"SimpleIterator",it),rt(Ki,"SimpleNamespace",it,et,[Hi]),rt(te,"Companion",pt,et,[Ot]),rt(re,"SimpleNamespaceContext",it,et,[Vi],et,{0:ne}),rt(se,"XMLConstants",pt),rt(_e,"XmlBufferedReaderBase",it,et,[qe]),rt(ue,"XmlBufferedReader",it,_e),rt(le,"XmlDelegatingReader",it,et,[qe]),rt(ce,"Companion",pt),rt(je,"XmlEvent",it),rt(we,"TextEvent",it,je),rt(de,"EntityRefEvent",it,we),rt(pe,"EndDocumentEvent",it,je),rt($e,"NamedEvent",it,je),rt(me,"EndElementEvent",it,$e),rt(ge,"StartDocumentEvent",it,je),rt(ye,"StartElementEvent",it,$e),rt(be,"Attribute",it,je),rt(ke,"NamespaceImpl",it,et,[Hi]),rt(Gr,"IOException",it,Bn),rt(Se,"XmlException",it,Gr),rt(De,"Companion",pt),rt(Ne,"XmlDeclMode",it,xt),rt(Xe,"EscapeMode",it,xt),rt(rr,"Companion",pt),rt(or,"WriteState",it,xt),rt(dr,"KtXmlWriter",it,Dr),rt(mr,et,it),rt(gr,et,it),rt(yr,"XmlVersion",it,xt),rt(Sr,et,it,et,[Vi]),rt(qr,et,it),rt(Or,"NamespaceHolder",it),rt(Ar,"Companion",pt),rt(Nr,"NodeConsts",pt),rt(Pr,"NodeListIterator",it),rt(Lr,"ICompactFragment",Mt),rt(Vr,"QName",it),rt(Wr,"XmlStreaming",pt),rt(Zr,"Factory",it),rt(is,"Companion",pt),rt(rs,"CompactFragment",it,et,[Lr]),rt(as,"FragmentNamespaceContext",it,re),rt(_s,"Companion",pt),rt(fs,"XMLFragmentStreamReader",it,le),K(Zn).a3s=function(t,n){var i=this.b3s(t,n);return i.jj_1=G(),i.kj_1=null,i.qj()},K(Zn).ck=function(t,n){return this.a3s(t instanceof X?t:J(),n)},K(Zn).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=8,this.u3r_1=this.s3r_1.c3s_1,this.hj_1=1;continue t;case 1:if(null==this.u3r_1){this.hj_1=7;continue t}this.v3r_1=this.u3r_1.attributes,this.w3r_1=this.v3r_1.length,this.x3r_1=Z(0,this.w3r_1).d(),this.hj_1=2;continue t;case 2:if(!this.x3r_1.e()){this.hj_1=6;continue t}this.y3r_1=this.x3r_1.f();var n=this.v3r_1.item(this.y3r_1);if(this.z3r_1=null!=n&&Q(n)?n:J(),"xmlns"===this.z3r_1.prefix){this.hj_1=4;var i=this.z3r_1.localName;if((t=this.t3r_1.k4(new ke(null==i?this.z3r_1.name:i,this.z3r_1.value),this))===nt())return t;continue t}var e=this.z3r_1.prefix;if((null==e||0===tt(e))&&"xmlns"===this.z3r_1.localName){if(this.hj_1=3,(t=this.t3r_1.k4(new ke("",this.z3r_1.value),this))===nt())return t;continue t}this.hj_1=5;continue t;case 3:case 4:this.hj_1=5;continue t;case 5:this.hj_1=2;continue t;case 6:this.u3r_1=this.u3r_1.parentElement,this.hj_1=1;continue t;case 7:return G();case 8:throw this.kj_1}}catch(t){var r=t;if(8===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},K(Zn).b3s=function(t,n){var i=new Zn(this.s3r_1,n);return i.t3r_1=t,i},K(ii).k3s=function(t){var n=this.c3s_1;return null==n?null:Ur(n,t)},K(ii).l3s=function(){return this},K(ii).d=function(){return ut((t=this,n=null,i=new Zn(t,n),e=function(t,n){return i.a3s(t,n)},e.$arity=1,e)).d();var t,n,i,e},K(ei).a3s=function(t,n){var i=this.b3s(t,n);return i.jj_1=G(),i.kj_1=null,i.qj()},K(ei).ck=function(t,n){return this.a3s(t instanceof X?t:J(),n)},K(ei).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,this.x3s_1=at(Ae(this.v3s_1)),this.hj_1=1;continue t;case 1:if(!this.x3s_1.e()){this.hj_1=5;continue t}if(this.y3s_1=this.x3s_1.f(),"xmlns"===this.y3s_1.b3t_1){if(this.hj_1=3,(t=this.w3s_1.k4(new ke(this.y3s_1.c3t_1,this.y3s_1.a3t_1),this))===nt())return t;continue t}var n=this.y3s_1.b3t_1;if(0===tt(n)&&"xmlns"===this.y3s_1.c3t_1){if(this.hj_1=2,(t=this.w3s_1.k4(new ke("",this.y3s_1.a3t_1),this))===nt())return t;continue t}this.hj_1=4;continue t;case 2:case 3:this.hj_1=4;continue t;case 4:this.hj_1=1;continue t;case 5:return G();case 6:throw this.kj_1}}catch(t){var i=t;if(6===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},K(ei).b3s=function(t,n){var i=new ei(this.v3s_1,n);return i.w3s_1=t,i},K(ri).e3t=function(){var t,n=this.j3s();if(null==n)t=null;else{var i=n.namespaceURI;t=null==i?"":i}var e=t;if(null==e)throw ze("Only elements have a namespace uri");return e},K(ri).f3t=function(){var t=this.j3s(),n=null==t?null:t.localName;if(null==n)throw ze("Only elements have a local name");return n},K(ri).g3t=function(){var t,n=this.j3s();if(null==n)t=null;else{var i=n.prefix;t=null==i?"":i}var e=t;if(null==e)throw ze("Only elements have a prefix");return e},K(ri).h3t=function(){return this.f3s_1},K(ri).i3t=function(){return this.h3s_1},K(ri).j3t=function(){var t,n,i,e,r=this.e3s_1,s=null==r?null:r.nodeType,o=null==s?null:s;if(Rr(),5===o)e=!0;else{var u=null==s?null:s;Rr(),e=8===u}if(e)i=!0;else{var a=null==s?null:s;Rr(),i=3===a}if(i)n=!0;else{var h=null==s?null:s;Rr(),n=7===h}if(n)t=!0;else{var _=null==s?null:s;Rr(),t=4===_}if(!t)throw ze("Node is not a text node");var l=this.e3s_1;return(null!=l&&Q(l)?l:J()).data},K(ri).k3t=function(){var t=this.e3s_1,n=null==t||Q(t)?t:J(),i=null==n?null:n.attributes,e=null==i?null:i.length;return null==e?0:e},K(ri).l3t=function(){var t=this.e3s_1;return null==t?Di():si(t.nodeType,this.g3s_1)},K(ri).m3t=function(){return ni(this.e3s_1,ht()).toString()},K(ri).j3s=function(){var t,n=this.e3s_1,i=null==n?null:n.nodeType,e=null==i?null:i;if(Rr(),1===e){var r=this.e3s_1;t=null!=r&&Q(r)?r:J()}else t=null;return t},K(ri).n3t=function(){return new ii(this)},K(ri).o3t=function(){return _t(ut((t=new ei(this,null),(n=function(n,i){return t.a3s(n,i)}).$arity=1,n)));var t,n},K(ri).p3t=function(){var t=this.d3s_1,n=t.nodeType;return Rr(),9===n?(Q(t)?t:J()).inputEncoding:lt(t.ownerDocument).inputEncoding},K(ri).q3t=function(){return null},K(ri).w2a=function(){return"1.0"},K(ri).e=function(){return!this.g3s_1||!ft(this.e3s_1,this.d3s_1)},K(ri).f=function(){this.i3s_1=null;var t=this.e3s_1;if(null==t)return this.f3s_1=!0,this.e3s_1=this.d3s_1,Ci();if(this.g3s_1){if(null==t.nextSibling){this.e3s_1=t.parentNode;var n=this.e3s_1,i=null==n?null:n.nodeType,e=null==i?null:si(i,!0);return null==e?Di():e}this.e3s_1=t.nextSibling,this.g3s_1=!1}else{if(null==t.firstChild)return this.g3s_1=!0,qi();this.e3s_1=t.firstChild}var r,s=lt(this.e3s_1).nodeType,o=s;if(Rr(),1!==o){var u=s;Rr(),r=!(9===u)}else r=!1;return r&&(this.g3s_1=!0),si(s,this.g3s_1)},K(ri).r3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();var i=n.namespaceURI;return null==i?"":i},K(ri).s3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();var i=n.prefix;return null==i?"":i},K(ri).t3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();var i=n,e=i.localName;return null==e?i.name:e},K(ri).u3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();return n.value},K(ri).v3t=function(t,n){return ti(this).getAttributeNS(t,n)},K(ri).a14=function(){this.e3s_1=null},K(fi).k3s=function(t){var n=this.s3u_1.d3u_1;return null==n?null:n.lookupNamespaceURI(t)},K(ci).w3u=function(){var t=this.c3u_1;if(null==t)throw ze("Document not created yet");return t},K(ci).x3u=function(t,n){var i=hi(this,"Namespace attribute");0===tt(t)?0===tt(n)&&""===i.lookupNamespaceURI("")||(oe(),oe(),i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns",n)):(oe(),oe(),i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+t,n))},K(ci).y3u=function(t,n,i){ui(this);var e,r=this.h3u_1;if(this.h3u_1=r+1|0,null==this.d3u_1&&null==this.c3u_1){var s=t;this.c3u_1=function(t){var n=document.implementation,i=t.p3w(),e=n.createDocument(null==i?"":i,Pe(t));return Q(e)?e:J()}(Fe(null==s?"":s,n,i)),this.d3u_1=this.c3u_1;for(var o=this.e3u_1.d();o.e();)o.f()(lt(this.c3u_1));var u=this.e3u_1;(dt(u,wt)?u:J()).d3(),this.f3u_1=0;var a=this.c3u_1;return this.d3u_1=null==a?null:a.documentElement,G()}if(null==this.d3u_1&&!this.a3u_1){for(var h=0,_=gt((e=this.w3u().childNodes,new Pr(e))).d();_.e();){var l=_.f().nodeType;Rr(),1===l&&$t(h=h+1|0)}h>0&&function(t){for(var n=t,i=n.firstChild;null!=i;){var e=i.nextSibling;Fr(i)&&n.removeChild(i),i=e}}(this.w3u())}var f=function(t,n){return t.createElementNS(n.p3w(),Pe(n))}(this.w3u(),Fe(t,n,i));lt(this.d3u_1).appendChild(f),this.d3u_1=f,G()},K(ci).t3u=function(t){ui(this);var n,i,e=this.d3u_1;if(null==e)ai(this,(n=this,i=t,function(t){return n.t3u(i),G()}));else{var r=this.w3u().createComment(t);e.appendChild(r)}},K(ci).z3u=function(t){li(),this.f3u_1=-1;var n,i,e=this.d3u_1;if(null==e){if(!yt(t))throw ze("Not in an element -- text");ai(this,(n=this,i=t,function(t){return n.l3u(i),G()}))}else{var r=this.w3u().createTextNode(t);e.appendChild(r)}},K(ci).a3v=function(t){li(),this.f3u_1=-1;var n=this.w3u().createCDATASection(t),i=this.d3u_1;if(null==(null==i?null:i.appendChild(n)))throw ze("Not in an element -- cdsect")},K(ci).u3u=function(t){li(),oi(this,2147483647);var n,i,e=this.d3u_1,r=null==e?null:e.nodeType,s=null==r?null:r;if(Rr(),1!==s)throw ze("Document already started");if(null==this.c3u_1)ai(this,(n=this,i=t,function(t){return n.u3u(i),G()}));else{var o,u=bt(t,ot(32));if(u<0)o=kt(t,"");else{var a,h=t.substring(0,u),_=u+1|0;a=t.substring(_),o=kt(h,a)}var l=o,f=l.d4(),c=l.e4(),v=this.w3u().createProcessingInstruction(f,c);this.w3u().appendChild(v)}},K(ci).l3u=function(t){var n,i,e=this.d3u_1;if(null==e)ai(this,(n=this,i=t,function(t){return n.l3u(i),G()}));else{var r=e.nodeType;if(Rr(),9!==r){var s=this.w3u().createTextNode(t);e.appendChild(s)}}li(),this.f3u_1=-1},K(ci).b3v=function(t,n,i,e){var r=hi(this,"attribute");if(null==i||0===tt(i))r.setAttribute(n,e);else{var s,o=t;null==o?(oe(),s=""):s=o,r.setAttributeNS(s,i+":"+n,e)}},K(ci).v3u=function(t){li(),oi(this,2147483647);var n,i,e=this.c3u_1;if(null==e)ai(this,(n=this,i=t,function(t){return n.v3u(i),G()}));else{var r=jt(t,[" "],et,3),s=r.h(0),o=r.g()>1?r.h(1):"",u=r.g()>2?r.h(2):"",a=e.implementation.createDocumentType(s,o,u);e.appendChild(a)}},K(ci).c3v=function(t,n,i){li(),oi(this,2147483647),this.i3u_1=t,this.j3u_1=n,this.k3u_1=i},K(ci).d3v=function(){this.d3u_1=null},K(ci).e3v=function(t,n,i){var e=this.h3u_1;this.h3u_1=e-1|0,li(),oi(this,2147483647),this.d3u_1=hi(this,"No current element or no parent element").parentNode},K(ci).f3v=function(t){var n=this.d3u_1;return null==n?null:Ur(n,t)},K(ci).a14=function(){var t;Jr(0===this.h3u_1,(t=this,function(){return"Closing a dom writer but not all elements were closed (depth:"+t.h3u_1+")"})),this.d3u_1=null},K(vi).i3v=function(t){return new ge(t.m3t(),t.w2a(),t.p3t(),t.q3t())},K(vi).j3v=function(t,n){t.c3v(n.w2a(),n.p3t(),n.q3t())},K(wi).i3v=function(t){return new ye(t.m3t(),t.e3t(),t.f3t(),t.g3t(),Ae(t),t.n3t().l3s(),t.o3t())},K(wi).j3v=function(t,n){t.y3u(n.e3t(),n.f3t(),n.g3t());for(var i=n.o3t().d();i.e();){var e=i.f();t.x3u(e.g3t(),e.e3t())}var r=0,s=n.k3t();if(r0&&s<=o||u<0&&o<=s)do{var a=s;s=s+u|0,this.x3w(a)===t&&r.a(a)}while(a!==o);var h=Zt(r);n=null==h?null:this.y3w(h)}return n},K(re).x3w=function(t){try{return this.u3w_1[Y(t,2)]}catch(n){if(n instanceof tn)throw Qt("Index out of range: "+t);throw n}},K(re).y3w=function(t){try{return this.u3w_1[Y(t,2)+1|0]}catch(n){if(n instanceof tn)throw Qt("Index out of range: "+t);throw n}},K(re).d=function(){return new Gi(this)},K(re).m3s=function(t){return t instanceof re&&0===t.g()?this:t instanceof re&&0===this.g()?t:Kn.call(this,t)},K(re).equals=function(t){return this===t||t instanceof re&&!!nn(this.u3w_1,t.u3w_1)},K(re).hashCode=function(){return en(this.u3w_1)},K(ue).r3x=function(){return!this.q3x_1.m()},K(ue).s3x=function(){return this.q3x_1.u2()},K(ue).t3x=function(){return this.q3x_1.x2()},K(ue).u3x=function(){var t=this.x3x_1;if(null==t)throw ze("Push back fails due to missing current element");var n=t;switch(n.l3t().l6_1){case 1:this.z3x();break;case 2:this.a3y()}this.q3x_1.v2(n)},K(ue).b3y=function(t){this.q3x_1.l(t)},K(ue).a14=function(){K(_e).a14.call(this),this.q3x_1.d3()},K(_e).e3t=function(){var t,n=this.x3x_1,i=null==n?null:n.l3t();switch(null==i?-1:i.l6_1){case 10:var e=this.x3x_1;t=(e instanceof be?e:J()).d3t_1;break;case 1:var r=this.x3x_1;t=(r instanceof ye?r:J()).a3z_1;break;case 2:var s=this.x3x_1;t=(s instanceof me?s:J()).a3z_1;break;default:throw ze("Attribute not defined here: namespaceUri")}return t},K(_e).f3t=function(){var t,n=this.x3x_1,i=null==n?null:n.l3t();switch(null==i?-1:i.l6_1){case 10:var e=this.x3x_1;t=(e instanceof be?e:J()).c3t_1;break;case 1:var r=this.x3x_1;t=(r instanceof ye?r:J()).b3z_1;break;case 2:var s=this.x3x_1;t=(s instanceof me?s:J()).b3z_1;break;default:throw ze("Attribute not defined here: namespaceUri")}return t},K(_e).g3t=function(){var t,n=this.x3x_1,i=null==n?null:n.l3t();switch(null==i?-1:i.l6_1){case 10:var e=this.x3x_1;t=(e instanceof be?e:J()).b3t_1;break;case 1:var r=this.x3x_1;t=(r instanceof ye?r:J()).c3z_1;break;case 2:var s=this.x3x_1;t=(s instanceof me?s:J()).c3z_1;break;default:throw ze("Attribute not defined here: namespaceUri")}return t},K(_e).i3t=function(){return this.w3x_1.o3y_1},K(_e).a3y=function(){this.w3x_1.a3y()},K(_e).z3x=function(){this.w3x_1.z3x()},K(_e).j3t=function(){var t;if(lt(this.x3x_1).l3t()===Ri()){var n=this.x3x_1;t=(n instanceof be?n:J()).a3t_1}else{var i=this.x3x_1;t=(i instanceof we?i:J()).o3u_1}return t},K(_e).k3t=function(){return ae(this).u3y_1.length},K(_e).h3t=function(){return!(null==this.x3x_1)},K(_e).l3t=function(){var t=this.x3x_1,n=null==t?null:t.l3t();if(null==n)throw this.e()?ze("Attempting to get the event type before getting an event."):ze("Attempting to read beyond the end of the stream");return n},K(_e).m3t=function(){var t=this.x3x_1,n=null==t?null:t.y3x_1;return null==n?this.v3x_1.m3t():n},K(_e).n3t=function(){var t=this.x3x_1;return t instanceof ye?t.n3t():t instanceof me?t.h3z_1:this.w3x_1.p3y_1},K(_e).o3t=function(){var t=this.x3x_1;return t instanceof ye?Wt(t.o3t()):this.w3x_1.i3z()},K(_e).p3t=function(){var t=this.x3x_1;return(t instanceof ge?t:J()).k3z_1},K(_e).q3t=function(){var t=this.x3x_1;return(t instanceof ge?t:J()).m3z_1},K(_e).w2a=function(){var t=this.x3x_1;return(t instanceof ge?t:J()).l3z_1},K(_e).c3y=function(){if(this.r3x())return he(this);if(!this.e())throw sn();return this.d3y(),he(this)},K(_e).d3y=function(){return this.r3x()||this.b3y(this.e3y()),this.s3x()},K(_e).e3y=function(){if(this.v3x_1.e()){this.v3x_1.f();var t=ve().y3y(this.v3x_1),n=on(1);return n.a(t),n}return vt()},K(_e).e=function(){return!(!this.r3x()&&null==this.d3y())},K(_e).a14=function(){this.v3x_1.a14()},K(_e).f3y=function(){return this.g3y().l3t()},K(_e).g3y=function(){var t,n=this.c3y();switch(n.l3t().l6_1){case 4:if(!Le((n instanceof we?n:J()).o3u_1))throw ze("Unexpected element found when looking for tags: "+n);t=this.g3y();break;case 3:case 9:case 11:t=this.g3y();break;case 1:case 2:t=n;break;default:throw ze("Unexpected element found when looking for tags: "+n)}return t},K(_e).f=function(){return this.c3y().l3t()},K(_e).r3t=function(t){return ae(this).u3y_1[t].d3t_1},K(_e).s3t=function(t){return ae(this).u3y_1[t].b3t_1},K(_e).t3t=function(t){return ae(this).u3y_1[t].c3t_1},K(_e).u3t=function(t){return ae(this).u3y_1[t].a3t_1},K(_e).v3t=function(t,n){var i;t:{for(var e=ae(this).u3y_1,r=0,s=e.length;r")},K(dr).v3u=function(t){if(sr(),nr(this,2147483647),tr(this),!this.e40_1.equals(vr()))throw ze("Writing a DTD is only allowed once, in the prolog");this.e40_1=(Ye(),A);var n,i=this.x3z_1.b("")},K(dr).u3u=function(t){Je(this,!1),sr(),nr(this,2147483647),tr(this),this.x3z_1.b("")},K(dr).y3u=function(t,n,i){if(Je(this,!1),e=this,r=r===et?e.i3t():r,nr(e,r),tr(this),this.e40_1.equals((Ye(),D)))throw ze("Attempting to write tag after the document finished");var e,r,s;if(this.e40_1=wr(),""===t)s="";else{var o=this.n40(t);s=null!=o?o:null==i?this.f40_1.o40():i}var u=s;(function(t,n,i,e,r){var s=Y(n,3);if(t.d40_1.length<(s+3|0)){var o=t.d40_1.length+12|0,u=Ht(Array(o),null),a=t.d40_1;dn(a,u,0,0,s),t.d40_1=u}var h=s;s=h+1|0,t.d40_1[h]=i;var _=s;s=_+1|0,t.d40_1[_]=e,t.d40_1[s]=r})(this,this.i3t(),null==t?"":t,u,n),this.x3z_1.k7(ot(60)),tt(u)>0&&(this.x3z_1.b(u),this.x3z_1.k7(ot(58))),this.x3z_1.b(n),this.c40_1=!0,this.f40_1.a3y(),ir(this,t,u)},K(dr).e3v=function(t,n,i){if(this.f40_1.z3x(),sr(),nr(this,2147483647),(null==t?"":t)!==We(this,this.i3t())||Ke(this,this.i3t())!==n)throw fn(" does not match start");if(this.c40_1)Je(this,!0);else{this.x3z_1.b("0&&(this.x3z_1.b(e),this.x3z_1.k7(ot(58))),this.x3z_1.b(n),this.x3z_1.k7(ot(62))}},K(dr).t3u=function(t){Je(this,!1),sr(),nr(this,2147483647),tr(this);var n=!1;this.x3z_1.b("\x3c!--");for(var i=pr(t).d();i.e();){var e,r=i.f().y9_1,s=new Sn(r);e=mn(45),ft(s,new Sn(e))?n?(n=!1,this.x3z_1.b("-")):(n=!0,this.x3z_1.k7(ot(45))):Ze(this.x3z_1,this,r,hr())}this.x3z_1.b("--\x3e")},K(dr).z3u=function(t){Je(this,!1),Qe(this,t,fr());sr(),this.g40_1=-1},K(dr).a3v=function(t){Je(this,!1);var n=0;this.x3z_1.b("");sr(),this.g40_1=-1},K(dr).l3u=function(t){Je(this,!1),tr(this);for(var n=t,i=0,e=n.length;i0)||null==t)&&tt(t)>0&&(this.p40(i,t),ir(this,t,i)),!this.c40_1)throw st("illegal position for attribute");er(this,null==(s=null==i||0===tt(i)?i:this.f3v(i)!=t?this.n40(t):i)?"":s,n,e)},K(dr).x3u=function(t,n){var i=this.f40_1.q40(t);if(null!=i){if(this.y3z_1)return G();throw st(i!==n?"Attempting to set prefix to different values in the same tag":"Namespace attribute duplicated")}if(this.f40_1.r40(t,n),!this.c40_1)throw st("illegal position for attribute");tt(t)>0?(oe(),er(this,"xmlns",t,n)):(oe(),er(this,"","xmlns",n))},K(dr).d3v=function(){if(Kr(0===this.i3t()),!this.e40_1.equals(wr()))throw ze("Attempting to end document when in invalid state: "+this.e40_1);for(;this.i3t()>0;)this.e3v(We(this,this.i3t()-1|0),Ge(this,this.i3t()-1|0),Ke(this,this.i3t()-1|0));this.h1e()},K(dr).p40=function(t,n){n!==this.f3v(t)&&this.f40_1.r40(t,n)},K(dr).f3v=function(t){return this.f40_1.h40(t)},K(dr).n40=function(t){var n=t;return null==n?null:this.f40_1.s40(n)},K(dr).a14=function(){this.f40_1.d3()},K(mr).e=function(){return this.t40_1=this.n3y_1.length&&(this.n3y_1=Tn(this.n3y_1,Y(this.n3y_1.length,2))),this.n3y_1[this.o3y_1]=0===this.o3y_1?0:this.n3y_1[this.o3y_1-1|0]},K(Or).z3x=function(){var t=kr(this,this.o3y_1),n=t.y_1,i=t.z_1;if(n<=i)do{var e=n;n=n+1|0,this.m3y_1[xr(0,e)]=null,this.m3y_1[zr(0,e)]=null}while(e!==i);this.n3y_1[this.o3y_1]=0;this.o3y_1=this.o3y_1-1|0},K(Or).z40=function(){return this.n3y_1[this.o3y_1]},K(Or).d3=function(){var t;t=Ht(Array(10),null),this.m3y_1=t,this.n3y_1=new Int32Array(20),this.o3y_1=0},K(Or).x3y=function(t){this.r40(t.g3t(),t.e3t())},K(Or).r40=function(t,n){var i=this.o3y_1>=1?this.n3y_1[this.o3y_1-1|0]:0,e=this.n3y_1[this.o3y_1];if(i=this.m3y_1.length&&((s=this).m3y_1=In(s.m3y_1,Y(s.m3y_1.length,2))),function(t,n,i){var e=t.m3y_1,r=xr(0,n),s=null==i?null:Bt(i);e[r]=null==s?"":s}(this,o,t),function(t,n,i){var e=t.m3y_1,r=zr(0,n),s=null==i?null:Bt(i);e[r]=null==s?"":s}(this,o,n);var u=this.n3y_1,a=this.o3y_1,h=u[a];u[a]=h+1|0},K(Or).h40=function(t){var n,i=Bt(t);if(oe(),"xml"===i)return oe(),"http://www.w3.org/XML/1998/namespace";if(oe(),"xmlns"===i)return oe(),"http://www.w3.org/2000/xmlns/";t:{var e=Dn(this.z40()-1|0,0),r=e.y_1,s=e.z_1,o=e.a1_1;if(o>0&&r<=s||o<0&&s<=r)do{var u=r;if(r=r+o|0,Er(this,u)===i){n=u;break t}}while(u!==s);n=null}var a,h,_=null==n?null:Cr(this,n);return null==_?(0===tt(i)?(oe(),h=""):h=null,a=h):a=_,a},K(Or).s40=function(t){var n,i=Bt(t);if(oe(),"http://www.w3.org/XML/1998/namespace"===i)oe(),n="xml";else if(oe(),"http://www.w3.org/2000/xmlns/"===i)oe(),n="xmlns";else if(""===i){var e,r;t:{var s=Z(0,this.z40());if(dt(s,Yt)&&s.m())r=!0;else{var o=s.y_1,u=s.z_1;if(o<=u)do{var a=o;o=o+1|0;var h=Er(this,a);if(0===tt(h)){r=!1;break t}}while(a!==u);r=!0}}r?(oe(),e=""):e=null,n=e}else{var _;t:{var l=Dn(this.z40()-1|0,0),f=l.y_1,c=l.z_1,v=l.a1_1;if(v>0&&f<=c||v<0&&c<=f)do{var w,d=f;if(f=f+v|0,Cr(this,d)===i){var p;n:{var m=Z(d+1|0,this.z40());if(dt(m,Yt)&&m.m())p=!0;else{var g=m.y_1,$=m.z_1;if(g<=$)do{var y=g;if(g=g+1|0,Er(this,d)===Er(this,y)){p=!1;break n}}while(y!==$);p=!0}}w=p}else w=!1;if(w){_=d;break t}}while(d!==c);_=null}n=null==_?null:Er(this,_)}return n},K(Or).d=function(){return new qr(this)},K(Or).o40=function(){var t;do{t="n"+this.l3y_1}while(null!=this.h40(t));return t},K(Or).q40=function(t){var n=kr(this,this.o3y_1),i=n.y_1,e=n.z_1,r=i,s=Mn(i,e,2);if(r<=s)do{var o=r;if(r=r+2|0,this.m3y_1[xr(0,o)]===t)return this.m3y_1[zr(0,o)]}while(o!==s);return null},K(Ar).b41=function(t){for(var n=mt(),i=ht(),e=0,r=t,s=0,o=r.length;s");break;default:i.k7(u)}else switch(e){case 1:case 2:case 3:i.ig("\x3c!----\x3e",0,e),e=0,i.k7(u);break;case 0:case 4:i.k7(u);break;case 5:e=4,i.k7(ot(45)).k7(u);break;case 6:throw ze("-- is not allowed to occur inside xml comment text")}}if(e>0)throw ze("Indent can not contain unclosed comment");return Ir(i,n),n},K(Dr).v3z=function(t){this.y3t_1=Tr().b41(t)},K(Pr).e=function(){return this.p41_1=0){if(!ft(new vn(cn(t,0)),new vn(ot(123))))throw fn("Not a valid qname literal");e=Bt(wn(t,1,r));var s=r+1|0,o=tt(t);i=Bt(wn(t,s,o))}else e=n.e3t(),i=Bt(t);return Hr(e,i)},t})?e.apply(n,r):e)||(t.exports=s)},520:function(t,n,i){var e,r,s;r=[n,i(744),i(885),i(645)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C=Math.imul,S=n.$_$.l,q=n.$_$.u4,O=i.$_$.i,I=i.$_$.g1,A=n.$_$.ea,T=n.$_$.l4,D=n.$_$.uf,M=n.$_$.a,N=e.$_$.t2,R=n.$_$.hf,P=e.$_$.p2,L=i.$_$.o,F=e.$_$.u,U=e.$_$.m1,H=n.$_$.ta,V=n.$_$.sa,B=n.$_$.ng,Y=n.$_$.ua,W=n.$_$.l9,G=n.$_$.ue,K=n.$_$.u9,J=n.$_$.o9,X=e.$_$.l2,Z=n.$_$.ra,Q=n.$_$.v9,tt=e.$_$.n2,nt=i.$_$.r,it=i.$_$.h1,et=i.$_$.e1,rt=i.$_$.w,st=i.$_$.m,ot=i.$_$.l,ut=n.$_$.x4,at=e.$_$.o,ht=e.$_$.m2,_t=i.$_$.v,lt=n.$_$.d,ft=i.$_$.p,ct=e.$_$.m,vt=e.$_$.l,wt=n.$_$.td,dt=n.$_$.ud,pt=n.$_$.ee,mt=n.$_$.a3,gt=n.$_$.be,$t=n.$_$.he,yt=n.$_$.w3,bt=n.$_$.yd,kt=n.$_$.fe,jt=n.$_$.i3,xt=n.$_$.ae,zt=n.$_$.ge,Et=n.$_$.p3,Ct=n.$_$.wd,St=n.$_$.id,qt=e.$_$.v1,Ot=e.$_$.w1,It=i.$_$.c,At=i.$_$.f,Tt=i.$_$.f1,Dt=e.$_$.c,Mt=i.$_$.a1,Nt=i.$_$.b1,Rt=n.$_$.eg,Pt=n.$_$.j9,Lt=n.$_$.h1,Ft=n.$_$.j2,Ut=e.$_$.d1,Ht=n.$_$.ha,Vt=e.$_$.a,Bt=e.$_$.k1,Yt=e.$_$.l1,Wt=e.$_$.t1,Gt=e.$_$.u1,Kt=n.$_$.e9,Jt=n.$_$.j,Xt=n.$_$.u,Zt=n.$_$.v1,Qt=e.$_$.o2,tn=i.$_$.j,nn=e.$_$.x1,en=i.$_$.d,rn=n.$_$.k,sn=n.$_$.k7,on=i.$_$.q,un=n.$_$.i4,an=n.$_$.i6,hn=e.$_$.h,_n=i.$_$.c1,ln=i.$_$.y,fn=e.$_$.s1,cn=n.$_$.ld,vn=n.$_$.sb,wn=i.$_$.d1,dn=i.$_$.s,pn=n.$_$.ya,mn=i.$_$.t,gn=n.$_$.lg,$n=n.$_$.v6,yn=i.$_$.b,bn=i.$_$.e,kn=i.$_$.g,jn=n.$_$.xf,xn=i.$_$.x,zn=n.$_$.m2,En=n.$_$.od,Cn=i.$_$.j1,Sn=n.$_$.nd,qn=n.$_$.dd,On=i.$_$.h,In=i.$_$.a,An=n.$_$.f9,Tn=e.$_$.r2,Dn=e.$_$.d,Mn=n.$_$.t9,Nn=e.$_$.f,Rn=e.$_$.n,Pn=e.$_$.j,Ln=e.$_$.k,Fn=e.$_$.c1,Un=n.$_$.q5,Hn=n.$_$.f7,Vn=n.$_$.fb,Bn=n.$_$.t,Yn=n.$_$.r,Wn=n.$_$.q9,Gn=n.$_$.a8,Kn=n.$_$.o5,Jn=n.$_$.ec,Xn=n.$_$.zb,Zn=n.$_$.xb,Qn=n.$_$.bc,ti=n.$_$.hc,ni=n.$_$.g9,ii=n.$_$.kd,ei=n.$_$.vc,ri=i.$_$.z,si=n.$_$.qe,oi=n.$_$.af,ui=e.$_$.e1,ai=n.$_$.aa,hi=n.$_$.le,_i=n.$_$.dg,li=n.$_$.z1,fi=n.$_$.c,ci=n.$_$.e1,vi=n.$_$.w,wi=e.$_$.q1,di=e.$_$.g,pi=e.$_$.o1,mi=i.$_$.k,gi=n.$_$.o7,$i=n.$_$.b8,yi=n.$_$.u6,bi=i.$_$.i1,ki=n.$_$.q4,ji=e.$_$.a1,xi=n.$_$.t4,zi=e.$_$.y,Ei=n.$_$.r4,Ci=e.$_$.z,Si=n.$_$.s4,qi=e.$_$.b1,Oi=n.$_$.r5,Ii=n.$_$.r1,Ai=e.$_$.i,Ti=n.$_$.pd,Di=i.$_$.n,Mi=n.$_$.oc,Ni=n.$_$.qc,Ri=n.$_$.ub,Pi=n.$_$.s9,Li=n.$_$.ef,Fi=n.$_$.d8,Ui=n.$_$.m9,Hi=e.$_$.k2,Vi=e.$_$.s2,Bi=i.$_$.u,Yi=n.$_$.hd;function Wi(){return this.w44().f33()}function Gi(){return this.w44().n33()}function Ki(t){return this.w44().s33(t)}function Ji(t,n,i,e){return t=t===B?this.t4i():t,n=n===B?this.l4j():n,i=i===B?this.l4k():i,e===B?this.d4l(t,n,i):e.d4l.call(this,t,n,i)}function Xi(t){var n;t.s32("namespaces",Qi().e42_1.i32());var i=N(M(T().xf(),D([]),!1));return n=(A(i,P)?i:R()).i32(),t.s32("content",n),q()}function Zi(){r=this,this.e42_1=F(L()),this.f42_1=U("compactFragment",[],Xi)}function Qi(){return null==r&&new Zi,r}function te(){re.call(this,"Element",0),s=this}function ne(){re.call(this,"Attribute",1),o=this}function ie(){re.call(this,"Text",2),u=this}function ee(){if(a)return q();a=!0,s=new te,o=new ne,u=new ie}function re(t,n){G.call(this,t,n)}function se(){return ee(),o}function oe(){he.call(this,"Attribute",1),_=this}function ue(){he.call(this,"Text",2),l=this}function ae(){if(c)return q();c=!0,h=new he("Element",0),_=new oe,l=new ue,f=new he("Mixed",3),new he("Inline",4)}function he(t,n){G.call(this,t,n)}function _e(){return ae(),h}function le(){return ae(),_}function fe(){return ae(),l}function ce(){return ae(),f}function ve(t,n){this.z42_1=t,this.a43_1=n}function we(t){return q()}function de(t,n,i){return n=n===B?X():n,ye.call(i,function(t,n){var i,e=(t=t===B?new ur:t).c4h_1,r=t.d4h_1,s=t.e4h_1,o=t.g4h_1;if(null==o){var u=t.n4h(),a=null!=u&&u,h=t.i4h_1,_=t.f4h_1;i=new Er(!1,a,h,null==_?hr().o4h_1:_)}else i=o;return _r.call(n,e,r,s,i,t.k4h_1,t.l4h_1),n.f49_1=t.j4h_1,n.g49_1=t.m4h_1,n}(t,Z(H(_r))),n),i}function pe(t,n){return function(t,n,i){t=t===B?X():t,n=n===B?$e:n;var e=new ur;return n(e),de(e,t,i),i}(t,n,Z(H(ye)))}function me(){w=this,this.c43_1=pe(B,we)}function ge(){}function $e(t){return q()}function ye(t,n){null==w&&new me,n=n===B?X():n,this.d43_1=t,this.e43_1=tt(n,(Ee(),v))}function be(t,n,i){var e;if(Ee(),t.u44_1===Sr()){var r;if(t.t44_1===Sr()){var s=null==i?null:st(i.e3t(),n);r=null==s?ot(n):s}else{var o=null==i?null:st(i.e3t(),t.t44_1);r=null==o?ot(t.t44_1):o}e=r}else e=t.t44_1===Sr()?t.v44_1===Sr()?st(n,t.u44_1):new rt(n,t.u44_1,t.v44_1):t.v44_1===Sr()?st(t.u44_1,t.t44_1):new rt(t.u44_1,t.t44_1,t.v44_1);return e}function ke(t){Ee();var n=0,i=t.l33();if(n":e)+" ("+n+")",r);return an()}function rr(t,n,i,e,r){return an()}function sr(t,n,i,e,r){var s;if(t.e3t()!==i.l44().p3w())s=!0;else{var o;if(n.equals(se())){var u=null==e?null:e.p3w();on(),o="http://www.w3.org/2001/XMLSchema-instance"===u}else o=!1;s=o}if(!s)throw new lr(t.m3t(),"("+i.w44().j33()+") "+i.l44()+"/"+pn(null==e?"":e)+" ("+n+")",r);return an()}function or(t,n,i,e){var r=t.m3t(),s=null==i?null:i.toString();throw new lr(r,null==s?"":s,e)}function ur(t,n,i,e,r,s){t=t===B||t,n=n===B?On():n,i=i===B?"":i,e=e===B?null:e,r=r===B?hr().o4h_1:r,s=s===B?null:s,this.c4h_1=t,this.d4h_1=n,this.e4h_1=i,this.f4h_1=r,this.g4h_1=s,this.h4h_1=e,this.i4h_1=mr(),this.j4h_1=!0,this.k4h_1=null,this.l4h_1=In(),this.m4h_1=!1}function ar(){m=this;var t=er;this.o4h_1=new tr(t);var n=rr;this.p4h_1=new nr(n);var i=sr;this.q4h_1=new ir(i),this.r4h_1=or}function hr(){return null==m&&new ar,m}function _r(t,n,i,e,r,s){hr(),t=t===B||t,n=n===B?On():n,i=i===B?"":i,r=r===B?null:r,s=s===B?In():s,this.z48_1=t,this.a49_1=n,this.b49_1=i,this.c49_1=e,this.d49_1=r,this.e49_1=s,this.f49_1=!0,this.g49_1=!1}function lr(t,n,i){var e=function(t){return!0===t.d().e()?$n(t,B,"\n candidates: ",B,B,B,vr):""}(i=i===B?an():i),r=null==t?null:" at position "+t;fr.call(this,"Could not find a field for name "+n+e+(null==r?"":r)),An(this,lr)}function fr(t,n){Dn(t,n=n===B?null:n,this),An(this,fr)}function cr(t,n,i){i=i===B?null:i,fr.call(this,"Invalid XML value at position: "+t+": "+n,i),An(this,cr)}function vr(t){return t instanceof Ge?t.z46_1+" ("+t.b47_1.r42()+")":pn(t)}function wr(t,n){this.y4h_1=t,this.z4h_1=n}function dr(t,n){this.a4i_1=t,this.b4i_1=n}function pr(t,n){G.call(this,t,n)}function mr(){return function(){if($)return q();$=!0,new pr("ALWAYS",0),g=new pr("ANNOTATED",1),new pr("NEVER",2)}(),g}function gr(){}function $r(t){return function(t,n){return br.call(n,t.s4h_1,t.t4h_1,t.u4h_1,t.v4h_1,t.w4h_1),n}(t,Z(H(br)))}function yr(t){return function(t,n){return Er.call(n,t.d4j_1,t.e4j_1,t.f4j_1,t.g4j_1,t.h4j_1),n}(t,Z(H(Er)))}function br(t,n,i,e,r){t=t!==B&&t,n=n!==B&&n,i=i===B?mr():i,e=e===B?hr().o4h_1:e,r=r===B?null:r,this.d4j_1=t,this.e4j_1=n,this.f4j_1=i,this.g4j_1=e,this.h4j_1=r}function kr(t,n,i){var e=n.g2(t);if(null==e)throw new fr("Could not find the attribute in "+i.j33()+" with the name: "+t+"\n Candidates were: "+$n(n.h2()));return e}function jr(){return"Type name info should match"}function xr(t){return t instanceof Lr}function zr(t){return function(t){for(var n=ii(t.d4k_1,ni([zn(59)])),i=rn(Un(n,10)),e=n.d();e.e();){var r,s,o=e.f(),u=ei(o,zn(61));if(-1===u)s=new ri("",o);else{var a,h=o.substring(0,u),_=u+1|0;a=o.substring(_),s=new ri(h,a)}r=s,i.a(r)}return i}(t)}function Er(t,n,i,e,r){n=n!==B&&n,i=i===B?mr():i,r=r===B?null:r,this.s4h_1=t,this.t4h_1=n,this.u4h_1=i,this.v4h_1=e,this.w4h_1=r}function Cr(t,n,i){t=t===B?"ZXCVBNBVCXZ":t,n=n===B?"ZXCVBNBVCXZ":n,i=i===B?"ZXCVBNBVCXZ":i,this.t44_1=t,this.u44_1=n,this.v44_1=i}function Sr(){return y}function qr(){}function Or(){}function Ir(t){t=t===B||t,this.b4k_1=t}function Ar(t){t=t===B||t,this.s4c_1=t}function Tr(t,n,i){n=n===B?"ZXCVBNBVCXZ":n,i=i===B?"ZXCVBNBVCXZ":i,this.x44_1=t,this.y44_1=n,this.z44_1=i}function Dr(t){this.c4k_1=t}function Mr(){}function Nr(){}function Rr(){}function Pr(){}function Lr(){}function Fr(t){this.e4k_1=t}function Ur(){b=this,this.u4g_1=ui("javax.xml.namespace.QName",hn())}function Hr(){return null==b&&new Ur,b}function Vr(t){return Pi("element",1,Ri,(function(t){return Vr(t)}),null),t.o43_1.s()}function Br(t,n,i){var e,r;Gr.call(this,t,gs(n,i,!0,null)),this.o43_1=_i((e=t,r=this,function(){return Wr().f4k(e,r.f44_1,B,!1)}))}function Yr(){k=this}function Wr(){return null==k&&new Yr,k}function Gr(t,n,i){var e,r;Wr(),i=i===B?n:i,this.e44_1=t,this.f44_1=i,this.g44_1=n.l4k(),this.h44_1=n.t4i(),this.i44_1=n.m4j(),this.j44_1=this.h4k().b4j(n),this.k44_1=_i((e=this,r=n,function(){return e.h4k().h4i(r,e.f44_1,e.r42(),e.h44_1)}))}function Kr(t){return Pi("children",1,Ri,(function(t){return Kr(t)}),null),t.d44_1.s()}function Jr(t,n,i){var e;Qr.call(this,t,n,i),this.z43_1=t.h47_1.c49_1.p4i(n,i,!1);t:{for(var r=i.j4j().d();r.e();){var s=r.f();if(s instanceof qr){e=s;break t}}e=null}var o=e,u=t.h47_1.c49_1.k4i(n,i);this.a44_1=t.h47_1.c49_1.j4i(n,i)?fs():null==u?vs():new ws(u);var a,h,_=Xt(),l=this.a44_1;J(l,fs())?h=null:J(l,vs())?h=Wr().f4k(t,new Cs(this,1),B,!1).l44():l instanceof ws?h=this.l44():Rt();var f=h;if(null!=o)for(var c=i.i32(),v=null==c?null:c.w44(),w=null==v?null:v.j33(),d=null==w?"":w,p=i.i32(),m=null==p?null:p.l44(),g=new dr(d,null==m?st("",""):m),$=pi(this.w44()),y=null==$?T().nf():$,b=o.m4k_1,k=0,j=b.length;k0&&(F=L,B=J),L=L+1|0}while(L=0){var _=h.h(n);if(!J(_.r4j(),vt())||!J(_.p33(0).w44(),Qi().f42_1)){var l;t:{var f=yi(h),c=f.y_1,v=f.z_1;if(c<=v)do{var w=c;if(c=c+1|0,w!==n&&h.h(w).r42().equals(_e())){l=w;break t}}while(w!==v);l=null}var d=l;if(null!=d)throw new fr("Types with an @XmlValue member may not contain other child elements ("+r.w44().p33(d))}}return h})),this.c4l_1=_i(hs(this))}function ls(){x=this,ds.call(this)}function fs(){return null==x&&new ls,x}function cs(){z=this,ds.call(this)}function vs(){return null==z&&new cs,z}function ws(t){ds.call(this),this.t4g_1=t}function ds(){}function ps(){}function ms(){}function gs(t,n,i,e){return function(t,n,i,e,r){var s;e=e===B?null:e;var o=pi(t),u=null==o?null:Bs(o);return s=null==u?t.j33():u,$s.call(r,t,new wr(s,n),i,e),r}(t,n,i,e,Z(H($s)))}function $s(t,n,i,e,r){e=e===B?null:e,r=r===B?null:r,this.e4l_1=t,this.f4l_1=n,this.g4l_1=i,this.h4l_1=r,this.i4l_1=e}function ys(t,n,i,e,r){Qr.call(this,t,n,i),this.t4l_1=r,this.u4l_1=t.h47_1.c49_1.p4i(n,i,e)}function bs(t,n,i){var e,r,s;Qr.call(this,t,n,i),this.p4a_1=_i((e=t,r=this,s=i,function(){return Wr().j4k(e,new Cs(r,0,B,fe()),s,!0)})),this.q4a_1=_i(function(t,n,i){return function(){return Wr().j4k(t,new Cs(n,1,B,fe()),i,!0)}}(t,this,i))}function ks(t){return Pi("child",1,Ri,(function(t){return ks(t)}),null),t.g4m_1.s()}function js(){E=this;var t;t=[ji(ki()).i32(),zi(xi()).i32(),Ci(Ei()).i32(),qi(Si()).i32()],this.i4m_1=t}function xs(){return null==E&&new js,E}function zs(t,n,i,e){if(xs(),Qr.call(this,t,n,i),!n.k4j().m33())throw Lt("InlineDescriptors are only valid for inline classes");var r,s,o,u;this.g4m_1=_i((r=this,s=i,o=t,u=e,function(){var t;if(null!=r.h44_1.z4h_1)t=r.h44_1;else if(null!=r.a4k().o4j_1.z4h_1)t=r.a4k().o4j_1;else{var n,i=r.a4k().n4j_1.r33(0);t:{for(var e=r.a4k().n4j_1.o33(0).d();e.e();){var a=e.f();if(a instanceof Cr){n=a;break t}}n=null}var h=new wr(i,null==n?null:be(n,i,s.z4i()));t=null!=h.z4h_1?h:r.h44_1}var _=new Cs(r,0,t);return Wr().j4k(o,_,s,u)})),this.h4m_1=Oi(xs().i4m_1,this.w44())}function Es(t,n,i){i=i===B?n:i,Gr.call(this,t,n,i);var e;e=!(i instanceof $s&&i.g4l_1)&&t.h47_1.c49_1.i4i(n,i),this.h45_1=e}function Cs(t,n,i,e,r){i=i===B?null:i,e=e===B?null:e,r=r===B?null:r,this.j4m_1=t,this.k4m_1=n,this.l4m_1=r;var s,o=i;s=null==o?-1===this.k4m_1?new wr(this.j4m_1.w44().j33(),null):function(t,n,i){var e,r=t.r33(n);t:{for(var s=t.o33(n).d();s.e();){var o=s.f();if(o instanceof Cr){e=o;break t}}e=null}return new wr(r,null==e?null:be(e,r,i))}(this.j4m_1.w44(),this.k4m_1,bi(this.j4m_1.l44())):o,this.m4m_1=s;var u,a=e;u=null==a?-1===this.k4m_1?null:function(t){for(var n=null,i=t.d();i.e();){var e=i.f(),r=e instanceof Ar?e:null;if(!0===(null==r?null:r.s4c_1))return ce();if(e instanceof Mr)return le();if(e instanceof Ir)return e.b4k_1?_e():le();if(e instanceof qr||e instanceof Tr)return _e();e instanceof Or&&(n=e)}return!0===(null==n?null:n.n4k_1)?_e():null}(this.j4m_1.w44().o33(this.k4m_1)):a,this.n4m_1=u}function Ss(t,n,i,e){var r,s,o,u,a,h,_=Ti(n.a4i_1,zn(46),""),l=n.b4i_1,f=ei(i,zn(61));if(f<0){var c;if(o=i,r=qn(i,zn(46)),s=-1,u=l.r3w(),r<0)c=i;else{var v=r+1|0;c=i.substring(v)}a=c}else{var w=i.substring(0,f);if(o=pn(hi(ai(w)?w:R())),r=qn(i,zn(46),f-1|0),(s=ei(i,zn(58),f+1|0))<0){u=l.r3w();var d=f+1|0,p=i.substring(d);a=pn(hi(ai(p)?p:R()))}else{var m=f+1|0,g=i.substring(m,s);u=pn(hi(ai(g)?g:R()));var $=s+1|0,y=i.substring($);a=pn(hi(ai(y)?y:R()))}}if(s>=0){var b=t.n3t().k3s(u);h=null==b?l.p3w():b}else h=l.p3w();var k=h,j=0!==r||0===Pt(_)?o:_+"."+o.substring(1),x=t.g47_1.e36(e,j),z=null==x?null:x.i32();if(null==z)throw Di("Missing descriptor for "+j+" in the serial context");var E=z;return new ve(f<0?Je().x4g(E,new ri(u,k)):new rt(k,a,u),E)}function qs(t){var n;t:{for(var i=t.d();i.e();){var e=i.f();if(e instanceof Dr){n=e;break t}}n=null}return null==n?null:n.c4k_1}function Os(t,n,i,e,r,s){r=r===B?null:r,s=s===B?null:s,this.o4m_1=t,this.p4m_1=n,this.q4m_1=i,this.r4m_1=e,this.s4m_1=r,this.t4m_1=s,this.u4m_1=null}function Is(t,n){var i=0;if(in&&(n=e)}return n}function Ls(t,n,i){for(var e=t.w4j_1,r=S(),s=e.d();s.e();){var o=s.f();!n[o.u4j_1]&&r.a(o)}for(var u=r,a=u.d();a.e();){var h=a.f();i.a(h),n[h.u4j_1]=!0}for(var _=u.d();_.e();)Ls(_.f(),n,i)}function Fs(t,n){if(null==t[n.u4j_1]){t[n.u4j_1]=n;for(var i=n.w4j_1.d();i.e();)Fs(t,i.f())}}function Us(t){return t.v4j_1.m()}function Hs(t){return Pi("children",1,Ri,(function(t){return Hs(t)}),null),t.q4j_1.s()}function Vs(t,n){var i,e;this.n4j_1=t,this.o4j_1=function(t,n){var i;if(t.f33()&&Ni(t.j33(),zn(63)))i=Mi(t.j33(),1);else{var e=pi(t),r=null==e?null:Bs(e);i=null==r?t.j33():r}var s,o=i;t:{for(var u=t.k33().d();u.e();){var a=u.f();if(a instanceof Cr){s=a;break t}}s=null}return new wr(o,null==s?null:be(s,o,n))}(this.n4j_1,n),this.p4j_1=this.o4j_1.z4h_1,this.q4j_1=_i((i=this,e=n,function(){for(var t=0,n=i.n4j_1.l33(),r=Wn(Array(n),null);t=0;){var u=o;0===u?r=n.w35(t.f42_1,o,t.e42_1):1===u&&(s=n.t35(t.f42_1,o)),o=n.a36(t.f42_1)}i=O(r,s)}return i}(Qi(),i);return i.k35(n),e},H(te).j42=function(t){return t.equals(_e())},H(ne).j42=function(t){return t.equals(le())},H(ie).j42=function(t){return t.equals(fe())},H(re).m42=function(t){return this.j42(t.r42())},H(oe).u42=function(){return!0},H(ue).u42=function(){return!0},H(he).u42=function(){return!1},H(ve).b43=function(){return this.a43_1.j33()},H(ve).toString=function(){return"PolyBaseInfo(tagName="+this.z42_1+", descriptor="+this.a43_1+")"},H(ve).hashCode=function(){var t=this.z42_1.hashCode();return C(t,31)+K(this.a43_1)|0},H(ve).equals=function(t){if(this===t)return!0;if(!(t instanceof ve))return!1;var n=t instanceof ve?t:R();return!!this.z42_1.equals(n.z42_1)&&!!J(this.a43_1,n.a43_1)},H(me).y35=function(){return this.c43_1.e43_1},H(me).s3j=function(t,n){return this.c43_1.s3j(t,n)},H(ye).y35=function(){return this.e43_1},H(ye).s3j=function(t,n){return this.f43(t,nt().s41(n))},H(ye).g43=function(t,n,i){var e,r=i;if(null==r){var s;t:{for(var o=t.i32().k33().d();o.e();){var u=o.f();if(u instanceof Cr){s=u;break t}}s=null}e=null==s?null:be(s,t.i32().j33(),null)}else e=r;var a=e;it(n);var h,_=new We(this.e43_1,this.d43_1,n),l=new Br(_,t.i32(),a).p33(0),f=l instanceof Jr?l:null;if(null==f)h=null;else{var c,v=n.w3t();t:{for(var w=null,d=!1,p=f.b44_1.i2().d();p.e();){var m=p.f();if(et(v,m.l44())){if(d){c=null;break t}w=m,d=!0}}c=d?w:null}h=null==c?null:new Ge(v,0,c)}return new Te(_,l,h).i35(t)},H(ye).f43=function(t,n,i,e){return i=i===B?null:i,e===B?this.g43(t,n,i):e.g43.call(this,t,n,i)},H(Ae).y35=function(){return this.f47_1.g47_1},H(Ae).g42=function(){return this.f47_1.k47_1},H(Ae).w34=function(){return null},H(Ae).x34=function(){return wt(this.l47())},H(Ae).y34=function(){var t;if(this.m47_1.o47()){var n=pt(this.l47());t=mt(n)}else t=dt(this.l47());return t},H(Ae).z34=function(){var t;if(this.m47_1.o47()){var n=$t(this.l47());t=yt(n)}else t=gt(this.l47());return t},H(Ae).a35=function(){var t;if(this.m47_1.o47()){var n=kt(this.l47());t=jt(n)}else t=bt(this.l47());return t},H(Ae).b35=function(){var t;if(this.m47_1.o47()){var n=zt(this.l47());t=Et(n)}else t=xt(this.l47());return t},H(Ae).c35=function(){var t=this.l47();return Ct(t)},H(Ae).d35=function(){return Ct(this.l47())},H(Ae).e35=function(){return St(this.l47())},H(Ae).l47=function(t,n){return t=t===B||t,n===B?this.p47(t):n.p47.call(this,t)},H(Ae).f35=function(){return this.p47(!1)},H(Te).q47=function(){return null},H(Te).v34=function(){return!this.s44_1.r47()&&!this.g42().l3t().equals(It())},H(Te).g35=function(t){return this.r44_1=!0,this},H(Te).p47=function(t){var n,i=this.m47_1,e=i instanceof Qr?i:null,r=null==e?null:e.x46_1,s=this.m47_1.r42();if(this.q44_1>=0)n=this.g42().u3t(this.q44_1);else{var o;switch(s.l6_1){case 0:var u,a=this.g42(),h=At(),_=this.j33().p3w();u=this.j33().q3w(),a.x3t(h,_,u),o=Tt(this.g42());break;case 1:throw Dt("Attribute parsing without a concrete index is unsupported");case 4:throw Dt("Inline classes can not be decoded directly");case 3:o=Mt(this.g42());break;case 2:o=this.m47_1.s47()?Mt(this.g42()):Nt(this.g42());break;default:Rt()}n=o}var l=n;return t&&0===Pt(l)&&null!=r?r:l},H(Te).j35=function(t){throw Lt("This should not happen as decodeSerializableValue should be called first")},H(Te).i35=function(t){var n=this.m47_1.t47(t),i=this.r44_1&&this.m47_1 instanceof zs?this.m47_1.p33(0):this.m47_1;return n.j32(new Me(this.s44_1,i,this.p44_1,this.q44_1,this.q47()))},H(De).j35=function(t){throw Ft("Strings cannot be decoded to structures")},H(De).v34=function(){return!0},H(De).g35=function(t){return new De(this.y47_1,this.m47_1.p33(0),this.x47_1)},H(De).p47=function(t){var n,i=this.m47_1,e=i instanceof Qr?i:null,r=null==e?null:e.x46_1;if(t&&null!=r){var s=this.x47_1;n=0===Pt(s)}else n=!1;return n?r:this.x47_1},H(De).i35=function(t){return this.m47_1.t47(t).j32(this)},H(Me).q47=function(){return this.g48_1},H(Me).j48=function(t){this.h48_1.a(t)},H(Me).j35=function(t){if(t.f33())return new Re(this.i48_1,this.m47_1,this.q47());if(this.m47_1.n33()instanceof Ut)throw Lt("A primitive is not a composite");for(var n=this.m47_1 instanceof Jr?new Ye(this.i48_1,this.m47_1,this.p44_1):this.m47_1 instanceof rs?this.m47_1.r42().equals(le())?new Le(this.i48_1,this.m47_1,this.q44_1):this.m47_1.i45()?new Fe(this.i48_1,this.m47_1,this.p44_1,this.q47()):new Ue(this.i48_1,this.m47_1,this.q47()):this.m47_1 instanceof is?this.m47_1.i45()?new Ve(this.i48_1,this.m47_1,this.p44_1,this.q47()):new Be(this.i48_1,this.m47_1,this.p44_1,this.q47()):new Re(this.i48_1,this.m47_1,this.q47()),i=this.h48_1.d();i.e();){var e=i.f();n.j48(e)}return n},H(Ne).v34=function(){return!1},H(Ne).v35=function(t,n,i,e){var r=this.m47_1,s=r instanceof Qr?r:null,o=null==s?null:s.s48(i),u=null==o?e:o;return null==u||Ht(u)?u:R()},H(Ne).x35=function(t,n,i,e){return null},H(Ne).j35=function(t){return this},H(Ne).k35=function(t){},H(Ne).a36=function(t){var n=t.n33();if(n instanceof Yt||n instanceof Bt)return at(),-1;throw Lt("Null objects have no members")},H(Ne).l35=function(t,n){throw Lt("Null objects have no members")},H(Ne).m35=function(t,n){throw Lt("Null objects have no members")},H(Ne).n35=function(t,n){throw Lt("Null objects have no members")},H(Ne).o35=function(t,n){throw Lt("Null objects have no members")},H(Ne).b36=function(t){return 0},H(Ne).p35=function(t,n){throw Lt("Null objects have no members")},H(Ne).q35=function(t,n){throw Lt("Null objects have no members")},H(Ne).r35=function(t,n){throw Lt("Null objects have no members")},H(Ne).s35=function(t,n){throw Lt("Null objects have no members")},H(Ne).t35=function(t,n){throw Lt("Null objects have no members")},H(Ne).u35=function(t,n){throw Lt("Null objects have no members")},H(Re).g42=function(){return this.m46_1.k47_1},H(Re).v48=function(t,n,i){var e=this.n46_1.p33(n),r=e.t47(i);return this.g46_1>=0?null:r.i32().n33()instanceof Ut?new Te(this.m46_1,e,this.i46_1,this.h46_1):new Me(this.m46_1,e,this.i46_1,this.h46_1,null)},H(Re).v35=function(t,n,i,e){if(!this.k46_1.m()){var r=this.k46_1.x2();if(r.w48_1!==n)throw Zt("Recovery state is inconsistent");var s=r.x48_1,o=null==s||Ht(s)?s:R();return null==o||Ht(o)?o:R()}var u,a=this.n46_1.p33(n),h=a.t47(i);if(J(A(h,Qt)?h:R(),Qi())&&ke(this.n46_1)===n){var _=I(this.g42());this.g42().u3x();var l=_ instanceof _t?_:null,f=null==l?tn(_):l;return Ht(f)?f:R()}if(this.h46_1>=0&&a instanceof bs)u=new Pe(this.m46_1,a,this.h46_1);else{var c=this.v48(t,n,h);u=null==c?new Ne(this.m46_1,a):c}var v=u,w=h instanceof nn?h.q37(v,e):h.j32(v);return this.f46_1[n]=!0,w},H(Re).x35=function(t,n,i,e){if(!this.k46_1.m()){var r=this.k46_1.x2();if(r.w48_1!==n)throw Zt("Recovery state is inconsistent");var s=r.x48_1,o=null==s||Ht(s)?s:R();return Ht(o)?o:R()}if(this.m46_1.r47()){if(!this.g42().f3y().equals(en()))throw Dt("Elements with nill tags may not have content");return null}var u=this.v48(t,n,i);if(null==u)return null;var a=u,h=this.n46_1.p33(n).t47(i),_=h instanceof nn?h.q37(a,e):h.j32(a);return this.f46_1[n]=!0,_},H(Re).u35=function(t,n){if(!this.k46_1.m()){var i=this.k46_1.x2();if(i.w48_1!==n)throw Zt("Recovery state is inconsistent");var e=i.x48_1;return new Fr(null==e||Ht(e)?e:R())}var r=this.n46_1.p33(n);return t.n33()instanceof Ut?new Te(this.m46_1,r,this.i46_1,this.h46_1):new Me(this.m46_1,r,this.i46_1,this.h46_1,this.y45_1)},H(Re).y48=function(t,n){var i=n.equals(se());this.i46_1=null;var e=this.b46_1,r=this.a46_1,s=this.u48(t),o=r.g2(s),u=null==o?null:qe(o,n,this);if(null!=u)return u;var a=e.g2(s),h=null==a?null:Oe(a,n);if(null!=h)return this.i46_1=h,h.a47_1;var _,l=this.j33().p3w();if(i){var f,c;if(f=t.p3w(),0===Pt(f)){var v=xe(s,l),w=r.g2(v),d=null==w?null:qe(w,n,this);if(null!=d)return d;var p=e.g2(v),m=null==p?null:Oe(p,n);if(null!=m)return this.i46_1=m,m.a47_1}if(c=t.r3w(),0===Pt(c)){var g=this.g42().k3s("");if(null!=g){var $=xe(s,g),y=r.g2($),b=null==y?null:qe(y,n,this);if(null!=b)return b;var k=e.g2($),j=null==k?null:Oe(k,n);if(null!=j)return j.a47_1}}}if(Pt(l)>0&&l===t.p3w()){var x=r.g2(ot(t.q3w())),z=null==x?null:qe(x,n,this);if(null!=z)return z}if(n.equals(se())){var E=this.d46_1,C=this.h46_1;_=0<=C&&C=0?q:null))return S}else{var O=ke(this.n46_1),I=O>=0?O:null;if(null==I);else{for(var A=this.n46_1.p33(I);A instanceof rs&&A.i45()||A instanceof zs;)A=A.p33(0);if(J(A.w44(),Qi().f42_1))return I}}for(var T,D=this.q27().c49_1,M=this.g42(),N=rn(r.g()),R=r.q().d();R.e();){var P,L=R.f(),F=L.r(),U=L.s();P=new Ge(F,U,this.n46_1.p33(U)),N.a(P)}T=N;var H=D.h49(M,n,this.n46_1,t,sn(T,e.i2()));return this.k46_1.l(H),at(),-3},H(Re).a36=function(t){if(!this.l46_1&&this.g42().i3t()=0){if(this.g42().i3y(en(),this.n46_1.l44()),this.g46_1>=this.f46_1.length)return at(),-1;var n=this.g46_1;return Se(this),n}var i=this.h46_1;this.h46_1=i+1|0;t:for(;;){var e,r=this.d46_1,o=this.h46_1;if(0<=o&&o"),an());this.k46_1.l(q),S=this.a36(t)}return S}break;case 10:var O=this.y48(this.g42().w3t(),se());return at(),-3!==O?O:this.a36(t);case 1:var I=this.y48(this.g42().w3t(),(ee(),s));if(at(),-3!==I)return I;_n(this.g42());break;case 7:throw new fr("End document in unexpected location")}return at(),-1},H(Re).k35=function(t){if(!this.l46_1){var n=this.a36(t);if(at(),-1!==n)throw new fr("Unexpected content in end structure")}null==this.y45_1?this.g42().i3y(en(),this.j33()):this.g42().i3y(en(),null)},H(Re).i49=function(t){var n;return Se(this),this.g46_1=0)return this.j49(this.h46_1);if(this.g46_1>=0){var o=s instanceof Qr?s:null,u=null==o?null:o.x46_1;if(null==u)throw new fr("Missing child "+t.r33(n)+":"+n);return u}switch(s.r42().l6_1){case 4:throw new fr("Inline elements can not be directly decoded");case 0:r=Tt(this.g42());break;case 3:case 2:var a,h=Mt(this.g42()),_=this.g42().d3y();if(!(_ instanceof ln))throw new fr("Missing end tag after text only content (found: "+_+")");if(a=this.j33().q3w(),_.b3z_1!==a)throw new fr("Expected end tag local name "+this.j33().q3w()+", found "+_.b3z_1);r=h;break;case 1:throw Zt("Attributes should already be read now");default:Rt()}return r},H(Re).o35=function(t,n){return bt(this.t35(t,n))},H(Re).l35=function(t,n){return wt(this.t35(t,n))},H(Re).m35=function(t,n){return dt(this.t35(t,n))},H(Re).n35=function(t,n){return gt(this.t35(t,n))},H(Re).p35=function(t,n){return xt(this.t35(t,n))},H(Re).q35=function(t,n){var i=this.t35(t,n);return Ct(i)},H(Re).r35=function(t,n){return Ct(this.t35(t,n))},H(Re).s35=function(t,n){return St(this.t35(t,n))},H(Re).j48=function(t){this.z45_1.a(t)},H(Pe).z35=function(){return!0},H(Pe).b36=function(t){return 1},H(Pe).a36=function(t){var n;switch(this.d4a_1){case 0:case 1:var i=this.d4a_1;this.d4a_1=i+1|0,n=i;break;default:at(),n=-1}return n},H(Pe).v35=function(t,n,i,e){this.c4a_1<0&&(this.c4a_1=n);var r=(n-this.c4a_1|0)%2|0,s=this.n46_1.p33(r).t47(i);if(0===r&&J(s,Hr())){var o=this.g42().j3y(this.b4a_1);return Ht(o)?o:R()}return s.j32(new De(this.e4a_1,this.n46_1.r4a(),this.g42().u3t(this.b4a_1)))},H(Pe).t35=function(t,n){var i;if(0==(n%2|0)){var e,r,s,o=this.g42().j3y(this.b4a_1);if(r=o.r3w(),0===Pt(r)?e=!0:(s=o.p3w(),e=0===Pt(s)),!e)throw new fr("A QName in a namespace cannot be converted to a string");i=o.q3w()}else i=this.g42().u3t(this.b4a_1);return i},H(Pe).k35=function(t){},H(Pe).j35=function(t){return this},H(Pe).x34=function(){throw Ft("Expect map structure")},H(Pe).y34=function(){throw Ft("Expect map structure")},H(Pe).e35=function(){throw Ft("Expect map structure")},H(Pe).d35=function(){throw Ft("Expect map structure")},H(Pe).c35=function(){throw Ft("Expect map structure")},H(Pe).g35=function(t){return this},H(Pe).a35=function(){throw Ft("Expect map structure")},H(Pe).b35=function(){throw Ft("Expect map structure")},H(Pe).v34=function(){throw Ft("Expect map structure")},H(Pe).w34=function(){throw Ft("Expect map structure")},H(Pe).z34=function(){throw Ft("Expect map structure")},H(Pe).f35=function(){throw Ft("Expect map structure")},H(Le).z35=function(){return!0},H(Le).b36=function(t){return this.k4b_1.g()},H(Le).v35=function(t,n,i,e){var r=this.n46_1.p33(n),s=this.j4b_1;return this.j4b_1=s+1|0,new De(this.l4b_1,r,this.k4b_1.h(s)).i35(i)},H(Le).t35=function(t,n){var i=this.j4b_1;return this.j4b_1=i+1|0,this.k4b_1.h(i)},H(Le).k35=function(t){},H(Fe).a36=function(t){var n;return this.q4c_1?(at(),n=-1):(this.q4c_1=!0,n=0),n},H(Fe).v35=function(t,n,i,e){var r=this.n46_1.p33(0),s=r.t47(i);if(J(A(s,Qt)?s:R(),Qi())&&ke(Ie(this))===this.p4c_1){var o=wn(this.g42()),u=o instanceof _t?o:null,a=null==u?tn(o):u;return Ht(a)?a:R()}var h=new Me(this.r4c_1,r,this.o4c_1,un().MIN_VALUE,this.y45_1);return i.j32(h)},H(Fe).k35=function(t){},H(Fe).b36=function(t){return 1},H(Ue).a36=function(t){var n;if(this.l46_1=!0,2===this.g42().f3y().l6_1)at(),n=-1;else{var i=this.k4d_1;this.k4d_1=i+1|0,n=i}return n},H(Ue).v35=function(t,n,i,e){var r=this.n46_1.p33(0),s=new Me(this.l4d_1,r,this.i46_1,this.h46_1,null);return i instanceof nn?i.q37(s,e):i.j32(s)},H(He).v35=function(t,n,i,e){this.e4e_1=n;var r=this.n46_1.p33(0);if(0==(n%2|0)){if(r.g4e().equals(le())){var s=this.g42().h3y(r.l44());if(null==s)throw new fr("Missing key attribute on "+this.g42().w3t()+"@"+this.g42().m3t());var o=s;return i.j32(new De(this.f4e_1,r,o))}var u;if(dn(!this.n46_1.v45()),!et(this.g42().w3t(),r.l44()))throw u=this.g42().w3t()+" != "+this.n46_1.c47(),Zt(pn(u));return H(Re).v35.call(this,t,n%2|0,i,e)}var a=this.n46_1.p33(1),h=new Me(this.f4e_1,a,this.d4e_1,un().MIN_VALUE,this.y45_1);return this.n46_1.v45()&&h.j48(r.l44()),i.j32(h)},H(Ve).a36=function(t){if(this.n46_1.v45()){var n;if(this.e4e_1>=0&&1==(this.e4e_1%2|0))at(),n=-1;else{this.e4e_1=this.e4e_1+1|0,n=this.e4e_1}return n}if(this.e4e_1<0){if(!this.g42().l3t().equals(At()))throw Zt(pn("Check failed."));if(!et(this.n46_1.c47(),this.g42().w3t()))throw new fr("Map entry not found. Found "+this.g42().w3t()+"@"+this.g42().m3t()+" instead")}if(0==(this.e4e_1%2|0)){var i=et(this.n46_1.c47(),this.g42().w3t());mn(i,(e=this,function(){return e.n46_1.c47()+" != "+e.g42().w3t()}))}var e,r=H(He).a36.call(this,t);return r<0?r:(this.e4e_1=(this.e4e_1-(this.e4e_1%2|0)|0)+(r%2|0)|0,this.e4e_1)},H(Ve).k35=function(t){if(!this.n46_1.v45()&&!this.g42().l3t().equals(en()))throw Zt(pn("Check failed."));if(!et(this.g42().w3t(),this.n46_1.c47()))throw Zt(pn("Check failed."))},H(Ve).b36=function(t){return 2},H(Be).a36=function(t){if(this.n46_1.v45()){var n=this.e4e_1%2|0;if(1==(n+(2&((2^n)&(0|n|-n))>>31)|0)&&H(He).a36.call(this,t)<0)return at(),-1}else{var i,e=this.e4e_1%2|0;if(1==(e+(2&((2^e)&(0|e|-e))>>31)|0)){var r=this.g42().d3y();i=J(null==r?null:r.l3t(),At())}else i=!1;if(i&&this.g42().f3y(),H(He).a36.call(this,t)<0)return at(),-1}return this.e4e_1=this.e4e_1+1|0,this.e4e_1},H(Be).v35=function(t,n,i,e){var r=H(He).v35.call(this,t,n,i,e);if(1==(n%2|0)&&!this.n46_1.v45()){if(!this.g42().f3y().equals(en()))throw Zt(pn("Check failed."));dn(et(this.n46_1.c47(),this.g42().w3t()))}return r},H(Be).k35=function(t){dn(et(this.n46_1.l44(),this.g42().w3t())),H(He).k35.call(this,t)},H(Be).b36=function(t){return-1},H(Ye).a36=function(t){var n,i,e,r,s=this.n46_1.a44_1;if(J(s,fs())){var o;switch(this.p4g_1){case 0:case 1:var u=this.p4g_1;this.p4g_1=u+1|0,o=u;break;default:at(),o=-1}return o}if(null!=this.q4g_1)return 1===this.p4g_1?n=1:(at(),n=-1),n;if(0===this.p4g_1){var a=0,h=this.d46_1;if(a("),this.p33(0).g4k(t,n+4|0,i),t.b(")")},H(Br).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Gr).equals.call(this,t)&&(t instanceof Br||R(),!!Vr(this).equals(Vr(t)))},H(Br).hashCode=function(){var t=H(Gr).hashCode.call(this);return C(31,t)+Vr(this).hashCode()|0},H(Yr).j4k=function(t,n,i,e){var r,s,o,u=t.h47_1.c49_1.r4i(n,i);null==u?(r=n.k4j(),s=n,o=i):(r=u.i32(),s=n.k4k(B,B,u),o=i.k4k(B,B,u));var a=t.h47_1.c49_1.v4i(n,i),h=r.n33();return J(h,Pn())||h instanceof Ut?new ys(t,s,o,e,a):J(h,vt())?new rs(t,s,o):J(h,ct())?J(n.l4j(),le())?new bs(t,s,o):new is(t,s,o):h instanceof Fn?new Jr(t,s,o):t.h47_1.f49_1&&r.m33()?new zs(t,s,o,e):new _s(t,s,o,a)},H(Yr).f4k=function(t,n,i,e,r){return i=i===B?n:i,r===B?this.j4k(t,n,i,e):r.j4k.call(this,t,n,i,e)},H(Gr).g4e=function(){return 4===this.r42().l6_1?this.p33(0).g4e():this.r42()},H(Gr).h4k=function(){return this.e44_1.h47_1.c49_1},H(Gr).a4k=function(){return this.i44_1},H(Gr).o47=function(){return!1},H(Gr).l44=function(){return Pi("tagName",1,Ri,(function(t){return t.l44()}),null),this.k44_1.s()},H(Gr).t47=function(t){var n=this.g44_1,i=null==n?t:n;return A(i,Qt)?i:R()},H(Gr).w44=function(){return this.a4k().n4j_1},H(Gr).l33=function(){return this.a4k().n4j_1.l33()},H(Gr).r4j=function(){return this.a4k().n4j_1.n33()},H(Gr).p33=function(t){throw li("There are no children")},H(Gr).i4k=function(t,n,i){return this instanceof rs||this instanceof ys?this.g4k(t,n,i):i.n(this.w44().j33())?t.b(this.l44().toString()).b("<...> = ").b(this.r42().k6_1):(i.a(this.w44().j33()),this.g4k(t,n,i)),t},H(Gr).toString=function(){var t,n=ci();return t=vi(),this.i4k(n,0,t).toString()},H(Gr).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&(t instanceof Gr||R(),!!(J(this.e44_1,t.e44_1)&&J(this.g44_1,t.g44_1)&&this.h44_1.equals(t.h44_1)&&J(this.a4k(),t.a4k())))},H(Gr).hashCode=function(){var t=K(this.e44_1),n=C(31,t),i=this.g44_1,e=null==i?null:K(i);return t=C(31,t=n+(null==e?0:e)|0)+this.h44_1.hashCode()|0,C(31,t)+K(this.a4k())|0},H(Jr).s47=function(){return!1},H(Jr).r42=function(){return this.z43_1},H(Jr).t48=function(){return J(this.a44_1,fs())},H(Jr).p33=function(t){return Kr(this).h(t)},H(Jr).w4g=function(t){var n=this.b44_1.g2(t);if(null==n)throw new fr("Missing polymorphic information for "+t);return n},H(Jr).g4k=function(t,n,i){if(t.b(this.l44().toString()),this.t48()){t.b(" <~(");for(var e=this.b44_1.i2().d();e.e();)e.f().i4k(t,n+4|0,i).k7(zn(44)).k7(zn(10))}else{t.b(" ("),t.b(" [");for(var r=this.b44_1.i2().d();r.e();)r.f().i4k(t,n+4|0,i).k7(zn(44)).k7(zn(10));t.k7(zn(93))}},H(Jr).equals=function(t){return!!(this===t||null!=t&&fi(this).equals(fi(t))&&H(Qr).equals.call(this,t)&&(t instanceof Jr||R(),this.z43_1.equals(t.z43_1)&&J(this.a44_1,t.a44_1)&&J(this.b44_1,t.b44_1)&&this.c44_1==t.c44_1))},H(Jr).hashCode=function(){var t=H(Qr).hashCode.call(this);t=C(31,t)+this.z43_1.hashCode()|0,t=C(31,t)+K(this.a44_1)|0,t=C(31,t)+K(this.b44_1)|0;var n=C(31,t),i=this.c44_1,e=null==i?null:Mn(i);return n+(null==e?0:e)|0},H(Qr).s48=function(t){var n,i=this.y46_1;if(!J(i,Zr()))return null==i||Ht(i)?i:R();if(null==this.x46_1)n=null;else{var e=new Te(new We(this.e44_1.g47_1,this.e44_1.h47_1,mi(this.x46_1).w41()),this);n=t.j32(e)}var r=n;return this.y46_1=r,null==r||Ht(r)?r:R()},H(Qr).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Gr).equals.call(this,t)&&(t instanceof Qr||R(),this.w46_1===t.w46_1&&this.x46_1==t.x46_1&&!!J(this.y46_1,t.y46_1))},H(Qr).hashCode=function(){var t=H(Gr).hashCode.call(this);t=C(31,t)+(0|this.w46_1)|0;var n=C(31,t),i=this.x46_1,e=null==i?null:Mn(i),r=C(31,t=n+(null==e?0:e)|0),s=this.y46_1,o=null==s?null:K(s);return r+(null==o?0:o)|0},H(is).r42=function(){return _e()},H(is).v45=function(){return Pi("isValueCollapsed",1,Ri,(function(t){return t.v45()}),null),this.r45_1.s()},H(is).c47=function(){return Pi("entryName",1,Ri,(function(t){return t.c47()}),null),this.s45_1.s()},H(is).p33=function(t){return 0==(t%2|0)?ts(this):ns(this)},H(is).g4k=function(t,n,i){t.b(this.l44().toString()).b(this.i45()?": TransparentMap<":": ExplicitMap<"),this.p33(0).g4k(t,n+4|0,i),t.b(", "),this.p33(1).g4k(t,n+4|0,i),t.k7(zn(62))},H(rs).r42=function(){return this.u4b_1},H(rs).p33=function(t){return es(this)},H(rs).g4k=function(t,n,i){t.b(this.l44().toString()),this.i45()?(t.b(": EludedList<"),es(this).i4k(t,n,i),t.k7(zn(62))):(t.b(": ExplicitList<"),es(this).i4k(t,n,i),t.k7(zn(62)))},H(rs).equals=function(t){return!!(this===t||null!=t&&fi(this).equals(fi(t))&&H(Es).equals.call(this,t)&&(t instanceof rs||R(),this.i45()===t.i45()&&this.u4b_1.equals(t.u4b_1)&&es(this).equals(es(t))))},H(rs).hashCode=function(){var t=H(Es).hashCode.call(this);return t=C(31,t)+(0|this.i45())|0,t=C(31,t)+this.u4b_1.hashCode()|0,C(31,t)+es(this).hashCode()|0},H(_s).s47=function(){return this.z4k_1},H(_s).r42=function(){return _e()},H(_s).p33=function(t){return ss(this).h(t)},H(_s).g4k=function(t,n,i){t.b(this.l44().toString()).b(" (").k7(zn(10));for(var e=!0,r=ss(this).d();r.e();){var s=r.f();e?e=!1:t.k7(zn(44)).k7(zn(10)),Is(t,n),s.i4k(t,n+4|0,i)}Is(t.k7(zn(10)),n-4|0).k7(zn(41))},H(_s).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Qr).equals.call(this,t)&&(t instanceof _s||R(),!!J(this.a4l_1,t.a4l_1))},H(_s).hashCode=function(){var t=H(Qr).hashCode.call(this),n=C(31,t),i=this.a4l_1,e=null==i?null:K(i);return n+(null==e?0:e)|0},H($s).t4i=function(){return this.f4l_1},H($s).l4k=function(){return this.h4l_1},H($s).d4l=function(t,n,i){return new $s(this.e4l_1,t,this.g4l_1,n,i)},H($s).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&(t instanceof $s||R(),!!(J(this.e4l_1,t.e4l_1)&&this.f4l_1.equals(t.f4l_1)&&this.g4l_1===t.g4l_1&&J(this.h4l_1,t.h4l_1)&&J(this.i4l_1,t.i4l_1)))},H($s).hashCode=function(){var t=K(this.e4l_1);t=C(31,t)+this.f4l_1.hashCode()|0,t=C(31,t)+(0|this.g4l_1)|0;var n=C(31,t),i=this.h4l_1,e=null==i?null:K(i),r=C(31,t=n+(null==e?0:e)|0),s=this.i4l_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},H($s).i32=function(){return null},H($s).m4j=function(){var t=this.h4l_1,n=null==t?null:t.i32();return new Vs(null==n?this.e4l_1:n,this.z4i())},H($s).j4j=function(){return an()},H($s).k4j=function(){var t=this.h4l_1,n=null==t?null:t.i32();return null==n?this.e4l_1:n},H($s).l4j=function(){return this.i4l_1},H($s).z4i=function(){var t=this.f4l_1.z4h_1,n=null==t?null:bi(t);return null==n?new ri("",""):n},H(ys).s47=function(){return this.t4l_1},H(ys).r42=function(){return this.u4l_1},H(ys).g4k=function(t,n,i){t.b(this.l44().toString()).k7(zn(58)).b(this.n33().toString()).b(" = ").b(this.u4l_1.toString())},H(ys).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Qr).equals.call(this,t)&&(t instanceof ys||R(),!!this.u4l_1.equals(t.u4l_1))},H(ys).hashCode=function(){var t=H(Qr).hashCode.call(this);return C(31,t)+this.u4l_1.hashCode()|0},H(bs).s47=function(){return!0},H(bs).r42=function(){return le()},H(bs).v4l=function(){return Pi("keyDescriptor",1,Ri,(function(t){return t.v4l()}),null),this.p4a_1.s()},H(bs).r4a=function(){return Pi("valueDescriptor",1,Ri,(function(t){return t.r4a()}),null),this.q4a_1.s()},H(bs).l33=function(){return 2},H(bs).p33=function(t){return 0==(t%2|0)?this.v4l():this.r4a()},H(bs).g4k=function(t,n,i){t.b(this.l44().toString()).b(" (").k7(zn(10)),Is(t,n),this.v4l().i4k(t,n+4|0,i).b(",").k7(zn(10)),Is(t,n),this.r4a().i4k(t,n+4|0,i).k7(zn(41))},H(zs).s47=function(){return ks(this).s47()},H(zs).r42=function(){return ks(this).r42()},H(zs).l44=function(){return ks(this).l44()},H(zs).p33=function(t){if(0!==t)throw Ii("Inline classes only have one child");return ks(this)},H(zs).o47=function(){return this.h4m_1},H(zs).g4k=function(t,n,i){t.b(this.l44().toString()),t.b(": Inline ("),ks(this).i4k(t,n+4|0,i),t.k7(zn(41))},H(zs).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Qr).equals.call(this,t)&&(t instanceof zs||R(),this.h4m_1===t.h4m_1)},H(zs).hashCode=function(){var t=H(Qr).hashCode.call(this);return C(31,t)+(0|this.h4m_1)|0},H(Es).i45=function(){return this.h45_1},H(Es).o4k=function(){return!1},H(Es).s47=function(){return!1},H(Es).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Gr).equals.call(this,t)&&(t instanceof Es||R(),this.i45()===t.i45()&&this.o4k()===t.o4k()&&this.s47()===t.s47())},H(Es).hashCode=function(){var t=H(Gr).hashCode.call(this);return t=C(31,t)+(0|this.i45())|0,t=C(31,t)+(0|this.o4k())|0,C(31,t)+(0|this.s47())|0},H(Cs).i32=function(){return this.j4m_1},H(Cs).l4k=function(){return this.l4m_1},H(Cs).d4l=function(t,n,i){return new Cs(this.j4m_1,this.k4m_1,t,n,i)},H(Cs).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&(t instanceof Cs||R(),!!(this.j4m_1.equals(t.j4m_1)&&this.k4m_1===t.k4m_1&&J(this.l4m_1,t.l4m_1)&&this.m4m_1.equals(t.m4m_1)&&J(this.n4m_1,t.n4m_1)))},H(Cs).hashCode=function(){var t=this.j4m_1.hashCode();t=C(31,t)+this.k4m_1|0;var n=C(31,t),i=this.l4m_1,e=null==i?null:K(i);t=C(31,t=n+(null==e?0:e)|0)+this.m4m_1.hashCode()|0;var r=C(31,t),s=this.n4m_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},H(Cs).z4i=function(){return bi(this.j4m_1.l44())},H(Cs).m4j=function(){return null!=this.l4m_1?new Vs(this.l4m_1.i32(),bi(this.j4m_1.l44())):-1===this.k4m_1||J(this.k4j().n33(),Ai())?this.j4m_1.a4k():new Vs(this.k4j(),this.j4m_1.f44_1.z4i())},H(Cs).t4i=function(){return this.m4m_1},H(Cs).j4j=function(){return-1===this.k4m_1?an():this.j4m_1.w44().o33(this.k4m_1)},H(Cs).k4j=function(){return null!=this.l4m_1?this.l4m_1.i32():J(this.j4m_1.r4j(),Ai())||-1===this.k4m_1?this.j4m_1.w44():this.j4m_1.w44().p33(this.k4m_1)},H(Cs).l4j=function(){return this.n4m_1},H(Os).m4j=function(){return this.p4m_1},H(Os).t4i=function(){return this.q4m_1},H(Os).z4i=function(){return this.r4m_1},H(Os).l4j=function(){return this.s4m_1},H(Os).l4k=function(){return this.t4m_1},H(Os).i32=function(){return this.u4m_1},H(Os).j4j=function(){return an()},H(Os).k4j=function(){return this.p4m_1.n4j_1},H(Os).d4l=function(t,n,i){return new Os(this.o4m_1,this.p4m_1,t,this.r4m_1,n,i)},H(Ts).toString=function(){return"XmlOrderConstraint(before="+this.v4m_1+", after="+this.w4m_1+")"},H(Ts).hashCode=function(){var t=this.v4m_1;return C(t,31)+this.w4m_1|0},H(Ts).equals=function(t){if(this===t)return!0;if(!(t instanceof Ts))return!1;var n=t instanceof Ts?t:R();return this.v4m_1===n.v4m_1&&this.w4m_1===n.w4m_1},H(Ns).x4j=function(t){for(var n=t,i=0,e=n.length;i{"use strict";t.exports=i.p+"a1015df118c0009bbaae.json"},897:(t,n,i)=>{"use strict";t.exports=i.p+"4e1313da42287d18ad5a.png"},760:(t,n,i)=>{"use strict";t.exports=i.p+"5de21dc9a6671d378dbe.png"},245:(t,n,i)=>{"use strict";t.exports=i.p+"b52705ec61511efb27b9.png"},939:(t,n,i)=>{"use strict";t.exports=i.p+"21c6d0bc8e5465644f8b.png"},954:(t,n,i)=>{"use strict";t.exports=i.p+"33c2ca54c6adbcd6a2e3.png"},959:(t,n,i)=>{"use strict";t.exports=i.p+"dd554b8af1ab5e3bc726.png"},523:(t,n,i)=>{"use strict";t.exports=i.p+"791bfb510d74390a8d5a.png"},481:(t,n,i)=>{"use strict";t.exports=i.p+"fbab3596911513c77182.png"},49:(t,n,i)=>{"use strict";t.exports=i.p+"4f486d36fd4835ea883d.png"}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,n)=>{for(var i in n)__webpack_require__.o(n,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;__webpack_require__.g.importScripts&&(t=__webpack_require__.g.location+"");var n=__webpack_require__.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");i.length&&(t=i[i.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=t})();var __webpack_exports__=__webpack_require__(960);return __webpack_exports__})())); +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["worldwind-tutorials"]=n():t["worldwind-tutorials"]=n()}(this,(()=>(()=>{var __webpack_modules__={135:(t,n,i)=>{"use strict";function e(t,n,i){function e(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,n&&n.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===i&&(i=Error),e.prototype=Object.create(i.prototype),e.prototype.name=t,e.prototype.constructor=e,e}i.r(n),i.d(n,{ArithmeticException:()=>u,ChronoField:()=>S,ChronoLocalDate:()=>Y,ChronoLocalDateTime:()=>_n,ChronoUnit:()=>z,ChronoZonedDateTime:()=>rn,Clock:()=>wn,DateTimeException:()=>r,DateTimeFormatter:()=>Wt,DateTimeFormatterBuilder:()=>Ut,DateTimeParseException:()=>s,DayOfWeek:()=>M,DecimalStyle:()=>mt,Duration:()=>j,IllegalArgumentException:()=>a,IllegalStateException:()=>h,Instant:()=>vn,IsoChronology:()=>nn,IsoFields:()=>rt,LocalDate:()=>hn,LocalDateTime:()=>ln,LocalTime:()=>fn,Month:()=>N,MonthDay:()=>Gt,NullPointerException:()=>_,OffsetDateTime:()=>on,OffsetTime:()=>en,Period:()=>P,ResolverStyle:()=>U,SignStyle:()=>gt,Temporal:()=>V,TemporalAccessor:()=>O,TemporalAdjuster:()=>H,TemporalAdjusters:()=>Xt,TemporalAmount:()=>b,TemporalField:()=>E,TemporalQueries:()=>q,TemporalQuery:()=>I,TemporalUnit:()=>k,TextStyle:()=>$t,UnsupportedTemporalTypeException:()=>o,ValueRange:()=>C,Year:()=>Jt,YearConstants:()=>x,YearMonth:()=>Kt,ZoneId:()=>G,ZoneOffset:()=>Q,ZoneOffsetTransition:()=>gn,ZoneRegion:()=>Mt,ZoneRules:()=>K,ZoneRulesProvider:()=>Dt,ZonedDateTime:()=>sn,_:()=>On,convert:()=>zn,nativeJs:()=>Cn,use:()=>An});var r=e("DateTimeException",(function(t,n){void 0===n&&(n=null);var i=t||this.name;null!==n&&n instanceof Error&&(i+="\n-------\nCaused by: "+n.stack+"\n-------\n"),this.message=i})),s=e("DateTimeParseException",(function(t,n,i,e){void 0===n&&(n=""),void 0===i&&(i=0),void 0===e&&(e=null);var r=t||this.name;r+=": "+n+", at index: "+i,null!==e&&e instanceof Error&&(r+="\n-------\nCaused by: "+e.stack+"\n-------\n"),this.message=r,this.parsedString=function(){return n},this.errorIndex=function(){return i}})),o=e("UnsupportedTemporalTypeException",null,r),u=e("ArithmeticException"),a=e("IllegalArgumentException"),h=e("IllegalStateException"),_=e("NullPointerException");function l(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function c(t,n,i){if(!t)throw i?new i(n):new Error(n)}function v(t,n){if(null==t)throw new _(n+" must not be null");return t}function w(t,n,i){if(!(t instanceof n))throw new a(i+" must be an instance of "+(n.name?n.name:n)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function d(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var p=Object.freeze({__proto__:null,assert:c,requireNonNull:v,requireInstance:w,abstractMethodFail:d}),m=9007199254740991,g=-9007199254740991,$=function(){function t(){}return t.intDiv=function(n,i){var e=n/i;return e=t.roundDown(e),t.safeZero(e)},t.intMod=function(n,i){var e=n-t.intDiv(n,i)*i;return e=t.roundDown(e),t.safeZero(e)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(n,i){var e=Math.floor(n/i);return t.safeZero(e)},t.floorMod=function(n,i){var e=n-t.floorDiv(n,i)*i;return t.safeZero(e)},t.safeAdd=function(n,i){if(t.verifyInt(n),t.verifyInt(i),0===n)return t.safeZero(i);if(0===i)return t.safeZero(n);var e=t.safeToInt(n+i);if(e===n||e===i)throw new u("Invalid addition beyond MAX_SAFE_INTEGER!");return e},t.safeSubtract=function(n,i){return t.verifyInt(n),t.verifyInt(i),0===n&&0===i?0:0===n?t.safeZero(-1*i):0===i?t.safeZero(n):t.safeToInt(n-i)},t.safeMultiply=function(n,i){if(t.verifyInt(n),t.verifyInt(i),1===n)return t.safeZero(i);if(1===i)return t.safeZero(n);if(0===n||0===i)return 0;var e=t.safeToInt(n*i);if(e/i!==n||n===g&&-1===i||i===g&&-1===n)throw new u("Multiplication overflows: "+n+" * "+i);return e},t.parseInt=function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n}((function(n){var i=parseInt(n);return t.safeToInt(i)})),t.safeToInt=function(n){return t.verifyInt(n),t.safeZero(n)},t.verifyInt=function(t){if(null==t)throw new u("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new u("Invalid int value, using NaN as argument");if(t%1!=0)throw new u("Invalid value: '"+t+"' is a float");if(t>m||tn?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(n){if(n!=n||n===1/0)return 0;for(var i=n;n>4294967295;)i^=n/=4294967295;return t.smi(i)},t.hashCode=function(){for(var n=17,i=arguments.length,e=new Array(i),r=0;r0&&e<0)e+=fn.NANOS_PER_SECOND;else if(i<0&&e>0)e-=fn.NANOS_PER_SECOND;else if(0===i&&0!==e){var s=n.with(S.NANO_OF_SECOND,r);i=t.until(s,z.SECONDS)}}catch(t){}return this.ofSeconds(i,e)},n.parse=function(t){v(t,"text");var i=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==i&&"T"===i[3]==0){var e="-"===i[1],r=i[2],o=i[4],u=i[5],a=i[6],h=i[7];if(null!=r||null!=o||null!=u||null!=a){var _=n._parseNumber(t,r,fn.SECONDS_PER_DAY,"days"),l=n._parseNumber(t,o,fn.SECONDS_PER_HOUR,"hours"),f=n._parseNumber(t,u,fn.SECONDS_PER_MINUTE,"minutes"),c=n._parseNumber(t,a,1,"seconds"),w=null!=a&&"-"===a.charAt(0),d=n._parseFraction(t,h,w?-1:1);try{return n._create(e,_,l,f,c,d)}catch(n){throw new s("Text cannot be parsed to a Duration: overflow",t,0,n)}}}throw new s("Text cannot be parsed to a Duration",t,0)},n._parseNumber=function(t,n,i,e){if(null==n)return 0;try{return"+"===n[0]&&(n=n.substring(1)),$.safeMultiply(parseFloat(n),i)}catch(n){throw new s("Text cannot be parsed to a Duration: "+e,t,0,n)}},n._parseFraction=function(t,n,i){return null==n||0===n.length?0:(n=(n+"000000000").substring(0,9),parseFloat(n)*i)},n._create=function(){return arguments.length<=2?n._createSecondsNanos(arguments[0],arguments[1]):n._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},n._createNegateDaysHoursMinutesSecondsNanos=function(t,i,e,r,s,o){var u=$.safeAdd(i,$.safeAdd(e,$.safeAdd(r,s)));return t?n.ofSeconds(u,o).negated():n.ofSeconds(u,o)},n._createSecondsNanos=function(t,i){return void 0===t&&(t=0),void 0===i&&(i=0),0===t&&0===i?n.ZERO:new n(t,i)};var i=n.prototype;return i.get=function(t){if(t===z.SECONDS)return this._seconds;if(t===z.NANOS)return this._nanos;throw new o("Unsupported unit: "+t)},i.units=function(){return[z.SECONDS,z.NANOS]},i.isZero=function(){return 0===this._seconds&&0===this._nanos},i.isNegative=function(){return this._seconds<0},i.seconds=function(){return this._seconds},i.nano=function(){return this._nanos},i.withSeconds=function(t){return n._create(t,this._nanos)},i.withNanos=function(t){return S.NANO_OF_SECOND.checkValidIntValue(t),n._create(this._seconds,t)},i.plusDuration=function(t){return v(t,"duration"),this.plus(t.seconds(),t.nano())},i.plus=function(t,n){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&n instanceof k?this.plusAmountUnit(t,n):this.plusSecondsNanos(t,n)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n===z.DAYS)return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_DAY),0);if(n.isDurationEstimated())throw new o("Unit must not have an estimated duration");if(0===t)return this;if(n instanceof z){switch(n){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this.plusSecondsNanos(1e3*$.intDiv(t,1e9),1e3*$.intMod(t,1e9));case z.MILLIS:return this.plusMillis(t);case z.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos($.safeMultiply(n.duration().seconds(),t),0)}var i=n.duration().multipliedBy(t);return this.plusSecondsNanos(i.seconds(),i.nano())},i.plusDays=function(t){return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_DAY),0)},i.plusHours=function(t){return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_HOUR),0)},i.plusMinutes=function(t){return this.plusSecondsNanos($.safeMultiply(t,fn.SECONDS_PER_MINUTE),0)},i.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},i.plusMillis=function(t){return this.plusSecondsNanos($.intDiv(t,1e3),1e6*$.intMod(t,1e3))},i.plusNanos=function(t){return this.plusSecondsNanos(0,t)},i.plusSecondsNanos=function(t,i){if(v(t,"secondsToAdd"),v(i,"nanosToAdd"),0===t&&0===i)return this;var e=$.safeAdd(this._seconds,t);e=$.safeAdd(e,$.intDiv(i,fn.NANOS_PER_SECOND)),i=$.intMod(i,fn.NANOS_PER_SECOND);var r=$.safeAdd(this._nanos,i);return n.ofSeconds(e,r)},i.minus=function(t,n){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,n)},i.minusDuration=function(t){v(t,"duration");var n=t.seconds(),i=t.nano();return n===g?this.plus(m,-i):this.plus(-n,-i)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),t===g?this.plusAmountUnit(m,n):this.plusAmountUnit(-t,n)},i.minusDays=function(t){return t===g?this.plusDays(m):this.plusDays(-t)},i.minusHours=function(t){return t===g?this.plusHours(m):this.plusHours(-t)},i.minusMinutes=function(t){return t===g?this.plusMinutes(m):this.plusMinutes(-t)},i.minusSeconds=function(t){return t===g?this.plusSeconds(m):this.plusSeconds(-t)},i.minusMillis=function(t){return t===g?this.plusMillis(m):this.plusMillis(-t)},i.minusNanos=function(t){return t===g?this.plusNanos(m):this.plusNanos(-t)},i.multipliedBy=function(t){if(0===t)return n.ZERO;if(1===t)return this;var i=$.safeMultiply(this._seconds,t),e=$.safeMultiply(this._nanos,t);return i+=$.intDiv(e,fn.NANOS_PER_SECOND),e=$.intMod(e,fn.NANOS_PER_SECOND),n.ofSeconds(i,e)},i.dividedBy=function(t){if(0===t)throw new u("Cannot divide by zero");if(1===t)return this;var i=$.intDiv(this._seconds,t),e=$.roundDown((this._seconds/t-i)*fn.NANOS_PER_SECOND),r=$.intDiv(this._nanos,t);return r=e+r,n.ofSeconds(i,r)},i.negated=function(){return this.multipliedBy(-1)},i.abs=function(){return this.isNegative()?this.negated():this},i.addTo=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,z.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,z.NANOS)),t},i.subtractFrom=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,z.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,z.NANOS)),t},i.toDays=function(){return $.intDiv(this._seconds,fn.SECONDS_PER_DAY)},i.toHours=function(){return $.intDiv(this._seconds,fn.SECONDS_PER_HOUR)},i.toMinutes=function(){return $.intDiv(this._seconds,fn.SECONDS_PER_MINUTE)},i.toMillis=function(){var t=Math.round($.safeMultiply(this._seconds,1e3));return $.safeAdd(t,$.intDiv(this._nanos,1e6))},i.toNanos=function(){var t=$.safeMultiply(this._seconds,fn.NANOS_PER_SECOND);return $.safeAdd(t,this._nanos)},i.compareTo=function(t){v(t,"otherDuration"),w(t,n,"otherDuration");var i=$.compareNumbers(this._seconds,t.seconds());return 0!==i?i:this._nanos-t.nano()},i.equals=function(t){return this===t||t instanceof n&&this.seconds()===t.seconds()&&this.nano()===t.nano()},i.toString=function(){if(this===n.ZERO)return"PT0S";var t,i=$.intDiv(this._seconds,fn.SECONDS_PER_HOUR),e=$.intDiv($.intMod(this._seconds,fn.SECONDS_PER_HOUR),fn.SECONDS_PER_MINUTE),r=$.intMod(this._seconds,fn.SECONDS_PER_MINUTE),s="PT";if(0!==i&&(s+=i+"H"),0!==e&&(s+=e+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*fn.NANOS_PER_SECOND-this._nanos):""+(fn.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+"S"},i.toJSON=function(){return this.toString()},n}(b),x=function(){},z=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return this.isDateBased()||this===n.FOREVER},i.isDateBased=function(){return this.compareTo(n.DAYS)>=0&&this!==n.FOREVER},i.isTimeBased=function(){return this.compareTo(n.DAYS)<0},i.isSupportedBy=function(t){if(this===n.FOREVER)return!1;try{return t.plus(1,this),!0}catch(n){try{return t.plus(-1,this),!0}catch(t){return!1}}},i.addTo=function(t,n){return t.plus(n,this)},i.between=function(t,n){return t.until(n,this)},i.toString=function(){return this._name},i.compareTo=function(t){return this.duration().compareTo(t.duration())},n}(k),E=function(){function t(){}var n=t.prototype;return n.isDateBased=function(){d("isDateBased")},n.isTimeBased=function(){d("isTimeBased")},n.baseUnit=function(){d("baseUnit")},n.rangeUnit=function(){d("rangeUnit")},n.range=function(){d("range")},n.rangeRefinedBy=function(t){d("rangeRefinedBy")},n.getFrom=function(t){d("getFrom")},n.adjustInto=function(t,n){d("adjustInto")},n.isSupportedBy=function(t){d("isSupportedBy")},n.displayName=function(){d("displayName")},n.equals=function(t){d("equals")},n.name=function(){d("name")},t}(),C=function(){function t(t,n,i,e){c(!(t>n),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+n+"'",a),c(!(i>e),"Smallest maximum value '"+i+"' must be less than largest maximum value '"+e+"'",a),c(!(n>e),"Minimum value '"+n+"' must be less than maximum value '"+e+"'",a),this._minSmallest=t,this._minLargest=n,this._maxLargest=e,this._maxSmallest=i}var n=t.prototype;return n.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},n.minimum=function(){return this._minSmallest},n.largestMinimum=function(){return this._minLargest},n.maximum=function(){return this._maxLargest},n.smallestMaximum=function(){return this._maxSmallest},n.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},n.checkValidValue=function(t,n){return this.isValidValue(t)?t:c(!1,null!=n?"Invalid value for "+n+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,r)},n.checkValidIntValue=function(t,n){if(!1===this.isValidIntValue(t))throw new r("Invalid int value for "+n+": "+t);return t},n.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},n.isIntValue=function(){return this.minimum()>=$.MIN_SAFE_INTEGER&&this.maximum()<=$.MAX_SAFE_INTEGER},n.equals=function(n){return n===this||n instanceof t&&this._minSmallest===n._minSmallest&&this._minLargest===n._minLargest&&this._maxSmallest===n._maxSmallest&&this._maxLargest===n._maxLargest},n.hashCode=function(){return $.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},n.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return(t+=" - ")+(this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():""))},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):c(!1,"Invalid number of arguments "+arguments.length,a)},t}(),S=function(t){function n(n,i,e,r){var s;return(s=t.call(this)||this)._name=n,s._baseUnit=i,s._rangeUnit=e,s._range=r,s}l(n,t),n.byName=function(t){for(var i in n)if(n[i]&&n[i]instanceof n&&n[i].name()===t)return n[i]};var i=n.prototype;return i.name=function(){return this._name},i.baseUnit=function(){return this._baseUnit},i.rangeUnit=function(){return this._rangeUnit},i.range=function(){return this._range},i.displayName=function(){return this.toString()},i.checkValidValue=function(t){return this.range().checkValidValue(t,this)},i.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},i.isDateBased=function(){return this===n.DAY_OF_WEEK||this===n.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===n.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===n.DAY_OF_MONTH||this===n.DAY_OF_YEAR||this===n.EPOCH_DAY||this===n.ALIGNED_WEEK_OF_MONTH||this===n.ALIGNED_WEEK_OF_YEAR||this===n.MONTH_OF_YEAR||this===n.YEAR_OF_ERA||this===n.YEAR||this===n.ERA},i.isTimeBased=function(){return this===n.NANO_OF_SECOND||this===n.NANO_OF_DAY||this===n.MICRO_OF_SECOND||this===n.MICRO_OF_DAY||this===n.MILLI_OF_SECOND||this===n.MILLI_OF_DAY||this===n.SECOND_OF_MINUTE||this===n.SECOND_OF_DAY||this===n.MINUTE_OF_HOUR||this===n.MINUTE_OF_DAY||this===n.HOUR_OF_AMPM||this===n.CLOCK_HOUR_OF_AMPM||this===n.HOUR_OF_DAY||this===n.CLOCK_HOUR_OF_DAY||this===n.AMPM_OF_DAY},i.rangeRefinedBy=function(t){return t.range(this)},i.getFrom=function(t){return t.getLong(this)},i.toString=function(){return this.name()},i.equals=function(t){return this===t},i.adjustInto=function(t,n){return t.with(this,n)},i.isSupportedBy=function(t){return t.isSupported(this)},n}(E),q=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),O=function(){function t(){}var n=t.prototype;return n.query=function(t){return t===q.zoneId()||t===q.chronology()||t===q.precision()?null:t.queryFrom(this)},n.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},n.range=function(t){if(t instanceof S){if(this.isSupported(t))return t.range();throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},t}(),I=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n.prototype.queryFrom=function(t){d("queryFrom")},n}(y);function A(t,n){var i=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n}(I);return i.prototype.queryFrom=n,new i(t)}var T,D,M=function(t){function n(n,i){var e;return(e=t.call(this)||this)._ordinal=n,e._name=i,e}l(n,t);var i=n.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},n.values=function(){return T.slice()},n.valueOf=function(t){for(var i=0;i7)throw new r("Invalid value for DayOfWeek: "+t);return T[t-1]},n.from=function(t){if(c(null!=t,"temporal",_),t instanceof n)return t;try{return n.of(t.get(S.DAY_OF_WEEK))}catch(n){throw n instanceof r?new r("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),n):n}},i.value=function(){return this._ordinal+1},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof S?t===S.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===S.DAY_OF_WEEK)return t.range();if(t instanceof S)throw new o("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===S.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===S.DAY_OF_WEEK)return this.value();if(t instanceof S)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=$.floorMod(t,7);return T[$.floorMod(this._ordinal+(n+7),7)]},i.minus=function(t){return this.plus(-1*$.floorMod(t,7))},i.query=function(t){return t===q.precision()?z.DAYS:t===q.localDate()||t===q.localTime()||t===q.chronology()||t===q.zone()||t===q.zoneId()||t===q.offset()?null:(c(null!=t,"query",_),t.queryFrom(this))},i.adjustInto=function(t){return v(t,"temporal"),t.with(S.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},n}(O),N=function(t){function n(n,i){var e;return(e=t.call(this)||this)._value=$.safeToInt(n),e._name=i,e}l(n,t);var i=n.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof S?t===S.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===S.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===S.MONTH_OF_YEAR)return this.value();if(t instanceof S)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var i=$.intMod(t,12)+12,e=$.intMod(this.value()+i,12);return e=0===e?12:e,n.of(e)},i.minus=function(t){return this.plus(-1*$.intMod(t,12))},i.length=function(t){switch(this){case n.FEBRUARY:return t?29:28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case n.FEBRUARY:return 28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case n.FEBRUARY:return 29;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var i=t?1:0;switch(this){case n.JANUARY:return 1;case n.FEBRUARY:return 32;case n.MARCH:return 60+i;case n.APRIL:return 91+i;case n.MAY:return 121+i;case n.JUNE:return 152+i;case n.JULY:return 182+i;case n.AUGUST:return 213+i;case n.SEPTEMBER:return 244+i;case n.OCTOBER:return 274+i;case n.NOVEMBER:return 305+i;case n.DECEMBER:default:return 335+i}},i.firstMonthOfQuarter=function(){switch(this){case n.JANUARY:case n.FEBRUARY:case n.MARCH:return n.JANUARY;case n.APRIL:case n.MAY:case n.JUNE:return n.APRIL;case n.JULY:case n.AUGUST:case n.SEPTEMBER:return n.JULY;case n.OCTOBER:case n.NOVEMBER:case n.DECEMBER:default:return n.OCTOBER}},i.query=function(n){return c(null!=n,"query() parameter must not be null",r),n===q.chronology()?nn.INSTANCE:n===q.precision()?z.MONTHS:t.prototype.query.call(this,n)},i.toString=function(){switch(this){case n.JANUARY:return"JANUARY";case n.FEBRUARY:return"FEBRUARY";case n.MARCH:return"MARCH";case n.APRIL:return"APRIL";case n.MAY:return"MAY";case n.JUNE:return"JUNE";case n.JULY:return"JULY";case n.AUGUST:return"AUGUST";case n.SEPTEMBER:return"SEPTEMBER";case n.OCTOBER:return"OCTOBER";case n.NOVEMBER:return"NOVEMBER";case n.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(S.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._value-t._value},i.equals=function(t){return this===t},n.valueOf=function(t){for(var i=0;i12)&&c(!1,"Invalid value for MonthOfYear: "+t,r),D[t-1]},n.from=function(t){if(t instanceof n)return t;try{return n.of(t.get(S.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),n)}},n}(O),R=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,P=function(t){function n(i,e,r){var s;s=t.call(this)||this;var o=$.safeToInt(i),u=$.safeToInt(e),a=$.safeToInt(r);return 0===o&&0===u&&0===a?(n.ZERO||(s._years=o,s._months=u,s._days=a,n.ZERO=f(s)),n.ZERO||f(s)):(s._years=o,s._months=u,s._days=a,s)}l(n,t),n.ofYears=function(t){return n.create(t,0,0)},n.ofMonths=function(t){return n.create(0,t,0)},n.ofWeeks=function(t){return n.create(0,0,$.safeMultiply(t,7))},n.ofDays=function(t){return n.create(0,0,t)},n.of=function(t,i,e){return n.create(t,i,e)},n.from=function(t){if(t instanceof n)return t;v(t,"amount");for(var i=0,e=0,s=0,o=t.units(),u=0;un.MAX_SECONDS)throw new r("Zone offset not in valid range: -18:00 to +18:00")},n._validate=function(t,n,i){if(t<-18||t>18)throw new r("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(n<0||i<0)throw new r("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(n>0||i>0)throw new r("Zone offset minutes and seconds must be negative because hours is negative")}else if(n>0&&i<0||n<0&&i>0)throw new r("Zone offset minutes and seconds must have the same sign");if(Math.abs(n)>59)throw new r("Zone offset minutes not in valid range: abs(value) "+Math.abs(n)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new r("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(n)>0||Math.abs(i)>0))throw new r("Zone offset not in valid range: -18:00 to +18:00")},n.of=function(t){v(t,"offsetId");var i,e,s,o=Z[t];if(null!=o)return o;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=n._parseNumber(t,1,!1),e=0,s=0;break;case 5:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=0;break;case 6:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=0;break;case 7:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=n._parseNumber(t,5,!1);break;case 9:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=n._parseNumber(t,7,!0);break;default:throw new r("Invalid ID for ZoneOffset, invalid format: "+t)}var u=t[0];if("+"!==u&&"-"!==u)throw new r("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===u?n.ofHoursMinutesSeconds(-i,-e,-s):n.ofHoursMinutesSeconds(i,e,s)},n._parseNumber=function(t,n,i){if(i&&":"!==t[n-1])throw new r("Invalid ID for ZoneOffset, colon not found when expected: "+t);var e=t[n],s=t[n+1];if(e<"0"||e>"9"||s<"0"||s>"9")throw new r("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(e.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},n.ofHours=function(t){return n.ofHoursMinutesSeconds(t,0,0)},n.ofHoursMinutes=function(t,i){return n.ofHoursMinutesSeconds(t,i,0)},n.ofHoursMinutesSeconds=function(t,i,e){n._validate(t,i,e);var r=t*fn.SECONDS_PER_HOUR+i*fn.SECONDS_PER_MINUTE+e;return n.ofTotalSeconds(r)},n.ofTotalMinutes=function(t){var i=t*fn.SECONDS_PER_MINUTE;return n.ofTotalSeconds(i)},n.ofTotalSeconds=function(t){if(t%(15*fn.SECONDS_PER_MINUTE)==0){var i=t,e=X[i];return null==e&&(e=new n(t),X[i]=e,Z[e.id()]=e),e}return new n(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===S.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof S)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return v(t,"query"),t===q.offset()||t===q.zone()?this:t===q.localDate()||t===q.localTime()||t===q.precision()||t===q.chronology()||t===q.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(S.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return v(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof n&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},n}(G),tt=function(t){function n(){var n;return(n=t.call(this)||this).fieldValues=new F,n.chrono=null,n.zone=null,n.date=null,n.time=null,n.leapSecond=!1,n.excessDays=null,n}l(n,t),n.create=function(t,i){var e=new n;return e._addFieldValue(t,i),e};var i=n.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,n){v(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==n)throw new r("Conflict found: "+t+" "+i+" differs from "+t+" "+n+": "+this);return this._putFieldValue0(t,n)},i._putFieldValue0=function(t,n){return this.fieldValues.put(t,n),this},i.resolve=function(t,n){return null!=n&&this.fieldValues.retainAll(n),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=P.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(nn.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var n in this._addObject(t),this.fieldValues.keySet()){var i=S.byName(n);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var e=void 0;try{e=t.getLong(i)}catch(t){if(t instanceof r)continue;throw t}var s=this.fieldValues.get(i);if(e!==s)throw new r("Conflict found: Field "+i+" "+e+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(S.CLOCK_HOUR_OF_DAY)){var n=this.fieldValues.remove(S.CLOCK_HOUR_OF_DAY);t!==U.LENIENT&&(t===U.SMART&&0===n||S.CLOCK_HOUR_OF_DAY.checkValidValue(n)),this._addFieldValue(S.HOUR_OF_DAY,24===n?0:n)}if(this.fieldValues.containsKey(S.CLOCK_HOUR_OF_AMPM)){var i=this.fieldValues.remove(S.CLOCK_HOUR_OF_AMPM);t!==U.LENIENT&&(t===U.SMART&&0===i||S.CLOCK_HOUR_OF_AMPM.checkValidValue(i)),this._addFieldValue(S.HOUR_OF_AMPM,12===i?0:i)}if(t!==U.LENIENT&&(this.fieldValues.containsKey(S.AMPM_OF_DAY)&&S.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(S.AMPM_OF_DAY)),this.fieldValues.containsKey(S.HOUR_OF_AMPM)&&S.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(S.HOUR_OF_AMPM))),this.fieldValues.containsKey(S.AMPM_OF_DAY)&&this.fieldValues.containsKey(S.HOUR_OF_AMPM)){var e=this.fieldValues.remove(S.AMPM_OF_DAY),r=this.fieldValues.remove(S.HOUR_OF_AMPM);this._addFieldValue(S.HOUR_OF_DAY,12*e+r)}if(this.fieldValues.containsKey(S.NANO_OF_DAY)){var s=this.fieldValues.remove(S.NANO_OF_DAY);t!==U.LENIENT&&S.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(S.SECOND_OF_DAY,$.intDiv(s,1e9)),this._addFieldValue(S.NANO_OF_SECOND,$.intMod(s,1e9))}if(this.fieldValues.containsKey(S.MICRO_OF_DAY)){var o=this.fieldValues.remove(S.MICRO_OF_DAY);t!==U.LENIENT&&S.MICRO_OF_DAY.checkValidValue(o),this._addFieldValue(S.SECOND_OF_DAY,$.intDiv(o,1e6)),this._addFieldValue(S.MICRO_OF_SECOND,$.intMod(o,1e6))}if(this.fieldValues.containsKey(S.MILLI_OF_DAY)){var u=this.fieldValues.remove(S.MILLI_OF_DAY);t!==U.LENIENT&&S.MILLI_OF_DAY.checkValidValue(u),this._addFieldValue(S.SECOND_OF_DAY,$.intDiv(u,1e3)),this._addFieldValue(S.MILLI_OF_SECOND,$.intMod(u,1e3))}if(this.fieldValues.containsKey(S.SECOND_OF_DAY)){var a=this.fieldValues.remove(S.SECOND_OF_DAY);t!==U.LENIENT&&S.SECOND_OF_DAY.checkValidValue(a),this._addFieldValue(S.HOUR_OF_DAY,$.intDiv(a,3600)),this._addFieldValue(S.MINUTE_OF_HOUR,$.intMod($.intDiv(a,60),60)),this._addFieldValue(S.SECOND_OF_MINUTE,$.intMod(a,60))}if(this.fieldValues.containsKey(S.MINUTE_OF_DAY)){var h=this.fieldValues.remove(S.MINUTE_OF_DAY);t!==U.LENIENT&&S.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(S.HOUR_OF_DAY,$.intDiv(h,60)),this._addFieldValue(S.MINUTE_OF_HOUR,$.intMod(h,60))}if(t!==U.LENIENT&&(this.fieldValues.containsKey(S.MILLI_OF_SECOND)&&S.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(S.MILLI_OF_SECOND)),this.fieldValues.containsKey(S.MICRO_OF_SECOND)&&S.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(S.MICRO_OF_SECOND))),this.fieldValues.containsKey(S.MILLI_OF_SECOND)&&this.fieldValues.containsKey(S.MICRO_OF_SECOND)){var _=this.fieldValues.remove(S.MILLI_OF_SECOND),l=this.fieldValues.get(S.MICRO_OF_SECOND);this._putFieldValue0(S.MICRO_OF_SECOND,1e3*_+$.intMod(l,1e3))}if(this.fieldValues.containsKey(S.MICRO_OF_SECOND)&&this.fieldValues.containsKey(S.NANO_OF_SECOND)){var f=this.fieldValues.get(S.NANO_OF_SECOND);this._putFieldValue0(S.MICRO_OF_SECOND,$.intDiv(f,1e3)),this.fieldValues.remove(S.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(S.MILLI_OF_SECOND)&&this.fieldValues.containsKey(S.NANO_OF_SECOND)){var c=this.fieldValues.get(S.NANO_OF_SECOND);this._putFieldValue0(S.MILLI_OF_SECOND,$.intDiv(c,1e6)),this.fieldValues.remove(S.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(S.MICRO_OF_SECOND)){var v=this.fieldValues.remove(S.MICRO_OF_SECOND);this._putFieldValue0(S.NANO_OF_SECOND,1e3*v)}else if(this.fieldValues.containsKey(S.MILLI_OF_SECOND)){var w=this.fieldValues.remove(S.MILLI_OF_SECOND);this._putFieldValue0(S.NANO_OF_SECOND,1e6*w)}},i._resolveTimeInferZeroes=function(t){var n=this.fieldValues.get(S.HOUR_OF_DAY),i=this.fieldValues.get(S.MINUTE_OF_HOUR),e=this.fieldValues.get(S.SECOND_OF_MINUTE),r=this.fieldValues.get(S.NANO_OF_SECOND);if(null!=n&&(null!=i||null==e&&null==r)&&(null==i||null!=e||null==r)){if(t!==U.LENIENT){if(null!=n){t!==U.SMART||24!==n||null!=i&&0!==i||null!=e&&0!==e||null!=r&&0!==r||(n=0,this.excessDays=P.ofDays(1));var s=S.HOUR_OF_DAY.checkValidIntValue(n);if(null!=i){var o=S.MINUTE_OF_HOUR.checkValidIntValue(i);if(null!=e){var u=S.SECOND_OF_MINUTE.checkValidIntValue(e);if(null!=r){var a=S.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(fn.of(s,o,u,a))}else this._addObject(fn.of(s,o,u))}else null==r&&this._addObject(fn.of(s,o))}else null==e&&null==r&&this._addObject(fn.of(s,0))}}else if(null!=n){var h=n;if(null!=i)if(null!=e){null==r&&(r=0);var _=$.safeMultiply(h,36e11);_=$.safeAdd(_,$.safeMultiply(i,6e10)),_=$.safeAdd(_,$.safeMultiply(e,1e9)),_=$.safeAdd(_,r);var l=$.floorDiv(_,864e11),f=$.floorMod(_,864e11);this._addObject(fn.ofNanoOfDay(f)),this.excessDays=P.ofDays(l)}else{var c=$.safeMultiply(h,3600);c=$.safeAdd(c,$.safeMultiply(i,60));var v=$.floorDiv(c,86400),w=$.floorMod(c,86400);this._addObject(fn.ofSecondOfDay(w)),this.excessDays=P.ofDays(v)}else{var d=$.safeToInt($.floorDiv(h,24));h=$.floorMod(h,24),this._addObject(fn.of(h,0)),this.excessDays=P.ofDays(d)}}this.fieldValues.remove(S.HOUR_OF_DAY),this.fieldValues.remove(S.MINUTE_OF_HOUR),this.fieldValues.remove(S.SECOND_OF_MINUTE),this.fieldValues.remove(S.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof Y?this.date=t:t instanceof fn&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(S.OFFSET_SECONDS);if(null!=t){var n=Q.ofTotalSeconds(t),i=this.date.atTime(this.time).atZone(n).getLong(S.INSTANT_SECONDS);this.fieldValues.put(S.INSTANT_SECONDS,i)}else if(null!=this.zone){var e=this.date.atTime(this.time).atZone(this.zone).getLong(S.INSTANT_SECONDS);this.fieldValues.put(S.INSTANT_SECONDS,e)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){v(t,"field");var n=this.getFieldValue0(t);if(null==n){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new r("Field not found: "+t)}return n},i.query=function(t){return t===q.zoneId()?this.zone:t===q.chronology()?this.chrono:t===q.localDate()?null!=this.date?hn.from(this.date):null:t===q.localTime()?this.time:t===q.zone()||t===q.offset()?t.queryFrom(this):t===q.precision()?null:t.queryFrom(this)},n}(O),nt=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new it(this)]}var n=t.prototype;return n._constructorParam=function(t,n,i){this._locale=t,this._symbols=n,this._overrideChronology=i},n._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},n._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new it(this)]},n.copy=function(){return new t(this)},n.symbols=function(){return this._symbols},n.isStrict=function(){return this._strict},n.setStrict=function(t){this._strict=t},n.locale=function(){return this._locale},n.setLocale=function(t){this._locale=t},n.startOptional=function(){this._parsed.push(this.currentParsed().copy())},n.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},n.isCaseSensitive=function(){return this._caseSensitive},n.setCaseSensitive=function(t){this._caseSensitive=t},n.subSequenceEquals=function(t,n,i,e,r){if(n+r>t.length||e+r>i.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),i=i.toLowerCase());for(var s=0;s0)return null;throw t}},n.temporal=function(){return this._temporal},n.locale=function(){return this._locale},n.setDateTime=function(t){this._temporal=t},n.setLocale=function(t){this._locale=t},t}(),rt={},st=[0,90,181,273,0,91,182,274],ot=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i._isIso=function(){return!0},n._getWeekRangeByLocalDate=function(t){var i=n._getWeekBasedYear(t);return C.of(1,n._getWeekRangeByYear(i))},n._getWeekRangeByYear=function(t){var n=hn.of(t,1,1);return n.dayOfWeek()===M.THURSDAY||n.dayOfWeek()===M.WEDNESDAY&&n.isLeapYear()?53:52},n._getWeek=function(t){var i=t.dayOfWeek().ordinal(),e=t.dayOfYear()-1,r=e+(3-i),s=r-7*$.intDiv(r,7)-3;if(s<-3&&(s+=7),e=363){var e=t.dayOfWeek().ordinal();(i=i-363-(t.isLeapYear()?1:0))-e>=0&&n++}return n},i.displayName=function(){return this.toString()},i.resolve=function(){return null},i.name=function(){return this.toString()},n}(E),ut=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"DayOfQuarter"},i.baseUnit=function(){return z.DAYS},i.rangeUnit=function(){return pt},i.range=function(){return C.of(1,90,92)},i.isSupportedBy=function(t){return t.isSupported(S.DAY_OF_YEAR)&&t.isSupported(S.MONTH_OF_YEAR)&&t.isSupported(S.YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.getLong(ct);if(1===n){var i=t.getLong(S.YEAR);return nn.isLeapYear(i)?C.of(1,91):C.of(1,90)}return 2===n?C.of(1,91):3===n||4===n?C.of(1,92):this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.get(S.DAY_OF_YEAR),i=t.get(S.MONTH_OF_YEAR),e=t.getLong(S.YEAR);return n-st[$.intDiv(i-1,3)+(nn.isLeapYear(e)?4:0)]},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(S.DAY_OF_YEAR,t.getLong(S.DAY_OF_YEAR)+(n-i))},i.resolve=function(t,n,i){var e=t.get(S.YEAR),r=t.get(ct);if(null==e||null==r)return null;var s,o=S.YEAR.checkValidIntValue(e),u=t.get(ft);if(i===U.LENIENT){var a=r;s=(s=(s=hn.of(o,1,1)).plusMonths($.safeMultiply($.safeSubtract(a,1),3))).plusDays($.safeSubtract(u,1))}else{var h=ct.range().checkValidIntValue(r,ct);if(i===U.STRICT){var _=92;1===h?_=nn.isLeapYear(o)?91:90:2===h&&(_=91),C.of(1,_).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,3*(h-1)+1,1).plusDays(u-1)}return t.remove(this),t.remove(S.YEAR),t.remove(ct),s},n}(ot),at=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"QuarterOfYear"},i.baseUnit=function(){return pt},i.rangeUnit=function(){return z.YEARS},i.range=function(){return C.of(1,4)},i.isSupportedBy=function(t){return t.isSupported(S.MONTH_OF_YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){return this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: QuarterOfYear");var n=t.getLong(S.MONTH_OF_YEAR);return $.intDiv(n+2,3)},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(S.MONTH_OF_YEAR,t.getLong(S.MONTH_OF_YEAR)+3*(n-i))},n}(ot),ht=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekOfWeekBasedYear"},i.baseUnit=function(){return z.WEEKS},i.rangeUnit=function(){return dt},i.range=function(){return C.of(1,52,53)},i.isSupportedBy=function(t){return t.isSupported(S.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeekRangeByLocalDate(hn.from(t))},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeek(hn.from(t))},i.adjustInto=function(t,n){return this.range().checkValidValue(n,this),t.plus($.safeSubtract(n,this.getFrom(t)),z.WEEKS)},i.resolve=function(t,n,i){var e=t.get(wt),r=t.get(S.DAY_OF_WEEK);if(null==e||null==r)return null;var s,o=wt.range().checkValidIntValue(e,wt),u=t.get(vt);if(i===U.LENIENT){var a=r,h=0;a>7?(h=$.intDiv(a-1,7),a=$.intMod(a-1,7)+1):a<1&&(h=$.intDiv(a,7)-1,a=$.intMod(a,7)+7),s=hn.of(o,1,4).plusWeeks(u-1).plusWeeks(h).with(S.DAY_OF_WEEK,a)}else{var _=S.DAY_OF_WEEK.checkValidIntValue(r);if(i===U.STRICT){var l=hn.of(o,1,4);ot._getWeekRangeByLocalDate(l).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,1,4).plusWeeks(u-1).with(S.DAY_OF_WEEK,_)}return t.remove(this),t.remove(wt),t.remove(S.DAY_OF_WEEK),s},i.displayName=function(){return"Week"},n}(ot),_t=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekBasedYear"},i.baseUnit=function(){return dt},i.rangeUnit=function(){return z.FOREVER},i.range=function(){return S.YEAR.range()},i.isSupportedBy=function(t){return t.isSupported(S.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){return S.YEAR.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekBasedYear");return ot._getWeekBasedYear(hn.from(t))},i.adjustInto=function(t,n){if(!1===this.isSupportedBy(t))throw new o("Unsupported field: WeekBasedYear");var i=this.range().checkValidIntValue(n,wt),e=hn.from(t),r=e.get(S.DAY_OF_WEEK),s=ot._getWeek(e);53===s&&52===ot._getWeekRangeByYear(i)&&(s=52);var u=hn.of(i,1,4),a=r-u.get(S.DAY_OF_WEEK)+7*(s-1);return u=u.plusDays(a),t.with(u)},n}(ot),lt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return!0},i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i.isSupportedBy=function(t){return t.isSupported(S.EPOCH_DAY)},i.addTo=function(t,n){switch(this){case dt:var i=$.safeAdd(t.get(wt),n);return t.with(wt,i);case pt:return t.plus($.intDiv(n,256),z.YEARS).plus(3*$.intMod(n,256),z.MONTHS);default:throw new h("Unreachable")}},i.between=function(t,n){switch(this){case dt:return $.safeSubtract(n.getLong(wt),t.getLong(wt));case pt:return $.intDiv(t.until(n,z.MONTHS),3);default:throw new h("Unreachable")}},i.toString=function(){return name},n}(k),ft=null,ct=null,vt=null,wt=null,dt=null,pt=null,mt=function(){function t(t,n,i,e){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=n,this._negativeSign=i,this._decimalSeparator=e}var n=t.prototype;return n.positiveSign=function(){return this._positiveSign},n.withPositiveSign=function(n){return n===this._positiveSign?this:new t(this._zeroDigit,n,this._negativeSign,this._decimalSeparator)},n.negativeSign=function(){return this._negativeSign},n.withNegativeSign=function(n){return n===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,n,this._decimalSeparator)},n.zeroDigit=function(){return this._zeroDigit},n.withZeroDigit=function(n){return n===this._zeroDigit?this:new t(n,this._positiveSign,this._negativeSign,this._decimalSeparator)},n.decimalSeparator=function(){return this._decimalSeparator},n.withDecimalSeparator=function(n){return n===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,n)},n.convertToDigit=function(t){var n=t.charCodeAt(0)-this._zeroDigitCharCode;return n>=0&&n<=9?n:-1},n.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var n=this._zeroDigitCharCode-"0".charCodeAt(0),i="",e=0;e1)throw new a('invalid literal, too long: "'+t+'"');this._literal=t}var n=t.prototype;return n.print=function(t,n){return n.append(this._literal),!0},n.parse=function(t,n,i){if(i===n.length)return~i;var e=n.charAt(i);return!1===t.charEquals(this._literal,e)?~i:i+this._literal.length},n.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),bt=function(){function t(t,n){this._printerParsers=t,this._optional=n}var n=t.prototype;return n.withOptional=function(n){return n===this._optional?this:new t(this._printerParsers,n)},n.print=function(t,n){var i=n.length();this._optional&&t.startOptional();try{for(var e=0;e9)throw new a("Minimum width must be from 0 to 9 inclusive but was "+n);if(i<1||i>9)throw new a("Maximum width must be from 1 to 9 inclusive but was "+i);if(i0){this.decimalPoint&&n.append(e.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var u=s;u=e.convertNumberToI18N(u),this.decimalPoint&&n.append(e.decimalSeparator()),n.append(u)}return!0},n.parse=function(t,n,i){var e=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=n.length;if(i===s)return e>0?~i:i;if(this.decimalPoint){if(n[i]!==t.symbols().decimalSeparator())return e>0?~i:i;i++}var o=i+e;if(o>s)return~i;for(var u=Math.min(i+r,s),a=0,h=i;h0&&this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE},n.print=function(t,n){var i=t.getValue(this._field);if(null==i)return!1;var e=this._getValue(t,i),s=t.symbols(),o=""+Math.abs(e);if(o.length>this._maxWidth)throw new r("Field "+this._field+" cannot be printed as the value "+e+" exceeds the maximum print width of "+this._maxWidth);if(o=s.convertNumberToI18N(o),e>=0)switch(this._signStyle){case gt.EXCEEDS_PAD:this._minWidth<15&&e>=jt[this._minWidth]&&n.append(s.positiveSign());break;case gt.ALWAYS:n.append(s.positiveSign())}else switch(this._signStyle){case gt.NORMAL:case gt.EXCEEDS_PAD:case gt.ALWAYS:n.append(s.negativeSign());break;case gt.NOT_NEGATIVE:throw new r("Field "+this._field+" cannot be printed as the value "+e+" cannot be negative according to the SignStyle")}for(var u=0;u=0&&ie)return~i;for(var _=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),l=0,f=i,v=0;v<2;v++){for(var w=Math.min(f+_,e);f15)throw new u("number text exceeds length");l=10*l+p}if(!(this._subsequentWidth>0&&0===v))break;var m=f-i;_=Math.max(a,m-this._subsequentWidth),f=i,l=0}if(s){if(0===l&&t.isStrict())return~(i-1);0!==l&&(l=-l)}else if(this._signStyle===gt.EXCEEDS_PAD&&t.isStrict()){var g=f-i;if(o){if(g<=this._minWidth)return~(i-1)}else if(g>this._minWidth)return~i}return this._setValue(t,l,i,f)},n._getValue=function(t,n){return n},n._setValue=function(t,n,i,e){return t.setParsedField(this._field,n,i,e)},n.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===gt.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),zt=function(t){function n(n,i,e,s,o){var u;if(u=t.call(this,n,i,e,gt.NOT_NEGATIVE)||this,i<1||i>10)throw new a("The width must be from 1 to 10 inclusive but was "+i);if(e<1||e>10)throw new a("The maxWidth must be from 1 to 10 inclusive but was "+e);if(e$.MAX_SAFE_INTEGER)throw new r("Unable to add printer-parser as the range exceeds the capacity of an int")}return u._baseValue=s,u._baseDate=o,u}l(n,t);var i=n.prototype;return i._getValue=function(t,n){var i=Math.abs(n),e=this._baseValue;return null!==this._baseDate&&(t.temporal(),e=nn.INSTANCE.date(this._baseDate).get(this._field)),n>=e&&n=0){var s=jt[this._minWidth],o=r-r%s;(n=r>0?o+n:o-n)=3||this.type>=1&&s>0)&&(n.append(this.type%2==0?":":"").appendChar($.intDiv(s,10)+"0").appendChar(s%10+"0"),a+=s,(this.type>=7||this.type>=5&&o>0)&&(n.append(this.type%2==0?":":"").appendChar($.intDiv(o,10)+"0").appendChar(o%10+"0"),a+=o)),0===a&&(n.setLength(u),n.append(this.noOffsetText))}return!0},n.parse=function(t,n,i){var e=n.length,r=this.noOffsetText.length;if(0===r){if(i===e)return t.setParsedField(S.OFFSET_SECONDS,0,i,i)}else{if(i===e)return~i;if(t.subSequenceEquals(n,i,this.noOffsetText,0,r))return t.setParsedField(S.OFFSET_SECONDS,0,i,i+r)}var s=n[i];if("+"===s||"-"===s){var o="-"===s?-1:1,u=[0,0,0,0];if(u[0]=i+1,!1===(this._parseNumber(u,1,n,!0)||this._parseNumber(u,2,n,this.type>=3)||this._parseNumber(u,3,n,!1))){var a=$.safeZero(o*(3600*u[1]+60*u[2]+u[3]));return t.setParsedField(S.OFFSET_SECONDS,a,i,u[0])}}return 0===r?t.setParsedField(S.OFFSET_SECONDS,0,i,i+r):~i},n._parseNumber=function(t,n,i,e){if((this.type+3)/21){if(r+1>i.length||":"!==i[r])return e;r++}if(r+2>i.length)return e;var s=i[r++],o=i[r++];if(s<"0"||s>"9"||o<"0"||o>"9")return e;var u=10*(s.charCodeAt(0)-48)+(o.charCodeAt(0)-48);return u<0||u>59?e:(t[n]=u,t[0]=r,!1)},n.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+Et[this.type]+",'"+t+"')"},t}();Ct.INSTANCE_ID=new Ct("Z","+HH:MM:ss"),Ct.PATTERNS=Et;var St=function(){function t(t,n,i){this._printerParser=t,this._padWidth=n,this._padChar=i}var n=t.prototype;return n.print=function(t,n){var i=n.length();if(!1===this._printerParser.print(t,n))return!1;var e=n.length()-i;if(e>this._padWidth)throw new r("Cannot print as output of "+e+" characters exceeds pad width of "+this._padWidth);for(var s=0;sn.length)),c(i>=0),i===n.length)return~i;var s=i+this._padWidth;if(s>n.length){if(e)return~i;s=n.length}for(var o=i;on.length||i<0)),!1===t.subSequenceEquals(n,i,this._literal,0,this._literal.length)?~i:i+this._literal.length},n.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),Dt=function(){function t(){}return t.getRules=function(t){throw new r("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),Mt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._id=n,e._rules=i,e}l(n,t),n.ofId=function(t){return new n(t,Dt.getRules(t))};var i=n.prototype;return i.id=function(){return this._id},i.rules=function(){return this._rules},n}(G),Nt=function(){function t(t,n){this.query=t,this.description=n}var n=t.prototype;return n.print=function(t,n){var i=t.getValueQuery(this.query);return null!=i&&(n.append(i.id()),!0)},n.parse=function(t,n,i){var e=n.length;if(i>e)return~i;if(i===e)return~i;var r=n.charAt(i);if("+"===r||"-"===r){var s=t.copy(),o=Ct.INSTANCE_ID.parse(s,n,i);if(o<0)return o;var u=s.getParsed(S.OFFSET_SECONDS),a=Q.ofTotalSeconds(u);return t.setParsedZone(a),o}if(e>=i+2){var h=n.charAt(i+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return e>=i+3&&t.charEquals(n.charAt(i+2),"C")?this._parsePrefixedOffset(t,n,i,i+3):this._parsePrefixedOffset(t,n,i,i+2);if(t.charEquals(r,"G")&&e>=i+3&&t.charEquals(h,"M")&&t.charEquals(n.charAt(i+2),"T"))return this._parsePrefixedOffset(t,n,i,i+3)}if("SYSTEM"===n.substr(i,6))return t.setParsedZone(G.systemDefault()),i+6;if(t.charEquals(r,"Z"))return t.setParsedZone(Q.UTC),i+1;var _=Dt.getAvailableZoneIds();Lt.size!==_.length&&(Lt=Rt.createTreeMap(_));for(var l=e-i,f=Lt.treeMap,c=null,v=0;null!=f;){var w=n.substr(i,Math.min(f.length,l));null!=(f=f.get(w))&&f.isLeaf&&(c=w,v=f.length)}return null!=c?(t.setParsedZone(Mt.ofId(c)),i+v):~i},n._parsePrefixedOffset=function(t,n,i,e){var r=n.substring(i,e).toUpperCase(),s=t.copy();if(ethis.length){var e=n.substr(0,this.length),r=this._treeMap[e];null==r&&(r=new t(i,!1),this._treeMap[e]=r),r.add(n)}},n.get=function(t){return this._treeMap[t]},t}(),Lt=new Rt([]),Ft=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(n,i){v(n,"parent"),v(i,"optional");var e=new t;return e._parent=n,e._optional=i,e};var n=t.prototype;return n.parseCaseSensitive=function(){return this._appendInternalPrinterParser(qt.SENSITIVE),this},n.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(qt.INSENSITIVE),this},n.parseStrict=function(){return this._appendInternalPrinterParser(qt.STRICT),this},n.parseLenient=function(){return this._appendInternalPrinterParser(qt.LENIENT),this},n.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},n._appendValue1=function(t){return v(t),this._appendValuePrinterParser(new xt(t,1,Ft,gt.NORMAL)),this},n._appendValue2=function(t,n){if(v(t),n<1||n>Ft)throw new a("The width must be from 1 to 15 inclusive but was "+n);var i=new xt(t,n,n,gt.NOT_NEGATIVE);return this._appendValuePrinterParser(i),this},n._appendValue4=function(t,n,i,e){if(v(t),v(e),n===i&&e===gt.NOT_NEGATIVE)return this._appendValue2(t,i);if(n<1||n>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+n);if(i<1||i>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+i);if(i=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof xt){var n=this._active._valueParserIndex,i=this._active._printerParsers[n];t.minWidth()===t.maxWidth()&&t.signStyle()===gt.NOT_NEGATIVE?(i=i.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=n):(i=i.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[n]=i}else this._active._valueParserIndex=this._appendInternal(t);return this},n.appendFraction=function(t,n,i,e){return this._appendInternal(new kt(t,n,i,e)),this},n.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new a("Invalid fractional digits: "+t);return this._appendInternal(new Bt(t)),this},n.appendOffsetId=function(){return this._appendInternal(Ct.INSTANCE_ID),this},n.appendOffset=function(t,n){return this._appendInternalPrinterParser(new Ct(n,t)),this},n.appendZoneId=function(){return this._appendInternal(new Nt(q.zoneId(),"ZoneId()")),this},n.appendPattern=function(t){return v(t,"pattern"),this._parsePattern(t),this},n.appendZoneText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendLocalizedOffset=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendWeekField=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n._parsePattern=function(t){for(var n={G:S.ERA,y:S.YEAR_OF_ERA,u:S.YEAR,Q:rt.QUARTER_OF_YEAR,q:rt.QUARTER_OF_YEAR,M:S.MONTH_OF_YEAR,L:S.MONTH_OF_YEAR,D:S.DAY_OF_YEAR,d:S.DAY_OF_MONTH,F:S.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:S.DAY_OF_WEEK,c:S.DAY_OF_WEEK,e:S.DAY_OF_WEEK,a:S.AMPM_OF_DAY,H:S.HOUR_OF_DAY,k:S.CLOCK_HOUR_OF_DAY,K:S.HOUR_OF_AMPM,h:S.CLOCK_HOUR_OF_AMPM,m:S.MINUTE_OF_HOUR,s:S.SECOND_OF_MINUTE,S:S.NANO_OF_SECOND,A:S.MILLI_OF_DAY,n:S.NANO_OF_SECOND,N:S.NANO_OF_DAY},i=0;i="A"&&e<="Z"||e>="a"&&e<="z"){for(var r=i++;i="A"&&e<="Z"||e>="a"&&e<="z")){for(o=s,r=i++;i4)throw new a("Too many pattern letters: "+e);4===s?this.appendZoneText($t.FULL):this.appendZoneText($t.SHORT)}else if("V"===e){if(2!==s)throw new a("Pattern letter count must be 2: "+e);this.appendZoneId()}else if("Z"===e)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset($t.FULL);else{if(5!==s)throw new a("Too many pattern letters: "+e);this.appendOffset("+HH:MM:ss","Z")}else if("O"===e)if(1===s)this.appendLocalizedOffset($t.SHORT);else{if(4!==s)throw new a("Pattern letter count must be 1 or 4: "+e);this.appendLocalizedOffset($t.FULL)}else if("X"===e){if(s>5)throw new a("Too many pattern letters: "+e);this.appendOffset(Ct.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===e){if(s>5)throw new a("Too many pattern letters: "+e);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(Ct.PATTERNS[s+(1===s?0:1)],h)}else if("W"===e){if(s>1)throw new a("Too many pattern letters: "+e);this.appendWeekField("W",s)}else if("w"===e){if(s>2)throw new a("Too many pattern letters: "+e);this.appendWeekField("w",s)}else{if("Y"!==e)throw new a("Unknown pattern letter: "+e);this.appendWeekField("Y",s)}i--}else if("'"===e){for(var _=i++;i=t.length)throw new a("Pattern ends with an incomplete string literal: "+t);var l=t.substring(_+1,i);0===l.length?this.appendLiteral("'"):this.appendLiteral(l.replace("''","'"))}else if("["===e)this.optionalStart();else if("]"===e){if(null===this._active._parent)throw new a("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===e||"}"===e||"#"===e)throw new a("Pattern includes reserved character: '"+e+"'");this.appendLiteral(e)}}},n._parseField=function(t,n,i){switch(t){case"u":case"y":2===n?this.appendValueReduced(i,2,2,zt.BASE_DATE):n<4?this.appendValue(i,n,Ft,gt.NORMAL):this.appendValue(i,n,Ft,gt.EXCEEDS_PAD);break;case"M":case"Q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,$t.SHORT);break;case 4:this.appendText(i,$t.FULL);break;case 5:this.appendText(i,$t.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"L":case"q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,$t.SHORT_STANDALONE);break;case 4:this.appendText(i,$t.FULL_STANDALONE);break;case 5:this.appendText(i,$t.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"e":switch(n){case 1:case 2:this.appendWeekField("e",n);break;case 3:this.appendText(i,$t.SHORT);break;case 4:this.appendText(i,$t.FULL);break;case 5:this.appendText(i,$t.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"c":switch(n){case 1:this.appendWeekField("c",n);break;case 2:throw new a("Invalid number of pattern letters: "+t);case 3:this.appendText(i,$t.SHORT_STANDALONE);break;case 4:this.appendText(i,$t.FULL_STANDALONE);break;case 5:this.appendText(i,$t.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"a":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendText(i,$t.SHORT);break;case"E":case"G":switch(n){case 1:case 2:case 3:this.appendText(i,$t.SHORT);break;case 4:this.appendText(i,$t.FULL);break;case 5:this.appendText(i,$t.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"S":this.appendFraction(S.NANO_OF_SECOND,n,n,!1);break;case"F":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===n)this.appendValue(i);else{if(2!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;case"D":if(1===n)this.appendValue(i);else{if(!(n<=3))throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;default:1===n?this.appendValue(i):this.appendValue(i,n)}},n.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},n._padNext1=function(t){return this._padNext2(t," ")},n._padNext2=function(t,n){if(t<1)throw new a("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=n,this._active._valueParserIndex=-1,this},n.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},n.optionalEnd=function(){if(null==this._active._parent)throw new h("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new bt(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},n._appendInternal=function(t){return c(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new St(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.appendLiteral=function(t){return c(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new yt(t.charAt(0))):this._appendInternalPrinterParser(new Tt(t))),this},n._appendInternalPrinterParser=function(t){return c(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new St(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.append=function(t){return v(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},n.toFormatter=function(t){for(void 0===t&&(t=U.SMART);null!=this._active._parent;)this.optionalEnd();var n=new bt(this._printerParsers,!1);return new Wt(n,null,mt.STANDARD,t,null,null,null)},t}(),Ht=31556952e4,Vt=62167219200,Bt=function(){function t(t){this.fractionalDigits=t}var n=t.prototype;return n.print=function(t,n){var i=t.getValue(S.INSTANT_SECONDS),e=0;if(t.temporal().isSupported(S.NANO_OF_SECOND)&&(e=t.temporal().getLong(S.NANO_OF_SECOND)),null==i)return!1;var r=i,s=S.NANO_OF_SECOND.checkValidIntValue(e);if(r>=-62167219200){var o=r-Ht+Vt,u=$.floorDiv(o,Ht)+1,a=$.floorMod(o,Ht),h=ln.ofEpochSecond(a-Vt,0,Q.UTC);u>0&&n.append("+").append(u),n.append(h),0===h.second()&&n.append(":00")}else{var _=r+Vt,l=$.intDiv(_,Ht),f=$.intMod(_,Ht),c=ln.ofEpochSecond(f-Vt,0,Q.UTC),v=n.length();n.append(c),0===c.second()&&n.append(":00"),l<0&&(-1e4===c.year()?n.replace(v,v+2,""+(l-1)):0===f?n.insert(v,l):n.insert(v+1,Math.abs(l)))}if(-2===this.fractionalDigits)0!==s&&(n.append("."),0===$.intMod(s,1e6)?n.append((""+($.intDiv(s,1e6)+1e3)).substring(1)):0===$.intMod(s,1e3)?n.append((""+($.intDiv(s,1e3)+1e6)).substring(1)):n.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){n.append(".");for(var w=1e8,d=0;-1===this.fractionalDigits&&s>0||d64?t.substring(0,64)+"...":t,new s("Text '"+i+"' could not be parsed: "+n.message,t,0,n)},n._parseToBuilder=function(t,n){var i=null!=n?n:new L(0),e=this._parseUnresolved0(t,i);if(null==e||i.getErrorIndex()>=0||null==n&&i.getIndex()64?t.substr(0,64).toString()+"...":t,i.getErrorIndex()>=0?new s("Text '"+r+"' could not be parsed at index "+i.getErrorIndex(),t,i.getErrorIndex()):new s("Text '"+r+"' could not be parsed, unparsed text found at index "+i.getIndex(),t,i.getIndex())}return e.toBuilder()},n.parseUnresolved=function(t,n){return this._parseUnresolved0(t,n)},n._parseUnresolved0=function(t,n){c(null!=t,"text",_),c(null!=n,"position",_);var i=new nt(this),e=n.getIndex();return(e=this._printerParser.parse(i,t,e))<0?(n.setErrorIndex(~e),null):(n.setIndex(e),i.toParsed())},n._toPrinterParser=function(t){return this._printerParser.withOptional(t)},n.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}(),Gt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._month=$.safeToInt(n),e._day=$.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return this.nowClock(wn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),this.nowClock(wn.system(t))},n.nowClock=function(t){v(t,"clock");var i=hn.now(t);return n.of(i.month(),i.dayOfMonth())},n.of=function(t,i){return 2===arguments.length&&t instanceof N?n.ofMonthNumber(t,i):n.ofNumberNumber(t,i)},n.ofMonthNumber=function(t,i){if(v(t,"month"),S.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new r("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new n(t.value(),i)},n.ofNumberNumber=function(t,i){return v(t,"month"),v(i,"dayOfMonth"),n.of(N.of(t),i)},n.from=function(t){if(v(t,"temporal"),w(t,O,"temporal"),t instanceof n)return t;try{return n.of(t.get(S.MONTH_OF_YEAR),t.get(S.DAY_OF_MONTH))}catch(n){throw new r("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,Ot)},n.parseStringFormatter=function(t,i){return v(t,"text"),v(i,"formatter"),w(i,Wt,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof S?t===S.MONTH_OF_YEAR||t===S.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===S.MONTH_OF_YEAR?n.range():n===S.DAY_OF_MONTH?C.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof S){switch(t){case S.DAY_OF_MONTH:return this._day;case S.MONTH_OF_YEAR:return this._month}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return 0==(29===this._day&&2===this._month&&!1===Jt.isLeap(t))},i.withMonth=function(t){return this.with(N.of(t))},i.with=function(t){if(v(t,"month"),t.value()===this._month)return this;var i=Math.min(this._day,t.maxLength());return new n(t.value(),i)},i.withDayOfMonth=function(t){return t===this._day?this:n.of(this._month,t)},i.query=function(n){return v(n,"query"),w(n,I,"query"),n===q.chronology()?nn.INSTANCE:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),(t=t.with(S.MONTH_OF_YEAR,this._month)).with(S.DAY_OF_MONTH,Math.min(t.range(S.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return hn.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){v(t,"other"),w(t,n,"other");var i=this._month-t.monthValue();return 0===i&&(i=this._day-t.dayOfMonth()),i},i.isAfter=function(t){return v(t,"other"),w(t,n,"other"),this.compareTo(t)>0},i.isBefore=function(t){return v(t,"other"),w(t,n,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.monthValue()===i.monthValue()&&this.dayOfMonth()===i.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),w(t,Wt,"formatter"),t.format(this)},n}(O),Kt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._year=$.safeToInt(n),e._month=$.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(wn.systemDefaultZone())},n.nowZoneId=function(t){return n.nowClock(wn.system(t))},n.nowClock=function(t){var i=hn.now(t);return n.of(i.year(),i.month())},n.of=function(t,i){return 2===arguments.length&&i instanceof N?n.ofNumberMonth(t,i):n.ofNumberNumber(t,i)},n.ofNumberMonth=function(t,i){return v(i,"month"),w(i,N,"month"),n.ofNumberNumber(t,i.value())},n.ofNumberNumber=function(t,i){return v(t,"year"),v(i,"month"),S.YEAR.checkValidValue(t),S.MONTH_OF_YEAR.checkValidValue(i),new n(t,i)},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;try{return n.of(t.get(S.YEAR),t.get(S.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,It)},n.parseStringFormatter=function(t,i){return v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof E?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof S?t===S.YEAR||t===S.MONTH_OF_YEAR||t===S.PROLEPTIC_MONTH||t===S.YEAR_OF_ERA||t===S.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof z?t===z.MONTHS||t===z.YEARS||t===z.DECADES||t===z.CENTURIES||t===z.MILLENNIA||t===z.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===S.YEAR_OF_ERA?this.year()<=0?C.of(1,Jt.MAX_VALUE+1):C.of(1,Jt.MAX_VALUE):t.prototype.range.call(this,n)},i.get=function(t){return v(t,"field"),w(t,E,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),w(t,E,"field"),t instanceof S){switch(t){case S.MONTH_OF_YEAR:return this._month;case S.PROLEPTIC_MONTH:return this._getProlepticMonth();case S.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case S.YEAR:return this._year;case S.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return $.safeAdd($.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,n){return 1===arguments.length?this.withAdjuster(t):this.withFieldValue(t,n)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,n){if(v(t,"field"),w(t,E,"field"),t instanceof S){var i=t;switch(i.checkValidValue(n),i){case S.MONTH_OF_YEAR:return this.withMonth(n);case S.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(S.PROLEPTIC_MONTH));case S.YEAR_OF_ERA:return this.withYear(this._year<1?1-n:n);case S.YEAR:return this.withYear(n);case S.ERA:return this.getLong(S.ERA)===n?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return S.YEAR.checkValidValue(t),new n(t,this._month)},i.withMonth=function(t){return S.MONTH_OF_YEAR.checkValidValue(t),new n(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),w(t,b,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),w(n,k,"unit"),n instanceof z){switch(n){case z.MONTHS:return this.plusMonths(t);case z.YEARS:return this.plusYears(t);case z.DECADES:return this.plusYears($.safeMultiply(t,10));case z.CENTURIES:return this.plusYears($.safeMultiply(t,100));case z.MILLENNIA:return this.plusYears($.safeMultiply(t,1e3));case z.ERAS:return this.with(S.ERA,$.safeAdd(this.getLong(S.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=S.YEAR.checkValidIntValue(this._year+t);return this.withYear(n)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t;return new n(S.YEAR.checkValidIntValue($.floorDiv(i,12)),$.floorMod(i,12)+1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return t===$.MIN_SAFE_INTEGER?this.plusAmountUnit($.MAX_SAFE_INTEGER,n).plusAmountUnit(1,n):this.plusAmountUnit(-t,n)},i.minusYears=function(t){return t===$.MIN_SAFE_INTEGER?this.plusYears($.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===$.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(n){return v(n,"query"),w(n,I,"query"),n===q.chronology()?nn.INSTANCE:n===q.precision()?z.MONTHS:n===q.localDate()||n===q.localTime()||n===q.zone()||n===q.zoneId()||n===q.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),w(t,V,"temporal"),t.with(S.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit"),w(t,V,"endExclusive"),w(i,k,"unit");var e=n.from(t);if(i instanceof z){var r=e._getProlepticMonth()-this._getProlepticMonth();switch(i){case z.MONTHS:return r;case z.YEARS:return r/12;case z.DECADES:return r/120;case z.CENTURIES:return r/1200;case z.MILLENNIA:return r/12e3;case z.ERAS:return e.getLong(S.ERA)-this.getLong(S.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDay=function(t){return hn.of(this._year,this._month,t)},i.atEndOfMonth=function(){return hn.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){v(t,"other"),w(t,n,"other");var i=this._year-t.year();return 0===i&&(i=this._month-t.monthValue()),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.year()===i.year()&&this.monthValue()===i.monthValue()}return!1},i.toString=function(){return It.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V),Jt=function(t){function n(n){var i;return(i=t.call(this)||this)._year=$.safeToInt(n),i}l(n,t);var i=n.prototype;return i.value=function(){return this._year},n.now=function(t){return void 0===t&&(t=void 0),void 0===t?n.now0():t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(wn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),w(t,G,"zone"),n.nowClock(wn.system(t))},n.nowClock=function(t){v(t,"clock"),w(t,wn,"clock");var i=hn.now(t);return n.of(i.year())},n.of=function(t){return v(t,"isoYear"),S.YEAR.checkValidValue(t),new n(t)},n.from=function(t){if(v(t,"temporal"),w(t,O,"temporal"),t instanceof n)return t;try{return n.of(t.get(S.YEAR))}catch(n){throw new r("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return arguments.length<=1?n.parseText(t):n.parseTextFormatter(t,i)},n.parseText=function(t){return v(t,"text"),n.parse(t,At)},n.parseTextFormatter=function(t,i){return void 0===i&&(i=At),v(t,"text"),v(i,"formatter"),w(i,Wt,"formatter"),i.parse(t,n.FROM)},n.isLeap=function(t){return 0===$.intMod(t,4)&&(0!==$.intMod(t,100)||0===$.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof E?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof S?t===S.YEAR||t===S.YEAR_OF_ERA||t===S.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof z?t===z.YEARS||t===z.DECADES||t===z.CENTURIES||t===z.MILLENNIA||t===z.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){if(this.isSupported(n))return n.range();if(n instanceof S)throw new o("Unsupported field: "+n);return t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof S){switch(t){case S.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case S.YEAR:return this._year;case S.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return n.isLeap(this._year)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),w(t,E,"field"),t instanceof S){switch(t.checkValidValue(i),t){case S.YEAR_OF_ERA:return n.of(this._year<1?1-i:i);case S.YEAR:return n.of(i);case S.ERA:return this.getLong(S.ERA)===i?this:n.of(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.plusAmount=function(t){return v(t,"amount"),w(t,b,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),w(n,k,"unit"),n instanceof z){switch(n){case z.YEARS:return this.plusYears(t);case z.DECADES:return this.plusYears($.safeMultiply(t,10));case z.CENTURIES:return this.plusYears($.safeMultiply(t,100));case z.MILLENNIA:return this.plusYears($.safeMultiply(t,1e3));case z.ERAS:return this.with(S.ERA,$.safeAdd(this.getLong(S.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){return 0===t?this:n.of(S.YEAR.checkValidIntValue($.safeAdd(this._year,t)))},i.minusAmount=function(t){return v(t,"amount"),w(t,b,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),w(n,k,"unit"),t===$.MIN_SAFE_INTEGER?this.plus($.MAX_SAFE_INTEGER,n).plus(1,n):this.plus(-t,n)},i.minusYears=function(t){return t===$.MIN_SAFE_INTEGER?this.plusYears($.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return v(t,"temporal"),t.with(S.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return hn.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof N?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return v(t,"month"),w(t,N,"month"),Kt.of(this._year,t)},i.atMonthNumber=function(t){return v(t,"month"),Kt.of(this._year,t)},i.atMonthDay=function(t){return v(t,"monthDay"),w(t,Gt,"monthDay"),t.atYear(this._year)},i.query=function(n){return v(n,"query()"),w(n,I,"query()"),n===q.chronology()?nn.INSTANCE:n===q.precision()?z.YEARS:n===q.localDate()||n===q.localTime()||n===q.zone()||n===q.zoneId()||n===q.offset()?null:t.prototype.query.call(this,n)},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._year-t._year},i.isAfter=function(t){return v(t,"other"),w(t,n,"other"),this._year>t._year},i.isBefore=function(t){return v(t,"other"),w(t,n,"other"),this._year=0){var n=t.with(S.DAY_OF_MONTH,1),i=n.get(S.DAY_OF_WEEK),e=$.intMod(this._dowValue-i+7,7);return e+=7*(this._ordinal-1),n.plus(e,z.DAYS)}var r=t.with(S.DAY_OF_MONTH,t.range(S.DAY_OF_MONTH).maximum()),s=r.get(S.DAY_OF_WEEK),o=this._dowValue-s;return o=0===o?0:o>0?o-7:o,o-=7*(-this._ordinal-1),r.plus(o,z.DAYS)},n}(H),tn=function(t){function n(n,i){var e;return e=t.call(this)||this,v(i,"dayOfWeek"),e._relative=n,e._dowValue=i.value(),e}return l(n,t),n.prototype.adjustInto=function(t){var n=t.get(S.DAY_OF_WEEK);if(this._relative<2&&n===this._dowValue)return t;if(0==(1&this._relative)){var i=n-this._dowValue;return t.plus(i>=0?7-i:-i,z.DAYS)}var e=this._dowValue-n;return t.minus(e>=0?7-e:-e,z.DAYS)},n}(H),nn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t),n.isLeapYear=function(t){return 0==(3&t)&&(t%100!=0||t%400==0)};var i=n.prototype;return i._updateResolveMap=function(t,n,i){v(t,"fieldValues"),v(n,"field");var e=t.get(n);if(null!=e&&e!==i)throw new r("Invalid state, field: "+n+" "+e+" conflicts with "+n+" "+i);t.put(n,i)},i.resolveDate=function(t,n){if(t.containsKey(S.EPOCH_DAY))return hn.ofEpochDay(t.remove(S.EPOCH_DAY));var i=t.remove(S.PROLEPTIC_MONTH);null!=i&&(n!==U.LENIENT&&S.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,S.MONTH_OF_YEAR,$.floorMod(i,12)+1),this._updateResolveMap(t,S.YEAR,$.floorDiv(i,12)));var e=t.remove(S.YEAR_OF_ERA);if(null!=e){n!==U.LENIENT&&S.YEAR_OF_ERA.checkValidValue(e);var s=t.remove(S.ERA);if(null==s){var o=t.get(S.YEAR);n===U.STRICT?null!=o?this._updateResolveMap(t,S.YEAR,o>0?e:$.safeSubtract(1,e)):t.put(S.YEAR_OF_ERA,e):this._updateResolveMap(t,S.YEAR,null==o||o>0?e:$.safeSubtract(1,e))}else if(1===s)this._updateResolveMap(t,S.YEAR,e);else{if(0!==s)throw new r("Invalid value for era: "+s);this._updateResolveMap(t,S.YEAR,$.safeSubtract(1,e))}}else t.containsKey(S.ERA)&&S.ERA.checkValidValue(t.get(S.ERA));if(t.containsKey(S.YEAR)){if(t.containsKey(S.MONTH_OF_YEAR)&&t.containsKey(S.DAY_OF_MONTH)){var u=S.YEAR.checkValidIntValue(t.remove(S.YEAR)),a=t.remove(S.MONTH_OF_YEAR),h=t.remove(S.DAY_OF_MONTH);if(n===U.LENIENT){var _=a-1,l=h-1;return hn.of(u,1,1).plusMonths(_).plusDays(l)}return n===U.SMART?(S.DAY_OF_MONTH.checkValidValue(h),4===a||6===a||9===a||11===a?h=Math.min(h,30):2===a&&(h=Math.min(h,N.FEBRUARY.length(Jt.isLeap(u)))),hn.of(u,a,h)):hn.of(u,a,h)}if(t.containsKey(S.DAY_OF_YEAR)){var f=S.YEAR.checkValidIntValue(t.remove(S.YEAR));if(n===U.LENIENT){var c=$.safeSubtract(t.remove(S.DAY_OF_YEAR),1);return hn.ofYearDay(f,1).plusDays(c)}var v=S.DAY_OF_YEAR.checkValidIntValue(t.remove(S.DAY_OF_YEAR));return hn.ofYearDay(f,v)}if(t.containsKey(S.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(S.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var w=S.YEAR.checkValidIntValue(t.remove(S.YEAR));if(n===U.LENIENT){var d=$.safeSubtract(t.remove(S.ALIGNED_WEEK_OF_YEAR),1),p=$.safeSubtract(t.remove(S.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return hn.of(w,1,1).plusWeeks(d).plusDays(p)}var m=S.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(S.ALIGNED_WEEK_OF_YEAR)),g=S.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(S.ALIGNED_DAY_OF_WEEK_IN_YEAR)),y=hn.of(w,1,1).plusDays(7*(m-1)+(g-1));if(n===U.STRICT&&y.get(S.YEAR)!==w)throw new r("Strict mode rejected date parsed to a different year");return y}if(t.containsKey(S.DAY_OF_WEEK)){var b=S.YEAR.checkValidIntValue(t.remove(S.YEAR));if(n===U.LENIENT){var k=$.safeSubtract(t.remove(S.ALIGNED_WEEK_OF_YEAR),1),j=$.safeSubtract(t.remove(S.DAY_OF_WEEK),1);return hn.of(b,1,1).plusWeeks(k).plusDays(j)}var x=S.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(S.ALIGNED_WEEK_OF_YEAR)),z=S.DAY_OF_WEEK.checkValidIntValue(t.remove(S.DAY_OF_WEEK)),E=hn.of(b,1,1).plusWeeks(x-1).with(Xt.nextOrSame(M.of(z)));if(n===U.STRICT&&E.get(S.YEAR)!==b)throw new r("Strict mode rejected date parsed to a different month");return E}}}return null},i.date=function(t){return hn.from(t)},n}(y),en=function(t){function n(n,i){var e;return e=t.call(this)||this,v(n,"time"),w(n,fn,"time"),v(i,"offset"),w(i,Q,"offset"),e._time=n,e._offset=i,e}l(n,t),n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof on)return t.toOffsetTime();try{return new n(fn.from(t),Q.from(t))}catch(n){throw new r("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.now=function(t){return 0===arguments.length?n._now(wn.systemDefaultZone()):t instanceof wn?n._now(t):n._now(wn.system(t))},n._now=function(t){v(t,"clock");var i=t.instant();return n.ofInstant(i,t.zone().rules().offset(i))},n.of=function(){return arguments.length<=2?n.ofTimeAndOffset.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s){return new n(fn.of(t,i,e,r),s)},n.ofTimeAndOffset=function(t,i){return new n(t,i)},n.ofInstant=function(t,i){v(t,"instant"),w(t,vn,"instant"),v(i,"zone"),w(i,G,"zone");var e=i.rules().offset(t),r=t.epochSecond()%fn.SECONDS_PER_DAY;return(r=(r+e.totalSeconds())%fn.SECONDS_PER_DAY)<0&&(r+=fn.SECONDS_PER_DAY),new n(fn.ofSecondOfDay(r,t.nano()),e)},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_OFFSET_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.adjustInto=function(t){return t.with(S.NANO_OF_DAY,this._time.toNanoOfDay()).with(S.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return on.of(t,this._time,this._offset)},i.format=function(t){return v(t,"formatter"),t.format(this,n.FROM)},i.get=function(n){return t.prototype.get.call(this,n)},i.getLong=function(t){return t instanceof S?t===S.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return v(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return v(t,"other"),this._toEpochNano()i?1:0),e},i.isAfter=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return n>i||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ni||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ns.firstDayOfYear(e)+s.length(e)-1&&(s=s.plus(1));var o=i-s.firstDayOfYear(e)+1;return new n(t,s.value(),o)},n.ofEpochDay=function(t){var i,e,r,s,o;void 0===t&&(t=0),o=t+an,i=0,(o-=60)<0&&(i=400*(e=$.intDiv(o+1,un)-1),o+=-e*un),(r=o-(365*(s=$.intDiv(400*o+591,un))+$.intDiv(s,4)-$.intDiv(s,100)+$.intDiv(s,400)))<0&&(r=o-(365*--s+$.intDiv(s,4)-$.intDiv(s,100)+$.intDiv(s,400))),s+=i;var u=r,a=$.intDiv(5*u+2,153),h=(a+2)%12+1,_=u-$.intDiv(306*a+5,10)+1;return new n(s+=$.intDiv(a,10),h,_)},n.from=function(t){v(t,"temporal");var n=t.query(q.localDate());if(null==n)throw new r("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE),c(null!=i,"formatter",_),i.parse(t,n.FROM)},n._resolvePreviousValid=function(t,i,e){switch(i){case 2:e=Math.min(e,nn.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:e=Math.min(e,30)}return n.of(t,i,e)},n._validate=function(t,n,i){var e;if(S.YEAR.checkValidValue(t),S.MONTH_OF_YEAR.checkValidValue(n),S.DAY_OF_MONTH.checkValidValue(i),i>28){switch(e=31,n){case 2:e=nn.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:e=30}i>e&&c(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+n+"' '"+i+"'",r)}};var i=n.prototype;return i.isSupported=function(n){return t.prototype.isSupported.call(this,n)},i.range=function(t){if(t instanceof S){if(t.isDateBased()){switch(t){case S.DAY_OF_MONTH:return C.of(1,this.lengthOfMonth());case S.DAY_OF_YEAR:return C.of(1,this.lengthOfYear());case S.ALIGNED_WEEK_OF_MONTH:return C.of(1,this.month()===N.FEBRUARY&&!1===this.isLeapYear()?4:5);case S.YEAR_OF_ERA:return this._year<=0?C.of(1,Jt.MAX_VALUE+1):C.of(1,Jt.MAX_VALUE)}return t.range()}throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return c(null!=t,"",_),t instanceof S?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case S.DAY_OF_WEEK:return this.dayOfWeek().value();case S.ALIGNED_DAY_OF_WEEK_IN_MONTH:return $.intMod(this._day-1,7)+1;case S.ALIGNED_DAY_OF_WEEK_IN_YEAR:return $.intMod(this.dayOfYear()-1,7)+1;case S.DAY_OF_MONTH:return this._day;case S.DAY_OF_YEAR:return this.dayOfYear();case S.EPOCH_DAY:return this.toEpochDay();case S.ALIGNED_WEEK_OF_MONTH:return $.intDiv(this._day-1,7)+1;case S.ALIGNED_WEEK_OF_YEAR:return $.intDiv(this.dayOfYear()-1,7)+1;case S.MONTH_OF_YEAR:return this._month;case S.PROLEPTIC_MONTH:return this._prolepticMonth();case S.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case S.YEAR:return this._year;case S.ERA:return this._year>=1?1:0}throw new o("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return nn.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=$.floorMod(this.toEpochDay()+3,7);return M.of(t+1)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(c("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(c(null!=t,"field",_),t instanceof S){var e=t;switch(e.checkValidValue(i),e){case S.DAY_OF_WEEK:return this.plusDays(i-this.dayOfWeek().value());case S.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(i-this.getLong(S.ALIGNED_DAY_OF_WEEK_IN_MONTH));case S.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(i-this.getLong(S.ALIGNED_DAY_OF_WEEK_IN_YEAR));case S.DAY_OF_MONTH:return this.withDayOfMonth(i);case S.DAY_OF_YEAR:return this.withDayOfYear(i);case S.EPOCH_DAY:return n.ofEpochDay(i);case S.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(i-this.getLong(S.ALIGNED_WEEK_OF_MONTH));case S.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(i-this.getLong(S.ALIGNED_WEEK_OF_YEAR));case S.MONTH_OF_YEAR:return this.withMonth(i);case S.PROLEPTIC_MONTH:return this.plusMonths(i-this.getLong(S.PROLEPTIC_MONTH));case S.YEAR_OF_ERA:return this.withYear(this._year>=1?i:1-i);case S.YEAR:return this.withYear(i);case S.ERA:return this.getLong(S.ERA)===i?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withYear=function(t){return this._year===t?this:(S.YEAR.checkValidValue(t),n._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var i=t instanceof N?t.value():t;return this._month===i?this:(S.MONTH_OF_YEAR.checkValidValue(i),n._resolvePreviousValid(this._year,i,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:n.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:n.ofYearDay(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n instanceof z){switch(n){case z.DAYS:return this.plusDays(t);case z.WEEKS:return this.plusWeeks(t);case z.MONTHS:return this.plusMonths(t);case z.YEARS:return this.plusYears(t);case z.DECADES:return this.plusYears($.safeMultiply(t,10));case z.CENTURIES:return this.plusYears($.safeMultiply(t,100));case z.MILLENNIA:return this.plusYears($.safeMultiply(t,1e3));case z.ERAS:return this.with(S.ERA,$.safeAdd(this.getLong(S.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var i=S.YEAR.checkValidIntValue(this._year+t);return n._resolvePreviousValid(i,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t,e=S.YEAR.checkValidIntValue($.floorDiv(i,12)),r=$.floorMod(i,12)+1;return n._resolvePreviousValid(e,r,this._day)},i.plusWeeks=function(t){return this.plusDays($.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var i=$.safeAdd(this.toEpochDay(),t);return n.ofEpochDay(i)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(n){return v(n,"query"),n===q.localDate()?this:t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,n){return arguments.length<2?this.until1(t):this.until2(t,n)},i.until2=function(t,i){var e=n.from(t);if(i instanceof z){switch(i){case z.DAYS:return this.daysUntil(e);case z.WEEKS:return $.intDiv(this.daysUntil(e),7);case z.MONTHS:return this._monthsUntil(e);case z.YEARS:return $.intDiv(this._monthsUntil(e),12);case z.DECADES:return $.intDiv(this._monthsUntil(e),120);case z.CENTURIES:return $.intDiv(this._monthsUntil(e),1200);case z.MILLENNIA:return $.intDiv(this._monthsUntil(e),12e3);case z.ERAS:return e.getLong(S.ERA)-this.getLong(S.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var n=32*this._prolepticMonth()+this.dayOfMonth(),i=32*t._prolepticMonth()+t.dayOfMonth();return $.intDiv(i-n,32)},i.until1=function(t){var i=n.from(t),e=i._prolepticMonth()-this._prolepticMonth(),r=i._day-this._day;if(e>0&&r<0){e--;var s=this.plusMonths(e);r=i.toEpochDay()-s.toEpochDay()}else e<0&&r>0&&(e++,r-=i.lengthOfMonth());var o=$.intDiv(e,12),u=$.intMod(e,12);return P.of(o,u,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(v(t,"time"),t instanceof fn)return ln.of(this,t);if(t instanceof en)return this._atTimeOffsetTime(t);throw new a("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,n,i,e){return void 0===i&&(i=0),void 0===e&&(e=0),this.atTime1(fn.of(t,n,i,e))},i._atTimeOffsetTime=function(t){return on.of(ln.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this.atStartOfDayWithZone(t):ln.of(this,fn.MIDNIGHT)},i.atStartOfDayWithZone=function(t){v(t,"zone");var n=this.atTime(fn.MIDNIGHT);if(t instanceof Q==0){var i=t.rules().transition(n);null!=i&&i.isGap()&&(n=i.dateTimeAfter())}return sn.of(n,t)},i.toEpochDay=function(){var t=this._year,n=this._month,i=0;return i+=365*t,t>=0?i+=$.intDiv(t+3,4)-$.intDiv(t+99,100)+$.intDiv(t+399,400):i-=$.intDiv(t,-4)-$.intDiv(t,-100)+$.intDiv(t,-400),i+=$.intDiv(367*n-362,12),i+=this.dayOfMonth()-1,n>2&&(i--,nn.isLeapYear(t)||i--),i-an},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._year-t._year;return 0===n&&0==(n=this._month-t._month)&&(n=this._day-t._day),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,n=this._month,i=this._day;return $.hash(4294965248&t^(t<<11)+(n<<6)+i)},i.toString=function(){var t=this._year,n=this._month,i=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(n<10?"-0"+n:"-"+n)+(i<10?"-0"+i:"-"+i)},i.toJSON=function(){return this.toString()},i.format=function(n){return v(n,"formatter"),w(n,Wt,"formatter"),t.prototype.format.call(this,n)},n}(Y),_n=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.chronology=function(){return this.toLocalDate().chronology()},i.query=function(n){return n===q.chronology()?this.chronology():n===q.precision()?z.NANOS:n===q.localDate()?hn.ofEpochDay(this.toLocalDate().toEpochDay()):n===q.localTime()?this.toLocalTime():n===q.zone()||n===q.zoneId()||n===q.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return t.with(S.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(S.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},i.toInstant=function(t){return w(t,Q,"zoneId"),vn.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},i.toEpochSecond=function(t){v(t,"offset");var n=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return n-=t.totalSeconds(),$.safeToInt(n)},n}(B),ln=function(t){function n(n,i){var e;return e=t.call(this)||this,w(n,hn,"date"),w(i,fn,"time"),e._date=n,e._time=i,e}l(n,t),n.now=function(t){return null==t?n._now(wn.systemDefaultZone()):t instanceof wn?n._now(t):n._now(wn.system(t))},n._now=function(t){return v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n._ofEpochMillis=function(t,i){var e=$.floorDiv(t,1e3)+i.totalSeconds(),r=$.floorDiv(e,fn.SECONDS_PER_DAY),s=$.floorMod(e,fn.SECONDS_PER_DAY),o=1e6*$.floorMod(t,1e3);return new n(hn.ofEpochDay(r),fn.ofSecondOfDay(s,o))},n.of=function(){return arguments.length<=2?n.ofDateAndTime.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s,o,u){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===o&&(o=0),void 0===u&&(u=0),new n(hn.of(t,i,e),fn.of(r,s,o,u))},n.ofDateAndTime=function(t,i){return v(t,"date"),v(i,"time"),new n(t,i)},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault()),v(t,"instant"),w(t,vn,"instant"),v(i,"zone");var e=i.rules().offset(t);return n.ofEpochSecond(t.epochSecond(),t.nano(),e)},n.ofEpochSecond=function(t,i,e){void 0===t&&(t=0),void 0===i&&(i=0),2===arguments.length&&i instanceof Q&&(e=i,i=0),v(e,"offset");var r=t+e.totalSeconds(),s=$.floorDiv(r,fn.SECONDS_PER_DAY),o=$.floorMod(r,fn.SECONDS_PER_DAY);return new n(hn.ofEpochDay(s),fn.ofSecondOfDay(o,i))},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof sn)return t.toLocalDateTime();try{return new n(hn.from(t),fn.from(t))}catch(n){throw new r("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i._withDateTime=function(t,i){return this._date.equals(t)&&this._time.equals(i)?this:new n(t,i)},i.isSupported=function(t){return t instanceof S||t instanceof z?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof S?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(n){return n instanceof S?n.isTimeBased()?this._time.get(n):this._date.get(n):t.prototype.get.call(this,n)},i.getLong=function(t){return v(t,"field"),t instanceof S?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof hn?this._withDateTime(t,this._time):t instanceof fn?this._withDateTime(this._date,t):t instanceof n?t:(c("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,n){return v(t,"field"),t instanceof S?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,n)):this._withDateTime(this._date.with(t,n),this._time):t.adjustInto(this,n)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var n=this._time.withHour(t);return this._withDateTime(this._date,n)},i.withMinute=function(t){var n=this._time.withMinute(t);return this._withDateTime(this._date,n)},i.withSecond=function(t){var n=this._time.withSecond(t);return this._withDateTime(this._date,n)},i.withNano=function(t){var n=this._time.withNano(t);return this._withDateTime(this._date,n)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),n instanceof z){switch(n){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this.plusDays($.intDiv(t,fn.MICROS_PER_DAY)).plusNanos(1e3*$.intMod(t,fn.MICROS_PER_DAY));case z.MILLIS:return this.plusDays($.intDiv(t,fn.MILLIS_PER_DAY)).plusNanos(1e6*$.intMod(t,fn.MILLIS_PER_DAY));case z.SECONDS:return this.plusSeconds(t);case z.MINUTES:return this.plusMinutes(t);case z.HOURS:return this.plusHours(t);case z.HALF_DAYS:return this.plusDays($.intDiv(t,256)).plusHours(12*$.intMod(t,256))}return this._withDateTime(this._date.plus(t,n),this._time)}return n.addTo(this,t)},i.plusYears=function(t){var n=this._date.plusYears(t);return this._withDateTime(n,this._time)},i.plusMonths=function(t){var n=this._date.plusMonths(t);return this._withDateTime(n,this._time)},i.plusWeeks=function(t){var n=this._date.plusWeeks(t);return this._withDateTime(n,this._time)},i.plusDays=function(t){var n=this._date.plusDays(t);return this._withDateTime(n,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,n,i,e,r,s){if(0===n&&0===i&&0===e&&0===r)return this._withDateTime(t,this._time);var o=$.intDiv(r,fn.NANOS_PER_DAY)+$.intDiv(e,fn.SECONDS_PER_DAY)+$.intDiv(i,fn.MINUTES_PER_DAY)+$.intDiv(n,fn.HOURS_PER_DAY);o*=s;var u=$.intMod(r,fn.NANOS_PER_DAY)+$.intMod(e,fn.SECONDS_PER_DAY)*fn.NANOS_PER_SECOND+$.intMod(i,fn.MINUTES_PER_DAY)*fn.NANOS_PER_MINUTE+$.intMod(n,fn.HOURS_PER_DAY)*fn.NANOS_PER_HOUR,a=this._time.toNanoOfDay();u=u*s+a,o+=$.floorDiv(u,fn.NANOS_PER_DAY);var h=$.floorMod(u,fn.NANOS_PER_DAY),_=h===a?this._time:fn.ofNanoOfDay(h);return this._withDateTime(t.plusDays(o),_)},i.query=function(n){return v(n,"query"),n===q.localDate()?this.toLocalDate():t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof z){if(i.isTimeBased()){var r=this._date.daysUntil(e._date),s=e._time.toNanoOfDay()-this._time.toNanoOfDay();r>0&&s<0?(r--,s+=fn.NANOS_PER_DAY):r<0&&s>0&&(r++,s-=fn.NANOS_PER_DAY);var u=r;switch(i){case z.NANOS:return u=$.safeMultiply(u,fn.NANOS_PER_DAY),$.safeAdd(u,s);case z.MICROS:return u=$.safeMultiply(u,fn.MICROS_PER_DAY),$.safeAdd(u,$.intDiv(s,1e3));case z.MILLIS:return u=$.safeMultiply(u,fn.MILLIS_PER_DAY),$.safeAdd(u,$.intDiv(s,1e6));case z.SECONDS:return u=$.safeMultiply(u,fn.SECONDS_PER_DAY),$.safeAdd(u,$.intDiv(s,fn.NANOS_PER_SECOND));case z.MINUTES:return u=$.safeMultiply(u,fn.MINUTES_PER_DAY),$.safeAdd(u,$.intDiv(s,fn.NANOS_PER_MINUTE));case z.HOURS:return u=$.safeMultiply(u,fn.HOURS_PER_DAY),$.safeAdd(u,$.intDiv(s,fn.NANOS_PER_HOUR));case z.HALF_DAYS:return u=$.safeMultiply(u,2),$.safeAdd(u,$.intDiv(s,12*fn.NANOS_PER_HOUR))}throw new o("Unsupported unit: "+i)}var a=e._date,h=e._time;return a.isAfter(this._date)&&h.isBefore(this._time)?a=a.minusDays(1):a.isBefore(this._date)&&h.isAfter(this._time)&&(a=a.plusDays(1)),this._date.until(a,i)}return i.between(this,e)},i.atOffset=function(t){return on.of(this,t)},i.atZone=function(t){return sn.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return v(t,"other"),w(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._date.compareTo(t.toLocalDate());return 0===n&&(n=this._time.compareTo(t.toLocalTime())),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&this._date.equals(t._date)&&this._time.equals(t._time)},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(_n),fn=function(t){function n(i,e,r,s){var o;void 0===i&&(i=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===s&&(s=0),o=t.call(this)||this;var u=$.safeToInt(i),a=$.safeToInt(e),h=$.safeToInt(r),_=$.safeToInt(s);return n._validate(u,a,h,_),0===a&&0===h&&0===_?(n.HOURS[u]||(o._hour=u,o._minute=a,o._second=h,o._nano=_,n.HOURS[u]=f(o)),n.HOURS[u]||f(o)):(o._hour=u,o._minute=a,o._second=h,o._nano=_,o)}l(n,t),n.now=function(t){return null==t?n._now(wn.systemDefaultZone()):t instanceof wn?n._now(t):n._now(wn.system(t))},n._now=function(t){return void 0===t&&(t=wn.systemDefaultZone()),v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault());var e=i.rules().offset(t),r=$.intMod(t.epochSecond(),n.SECONDS_PER_DAY);return(r=$.intMod(r+e.totalSeconds(),n.SECONDS_PER_DAY))<0&&(r+=n.SECONDS_PER_DAY),n.ofSecondOfDay(r,t.nano())},n.of=function(t,i,e,r){return new n(t,i,e,r)},n.ofSecondOfDay=function(t,i){void 0===t&&(t=0),void 0===i&&(i=0),S.SECOND_OF_DAY.checkValidValue(t),S.NANO_OF_SECOND.checkValidValue(i);var e=$.intDiv(t,n.SECONDS_PER_HOUR);t-=e*n.SECONDS_PER_HOUR;var r=$.intDiv(t,n.SECONDS_PER_MINUTE);return new n(e,r,t-=r*n.SECONDS_PER_MINUTE,i)},n.ofNanoOfDay=function(t){void 0===t&&(t=0),S.NANO_OF_DAY.checkValidValue(t);var i=$.intDiv(t,n.NANOS_PER_HOUR);t-=i*n.NANOS_PER_HOUR;var e=$.intDiv(t,n.NANOS_PER_MINUTE);t-=e*n.NANOS_PER_MINUTE;var r=$.intDiv(t,n.NANOS_PER_SECOND);return new n(i,e,r,t-=r*n.NANOS_PER_SECOND)},n.from=function(t){v(t,"temporal");var n=t.query(q.localTime());if(null==n)throw new r("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_TIME),v(i,"formatter"),i.parse(t,n.FROM)},n._validate=function(t,n,i,e){S.HOUR_OF_DAY.checkValidValue(t),S.MINUTE_OF_HOUR.checkValidValue(n),S.SECOND_OF_MINUTE.checkValidValue(i),S.NANO_OF_SECOND.checkValidValue(e)};var i=n.prototype;return i.isSupported=function(t){return t instanceof S||t instanceof z?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(n){return v(n),t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return v(t,"field"),t instanceof S?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case S.NANO_OF_SECOND:return this._nano;case S.NANO_OF_DAY:return this.toNanoOfDay();case S.MICRO_OF_SECOND:return $.intDiv(this._nano,1e3);case S.MICRO_OF_DAY:return $.intDiv(this.toNanoOfDay(),1e3);case S.MILLI_OF_SECOND:return $.intDiv(this._nano,1e6);case S.MILLI_OF_DAY:return $.intDiv(this.toNanoOfDay(),1e6);case S.SECOND_OF_MINUTE:return this._second;case S.SECOND_OF_DAY:return this.toSecondOfDay();case S.MINUTE_OF_HOUR:return this._minute;case S.MINUTE_OF_DAY:return 60*this._hour+this._minute;case S.HOUR_OF_AMPM:return $.intMod(this._hour,12);case S.CLOCK_HOUR_OF_AMPM:var n=$.intMod(this._hour,12);return n%12==0?12:n;case S.HOUR_OF_DAY:return this._hour;case S.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case S.AMPM_OF_DAY:return $.intDiv(this._hour,12)}throw new o("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(c("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(v(t,"field"),w(t,E,"field"),t instanceof S){switch(t.checkValidValue(i),t){case S.NANO_OF_SECOND:return this.withNano(i);case S.NANO_OF_DAY:return n.ofNanoOfDay(i);case S.MICRO_OF_SECOND:return this.withNano(1e3*i);case S.MICRO_OF_DAY:return n.ofNanoOfDay(1e3*i);case S.MILLI_OF_SECOND:return this.withNano(1e6*i);case S.MILLI_OF_DAY:return n.ofNanoOfDay(1e6*i);case S.SECOND_OF_MINUTE:return this.withSecond(i);case S.SECOND_OF_DAY:return this.plusSeconds(i-this.toSecondOfDay());case S.MINUTE_OF_HOUR:return this.withMinute(i);case S.MINUTE_OF_DAY:return this.plusMinutes(i-(60*this._hour+this._minute));case S.HOUR_OF_AMPM:return this.plusHours(i-$.intMod(this._hour,12));case S.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===i?0:i)-$.intMod(this._hour,12));case S.HOUR_OF_DAY:return this.withHour(i);case S.CLOCK_HOUR_OF_DAY:return this.withHour(24===i?0:i);case S.AMPM_OF_DAY:return this.plusHours(12*(i-$.intDiv(this._hour,12)))}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new n(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new n(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new n(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new n(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(v(t,"unit"),t===z.NANOS)return this;var i=t.duration();if(i.seconds()>n.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var e=i.toNanos();if(0!==$.intMod(n.NANOS_PER_DAY,e))throw new r("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return n.ofNanoOfDay($.intDiv(s,e)*e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,i){if(v(i,"unit"),i instanceof z){switch(i){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this.plusNanos(1e3*$.intMod(t,n.MICROS_PER_DAY));case z.MILLIS:return this.plusNanos(1e6*$.intMod(t,n.MILLIS_PER_DAY));case z.SECONDS:return this.plusSeconds(t);case z.MINUTES:return this.plusMinutes(t);case z.HOURS:return this.plusHours(t);case z.HALF_DAYS:return this.plusHours(12*$.intMod(t,2))}throw new o("Unsupported unit: "+i)}return i.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new n($.intMod($.intMod(t,n.HOURS_PER_DAY)+this._hour+n.HOURS_PER_DAY,n.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var i=this._hour*n.MINUTES_PER_HOUR+this._minute,e=$.intMod($.intMod(t,n.MINUTES_PER_DAY)+i+n.MINUTES_PER_DAY,n.MINUTES_PER_DAY);return i===e?this:new n($.intDiv(e,n.MINUTES_PER_HOUR),$.intMod(e,n.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var i=this._hour*n.SECONDS_PER_HOUR+this._minute*n.SECONDS_PER_MINUTE+this._second,e=$.intMod($.intMod(t,n.SECONDS_PER_DAY)+i+n.SECONDS_PER_DAY,n.SECONDS_PER_DAY);return i===e?this:new n($.intDiv(e,n.SECONDS_PER_HOUR),$.intMod($.intDiv(e,n.SECONDS_PER_MINUTE),n.MINUTES_PER_HOUR),$.intMod(e,n.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var i=this.toNanoOfDay(),e=$.intMod($.intMod(t,n.NANOS_PER_DAY)+i+n.NANOS_PER_DAY,n.NANOS_PER_DAY);return i===e?this:new n($.intDiv(e,n.NANOS_PER_HOUR),$.intMod($.intDiv(e,n.NANOS_PER_MINUTE),n.MINUTES_PER_HOUR),$.intMod($.intDiv(e,n.NANOS_PER_SECOND),n.SECONDS_PER_MINUTE),$.intMod(e,n.NANOS_PER_SECOND))},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusHours=function(t){return this.plusHours(-1*$.intMod(t,n.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*$.intMod(t,n.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*$.intMod(t,n.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*$.intMod(t,n.NANOS_PER_DAY))},i.query=function(t){return v(t,"query"),t===q.precision()?z.NANOS:t===q.localTime()?this:t===q.chronology()||t===q.zoneId()||t===q.zone()||t===q.offset()||t===q.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(n.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof z){var r=e.toNanoOfDay()-this.toNanoOfDay();switch(i){case z.NANOS:return r;case z.MICROS:return $.intDiv(r,1e3);case z.MILLIS:return $.intDiv(r,1e6);case z.SECONDS:return $.intDiv(r,n.NANOS_PER_SECOND);case z.MINUTES:return $.intDiv(r,n.NANOS_PER_MINUTE);case z.HOURS:return $.intDiv(r,n.NANOS_PER_HOUR);case z.HALF_DAYS:return $.intDiv(r,12*n.NANOS_PER_HOUR)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDate=function(t){return ln.of(t,this)},i.toSecondOfDay=function(){var t=this._hour*n.SECONDS_PER_HOUR;return(t+=this._minute*n.SECONDS_PER_MINUTE)+this._second},i.toNanoOfDay=function(){var t=this._hour*n.NANOS_PER_HOUR;return t+=this._minute*n.NANOS_PER_MINUTE,(t+=this._second*n.NANOS_PER_SECOND)+this._nano},i.compareTo=function(t){v(t,"other"),w(t,n,"other");var i=$.compareNumbers(this._hour,t._hour);return 0===i&&0===(i=$.compareNumbers(this._minute,t._minute))&&0===(i=$.compareNumbers(this._second,t._second))&&(i=$.compareNumbers(this._nano,t._nano)),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano},i.hashCode=function(){var t=this.toNanoOfDay();return $.hash(t)},i.toString=function(){var t="",n=this._hour,i=this._minute,e=this._second,r=this._nano;return t+=n<10?"0":"",t+=n,t+=i<10?":0":":",t+=i,(e>0||r>0)&&(t+=e<10?":0":":",t+=e,r>0&&(t+=".",0===$.intMod(r,1e6)?t+=(""+($.intDiv(r,1e6)+1e3)).substring(1):0===$.intMod(r,1e3)?t+=(""+($.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V);fn.HOURS_PER_DAY=24,fn.MINUTES_PER_HOUR=60,fn.MINUTES_PER_DAY=fn.MINUTES_PER_HOUR*fn.HOURS_PER_DAY,fn.SECONDS_PER_MINUTE=60,fn.SECONDS_PER_HOUR=fn.SECONDS_PER_MINUTE*fn.MINUTES_PER_HOUR,fn.SECONDS_PER_DAY=fn.SECONDS_PER_HOUR*fn.HOURS_PER_DAY,fn.MILLIS_PER_DAY=1e3*fn.SECONDS_PER_DAY,fn.MICROS_PER_DAY=1e6*fn.SECONDS_PER_DAY,fn.NANOS_PER_SECOND=1e9,fn.NANOS_PER_MINUTE=fn.NANOS_PER_SECOND*fn.SECONDS_PER_MINUTE,fn.NANOS_PER_HOUR=fn.NANOS_PER_MINUTE*fn.MINUTES_PER_HOUR,fn.NANOS_PER_DAY=fn.NANOS_PER_HOUR*fn.HOURS_PER_DAY;var cn=1e6,vn=function(t){function n(i,e){var r;return r=t.call(this)||this,n._validate(i,e),r._seconds=$.safeToInt(i),r._nanos=$.safeToInt(e),r}l(n,t),n.now=function(t){return void 0===t&&(t=wn.systemUTC()),t.instant()},n.ofEpochSecond=function(t,i){void 0===i&&(i=0);var e=t+$.floorDiv(i,fn.NANOS_PER_SECOND),r=$.floorMod(i,fn.NANOS_PER_SECOND);return n._create(e,r)},n.ofEpochMilli=function(t){var i=$.floorDiv(t,1e3),e=$.floorMod(t,1e3);return n._create(i,1e6*e)},n.from=function(t){try{var i=t.getLong(S.INSTANT_SECONDS),e=t.get(S.NANO_OF_SECOND);return n.ofEpochSecond(i,e)}catch(n){throw new r("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,n)}},n.parse=function(t){return Wt.ISO_INSTANT.parse(t,n.FROM)},n._create=function(t,i){return 0===t&&0===i?n.EPOCH:new n(t,i)},n._validate=function(t,i){if(tn.MAX_SECONDS)throw new r("Instant exceeds minimum or maximum instant");if(i<0||i>fn.NANOS_PER_SECOND)throw new r("Instant exceeds minimum or maximum instant")};var i=n.prototype;return i.isSupported=function(t){return t instanceof S?t===S.INSTANT_SECONDS||t===S.NANO_OF_SECOND||t===S.MICRO_OF_SECOND||t===S.MILLI_OF_SECOND:t instanceof z?t.isTimeBased()||t===z.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof S){switch(t){case S.NANO_OF_SECOND:return this._nanos;case S.MICRO_OF_SECOND:return $.intDiv(this._nanos,1e3);case S.MILLI_OF_SECOND:return $.intDiv(this._nanos,cn);case S.INSTANT_SECONDS:return this._seconds}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),t instanceof S){switch(t.checkValidValue(i),t){case S.MILLI_OF_SECOND:var e=i*cn;return e!==this._nanos?n._create(this._seconds,e):this;case S.MICRO_OF_SECOND:var r=1e3*i;return r!==this._nanos?n._create(this._seconds,r):this;case S.NANO_OF_SECOND:return i!==this._nanos?n._create(this._seconds,i):this;case S.INSTANT_SECONDS:return i!==this._seconds?n._create(i,this._nanos):this}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.truncatedTo=function(t){if(v(t,"unit"),t===z.NANOS)return this;var n=t.duration();if(n.seconds()>fn.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var i=n.toNanos();if(0!==$.intMod(fn.NANOS_PER_DAY,i))throw new r("Unit must divide into a standard day without remainder");var e=$.intMod(this._seconds,fn.SECONDS_PER_DAY)*fn.NANOS_PER_SECOND+this._nanos,s=$.intDiv(e,i)*i;return this.plusNanos(s-e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),w(n,k),n instanceof z){switch(n){case z.NANOS:return this.plusNanos(t);case z.MICROS:return this._plus($.intDiv(t,1e6),1e3*$.intMod(t,1e6));case z.MILLIS:return this.plusMillis(t);case z.SECONDS:return this.plusSeconds(t);case z.MINUTES:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_MINUTE));case z.HOURS:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_HOUR));case z.HALF_DAYS:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_DAY/2));case z.DAYS:return this.plusSeconds($.safeMultiply(t,fn.SECONDS_PER_DAY))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus($.intDiv(t,1e3),$.intMod(t,1e3)*cn)},i.plusNanos=function(t){return this._plus(0,t)},i._plus=function(t,i){if(0===t&&0===i)return this;var e=this._seconds+t;e+=$.intDiv(i,fn.NANOS_PER_SECOND);var r=this._nanos+i%fn.NANOS_PER_SECOND;return n.ofEpochSecond(e,r)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return this.plusAmountUnit(-1*t,n)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.query=function(t){return v(t,"query"),t===q.precision()?z.NANOS:t===q.localDate()||t===q.localTime()||t===q.chronology()||t===q.zoneId()||t===q.zone()||t===q.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return v(t,"temporal"),t.with(S.INSTANT_SECONDS,this._seconds).with(S.NANO_OF_SECOND,this._nanos)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof z){switch(i){case z.NANOS:return this._nanosUntil(e);case z.MICROS:return $.intDiv(this._nanosUntil(e),1e3);case z.MILLIS:return $.safeSubtract(e.toEpochMilli(),this.toEpochMilli());case z.SECONDS:return this._secondsUntil(e);case z.MINUTES:return $.intDiv(this._secondsUntil(e),fn.SECONDS_PER_MINUTE);case z.HOURS:return $.intDiv(this._secondsUntil(e),fn.SECONDS_PER_HOUR);case z.HALF_DAYS:return $.intDiv(this._secondsUntil(e),12*fn.SECONDS_PER_HOUR);case z.DAYS:return $.intDiv(this._secondsUntil(e),fn.SECONDS_PER_DAY)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i._nanosUntil=function(t){var n=$.safeSubtract(t.epochSecond(),this.epochSecond()),i=$.safeMultiply(n,fn.NANOS_PER_SECOND);return $.safeAdd(i,t.nano()-this.nano())},i._secondsUntil=function(t){var n=$.safeSubtract(t.epochSecond(),this.epochSecond()),i=t.nano()-this.nano();return n>0&&i<0?n--:n<0&&i>0&&n++,n},i.atOffset=function(t){return on.ofInstant(this,t)},i.atZone=function(t){return sn.ofInstant(this,t)},i.toEpochMilli=function(){return $.safeMultiply(this._seconds,1e3)+$.intDiv(this._nanos,cn)},i.compareTo=function(t){v(t,"otherInstant"),w(t,n,"otherInstant");var i=$.compareNumbers(this._seconds,t._seconds);return 0!==i?i:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this.epochSecond()===t.epochSecond()&&this.nano()===t.nano()},i.hashCode=function(){return $.hashCode(this._seconds,this._nanos)},i.toString=function(){return Wt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},n}(V),wn=function(){function t(){}t.systemUTC=function(){return new dn(Q.UTC)},t.systemDefaultZone=function(){return new dn(G.systemDefault())},t.system=function(t){return new dn(t)},t.fixed=function(t,n){return new pn(t,n)},t.offset=function(t,n){return new mn(t,n)};var n=t.prototype;return n.millis=function(){d("Clock.millis")},n.instant=function(){d("Clock.instant")},n.zone=function(){d("Clock.zone")},n.withZone=function(){d("Clock.withZone")},t}(),dn=function(t){function n(n){var i;return v(n,"zone"),(i=t.call(this)||this)._zone=n,i}l(n,t);var i=n.prototype;return i.zone=function(){return this._zone},i.millis=function(){return(new Date).getTime()},i.instant=function(){return vn.ofEpochMilli(this.millis())},i.equals=function(t){return t instanceof n&&this._zone.equals(t._zone)},i.withZone=function(t){return t.equals(this._zone)?this:new n(t)},i.toString=function(){return"SystemClock["+this._zone.toString()+"]"},n}(wn),pn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._instant=n,e._zoneId=i,e}l(n,t);var i=n.prototype;return i.instant=function(){return this._instant},i.millis=function(){return this._instant.toEpochMilli()},i.zone=function(){return this._zoneId},i.toString=function(){return"FixedClock[]"},i.equals=function(t){return t instanceof n&&this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId)},i.withZone=function(t){return t.equals(this._zoneId)?this:new n(this._instant,t)},n}(wn),mn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._baseClock=n,e._offset=i,e}l(n,t);var i=n.prototype;return i.zone=function(){return this._baseClock.zone()},i.withZone=function(t){return t.equals(this._baseClock.zone())?this:new n(this._baseClock.withZone(t),this._offset)},i.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},i.instant=function(){return this._baseClock.instant().plus(this._offset)},i.equals=function(t){return t instanceof n&&this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset)},i.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},n}(wn),gn=function(){function t(t,n,i){if(v(t,"transition"),v(n,"offsetBefore"),v(i,"offsetAfter"),n.equals(i))throw new a("Offsets must not be equal");if(0!==t.nano())throw new a("Nano-of-second must be zero");this._transition=t instanceof ln?t:ln.ofEpochSecond(t,0,n),this._offsetBefore=n,this._offsetAfter=i}t.of=function(n,i,e){return new t(n,i,e)};var n=t.prototype;return n.instant=function(){return this._transition.toInstant(this._offsetBefore)},n.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},n.dateTimeBefore=function(){return this._transition},n.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},n.offsetBefore=function(){return this._offsetBefore},n.offsetAfter=function(){return this._offsetAfter},n.duration=function(){return j.ofSeconds(this.durationSeconds())},n.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},n.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},n.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},n.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}(),$n=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var n=new Date(t.toEpochMilli()).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfEpochMilli=function(t){var n=new Date(t).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfLocalDateTime=function(t){var n=1e3*t.toEpochSecond(Q.UTC),i=new Date(n).getTimezoneOffset(),e=new Date(n+6e4*i).getTimezoneOffset();return Q.ofTotalMinutes(-1*e)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,n){return this.offsetOfLocalDateTime(t).equals(n)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new r("not supported operation")},i.equals=function(t){return this===t||t instanceof n},i.toString=function(){return"SYSTEM"},n}(K),yn=function(t){function n(){var n;return(n=t.call(this)||this)._rules=new $n,n}l(n,t);var i=n.prototype;return i.rules=function(){return this._rules},i.equals=function(t){return this===t},i.id=function(){return"SYSTEM"},n}(G),bn=function(){function t(){}return t.systemDefault=function(){return kn},t.getAvailableZoneIds=function(){return Dt.getAvailableZoneIds()},t.of=function(t){if(v(t,"zoneId"),"Z"===t)return Q.UTC;if(1===t.length)throw new r("Invalid zone: "+t);if(W.startsWith(t,"+")||W.startsWith(t,"-"))return Q.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new Mt(t,Q.UTC.rules());if(W.startsWith(t,"UTC+")||W.startsWith(t,"GMT+")||W.startsWith(t,"UTC-")||W.startsWith(t,"GMT-")){var n=Q.of(t.substring(3));return 0===n.totalSeconds()?new Mt(t.substring(0,3),n.rules()):new Mt(t.substring(0,3)+n.id(),n.rules())}if(W.startsWith(t,"UT+")||W.startsWith(t,"UT-")){var i=Q.of(t.substring(2));return 0===i.totalSeconds()?new Mt("UT",i.rules()):new Mt("UT"+i.id(),i.rules())}return"SYSTEM"===t?G.systemDefault():Mt.ofId(t)},t.ofOffset=function(t,n){if(v(t,"prefix"),v(n,"offset"),0===t.length)return n;if("GMT"===t||"UTC"===t||"UT"===t)return 0===n.totalSeconds()?new Mt(t,n.rules()):new Mt(t+n.id(),n.rules());throw new a("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){v(t,"temporal");var n=t.query(q.zone());if(null==n)throw new r("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},t}(),kn=null,jn=!1;jn||(jn=!0,x.MIN_VALUE=-999999,x.MAX_VALUE=999999,j.ZERO=new j(0,0),z.NANOS=new z("Nanos",j.ofNanos(1)),z.MICROS=new z("Micros",j.ofNanos(1e3)),z.MILLIS=new z("Millis",j.ofNanos(1e6)),z.SECONDS=new z("Seconds",j.ofSeconds(1)),z.MINUTES=new z("Minutes",j.ofSeconds(60)),z.HOURS=new z("Hours",j.ofSeconds(3600)),z.HALF_DAYS=new z("HalfDays",j.ofSeconds(43200)),z.DAYS=new z("Days",j.ofSeconds(86400)),z.WEEKS=new z("Weeks",j.ofSeconds(604800)),z.MONTHS=new z("Months",j.ofSeconds(2629746)),z.YEARS=new z("Years",j.ofSeconds(31556952)),z.DECADES=new z("Decades",j.ofSeconds(315569520)),z.CENTURIES=new z("Centuries",j.ofSeconds(3155695200)),z.MILLENNIA=new z("Millennia",j.ofSeconds(31556952e3)),z.ERAS=new z("Eras",j.ofSeconds(31556952*(x.MAX_VALUE+1))),z.FOREVER=new z("Forever",j.ofSeconds($.MAX_SAFE_INTEGER,999999999)),S.NANO_OF_SECOND=new S("NanoOfSecond",z.NANOS,z.SECONDS,C.of(0,999999999)),S.NANO_OF_DAY=new S("NanoOfDay",z.NANOS,z.DAYS,C.of(0,86399999999999)),S.MICRO_OF_SECOND=new S("MicroOfSecond",z.MICROS,z.SECONDS,C.of(0,999999)),S.MICRO_OF_DAY=new S("MicroOfDay",z.MICROS,z.DAYS,C.of(0,86399999999)),S.MILLI_OF_SECOND=new S("MilliOfSecond",z.MILLIS,z.SECONDS,C.of(0,999)),S.MILLI_OF_DAY=new S("MilliOfDay",z.MILLIS,z.DAYS,C.of(0,86399999)),S.SECOND_OF_MINUTE=new S("SecondOfMinute",z.SECONDS,z.MINUTES,C.of(0,59)),S.SECOND_OF_DAY=new S("SecondOfDay",z.SECONDS,z.DAYS,C.of(0,86399)),S.MINUTE_OF_HOUR=new S("MinuteOfHour",z.MINUTES,z.HOURS,C.of(0,59)),S.MINUTE_OF_DAY=new S("MinuteOfDay",z.MINUTES,z.DAYS,C.of(0,1439)),S.HOUR_OF_AMPM=new S("HourOfAmPm",z.HOURS,z.HALF_DAYS,C.of(0,11)),S.CLOCK_HOUR_OF_AMPM=new S("ClockHourOfAmPm",z.HOURS,z.HALF_DAYS,C.of(1,12)),S.HOUR_OF_DAY=new S("HourOfDay",z.HOURS,z.DAYS,C.of(0,23)),S.CLOCK_HOUR_OF_DAY=new S("ClockHourOfDay",z.HOURS,z.DAYS,C.of(1,24)),S.AMPM_OF_DAY=new S("AmPmOfDay",z.HALF_DAYS,z.DAYS,C.of(0,1)),S.DAY_OF_WEEK=new S("DayOfWeek",z.DAYS,z.WEEKS,C.of(1,7)),S.ALIGNED_DAY_OF_WEEK_IN_MONTH=new S("AlignedDayOfWeekInMonth",z.DAYS,z.WEEKS,C.of(1,7)),S.ALIGNED_DAY_OF_WEEK_IN_YEAR=new S("AlignedDayOfWeekInYear",z.DAYS,z.WEEKS,C.of(1,7)),S.DAY_OF_MONTH=new S("DayOfMonth",z.DAYS,z.MONTHS,C.of(1,28,31),"day"),S.DAY_OF_YEAR=new S("DayOfYear",z.DAYS,z.YEARS,C.of(1,365,366)),S.EPOCH_DAY=new S("EpochDay",z.DAYS,z.FOREVER,C.of(Math.floor(365.25*x.MIN_VALUE),Math.floor(365.25*x.MAX_VALUE))),S.ALIGNED_WEEK_OF_MONTH=new S("AlignedWeekOfMonth",z.WEEKS,z.MONTHS,C.of(1,4,5)),S.ALIGNED_WEEK_OF_YEAR=new S("AlignedWeekOfYear",z.WEEKS,z.YEARS,C.of(1,53)),S.MONTH_OF_YEAR=new S("MonthOfYear",z.MONTHS,z.YEARS,C.of(1,12),"month"),S.PROLEPTIC_MONTH=new S("ProlepticMonth",z.MONTHS,z.FOREVER,C.of(12*x.MIN_VALUE,12*x.MAX_VALUE+11)),S.YEAR_OF_ERA=new S("YearOfEra",z.YEARS,z.FOREVER,C.of(1,x.MAX_VALUE,x.MAX_VALUE+1)),S.YEAR=new S("Year",z.YEARS,z.FOREVER,C.of(x.MIN_VALUE,x.MAX_VALUE),"year"),S.ERA=new S("Era",z.ERAS,z.FOREVER,C.of(0,1)),S.INSTANT_SECONDS=new S("InstantSeconds",z.SECONDS,z.FOREVER,C.of(g,m)),S.OFFSET_SECONDS=new S("OffsetSeconds",z.SECONDS,z.FOREVER,C.of(-64800,64800)),function(){fn.HOURS=[];for(var t=0;t<24;t++)fn.of(t,0,0,0);fn.MIN=fn.HOURS[0],fn.MAX=new fn(23,59,59,999999999),fn.MIDNIGHT=fn.HOURS[0],fn.NOON=fn.HOURS[12],fn.FROM=A("LocalTime.FROM",(function(t){return fn.from(t)}))}(),ft=new ut,ct=new at,vt=new ht,wt=new _t,dt=new lt("WeekBasedYears",j.ofSeconds(31556952)),pt=new lt("QuarterYears",j.ofSeconds(7889238)),rt.DAY_OF_QUARTER=ft,rt.QUARTER_OF_YEAR=ct,rt.WEEK_OF_WEEK_BASED_YEAR=vt,rt.WEEK_BASED_YEAR=wt,rt.WEEK_BASED_YEARS=dt,rt.QUARTER_YEARS=pt,hn.prototype.isoWeekOfWeekyear=function(){return this.get(rt.WEEK_OF_WEEK_BASED_YEAR)},hn.prototype.isoWeekyear=function(){return this.get(rt.WEEK_BASED_YEAR)},q.ZONE_ID=A("ZONE_ID",(function(t){return t.query(q.ZONE_ID)})),q.CHRONO=A("CHRONO",(function(t){return t.query(q.CHRONO)})),q.PRECISION=A("PRECISION",(function(t){return t.query(q.PRECISION)})),q.OFFSET=A("OFFSET",(function(t){return t.isSupported(S.OFFSET_SECONDS)?Q.ofTotalSeconds(t.get(S.OFFSET_SECONDS)):null})),q.ZONE=A("ZONE",(function(t){var n=t.query(q.ZONE_ID);return null!=n?n:t.query(q.OFFSET)})),q.LOCAL_DATE=A("LOCAL_DATE",(function(t){return t.isSupported(S.EPOCH_DAY)?hn.ofEpochDay(t.getLong(S.EPOCH_DAY)):null})),q.LOCAL_TIME=A("LOCAL_TIME",(function(t){return t.isSupported(S.NANO_OF_DAY)?fn.ofNanoOfDay(t.getLong(S.NANO_OF_DAY)):null})),M.MONDAY=new M(0,"MONDAY"),M.TUESDAY=new M(1,"TUESDAY"),M.WEDNESDAY=new M(2,"WEDNESDAY"),M.THURSDAY=new M(3,"THURSDAY"),M.FRIDAY=new M(4,"FRIDAY"),M.SATURDAY=new M(5,"SATURDAY"),M.SUNDAY=new M(6,"SUNDAY"),M.FROM=A("DayOfWeek.FROM",(function(t){return M.from(t)})),T=[M.MONDAY,M.TUESDAY,M.WEDNESDAY,M.THURSDAY,M.FRIDAY,M.SATURDAY,M.SUNDAY],vn.MIN_SECONDS=-31619119219200,vn.MAX_SECONDS=31494816403199,vn.EPOCH=new vn(0,0),vn.MIN=vn.ofEpochSecond(vn.MIN_SECONDS,0),vn.MAX=vn.ofEpochSecond(vn.MAX_SECONDS,999999999),vn.FROM=A("Instant.FROM",(function(t){return vn.from(t)})),hn.MIN=hn.of(x.MIN_VALUE,1,1),hn.MAX=hn.of(x.MAX_VALUE,12,31),hn.EPOCH_0=hn.ofEpochDay(0),hn.FROM=A("LocalDate.FROM",(function(t){return hn.from(t)})),ln.MIN=ln.of(hn.MIN,fn.MIN),ln.MAX=ln.of(hn.MAX,fn.MAX),ln.FROM=A("LocalDateTime.FROM",(function(t){return ln.from(t)})),Jt.MIN_VALUE=x.MIN_VALUE,Jt.MAX_VALUE=x.MAX_VALUE,At=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).toFormatter(),Jt.FROM=A("Year.FROM",(function(t){return Jt.from(t)})),N.JANUARY=new N(1,"JANUARY"),N.FEBRUARY=new N(2,"FEBRUARY"),N.MARCH=new N(3,"MARCH"),N.APRIL=new N(4,"APRIL"),N.MAY=new N(5,"MAY"),N.JUNE=new N(6,"JUNE"),N.JULY=new N(7,"JULY"),N.AUGUST=new N(8,"AUGUST"),N.SEPTEMBER=new N(9,"SEPTEMBER"),N.OCTOBER=new N(10,"OCTOBER"),N.NOVEMBER=new N(11,"NOVEMBER"),N.DECEMBER=new N(12,"DECEMBER"),D=[N.JANUARY,N.FEBRUARY,N.MARCH,N.APRIL,N.MAY,N.JUNE,N.JULY,N.AUGUST,N.SEPTEMBER,N.OCTOBER,N.NOVEMBER,N.DECEMBER],It=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(S.MONTH_OF_YEAR,2).toFormatter(),Kt.FROM=A("YearMonth.FROM",(function(t){return Kt.from(t)})),Ot=(new Ut).appendLiteral("--").appendValue(S.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(S.DAY_OF_MONTH,2).toFormatter(),Gt.FROM=A("MonthDay.FROM",(function(t){return Gt.from(t)})),P.ofDays(0),Q.MAX_SECONDS=18*fn.SECONDS_PER_HOUR,Q.UTC=Q.ofTotalSeconds(0),Q.MIN=Q.ofTotalSeconds(-Q.MAX_SECONDS),Q.MAX=Q.ofTotalSeconds(Q.MAX_SECONDS),sn.FROM=A("ZonedDateTime.FROM",(function(t){return sn.from(t)})),kn=new yn,G.systemDefault=bn.systemDefault,G.getAvailableZoneIds=bn.getAvailableZoneIds,G.of=bn.of,G.ofOffset=bn.ofOffset,G.from=bn.from,Q.from=bn.from,G.SYSTEM=kn,G.UTC=Q.ofTotalSeconds(0),nn.INSTANCE=new nn("IsoChronology"),Wt.ISO_LOCAL_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(S.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(S.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_LOCAL_TIME=(new Ut).appendValue(S.HOUR_OF_DAY,2).appendLiteral(":").appendValue(S.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(S.SECOND_OF_MINUTE,2).optionalStart().appendFraction(S.NANO_OF_SECOND,0,9,!0).toFormatter(U.STRICT),Wt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendLiteral("T").append(Wt.ISO_LOCAL_TIME).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(U.STRICT),Wt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ZONED_DATE_TIME=(new Ut).append(Wt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.BASIC_ISO_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendValue(S.MONTH_OF_YEAR,2).appendValue(S.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ORDINAL_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(S.DAY_OF_YEAR).toFormatter(U.STRICT),Wt.ISO_WEEK_DATE=(new Ut).appendValue(S.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-W").appendValue(S.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(S.DAY_OF_WEEK).toFormatter(U.STRICT),Wt.PARSED_EXCESS_DAYS=A("PARSED_EXCESS_DAYS",(function(t){return t instanceof tt?t.excessDays:P.ZERO})),Wt.PARSED_LEAP_SECOND=A("PARSED_LEAP_SECOND",(function(t){return t instanceof tt&&t.leapSecond})),zt.BASE_DATE=hn.of(2e3,1,1),Ut.CompositePrinterParser=bt,Ut.PadPrinterParserDecorator=St,Ut.SettingsParser=qt,Ut.CharLiteralPrinterParser=Tt,Ut.StringLiteralPrinterParser=Tt,Ut.CharLiteralPrinterParser=yt,Ut.NumberPrinterParser=xt,Ut.ReducedPrinterParser=zt,Ut.FractionPrinterParser=kt,Ut.OffsetIdPrinterParser=Ct,Ut.ZoneIdPrinterParser=Nt,on.MIN=ln.MIN.atOffset(Q.MAX),on.MAX=ln.MAX.atOffset(Q.MIN),on.FROM=A("OffsetDateTime.FROM",(function(t){return on.from(t)})),en.MIN=en.ofNumbers(0,0,0,0,Q.MAX),en.MAX=en.ofNumbers(23,59,59,999999999,Q.MIN),en.FROM=A("OffsetTime.FROM",(function(t){return en.from(t)})));var xn=function(){function t(t,n){var i;if(t instanceof hn)n=null==n?G.systemDefault():n,i=t.atStartOfDay(n);else if(t instanceof ln)n=null==n?G.systemDefault():n,i=t.atZone(n);else{if(!(t instanceof sn))throw new a("unsupported instance for convert operation:"+t);i=null==n?t:t.withZoneSameInstant(n)}this.instant=i.toInstant()}var n=t.prototype;return n.toDate=function(){return new Date(this.instant.toEpochMilli())},n.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function zn(t,n){return new xn(t,n)}var En=function(t){function n(n,i){var e;return void 0===i&&(i=G.systemDefault()),(e=t.call(this)||this)._zone=i,n instanceof Date?(e._epochMilli=n.getTime(),f(e)):"function"==typeof n.toDate&&n.toDate()instanceof Date?(e._epochMilli=n.toDate().getTime(),f(e)):(c(!1,"date must be either a javascript date or a moment"),e)}l(n,t);var i=n.prototype;return i.query=function(n){return v(n,"query"),n===q.localDate()?hn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===q.localTime()?fn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===q.zone()?this._zone:t.prototype.query.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(v(t,"field"),t instanceof S){switch(t){case S.NANO_OF_SECOND:return 1e6*$.floorMod(this._epochMilli,1e3);case S.INSTANT_SECONDS:return $.floorDiv(this._epochMilli,1e3)}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isSupported=function(t){return t===S.INSTANT_SECONDS||t===S.NANO_OF_SECOND},n}(O);function Cn(t,n){return new En(t,n)}var Sn,qn,On={assert:p,DateTimeBuilder:tt,DateTimeParseContext:nt,DateTimePrintContext:et,MathUtil:$,StringUtil:W,StringBuilder:Yt},In={_:On,convert:zn,nativeJs:Cn,ArithmeticException:u,DateTimeException:r,DateTimeParseException:s,IllegalArgumentException:a,IllegalStateException:h,UnsupportedTemporalTypeException:o,NullPointerException:_,Clock:wn,DayOfWeek:M,Duration:j,Instant:vn,LocalDate:hn,LocalTime:fn,LocalDateTime:ln,OffsetTime:en,OffsetDateTime:on,Month:N,MonthDay:Gt,Period:P,Year:Jt,YearConstants:x,YearMonth:Kt,ZonedDateTime:sn,ZoneOffset:Q,ZoneId:G,ZoneRegion:Mt,ZoneOffsetTransition:gn,ZoneRules:K,ZoneRulesProvider:Dt,ChronoLocalDate:Y,ChronoLocalDateTime:_n,ChronoZonedDateTime:rn,IsoChronology:nn,ChronoField:S,ChronoUnit:z,IsoFields:rt,Temporal:V,TemporalAccessor:O,TemporalAdjuster:H,TemporalAdjusters:Xt,TemporalAmount:b,TemporalField:E,TemporalQueries:q,TemporalQuery:I,TemporalUnit:k,ValueRange:C,DateTimeFormatter:Wt,DateTimeFormatterBuilder:Ut,DecimalStyle:mt,ResolverStyle:U,SignStyle:gt,TextStyle:$t},An=(Sn=In,qn=[],function(t){return~qn.indexOf(t)||(t(Sn),qn.push(t)),Sn});In.use=An},868:function(t,n,i){var e,r,s;r=[n,i(744)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e=n.$_$.ta,r=n.$_$.sa,s=n.$_$.ng,o=n.$_$.ua,u=n.$_$.l9,a=n.$_$.kg;function h(){i=this,l.call(this)}function _(){return null==i&&new h,i}function l(){}function f(t){this.kotlinx$atomicfu$value=t}function c(t){this.kotlinx$atomicfu$value=t}function v(t){this.kotlinx$atomicfu$value=t}function w(t){this.kotlinx$atomicfu$value=t}return o(l,"TraceBase",u),o(h,"None",r,l),o(f,"AtomicRef",u),o(c,"AtomicBoolean",u),o(v,"AtomicInt",u),o(w,"AtomicLong",u),e(l).atomicfu$Trace$append$1=function(t){},e(l).atomicfu$Trace$append$2=function(t,n){},e(l).atomicfu$Trace$append$3=function(t,n,i){},e(l).atomicfu$Trace$append$4=function(t,n,i,e){},e(f).dk=function(t){this.kotlinx$atomicfu$value=t},e(f).ek=function(){return this.kotlinx$atomicfu$value},e(f).atomicfu$compareAndSet=function(t,n){return this.kotlinx$atomicfu$value===t&&(this.kotlinx$atomicfu$value=n,!0)},e(f).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(f).toString=function(){return a(this.kotlinx$atomicfu$value)},e(c).fk=function(t){this.kotlinx$atomicfu$value=t},e(c).ek=function(){return this.kotlinx$atomicfu$value},e(c).atomicfu$compareAndSet=function(t,n){return this.kotlinx$atomicfu$value===t&&(this.kotlinx$atomicfu$value=n,!0)},e(c).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(c).toString=function(){return this.kotlinx$atomicfu$value.toString()},e(v).gk=function(t){this.kotlinx$atomicfu$value=t},e(v).ek=function(){return this.kotlinx$atomicfu$value},e(v).atomicfu$compareAndSet=function(t,n){return this.kotlinx$atomicfu$value===t&&(this.kotlinx$atomicfu$value=n,!0)},e(v).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(v).atomicfu$getAndIncrement=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t+1|0,t},e(v).atomicfu$getAndDecrement=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t-1|0,t},e(v).atomicfu$getAndAdd=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value+t|0,n},e(v).atomicfu$addAndGet=function(t){return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value+t|0,this.kotlinx$atomicfu$value},e(v).atomicfu$incrementAndGet=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value+1|0,t.kotlinx$atomicfu$value},e(v).atomicfu$decrementAndGet=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value-1|0,t.kotlinx$atomicfu$value},e(v).toString=function(){return this.kotlinx$atomicfu$value.toString()},e(w).hk=function(t){this.kotlinx$atomicfu$value=t},e(w).ek=function(){return this.kotlinx$atomicfu$value},e(w).atomicfu$compareAndSet=function(t,n){return!!this.kotlinx$atomicfu$value.equals(t)&&(this.kotlinx$atomicfu$value=n,!0)},e(w).atomicfu$getAndSet=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t,n},e(w).atomicfu$getAndIncrement$long=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t.ui(),t},e(w).atomicfu$getAndDecrement$long=function(){var t=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=t.vi(),t},e(w).atomicfu$getAndAdd$long=function(t){var n=this.kotlinx$atomicfu$value;return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value.o7(t),n},e(w).atomicfu$addAndGet$long=function(t){return this.kotlinx$atomicfu$value=this.kotlinx$atomicfu$value.o7(t),this.kotlinx$atomicfu$value},e(w).atomicfu$incrementAndGet$long=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value.ui(),t.kotlinx$atomicfu$value},e(w).atomicfu$decrementAndGet$long=function(){var t=this;return t.kotlinx$atomicfu$value=t.kotlinx$atomicfu$value.vi(),t.kotlinx$atomicfu$value},e(w).toString=function(){return this.kotlinx$atomicfu$value.toString()},t.$_$=t.$_$||{},t.$_$.a=function(t){return function(t,n){return n=n===s?_():n,new c(t)}(t,_())},t.$_$.b=function(t){return function(t,n){return n=n===s?_():n,new w(t)}(t,_())},t.$_$.c=function(t){return function(t,n){return n=n===s?_():n,new f(t)}(t,_())},t.$_$.d=function(t){return function(t,n){return n=n===s?_():n,new v(t)}(t,_())},t})?e.apply(n,r):e)||(t.exports=s)},817:function(t,n,i){var e,r,s;r=[n,i(135),i(744),i(645)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W=n.Instant,G=n.Clock,K=n.OffsetDateTime,J=n.Duration,X=n.LocalDate,Z=n.LocalDateTime,Q=n.ZoneOffset,tt=n.ZoneId,nt=i.$_$.ta,it=i.$_$.sa,et=i.$_$.ng,rt=i.$_$.ua,st=i.$_$.u4,ot=i.$_$.ya,ut=i.$_$.r1,at=i.$_$.m5,ht=i.$_$.n1,_t=i.$_$.ra,lt=i.$_$.f9,ft=i.$_$.xe,ct=i.$_$.l9,vt=i.$_$.d2,wt=i.$_$.gf,dt=i.$_$.af,pt=e.$_$.h,mt=e.$_$.e1,gt=e.$_$.p2,$t=e.$_$.c,yt=i.$_$.ue,bt=i.$_$.oa,kt=i.$_$.m2,jt=i.$_$.vc,xt=i.$_$.j9,zt=i.$_$.i9,Et=i.$_$.qe,Ct=i.$_$.o9,St=i.$_$.wa,qt=i.$_$.pe,Ot=i.$_$.pa,It=i.$_$.m4,At=i.$_$.na,Tt=i.$_$.g,Dt=i.$_$.ne,Mt=i.$_$.f,Nt=i.$_$.l2,Rt=i.$_$.hf,Pt=i.$_$.re,Lt=i.$_$.o1,Ft=i.$_$.f1;function Ut(){r=this}function Ht(t){if(Vt(),!(1<=t&&t<=7))throw ut(ot("Failed requirement."));return(Vt(),s).h(t-1|0)}function Vt(){o||(o=!0,s=at([ln(),fn(),cn(),vn(),wn(),dn(),pn()]))}function Bt(t){var n=function(t,n){return ht(t,n),Yt.call(n),n}(t,_t(nt(Yt)));return lt(n,Bt),n}function Yt(){lt(this,Yt)}function Wt(t){var n=function(t,n){return ht(t,n),Gt.call(n),n}(t,_t(nt(Gt)));return lt(n,Wt),n}function Gt(){lt(this,Gt)}function Kt(t){var n=function(t,n){return vt(t,n),Jt.call(n),n}(t,_t(nt(Jt)));return lt(n,Kt),n}function Jt(){lt(this,Jt)}function Xt(t){if(Zt(),!(1<=t&&t<=12))throw ut(ot("Failed requirement."));return(Zt(),h).h(t-1|0)}function Zt(){_||(_=!0,h=at([On(),In(),An(),Tn(),Dn(),Mn(),Nn(),Rn(),Pn(),Ln(),Fn(),Un()]))}function Qt(){return l}function tn(){return f}function nn(){return c}function en(){v=this,this.e3i_1=mt("Instant",pt())}function rn(){w=this,this.f3i_1=mt("LocalDate",pt())}function sn(){d=this,this.i3i_1=mt("LocalDateTime",pt())}function on(){p=this,this.l3i_1=mt("TimeZone",pt())}function un(){m=this,this.o3i_1=mt("FixedOffsetTimeZone",pt())}function an(){g=this,this.p3i_1=mt("UtcOffset",pt())}function hn(){if(E)return st();E=!0,$=new _n("MONDAY",0),y=new _n("TUESDAY",1),b=new _n("WEDNESDAY",2),k=new _n("THURSDAY",3),j=new _n("FRIDAY",4),x=new _n("SATURDAY",5),z=new _n("SUNDAY",6)}function _n(t,n){yt.call(this,t,n)}function ln(){return hn(),$}function fn(){return hn(),y}function cn(){return hn(),b}function vn(){return hn(),k}function wn(){return hn(),j}function dn(){return hn(),x}function pn(){return hn(),z}function mn(){C=this,this.w3h_1=new $n(W.ofEpochSecond(u,999999999)),this.x3h_1=new $n(W.ofEpochSecond(a,0)),this.y3h_1=new $n(W.MIN),this.z3h_1=new $n(W.MAX)}function gn(){return null==C&&new mn,C}function $n(t){gn(),this.t3i_1=t}function yn(t){return"DateTimeException"==t.name}function bn(t){return"DateTimeParseException"==t.name}function kn(){S=this,this.g3i_1=new xn(X.MIN),this.h3i_1=new xn(X.MAX)}function jn(){return null==S&&new kn,S}function xn(t){jn(),this.a3i_1=t}function zn(){q=this,this.j3i_1=new Cn(Z.MIN),this.k3i_1=new Cn(Z.MAX)}function En(){return null==q&&new zn,q}function Cn(t){En(),this.a3j_1=t}function Sn(){if(H)return st();H=!0,O=new qn("JANUARY",0),I=new qn("FEBRUARY",1),A=new qn("MARCH",2),T=new qn("APRIL",3),D=new qn("MAY",4),M=new qn("JUNE",5),N=new qn("JULY",6),R=new qn("AUGUST",7),P=new qn("SEPTEMBER",8),L=new qn("OCTOBER",9),F=new qn("NOVEMBER",10),U=new qn("DECEMBER",11)}function qn(t,n){yt.call(this,t,n)}function On(){return Sn(),O}function In(){return Sn(),I}function An(){return Sn(),A}function Tn(){return Sn(),T}function Dn(){return Sn(),D}function Mn(){return Sn(),M}function Nn(){return Sn(),N}function Rn(){return Sn(),R}function Pn(){return Sn(),P}function Ln(){return Sn(),L}function Fn(){return Sn(),F}function Un(){return Sn(),U}function Hn(t,n){var i;if(n instanceof Q)i=Wn(new Qn(n));else if(n.rules().isFixedOffset()){var e=n.normalized();i=new Kn(new Qn(e instanceof Q?e:Rt()),n)}else i=new Yn(n);return i}function Vn(){V=this,this.m3i_1=Wn(new Qn(Q.UTC))}function Bn(){return null==V&&new Vn,V}function Yn(t){Bn(),this.k3j_1=t}function Wn(t){return function(t,n){return Kn.call(n,t,t.l3j_1),n}(t,_t(nt(Kn)))}function Gn(){B=this}function Kn(t,n){null==B&&new Gn,Yn.call(this,n),this.n3j_1=t}function Jn(t,n){return new Qn(t.k3j_1.rules().offsetOfInstant(n.t3i_1))}function Xn(){Y=this,this.q3i_1=new Qn(Q.UTC)}function Zn(){return null==Y&&new Xn,Y}function Qn(t){Zn(),this.l3j_1=t}return rt(Ut,"System",it),rt(Yt,"DateTimeFormatException",ct,ft),rt(Gt,"IllegalTimeZoneException",ct,ft),rt(Jt,"DateTimeArithmeticException",ct,wt),rt(en,"InstantIso8601Serializer",it,et,[gt]),rt(rn,"LocalDateIso8601Serializer",it,et,[gt]),rt(sn,"LocalDateTimeIso8601Serializer",it,et,[gt]),rt(on,"TimeZoneSerializer",it,et,[gt]),rt(un,"FixedOffsetTimeZoneSerializer",it,et,[gt]),rt(an,"UtcOffsetSerializer",it,et,[gt]),rt(_n,"DayOfWeek",ct,yt),rt(mn,"Companion",it),rt($n,"Instant",ct,et,[Pt],et,{0:function(){return null==v&&new en,v}}),rt(kn,"Companion",it),rt(xn,"LocalDate",ct,et,[Pt],et,{0:function(){return null==w&&new rn,w}}),rt(zn,"Companion",it),rt(Cn,"LocalDateTime",ct,et,[Pt],et,{0:function(){return null==d&&new sn,d}}),rt(qn,"Month",ct,yt),rt(Vn,"Companion",it),rt(Yn,"TimeZone",ct,et,et,et,{0:function(){return null==p&&new on,p}}),rt(Gn,"Companion",it),rt(Kn,"FixedOffsetTimeZone",ct,Yn,et,et,{0:function(){return null==m&&new un,m}}),rt(Xn,"Companion",it),rt(Qn,"UtcOffset",ct,et,et,et,{0:function(){return null==g&&new an,g}}),nt(Ut).v3h=function(){return gn().v3h()},nt(en).i32=function(){return this.e3i_1},nt(en).j32=function(t){return gn().q1s(t.f35())},nt(rn).i32=function(){return this.f3i_1},nt(rn).j32=function(t){return jn().q1s(t.f35())},nt(sn).i32=function(){return this.i3i_1},nt(sn).j32=function(t){return En().q1s(t.f35())},nt(on).i32=function(){return this.l3i_1},nt(on).j32=function(t){return Bn().n3i(t.f35())},nt(un).i32=function(){return this.o3i_1},nt(un).j32=function(t){var n=Bn().n3i(t.f35());if(n instanceof Kn)return n;throw $t("Timezone identifier '"+n+"' does not correspond to a fixed-offset timezone")},nt(an).i32=function(){return this.p3i_1},nt(an).j32=function(t){return Zn().q1s(t.f35())},nt(mn).v3h=function(){return new $n(G.systemUTC().instant())},nt(mn).r3i=function(t){var n;try{var i,e=tn(),r=t.m7(St(e)),s=tn(),o=t.j8(St(s)),u=Qt();i=o.n7(St(u)),n=this.s3i(r,i)}catch(i){if(!(i instanceof Error))throw i;var a=i;if(!yn(a))throw a;n=t.w(new dt(0,0))>0?this.z3h_1:this.y3h_1}return n},nt(mn).q1s=function(t){var n;try{n=new $n(K.parse(function(t,n){var i,e=jt(n,kt(84),et,!0);if(-1===e)return n;t:{var r=xt(n)-1|0;if(0<=r)do{var s=r;r=r+-1|0;var o=zt(n,s);if(Ct(new Et(o),new Et(kt(43)))||Ct(new Et(o),new Et(kt(45)))){i=s;break t}}while(0<=r);i=-1}var u=i;return u=0)throw Ft("Addition overflows a long: "+ot(t)+" + "+ot(n));return i}(t,r),o=St(nn()),u=n.j8(o),a=u.o7(o.z9(u.h8(o).z9(u.xi(u.l7())).b8(63))).c8();i=new $n(W.ofEpochSecond(s,a))}catch(n){if(!(n instanceof Error))throw n;var h=n;if(!(yn(h)||h instanceof qt))throw h;i=t.w(new dt(0,0))>0?this.z3h_1:this.y3h_1}return i},nt($n).u3i=function(){return Ot(this.t3i_1.epochSecond())},nt($n).v3i=function(){return bt(this.t3i_1.nano())},nt($n).w3i=function(){var t=this.u3i(),n=tn(),i=t.n7(St(n)),e=this.v3i()/Qt()|0;return i.o7(St(e))},nt($n).x3i=function(t){var n,i=J.between(t.t3i_1,this.t3i_1),e=(It(),At(i.seconds())),r=Dt(e,Tt()),s=(It(),At(i.nano()));return n=Dt(s,Mt()),Nt(r,n)},nt($n).y3i=function(t){return bt(this.t3i_1.compareTo(t.t3i_1))},nt($n).p8=function(t){return this.y3i(t instanceof $n?t:Rt())},nt($n).equals=function(t){return this===t||t instanceof $n&&Ct(this.t3i_1,t.t3i_1)},nt($n).hashCode=function(){return bt(this.t3i_1.hashCode())},nt($n).toString=function(){return this.t3i_1.toString()},nt(kn).q1s=function(t){var n;try{n=new xn(X.parse(t))}catch(t){if(t instanceof Error){var i=t;if(bn(i))throw Bt(i);throw i}throw t}return n},nt(xn).b3i=function(){return bt(this.a3i_1.year())},nt(xn).c3i=function(){return bt(this.a3i_1.monthValue())},nt(xn).d3i=function(){return bt(this.a3i_1.dayOfMonth())},nt(xn).equals=function(t){return this===t||t instanceof xn&&Ct(this.a3i_1,t.a3i_1)},nt(xn).hashCode=function(){return bt(this.a3i_1.hashCode())},nt(xn).toString=function(){return this.a3i_1.toString()},nt(xn).z3i=function(t){return bt(this.a3i_1.compareTo(t.a3i_1))},nt(xn).p8=function(t){return this.z3i(t instanceof xn?t:Rt())},nt(zn).q1s=function(t){var n;try{n=new Cn(Z.parse(t))}catch(t){if(t instanceof Error){var i=t;if(bn(i))throw Bt(i);throw i}throw t}return n},nt(Cn).b3i=function(){return bt(this.a3j_1.year())},nt(Cn).c3i=function(){return bt(this.a3j_1.monthValue())},nt(Cn).b3j=function(){return t=this.a3j_1.month(),Xt(bt(t.value()));var t},nt(Cn).d3i=function(){return bt(this.a3j_1.dayOfMonth())},nt(Cn).c3j=function(){return t=this.a3j_1.dayOfWeek(),Ht(bt(t.value()));var t},nt(Cn).d3j=function(){return bt(this.a3j_1.dayOfYear())},nt(Cn).e3j=function(){return bt(this.a3j_1.hour())},nt(Cn).f3j=function(){return bt(this.a3j_1.minute())},nt(Cn).g3j=function(){return bt(this.a3j_1.second())},nt(Cn).h3j=function(){return bt(this.a3j_1.nano())},nt(Cn).equals=function(t){return this===t||t instanceof Cn&&Ct(this.a3j_1,t.a3j_1)},nt(Cn).hashCode=function(){return bt(this.a3j_1.hashCode())},nt(Cn).toString=function(){return this.a3j_1.toString()},nt(Cn).i3j=function(t){return bt(this.a3j_1.compareTo(t.a3j_1))},nt(Cn).p8=function(t){return this.i3j(t instanceof Cn?t:Rt())},nt(Vn).j3j=function(){return Hn(0,tt.systemDefault())},nt(Vn).n3i=function(t){var n;try{n=Hn(0,tt.of(t))}catch(t){if(t instanceof Error){var i=t;if(yn(i))throw Wt(i);throw i}throw t}return n},nt(Yn).equals=function(t){return this===t||t instanceof Yn&&Ct(this.k3j_1,t.k3j_1)},nt(Yn).hashCode=function(){return bt(this.k3j_1.hashCode())},nt(Yn).toString=function(){return this.k3j_1.toString()},nt(Xn).q1s=function(t){var n;try{n=new Qn(Q.of(t))}catch(t){if(t instanceof Error){var i=t;if(yn(i))throw Bt(i);throw i}throw t}return n},nt(Qn).o3j=function(){return bt(this.l3j_1.totalSeconds())},nt(Qn).hashCode=function(){return bt(this.l3j_1.hashCode())},nt(Qn).equals=function(t){return t instanceof Qn&&Ct(this.l3j_1,t.l3j_1)},nt(Qn).toString=function(){return this.l3j_1.toString()},u=new dt(-931914497,-750),a=new dt(1151527680,720),l=1e6,f=1e3,c=1e9,t.$_$=t.$_$||{},t.$_$.a=function(){return null==r&&new Ut,r},t.$_$.b=gn,t.$_$.c=Bn,t.$_$.d=$n,t.$_$.e=Cn,t.$_$.f=xn,t.$_$.g=function(t,n,i,e,r){return e=e===et?0:e,r=r===et?0:r,function(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){var a;s=s===et?0:s,o=o===et?0:o;try{a=Z.of(t,n,i,e,r,s,o)}catch(t){if(t instanceof Error){var h=t;if(yn(h))throw Lt(h);throw h}throw t}return Cn.call(u,a),u}(t,n,i,e,r,s,o,_t(nt(Cn)))}(t.b3i(),t.c3i(),t.d3i(),n,i,e,r)},t.$_$.h=function(t){return Vt(),t.l6_1+1|0},t.$_$.i=function(t){return Zt(),t.l6_1+1|0},t.$_$.j=Jn,t.$_$.k=function(t,n){return Jn(n,t)},t.$_$.l=function(t,n){return new $n(t.a3j_1.atZone(n.k3j_1).toInstant())},t.$_$.m=function(t,n){var i;try{i=new Cn(Z.ofInstant(t.t3i_1,n.k3j_1))}catch(t){if(t instanceof Error){var e=t;if(yn(e))throw Kt(e);throw e}throw t}return i},t})?e.apply(n,r):e)||(t.exports=s)},960:function(t,n,i){var e,r,s;r=[n,i(744),i(426),i(817),i(585),i(646)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o){"use strict";var u,a=n.$_$.hf,h=e.$_$.b,_=n.$_$.ta,l=n.$_$.sa,f=n.$_$.ng,c=n.$_$.ua,v=n.$_$.l9,w=r.$_$.a,d=s.$_$.p,p=n.$_$.u4,m=s.$_$.m,g=s.$_$.l1,$=s.$_$.j1,y=s.$_$.d1,b=s.$_$.r,k=s.$_$.u,j=s.$_$.e1,x=s.$_$.t,z=s.$_$.v,E=s.$_$.k1,C=s.$_$.g1,S=s.$_$.i1,q=s.$_$.h1,O=s.$_$.a,I=s.$_$.n,A=n.$_$.e7,T=s.$_$.y,D=s.$_$.q1,M=s.$_$.z,N=s.$_$.r1,R=s.$_$.p1,P=s.$_$.a1,L=n.$_$.i6,F=s.$_$.s,U=s.$_$.x,H=s.$_$.b,V=s.$_$.m1,B=s.$_$.b1,Y=n.$_$.z8,W=o.$_$.y,G=n.$_$.ea,K=s.$_$.n1,J=n.$_$.d7,X=n.$_$.l8,Z=s.$_$.t1,Q=o.$_$.k1,tt=s.$_$.s1,nt=n.$_$.we,it=o.$_$.m1,et=s.$_$.o1,rt=s.$_$.c1,st=n.$_$.lg,ot=n.$_$.g7,ut=s.$_$.q,at=s.$_$.f1,ht=s.$_$.o,_t=s.$_$.l,lt=n.$_$.q6,ft=s.$_$.w,ct=s.$_$.d,vt=s.$_$.c,wt=s.$_$.j,dt=s.$_$.i,pt=s.$_$.h,mt=s.$_$.e,gt=s.$_$.f,$t=s.$_$.g,yt=s.$_$.k;function bt(){u=this;var t=i(897),n=null!=t&&"string"==typeof t?t:a();this.q8q_1=new h("aircraft_fighter.png",n);var e=i(760),r=null!=e&&"string"==typeof e?e:a();this.r8q_1=new h("aircraft_fixwing.png",r);var s=i(245),o=null!=s&&"string"==typeof s?s:a();this.s8q_1=new h("airport_terminal.png",o);var _=i(954),l=null!=_&&"string"==typeof _?_:a();this.t8q_1=new h("ehipcc.png",l);var f=i(959),c=null!=f&&"string"==typeof f?f:a();this.u8q_1=new h("pattern_sample_houndstooth.png",c);var v=i(481),w=null!=v&&"string"==typeof v?v:a();this.v8q_1=new h("worldwind_logo.png",w)}function kt(){return null==u&&new bt,u}function jt(){this.w8q_1=null}function xt(t){jt.call(this),this.c8r_1=t,this.d8r_1=null,this.e8r_1=null}function zt(t){jt.call(this),this.g8r_1=t}function Et(t){jt.call(this),this.i8r_1=t;var n,i,e,r=new b("Ellipses"),s=new k(g().u5l(45,-120,0),5e5,3e5);s.h6e(j()),s.g6e(!0),i=s,r.m65(i);var o,u=new k(g().u5l(45,-100,0),5e5,3e5),a=u.r28();a.r7t(new x(1,1,1,.5)),a.f6k_1=3,u.h6e(j()),u.g6e(!0),e=u,r.m65(e);var h,_,l=new k(g().u5l(35,-120,0),5e5,3e5);l.h6e(j()),l.g6e(!0),h=$().e55(45),l.d7l(h),o=l,r.m65(o);var f,c=new k(g().u5l(35,-100,0),4e5,4e5);c.h6e(j()),c.g6e(!0),_=c,r.m65(_),r.m65(new k(g().u5l(25,-120,2e5),5e5,3e5));var v=new k(g().u5l(25,-100,2e5),5e5,3e5),w=v.r28();w.r7t(new x(1,1,1,.5)),w.b6k_1=!0,v.v7i(!0),f=v,r.m65(f),n=r,this.j8r_1=n}function Ct(t){jt.call(this),this.l8r_1=t;var n,i,e,r=new b("Labels"),s=new z(g().u5l(38.8977,-77.0365,0),"The White House");s.h6e(j()),i=s,r.m65(i);var o=new z(g().u5l(38.881389,-77.036944,0),"Thomas Jefferson Memorial");o.h6e(j());var u,a=o.p6e_1;a.v6j(new x(0,0,0,1)),a.w6j(new x(1,1,1,1)),a.n6j_1=5,e=o,r.m65(e);var h,_=new z(g().u5l(38.8893,-77.050111,0),"Lincoln Memorial");_.h6e(j()),_.p6e_1.a7u(E().m5l()),u=_,r.m65(u);var l,f=new z(g().u5l(38.889803,-77.009114,0),"United States Capitol");f.h6e(j()),f.p6e_1.a7u(E().k5l()),h=f,r.m65(h);var c,v=new z(g().u5l(38.907192,-77.036871,0),"Washington");v.h6e(j()),v.p6e_1.x6j(S("arial",C(),28)),l=v,r.m65(l);var w=new z(g().u5l(38.89,-77.023611,0),"National Mall");w.h6e(j()),w.t6e_1=q(),c=w,r.m65(c),n=r,this.m8r_1=n}function St(t){jt.call(this),this.o8r_1=t}function qt(t){jt.call(this),this.q8r_1=t,this.r8r_1=new I}function Ot(t){jt.call(this),this.t8r_1=t;var n,i,e=new b("Paths");e.m65(new T(A([g().u5l(50,-180,1e5),g().u5l(30,-100,1e6),g().u5l(50,-40,1e5)])));var r,s=new T(A([g().u5l(40,-180,0),g().u5l(20,-100,0),g().u5l(40,-40,0)]));s.h6e(j()),s.g6e(!0),i=s,e.m65(i);var o,u=new T(A([g().u5l(30,-180,1e5),g().u5l(10,-100,1e6),g().u5l(30,-40,1e5)]));u.v7i(!0),r=u,e.m65(r);var a=new T(A([g().u5l(20,-180,1e5),g().u5l(0,-100,1e6),g().u5l(20,-40,1e5)])),h=a.r28();h.b6k_1=!0,h.r7t(new x(1,1,1,.5)),h.f6k_1=3,a.v7i(!0),o=a,e.m65(o),n=e,this.u8r_1=n}function It(t){jt.call(this),this.w8r_1=t;var n,i,e,r=new b("Placemarks"),s=D().s7o(g().u5l(34.281,-119.293,0),new x(0,1,1,1),20);s.h6e(j()),i=s,r.m65(i);var o,u,a=new M(g().u5l(34.26,-119.2,5e3)),h=a,_=N().p7q(R().i64(kt().r8q_1));_.u7o_1=1.5,o=_,h.j7p_1=o,e=a,r.m65(e);var l=new M(g().u5l(34.2,-119.208,0));l.h6e(j());var f,c,v=l,w=N().o7q(R().i64(kt().s8q_1));w.q7q(E().l5l()),w.u7o_1=2,f=w,v.j7p_1=f,l.n7d("Oxnard Airport"),u=l,r.m65(u);var d=new M(g().u5l(34.3,-119.25,0));d.h6e(j());var p,m=d,$=N().o7q(R().i64(kt().t8q_1));$.q7q(E().l5l()),p=$,m.j7p_1=p,c=d,r.m65(c),n=r,this.x8r_1=n}function At(t){jt.call(this),this.z8r_1=t;var n,i,e=new b("Polygons");e.m65(new P(A([g().u5l(40,-135,5e5),g().u5l(45,-140,7e5),g().u5l(50,-130,9e5),g().u5l(45,-120,7e5),g().u5l(40,-125,5e5)])));var r,s=new P(A([g().u5l(40,-105,0),g().u5l(45,-110,0),g().u5l(50,-100,0),g().u5l(45,-90,0),g().u5l(40,-95,0)]));s.h6e(j()),s.g6e(!0),i=s,e.m65(i);var o,u=new P(A([g().u5l(20,-135,5e5),g().u5l(25,-140,7e5),g().u5l(30,-130,9e5),g().u5l(25,-120,7e5),g().u5l(20,-125,5e5)]));u.v7i(!0),r=u,e.m65(r);var a,h=new P(A([g().u5l(20,-105,5e5),g().u5l(25,-110,7e5),g().u5l(30,-100,9e5),g().u5l(25,-90,7e5),g().u5l(20,-95,5e5)])),_=h.r28();_.b6k_1=!0,_.r7t(new x(1,1,1,.5)),_.f6k_1=3,h.v7i(!0),o=h,e.m65(o);var l,f=new P;f.g7t(A([g().u5l(0,-135,5e5),g().u5l(5,-140,7e5),g().u5l(10,-130,9e5),g().u5l(5,-120,7e5),g().u5l(0,-125,5e5)])),f.g7t(A([g().u5l(2.5,-130,6e5),g().u5l(5,-135,7e5),g().u5l(7.5,-130,8e5),g().u5l(5,-125,7e5)])),a=f,e.m65(a);var c=new P(L()),v=c.r28();v.b6k_1=!0,v.r7t(new x(1,1,1,.5)),v.f6k_1=3,c.g7t(A([g().u5l(0,-105,5e5),g().u5l(5,-110,7e5),g().u5l(10,-100,9e5),g().u5l(5,-90,7e5),g().u5l(0,-95,5e5)])),c.g7t(A([g().u5l(2.5,-100,6e5),g().u5l(5,-105,7e5),g().u5l(7.5,-100,8e5),g().u5l(5,-95,7e5)])),c.v7i(!0),l=c,e.m65(l),n=e,this.a8s_1=n}function Tt(t){jt.call(this),this.c8s_1=t,this.d8s_1=new F}function Dt(t){jt.call(this),this.f8s_1=t;var n,i,e,r=new b("Sightline"),s=g().u5l(46.23,-122.19,2500),o=new U(s,1e4);o.r28().r7t(new x(0,1,0,.5)),o.l7m_1.r7t(new x(.1,.1,.1,.8)),i=o,r.m65(i);var u=new M(s),a=u.j7p_1;a.t7o_1=R().i64(kt().r8q_1),a.q7q(E().l5l()),a.u7o_1=2,a.x7o_1=!0,e=u,r.m65(e),n=r,this.g8s_1=n}function Mt(t){jt.call(this),this.i8s_1=t;var n,i=new b("Surface image");i.m65(new B(V().y5l(37.46,15.5,.5,.6),R().i64(kt().v8q_1))),i.m65(new B(V().y5l(37.46543388598137,14.60128369746704,.45360804083528,.75704283995502),R().t6t("https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg"))),n=i,this.j8s_1=n}function Nt(t,n){this.s8s_1=t,Y.call(this,n)}function Rt(t,n){jt.call(this),this.v8s_1=t,this.w8s_1=n,this.x8s_1=null,this.y8s_1=null}function Pt(t,n){this.h8t_1=t,Y.call(this,n)}function Lt(t,n){jt.call(this),this.k8t_1=t,this.l8t_1=n,this.m8t_1=null,this.n8t_1=null}function Ft(){window.onload=Ut}function Ut(t){var n,i,e,r,s=document.getElementById("WorldWindow"),o=new rt(s instanceof HTMLCanvasElement?s:a()),u=document.getElementById("Tutorials"),h=u instanceof HTMLSelectElement?u:a(),_=document.getElementById("Actions"),l=_ instanceof HTMLDivElement?_:a(),f=ot([st("Basic globe",new xt(o.n88())),st("Set camera view",new zt(o.n88())),st("Set Look At",new St(o.n88())),st("Placemarks",new It(o.n88())),st("Paths",new Ot(o.n88())),st("Polygons",new At(o.n88())),st("Ellipses",new Et(o.n88())),st("Labels",new Ct(o.n88())),st("Sight line",new Dt(o.n88())),st("Surface image",new Mt(o.n88())),st("Show tessellation",new Tt(o.n88())),st("MGRS Graticule",new qt(o.n88())),st("WMS Layer",new Rt(o.n88(),o.n8c())),st("WMTS Layer",new Lt(o.n88(),o.n8c()))]),c={_v:null},v=o.n88().k4v_1;v.p65(new ut),v.p65(new ht(at())),v.p65(new d),v.p65(new m),o.n88().g4v_1.k4x_1.x5w(new _t),o.o8c().t8g_1=new Bt;for(var w=f.h2().d();w.e();){var g=w.f(),$=document.createElement("option"),y=$ instanceof HTMLOptionElement?$:a();y.value=g,y.innerHTML=g,h.append(y)}return h.onchange=(n=c,i=f,e=l,r=o,function(t){var s=t.target;return Vt(n,i,e,r,(s instanceof HTMLSelectElement?s:a()).value),p()}),Vt(c,f,l,o,lt(f.h2())),p()}function Ht(t,n,i,e){var r,s,o,u=document.createElement("button"),h=u instanceof HTMLButtonElement?u:a();h.innerHTML=e,t.append(h),h.onclick=(r=e,s=n,o=i,function(t){return function(t,n,i){var e=t._v;if(null==e);else{var r=n.g2(e);null!=r&&(r.y8q(i),p())}}(s,o,r),p()})}function Vt(t,n,i,e,r){var s=t._v;if(null==s);else{var o=n.g2(s);null!=o&&(o.a8r(),p())}t._v=r;var u=n.g2(r);if(null==u);else{u.z8q(),i.innerHTML="";var a=u.x8q();if(null==a);else for(var h=a.d();h.e();)Ht(i,t,n,h.f());var _=u.x8q();i.hidden=!(!1===(null==_?null:_.m())),p()}e.c4v()}function Bt(){}return c(bt,"images",l),c(jt,"AbstractTutorial",v),c(xt,"BasicTutorial",v,jt),c(zt,"CameraViewTutorial",v,jt),c(Et,"EllipsesTutorial",v,jt),c(Ct,"LabelsTutorial",v,jt),c(St,"LookAtViewTutorial",v,jt),c(qt,"MGRSGraticuleTutorial",v,jt),c(Ot,"PathsTutorial",v,jt),c(It,"PlacemarksTutorial",v,jt),c(At,"PolygonsTutorial",v,jt),c(Tt,"ShowTessellationTutorial",v,jt),c(Dt,"SightlineTutorial",v,jt),c(Mt,"SurfaceImageTutorial",v,jt),c(Nt,"WmsLayerTutorial$start$slambda",v,Y,f,f,f,[1]),c(Rt,"WmsLayerTutorial",v,jt),c(Pt,"WmtsLayerTutorial$start$slambda",v,Y,f,f,f,[1]),c(Lt,"WmtsLayerTutorial",v,jt),c(Bt,f,v,f,[yt]),_(jt).x8q=function(){return this.w8q_1},_(jt).y8q=function(t){},_(jt).z8q=function(){},_(jt).a8r=function(){},_(xt).z8q=function(){_(jt).z8q.call(this);var t,n=this.c8r_1.k4v_1,i=w().v3h(),e=n.n65(n.o65("StarField")),r=e instanceof d?e:a();r.r6u_1=i,t=r,this.d8r_1=t;var s,o=n.n65(n.o65("Atmosphere")),u=o instanceof m?o:a();u.m68_1=i,s=u,this.e8r_1=s,p()},_(xt).a8r=function(){_(jt).a8r.call(this);var t=this.d8r_1;null==t||(t.r6u_1=null);var n=this.e8r_1;null==n||(n.m68_1=null)},_(zt).z8q=function(){var t,n,i,e,r,s,o,u,a;_(jt).z8q.call(this),t=this,n=g().u5l(34.2,-119.2,3e3),i=g().u5l(34.1192744,-119.119585,4),e=n.g5k(i),r=n.h5k(i)*t.g8r_1.g4v_1.j5w(n.j4w_1,n.k4w_1),s=$(),o=r/n.n4w_1,u=Math.atan(o),a=s.r51(u),t.g8r_1.l4v_1.l5j(n.j4w_1,n.k4w_1,n.n4w_1,y(),e,a,$().s50_1)},_(Et).z8q=function(){_(jt).z8q.call(this),this.i8r_1.k4v_1.p65(this.j8r_1);var t,n=this.i8r_1.l4v_1,i=$().e55(30);t=$().e55(-110),n.l5j(i,t,1.1*this.i8r_1.c4w(),y(),$().s50_1,$().s50_1,$().s50_1)},_(Et).a8r=function(){_(jt).a8r.call(this),this.i8r_1.k4v_1.q65(this.j8r_1)},_(Ct).z8q=function(){_(jt).z8q.call(this),this.l8r_1.k4v_1.p65(this.m8r_1);var t,n=this.l8r_1.l4v_1,i=$().e55(38.89);t=$().e55(-77.023611),n.l5j(i,t,1e4,y(),$().s50_1,$().s50_1,$().s50_1)},_(Ct).a8r=function(){_(jt).a8r.call(this),this.l8r_1.k4v_1.q65(this.m8r_1)},_(St).z8q=function(){var t,n,i,e,r,s,o,u,a,h,l,f;_(jt).z8q.call(this),t=this,n=g().u5l(34.0158333,-118.4513056,2500),i=g().u5l(33.9424368,-118.4081222,38.7),e=n.g5k(i),r=n.h5k(i)*t.o8r_1.g4v_1.j5w(n.j4w_1,n.k4w_1),s=n.n4w_1-i.n4w_1,o=s*s+r*r,u=Math.sqrt(o),a=$(),h=r/n.n4w_1,l=Math.atan(h),f=a.r51(l),t.o8r_1.l50(new O(i,y(),u,e,f,$().s50_1))},_(qt).z8q=function(){_(jt).z8q.call(this),this.q8r_1.k4v_1.p65(this.r8r_1)},_(qt).a8r=function(){_(jt).a8r.call(this),this.q8r_1.k4v_1.q65(this.r8r_1)},_(Ot).z8q=function(){_(jt).z8q.call(this),this.t8r_1.k4v_1.p65(this.u8r_1);var t,n=this.t8r_1.l4v_1,i=$().e55(30);t=$().e55(-100),n.l5j(i,t,1.1*this.t8r_1.c4w(),y(),$().s50_1,$().s50_1,$().s50_1)},_(Ot).a8r=function(){_(jt).a8r.call(this),this.t8r_1.k4v_1.q65(this.u8r_1)},_(It).z8q=function(){_(jt).z8q.call(this),this.w8r_1.k4v_1.p65(this.x8r_1);var t,n=g().u5l(34.2,-119.208,0),i=y(),e=$().s50_1;t=$().e55(80),this.w8r_1.l50(new O(n,i,1e4,e,t,$().s50_1))},_(It).a8r=function(){_(jt).a8r.call(this),this.w8r_1.k4v_1.q65(this.x8r_1)},_(At).z8q=function(){_(jt).z8q.call(this),this.z8r_1.k4v_1.p65(this.a8s_1);var t,n=this.z8r_1.l4v_1,i=$().e55(30);t=$().e55(-115),n.l5j(i,t,1.1*this.z8r_1.c4w(),y(),$().s50_1,$().s50_1,$().s50_1)},_(At).a8r=function(){_(jt).a8r.call(this),this.z8r_1.k4v_1.q65(this.a8s_1)},_(Tt).z8q=function(){_(jt).z8q.call(this),this.c8s_1.k4v_1.p65(this.d8s_1)},_(Tt).a8r=function(){_(jt).a8r.call(this),this.c8s_1.k4v_1.q65(this.d8s_1)},_(Dt).z8q=function(){_(jt).z8q.call(this),this.f8s_1.k4v_1.p65(this.g8s_1);var t,n=$().e55(46.23);t=$().e55(-122.19);var i,e=new H(n,t,500),r=y(),s=$().e55(45),o=$().e55(70);i=$().e55(0),this.f8s_1.l50(new O(e,r,15e3,s,o,i))},_(Dt).a8r=function(){_(jt).a8r.call(this),this.f8s_1.k4v_1.q65(this.g8s_1)},_(Mt).z8q=function(){_(jt).z8q.call(this),this.i8s_1.k4v_1.p65(this.j8s_1);var t,n=this.i8s_1.l4v_1,i=$().e55(37.46543388598137);t=$().e55(14.97980511744455),n.l5j(i,t,4e5,y(),$().s50_1,$().s50_1,$().s50_1)},_(Mt).a8r=function(){_(jt).a8r.call(this),this.i8s_1.k4v_1.q65(this.j8s_1)},_(Nt).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=p(),i.kj_1=null,i.qj()},_(Nt).ck=function(t,n){return this.n1f(null!=t&&G(t,W)?t:a(),n)},_(Nt).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.ij_1=2,this.hj_1=1,(t=K().q70("https://neo.gsfc.nasa.gov/wms/wms",J("MOD_LSTD_CLIM_M"),this))===X())return t;continue t;case 1:var n=t;Q(this.t8s_1)&&(this.s8s_1.x8s_1=n,this.s8s_1.v8s_1.k4v_1.p65(n),Z().c4v()),tt().j5y(tt().s4w_1,"WMS layer creation succeeded"),this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof nt){var i=this.kj_1;tt().m8q(tt().q4w_1,"WMS layer creation failed",i),this.hj_1=4;continue t}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,p()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},_(Nt).o1f=function(t,n){var i=new Nt(this.s8s_1,n);return i.t8s_1=t,i},_(Rt).z8q=function(){var t,n;_(jt).z8q.call(this),this.y8s_1=it(this.w8s_1,f,f,(t=new Nt(this,null),(n=function(n,i){return t.n1f(n,i)}).$arity=1,n));var i=this.v8s_1.l4v_1;i.d4w_1.n4w_1=1.1*this.v8s_1.c4w(),i.f4w_1=$().s50_1,i.g4w_1=$().s50_1,i.h4w_1=$().s50_1},_(Rt).a8r=function(){_(jt).a8r.call(this);var t=this.y8s_1;null==t||t.vl();var n=this.x8s_1;null==n||this.v8s_1.k4v_1.q65(n),this.x8s_1=null},_(Pt).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=p(),i.kj_1=null,i.qj()},_(Pt).ck=function(t,n){return this.n1f(null!=t&&G(t,W)?t:a(),n)},_(Pt).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.ij_1=2,this.hj_1=1,(t=et().r75("https://tiles.geoservice.dlr.de/service/wmts","hillshade",this))===X())return t;continue t;case 1:var n=t;Q(this.i8t_1)&&(this.h8t_1.m8t_1=n,this.h8t_1.k8t_1.k4v_1.p65(n),Z().c4v()),tt().j5y(tt().s4w_1,"WMTS layer creation succeeded"),this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof nt){var i=this.kj_1;tt().m8q(tt().q4w_1,"WMTS layer creation failed",i),this.hj_1=4;continue t}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,p()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},_(Pt).o1f=function(t,n){var i=new Pt(this.h8t_1,n);return i.i8t_1=t,i},_(Lt).z8q=function(){var t,n;_(jt).z8q.call(this),this.n8t_1=it(this.l8t_1,f,f,(t=new Pt(this,null),(n=function(n,i){return t.n1f(n,i)}).$arity=1,n));var i=this.k8t_1.l4v_1;i.d4w_1.n4w_1=1.1*this.k8t_1.c4w(),i.f4w_1=$().s50_1,i.g4w_1=$().s50_1,i.h4w_1=$().s50_1},_(Lt).a8r=function(){_(jt).a8r.call(this);var t=this.n8t_1;null==t||t.vl();var n=this.m8t_1;null==n||this.k8t_1.k4v_1.q65(n),this.m8t_1=null},_(Bt).c5w=function(t){return G(t,ft)},_(Bt).f5w=function(t){return G(t,ft)},_(Bt).y5v=ct,_(Bt).z5v=vt,_(Bt).a5w=wt,_(Bt).b5w=dt,_(Bt).d5w=pt,_(Bt).e5w=mt,_(Bt).g5w=gt,_(Bt).h5w=$t,function(t){var n=t.earth||(t.earth={}),i=n.worldwind||(n.worldwind={});(i.tutorials||(i.tutorials={})).main=Ft}(t),Ft(),t})?e.apply(n,r):e)||(t.exports=s)},585:function(t,n,i){var e,r,s;r=[n,i(744),i(426),i(817),i(646),i(645),i(730),i(639),i(220),i(813),i(538),i(520)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o,u,a,h,_,l,f){"use strict";var c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ft,ct,vt,wt,dt,pt,mt,gt,$t,yt,bt,kt,jt,xt,zt,Et,Ct,St,qt,Ot,It,At,Tt,Dt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht,Vt,Bt,Yt,Wt,Gt,Kt,Jt,Xt,Zt,Qt,tn,nn,en,rn,sn,on,un,an,hn,_n,ln,fn,cn,vn,wn,dn,pn,mn,gn,$n,yn,bn,kn,jn,xn,zn,En,Cn,Sn,qn,On,In,An,Tn,Dn,Mn,Nn,Rn,Pn,Ln,Fn,Un,Hn,Vn,Bn,Yn,Wn,Gn,Kn,Jn,Xn,Zn,Qn,ti,ni,ii,ei,ri,si,oi,ui,ai,hi,_i,li,fi,ci,vi,wi,di,pi,mi,gi,$i,yi,bi,ki,ji,xi,zi,Ei,Ci,Si,qi,Oi,Ii,Ai,Ti,Di,Mi,Ni,Ri,Pi,Li,Fi,Ui,Hi,Vi,Bi,Yi,Wi,Gi,Ki,Ji,Xi,Zi,Qi,te,ne,ie,ee,re,se,oe,ue,ae,he,_e,le,fe,ce,ve,we,de,pe,me,ge,$e,ye,be,ke,je,xe,ze,Ee,Ce,Se,qe,Oe,Ie,Ae,Te,De,Me,Ne,Re,Pe,Le,Fe,Ue,He,Ve,Be,Ye,We,Ge,Ke,Je,Xe,Ze,Qe,tr,nr,ir,er,rr,sr,or,ur,ar,hr,_r,lr,fr,cr,vr,wr,dr,pr,mr,gr,$r,yr,br,kr,jr,xr,zr,Er,Cr,Sr,qr,Or,Ir,Ar,Tr,Dr,Mr,Nr,Rr,Pr,Lr,Fr,Ur,Hr=Math.imul,Vr=Math.sign,Br=Math.log10,Yr=Math.sinh,Wr=n.$_$.hf,Gr=e.$_$.b,Kr=n.$_$.ta,Jr=n.$_$.sa,Xr=n.$_$.ng,Zr=n.$_$.ua,Qr=e.$_$.a,ts=n.$_$.af,ns=r.$_$.b,is=n.$_$.l9,es=n.$_$.bb,rs=n.$_$.u4,ss=n.$_$.ya,os=n.$_$.u,us=n.$_$.m7,as=n.$_$.v6,hs=s.$_$.o,_s=s.$_$.p,ls=n.$_$.v9,fs=r.$_$.c,cs=n.$_$.r1,vs=n.$_$.xe,ws=n.$_$.xf,ds=n.$_$.lb,ps=n.$_$.za,ms=n.$_$.q9,gs=n.$_$.l,$s=n.$_$.m6,ys=n.$_$.n6,bs=n.$_$.ea,ks=n.$_$.v1,js=n.$_$.w,xs=n.$_$.sb,zs=n.$_$.rb,Es=n.$_$.ue,Cs=n.$_$.m9,Ss=n.$_$.l5,qs=n.$_$.u7,Os=n.$_$.g6,Is=n.$_$.d,As=n.$_$.g4,Ts=n.$_$.we,Ds=n.$_$.bg,Ms=n.$_$.oa,Ns=n.$_$.r9,Rs=n.$_$.o9,Ps=n.$_$.re,Ls=n.$_$.l6,Fs=n.$_$.b9,Us=n.$_$.ra,Hs=n.$_$.lg,Vs=n.$_$.g7,Bs=r.$_$.a,Ys=r.$_$.k,Ws=n.$_$.t5,Gs=n.$_$.v5,Ks=n.$_$.wa,Js=n.$_$.na,Xs=n.$_$.pa,Zs=n.$_$.i9,Qs=n.$_$.qe,to=n.$_$.ic,no=n.$_$.jg,io=n.$_$.m4,eo=n.$_$.g,ro=n.$_$.oe,so=n.$_$.mb,oo=n.$_$.j8,uo=n.$_$.t7,ao=n.$_$.c,ho=n.$_$.fg,_o=n.$_$.e,lo=n.$_$.xa,fo=n.$_$.dg,co=n.$_$.ub,vo=n.$_$.s9,wo=n.$_$.e7,po=n.$_$.o,mo=n.$_$.ha,go=n.$_$.wd,$o=n.$_$.h5,yo=n.$_$.eb,bo=n.$_$.hb,ko=n.$_$.kb,jo=n.$_$.h7,xo=n.$_$.m,zo=n.$_$.kc,Eo=n.$_$.a8,Co=n.$_$.u2,So=n.$_$.e1,qo=o.$_$.g2,Oo=o.$_$.t,Io=o.$_$.s,Ao=o.$_$.e,To=o.$_$.b2,Do=o.$_$.c2,Mo=o.$_$.j2,No=o.$_$.z1,Ro=o.$_$.r,Po=n.$_$.t9,Lo=n.$_$.u9,Fo=u.$_$.a,Uo=n.$_$.uf,Ho=n.$_$.a,Vo=o.$_$.u2,Bo=o.$_$.p2,Yo=n.$_$.h4,Wo=n.$_$.ib,Go=n.$_$.w5,Ko=n.$_$.gb,Jo=n.$_$.z8,Xo=s.$_$.y,Zo=n.$_$.j9,Qo=n.$_$.l8,tu=a.$_$.a,nu=h.$_$.d,iu=h.$_$.e,eu=h.$_$.c,ru=_.$_$.f,su=h.$_$.f,ou=h.$_$.a,uu=l.$_$.u,au=s.$_$.j,hu=s.$_$.c,_u=f.$_$.a,lu=n.$_$.f8,fu=n.$_$.e8,cu=n.$_$.x4,vu=n.$_$.gd,wu=n.$_$.q5,du=n.$_$.k,pu=n.$_$.c1,mu=f.$_$.d,gu=f.$_$.e,$u=o.$_$.w,yu=o.$_$.q,bu=n.$_$.k5,ku=n.$_$.i6,ju=f.$_$.f,xu=o.$_$.p,zu=f.$_$.b,Eu=n.$_$.d7,Cu=n.$_$.k7,Su=o.$_$.e2,qu=n.$_$.k6,Ou=f.$_$.c,Iu=n.$_$.i4,Au=n.$_$.j4,Tu=n.$_$.qa,Du=n.$_$.g8,Mu=n.$_$.fb,Nu=n.$_$.y7,Ru=n.$_$.e9,Pu=n.$_$.k2,Lu=n.$_$.v7,Fu=r.$_$.m,Uu=n.$_$.m2,Hu=n.$_$.cb,Vu=n.$_$.ab,Bu=n.$_$.r2,Yu=n.$_$.jd,Wu=n.$_$.vc,Gu=n.$_$.lc,Ku=n.$_$.g9,Ju=n.$_$.kd,Xu=r.$_$.l,Zu=r.$_$.j,Qu=n.$_$.qd,ta=r.$_$.i,na=n.$_$.de,ia=n.$_$.yd,ea=n.$_$.rd,ra=r.$_$.h,sa=r.$_$.g,oa=r.$_$.f,ua=r.$_$.e,aa=r.$_$.d,ha=n.$_$.e2,_a=n.$_$.gg,la=h.$_$.g,fa=h.$_$.b,ca=n.$_$.og,va=n.$_$.ig,wa=s.$_$.m1,da=s.$_$.a,pa=n.$_$.k4,ma=n.$_$.rc,ga=n.$_$.cf,$a=s.$_$.c1,ya=s.$_$.f1,ba=n.$_$.rf,ka=n.$_$.ga,ja=n.$_$.ld,xa=n.$_$.hg,za=n.$_$.ca;function Ea(){c=this;var t=i(939),n=null!=t&&"string"==typeof t?t:Wr();this.j4t_1=new Gr("dnb_land_ocean_ice_2012.png",n);var e=i(523),r=null!=e&&"string"==typeof e?e:Wr();this.k4t_1=new Gr("sun_texture.png",r);var s=i(49),o=null!=s&&"string"==typeof s?s:Wr();this.l4t_1=new Gr("worldwind_worldtopobathy2004053.png",o)}function Ca(){return null==c&&new Ea,c}function Sa(){v=this;var t=i(542);this.m4t_1=new Qr(null!=t&&"string"==typeof t?t:Wr())}function qa(t){this.n4t_1=t,this.o4t_1=new ts(20,0),this.p4t_1=3e3,this.q4t_1=z_(),this.r4t_1=null,this.s4t_1=null,this.t4t_1=null,this.u4t_1=null,this.v4t_1=ns().w3h_1,this.w4t_1=0,this.x4t_1=ns().w3h_1,this.y4t_1=0,this.z4t_1=0}function Oa(){w=this}function Ia(){return null==w&&new Oa,w}function Aa(t,n,i,e){Ia(),i=i===Xr?null:i,e=e===Xr?null:e,this.j4u_1=t,this.k4u_1=n,this.l4u_1=i,this.m4u_1=e,this.n4u_1=!1}function Ta(t){return!t.s().n4u_1&&!t.s().o4u()}function Da(t){return t.toString()}function Ma(){var t;t=os(),this.q4u_1=t}function Na(){d=this}function Ra(){}function Pa(){p=this,this.z4u_1=10,this.a4v_1=hs(Xr,1),this.b4v_1=_s(this.a4v_1)}function La(){return null==p&&new Pa,p}function Fa(){}function Ua(t,n,i,e,r,s){La(),i=i===Xr?new sf(d_().d4v_1,new cf):i,e=e===Xr?new pf:e,r=r===Xr?new Dh:r,s=s===Xr?null:s,this.f4v_1=n,this.g4v_1=i,this.h4v_1=e,this.i4v_1=r,this.j4v_1=s,this.k4v_1=new kf,this.l4v_1=new v_,this.m4v_1=new qa(this),this.n4v_1=fl(),this.o4v_1=!0,this.p4v_1=1,this.q4v_1=1,this.r4v_1=16e4,this.s4v_1=new Lg,this.t4v_1=new Ya(t),this.u4v_1=0,this.v4v_1=T_(),this.w4v_1=T_(),this.x4v_1=_l(),this.y4v_1=$_();var o=j_().b4w(fs().j3j()),u=1.1*this.c4w();this.l4v_1.d4w_1.o4w(o.j4w_1,o.k4w_1,u)}function Ha(){m=this}function Va(){return null==m&&new Ha,m}function Ba(){Va(),this.i55_1=Q_(),this.j55_1=_l(),this.k55_1=X_(),this.l55_1=X_(),this.m55_1=null,this.n55_1=null,this.o55_1=null,this.p55_1=null}function Ya(t){this.t4x_1=t,this.u4x_1=_l(),this.v4x_1=fl(),this.w4x_1=T_(),this.x4x_1=T_(),this.y4x_1=T_(),this.z4x_1=T_(),this.a4y_1=null,this.b4y_1=null,this.c4y_1=null,this.d4y_1=null,this.e4y_1=null,this.f4y_1=!1,this.g4y_1=Ax().o56_1,this.h4y_1=yx().p56_1,this.i4y_1=Uk();for(var n=0,i=ms(Array(32),null);n<32;){var e,r=n;e=qx().q56_1,i[r]=e,n=n+1|0}this.j4y_1=i,this.k4y_1=Ex().r56_1,this.l4y_1=Ex().r56_1,this.m4y_1=null,this.n4y_1=null,this.o4y_1=new Int8Array(4),this.p4y_1=new Int8Array(4);var s;s=gs(),this.q4y_1=s}function Wa(){g=this,this.l58_1=4}function Ga(){return null==g&&new Wa,g}function Ka(){this.m58_1=0,this.n58_1=0,this.o58_1=0,this.p58_1=0,this.q58_1=Eg(),this.r58_1=1,this.s58_1=0,this.t58_1=null,this.u58_1=q_(),this.v58_1=new Ja}function Ja(){this.w58_1=0,this.x58_1=0}function Xa(){Ga(),this.y58_1=null,this.z58_1=null,this.a59_1=null,this.b59_1=_l(),this.c59_1=0,this.d59_1=!0,this.e59_1=!0,this.f59_1=!0,this.g59_1=0,this.h59_1=Eg(),this.i59_1=1,this.j59_1=1,this.k59_1=null,this.l59_1=q_(),this.m59_1=new Ja,this.n59_1=0;var t=0;Ga();for(var n=ms(Array(4),null);t<4;){var i,e=t;i=new Ka,n[e]=i,t=t+1|0}this.o59_1=n}function Za(){if(k)return rs();k=!0,$=new Qa("BACKGROUND",0),y=new Qa("SURFACE",1),b=new Qa("SHAPE",2),new Qa("SCREEN",3)}function Qa(t,n){Es.call(this,t,n)}function th(){return Za(),$}function nh(){return Za(),y}function ih(t){this.z59_1=t}function eh(){j=this}function rh(){return null==j&&new eh,j}function sh(){rh(),this.b5a_1=null,this.c5a_1=T_(),this.d5a_1=Eg(),this.e5a_1=1,this.f5a_1=!0,this.g5a_1=null,this.h5a_1=null}function oh(){x=this,this.k5b_1=12}function uh(){return null==x&&new oh,x}function ah(){this.l5b_1=null,this.m5b_1=th(),this.n5b_1=0,this.o5b_1=0}function hh(t){this.q5b_1=t}function _h(t,n){var i=ws(t).m5b_1.m6(ws(n).m5b_1);return 0===i&&(i=Cs(t.n5b_1,n.n5b_1)),0===i&&(i=Cs(t.o5b_1,n.o5b_1)),i}function lh(){uh(),this.t56_1=0,this.u56_1=0;var t,n=this.t56_1;t=ms(Array(n),null),this.v56_1=t;var i=_h;this.w56_1=new hh(i)}function fh(){z=this}function ch(){return null==z&&new fh,z}function vh(){ch(),this.w5b_1=T_(),this.x5b_1=Eg(),this.y5b_1=1,this.z5b_1=!0,this.a5c_1=null,this.b5c_1=null,this.c5c_1=null,this.d5c_1=T_()}function wh(){E=this}function dh(){return null==E&&new wh,E}function ph(){dh(),this.n5c_1=new Xa,this.o5c_1=null,this.p5c_1=T_()}function mh(){C=this}function gh(){return null==C&&new mh,C}function $h(){gh(),this.w5c_1=T_(),this.x5c_1=0,this.y5c_1=new Og(0,0,0,0),this.z5c_1=new Og(0,0,0,0),this.a5d_1=null,this.b5d_1=null,this.c5d_1=T_(),this.d5d_1=T_(),this.e5d_1=T_();var t;t=[T_().g5d(0,0,1,Bh().u50_1).b55(1,0,0,Bh().t50_1),T_().g5d(0,0,1,Bh().t50_1).b55(1,0,0,Bh().t50_1),T_().g5d(1,0,0,Bh().t50_1),T_().g5d(0,0,1,Bh().v50_1).b55(1,0,0,Bh().t50_1),T_()],this.f5d_1=t}function yh(){S=this}function bh(){return null==S&&new yh,S}function kh(){bh(),this.d5e_1=Eg(),this.e5e_1=null,this.f5e_1=null,this.g5e_1=T_()}function jh(){q=this}function xh(){return null==q&&new jh,q}function zh(){xh(),this.i5e_1=Q_(),this.j5e_1=new Xa,this.k5e_1=null,this.l5e_1=T_(),this.m5e_1=T_(),this.n5e_1=q_(),this.o5e_1=Eg()}function Eh(){O=this}function Ch(){return null==O&&new Eh,O}function Sh(t,n){var i=t.e5f_1;return!0===(null==i?null:i.l5c(n))}function qh(){Ch(),this.a5f_1=Q_(),this.b5f_1=Eg(),this.c5f_1=1,this.d5f_1=q_(),this.e5f_1=null,this.f5f_1=null,this.g5f_1=null}function Oh(){}function Ih(){I=this}function Ah(){return null==I&&new Ih,I}function Th(){Ah(),this.i5g_1=Eg(),this.j5g_1=null,this.k5g_1=null,this.l5g_1=T_(),this.m5g_1=T_()}function Dh(){this.o5g_1=Eg(),this.p5g_1=_l(),this.q5g_1=Y_()}function Mh(){A=this}function Nh(){null==A&&new Mh,this.e52_1=fl(),this.f52_1=T_(),this.g52_1=T_(),this.h52_1=new lh,this.i52_1=new lh,this.j52_1=null,this.k52_1=null,this.l52_1=null,this.m52_1=null,this.n52_1=null,this.o52_1=!1,this.p52_1=null}function Rh(){if(M)return rs();M=!0,T=new Ph("ABSOLUTE",0),D=new Ph("CLAMP_TO_GROUND",1),new Ph("RELATIVE_TO_GROUND",2)}function Ph(t,n){Es.call(this,t,n)}function Lh(){return Rh(),T}function Fh(){return Rh(),D}function Uh(t){var n;if(Ds(t))throw n=wx().v4w(wx().q4w_1,"Angle","init","NaN is not supported!"),cs(ss(n));return t}function Hh(t){return Bh().o5h(t)}function Vh(){N=this;var t;t=this.e55(0),this.s50_1=t;var n;n=this.e55(90),this.t50_1=n;var i;i=this.e55(-90),this.u50_1=i;var e;e=this.e55(180),this.v50_1=e;var r;r=this.e55(-180),this.w50_1=r;var s;s=this.e55(360),this.x50_1=s;var o;o=this.e55(-360),this.y50_1=o;var u;u=this.e55(.016666666666666666),this.z50_1=u;var a;a=this.e55(.0002777777777777778),this.a51_1=a,this.b51_1=.017453292519943295,this.c51_1=57.29577951308232,this.d51_1=60,this.e51_1=.016666666666666666,this.f51_1=3600,this.g51_1=.0002777777777777778,this.h51_1=.017453292519943295,this.i51_1=57.29577951308232,this.j51_1=17.77777777777778,this.k51_1=.05625,this.l51_1=16.666666666666668,this.m51_1=.06,this.n51_1=17.5,this.o51_1=.06,this.p51_1=60,this.q51_1=.016666666666666666}function Bh(){return null==N&&new Vh,N}function Yh(t,n){return Bh().e55(t+n)}function Wh(t,n){return Bh().e55(t+n)}function Gh(t,n){return Bh().r51(Hh(t)+n)}function Kh(t,n){return Bh().e55(t-n)}function Jh(t,n){return Bh().e55(t-n)}function Xh(t,n){var i;if(0===n)throw i=wx().v4w(wx().q4w_1,"Angle","div","divideByZero"),cs(ss(i));return Bh().e55(t/n)}function Zh(t){return Uh(-t)}function Qh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Bh(),e=Bh().r5h(t);n=i.e55(e)}return n}function t_(t){var n;if(-90<=t&&t<=90)n=t;else{var i=Bh(),e=Bh().t5h(t);n=i.e55(e)}return n}function n_(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Bh(),e=Bh().u5h(t);n=i.e55(e)}return n}function i_(t){var n=Bh(),i=ds(t,-90,90);return n.e55(i)}function e_(t){var n=Bh(),i=ds(t,-180,180);return n.e55(i)}function r_(t,n){return Cs(t,n)}function s_(t){return Ns(t)}function o_(t){Bh(),this.y5h_1=t}function u_(t,n,i,e,r,s,o,u){var a=u.r50(n);i[0]>a&&(i[0]=a),i[1]h&&(r[0]=h),r[1]_&&(o[0]=_),o[1]<_&&(o[1]=_)}function a_(t,n,i,e,r){n.a5i(e);var s=i[0];i[0]=r[0],r[0]=s,s=i[1],i[1]=r[1],r[1]=s}function h_(t,n){var i=n.b5i_1,e=t.h5i_1.r50(i),r=Math.abs(e),s=t.i5i_1.r50(i),o=.5*(r+Math.abs(s)),u=n.r50(t.k5i_1),a=u<=-o,h=n.r50(t.l5i_1)<=-o;if(a&&h)return-1;if(a===h)return 0;var _=(o+u)/(i.m4z_1*(t.k5i_1.m4z_1-t.l5i_1.m4z_1)+i.n4z_1*(t.k5i_1.n4z_1-t.l5i_1.n4z_1)+i.q4z_1*(t.k5i_1.q4z_1-t.l5i_1.q4z_1)),l=(t.l5i_1.m4z_1-t.k5i_1.m4z_1)*_+t.k5i_1.m4z_1,f=(t.l5i_1.n4z_1-t.k5i_1.n4z_1)*_+t.k5i_1.n4z_1,c=(t.l5i_1.q4z_1-t.k5i_1.q4z_1)*_+t.k5i_1.q4z_1;return a?t.k5i_1.r57(l,f,c):t.l5i_1.r57(l,f,c),_}function __(){R=this,this.p5i_1=3,this.q5i_1=3}function l_(){return null==R&&new __,R}function f_(){l_(),this.d5i_1=new ll(0,0,0),this.e5i_1=new ll(-.5,0,0),this.f5i_1=new ll(.5,0,0),this.g5i_1=new ll(1,0,0),this.h5i_1=new ll(0,1,0),this.i5i_1=new ll(0,0,1);var t;t=Math.sqrt(3),this.j5i_1=t,this.k5i_1=_l(),this.l5i_1=_l();l_(),l_(),this.m5i_1=new Float32Array(Hr(3,3));l_(),l_(),this.n5i_1=new Float32Array(Hr(Hr(3,3),3)),this.o5i_1=-1}function c_(){this.f5j_1=_l(),this.g5j_1=1,this.h5j_1=-1}function v_(){this.d4w_1=Y_(),this.e4w_1=Lh(),this.f4w_1=Bh().s50_1,this.g4w_1=Bh().s50_1,this.h4w_1=Bh().s50_1;var t;t=Bh().e55(45),this.i4w_1=t}function w_(){P=this,this.d4v_1=new p_(6378137,298.257223563),this.e4v_1=new p_(6378245,298.3)}function d_(){return null==P&&new w_,P}function p_(t,n){d_(),this.m5j_1=t,this.n5j_1=n}function m_(){return t=Us(Kr(g_)),g_.call(t),t;var t}function g_(){this.e54_1=V_(1,0,0,1),this.f54_1=V_(-1,0,0,1),this.g54_1=V_(0,1,0,1),this.h54_1=V_(0,-1,0,1),this.i54_1=V_(0,0,-1,1),this.j54_1=V_(0,0,1,1),this.k54_1=new cl(0,0,1,1);var t;t=[this.i54_1,this.j54_1,this.e54_1,this.f54_1,this.h54_1,this.g54_1],this.l54_1=t,this.m54_1=T_()}function $_(){return t=Us(Kr(y_)),y_.call(t),t;var t}function y_(){this.e4z_1=_l(),this.f4z_1=_l()}function b_(){return t=Us(Kr(x_)),x_.call(t,Bh().s50_1,Bh().s50_1),t;var t}function k_(){L=this,this.z4v_1=1e-15,this.a4w_1=Vs([Hs(-12,-45),Hs(-11,-30),Hs(-10,20),Hs(-9,45),Hs(-8,40),Hs(-7,35),Hs(-6,30),Hs(-5,25),Hs(-4,-15),Hs(-3,0),Hs(-2,45),Hs(-1,30),Hs(0,30),Hs(1,20),Hs(2,20),Hs(3,25),Hs(4,30),Hs(5,35),Hs(6,30),Hs(7,25),Hs(8,-30),Hs(9,-30),Hs(10,-30),Hs(11,-45),Hs(12,-45)])}function j_(){return null==L&&new k_,L}function x_(t,n){j_(),this.j4w_1=t,this.k4w_1=n}function z_(){return t=Us(Kr(E_)),E_.call(t,Y_(),Lh(),0,Bh().s50_1,Bh().s50_1,Bh().s50_1),t;var t}function E_(t,n,i,e,r,s){this.r4z_1=t,this.s4z_1=n,this.t4z_1=i,this.u4z_1=e,this.v4z_1=r,this.w4z_1=s}function C_(){F=this;var t;t=new Float64Array([1,0,0,0,1,0,0,0,1]),this.o5k_1=t}function S_(){return null==F&&new C_,F}function q_(){return t=Us(Kr(O_)),n=S_().o5k_1.slice(),O_.call(t,n),t;var t,n}function O_(t){S_(),this.q59_1=t}function I_(){U=this,this.t5k_1=1e-8,this.u5k_1=1e-20,this.v5k_1=1e-10,this.w5k_1=32;var t;t=new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.x5k_1=t}function A_(){return null==U&&new I_,U}function T_(){return t=Us(Kr(D_)),n=A_().x5k_1.slice(),D_.call(t,n),t;var t,n}function D_(t){A_(),this.g4z_1=t}function M_(t){return function(t,n){return P_.call(n,t.f5l_1,t.g5l_1,t.h5l_1,t.i5l_1),n}(t,Us(Kr(P_)))}function N_(){H=this}function R_(){return null==H&&new N_,H}function P_(t,n,i,e){R_(),this.f5l_1=t,this.g5l_1=n,this.h5l_1=i,this.i5l_1=e}function L_(t,n){Es.call(this,t,n)}function F_(){return function(){if(B)return rs();B=!0,V=new L_("FRACTION",0),new L_("INSET_PIXELS",1),new L_("PIXELS",2)}(),V}function U_(){Y=this,this.r5l_1=1e-10}function H_(){return null==Y&&new U_,Y}function V_(t,n,i,e){return function(t,n,i,e,r){return B_.call(r),r.r5j(t,n,i,e),r}(t,n,i,e,Us(Kr(B_)))}function B_(){H_(),this.b5i_1=new ll(0,0,1),this.c5i_1=0}function Y_(){return t=Us(Kr(J_)),J_.call(t,Bh().s50_1,Bh().s50_1,0),t;var t}function W_(t){return function(t,n){return J_.call(n,t.j4w_1,t.k4w_1,t.n4w_1),n}(t,Us(Kr(J_)))}function G_(){W=this}function K_(){return null==W&&new G_,W}function J_(t,n,i){K_(),x_.call(this,t,n),this.n4w_1=i}function X_(){return t=Us(Kr(Z_)),Z_.call(t,0,0),t;var t}function Z_(t,n){this.j56_1=t,this.k56_1=n}function Q_(){return t=Us(Kr(el)),el.call(t,Bh().s50_1,Bh().s50_1,Bh().s50_1,Bh().s50_1),t;var t}function tl(t){return function(t,n){return el.call(n,t.r5e_1,t.s5e_1,t.t5e_1,t.u5e_1),n}(t,Us(Kr(el)))}function nl(){G=this}function il(){return null==G&&new nl,G}function el(t,n,i,e){il(),this.r5e_1=t,this.s5e_1=n,this.t5e_1=i,this.u5e_1=e}function rl(t,n,i,e,r,s){this.i5m_1=t,this.j5m_1=n,this.k5m_1=i,this.l5m_1=e,this.m5m_1=r,this.n5m_1=s}function sl(){K=this}function ol(){return null==K&&new sl,K}function ul(t,n){ol(),this.t5m_1=t,this.u5m_1=n}function al(){return t=Us(Kr(hl)),hl.call(t,0,0),t;var t}function hl(t,n){this.m4z_1=t,this.n4z_1=n}function _l(){return t=Us(Kr(ll)),ll.call(t,0,0,0),t;var t}function ll(t,n,i){hl.call(this,t,n),this.q4z_1=i}function fl(){return t=Us(Kr(cl)),cl.call(t,0,0,0,0),t;var t}function cl(t,n,i,e){this.n4x_1=t,this.o4x_1=n,this.p4x_1=i,this.q4x_1=e}function vl(){if(Z)return rs();Z=!0,J=new wl("N",0),X=new wl("S",1)}function wl(t,n){Es.call(this,t,n)}function dl(){return vl(),J}function pl(){return vl(),X}function ml(){Q=this}function gl(){return null==Q&&new ml,Q}function $l(t,n,i){gl(),this.y5n_1=t,this.z5n_1=n,this.a5o_1=i}function yl(){tt=this,this.b5o_1=0,this.c5o_1=1,this.d5o_1=2,this.e5o_1=4,this.f5o_1=8,this.g5o_1=64,this.h5o_1=128,this.i5o_1=512,this.j5o_1=1024,this.k5o_1=4096,this.l5o_1=8192,this.m5o_1=1.5707963267948966,this.n5o_1=5,this.o5o_1=-1.3962634015954636,this.p5o_1=1.4660765716752369,this.q5o_1=.017453292519943295,this.r5o_1=57.29577951308232,this.s5o_1=0,this.t5o_1=4e6,this.u5o_1=2e6,this.v5o_1=1e5,this.w5o_1="CC",this.x5o_1="CD",this.y5o_1="BR",this.z5o_1="BN",this.a5p_1=0,this.b5p_1=1,this.c5p_1=2,this.d5p_1=3,this.e5p_1=4,this.f5p_1=5,this.g5p_1=6,this.h5p_1=7,this.i5p_1=8,this.j5p_1=9,this.k5p_1=10,this.l5p_1=11,this.m5p_1=12,this.n5p_1=13,this.o5p_1=14,this.p5p_1=15,this.q5p_1=16,this.r5p_1=17,this.s5p_1=18,this.t5p_1=19,this.u5p_1=20,this.v5p_1=21,this.w5p_1=22,this.x5p_1=23,this.y5p_1=24,this.z5p_1=25,this.a5q_1=3,this.b5q_1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var t;t=[new Int32Array([0,9,25,25,8e5,8e5]),new Int32Array([1,0,17,25,2e6,8e5]),new Int32Array([24,9,25,15,8e5,13e5]),new Int32Array([25,0,9,15,2e6,13e5])],this.c5q_1=t;var n;n=[new Float64Array([2,11e5,-72,-80.5,0]),new Float64Array([3,2e6,-64,-72,2e6]),new Float64Array([4,28e5,-56,-64,2e6]),new Float64Array([5,37e5,-48,-56,2e6]),new Float64Array([6,46e5,-40,-48,4e6]),new Float64Array([7,55e5,-32,-40,4e6]),new Float64Array([9,64e5,-24,-32,6e6]),new Float64Array([10,73e5,-16,-24,6e6]),new Float64Array([11,82e5,-8,-16,8e6]),new Float64Array([12,91e5,0,-8,8e6]),new Float64Array([13,0,8,0,0]),new Float64Array([15,8e5,16,8,0]),new Float64Array([16,17e5,24,16,0]),new Float64Array([17,26e5,32,24,2e6]),new Float64Array([18,35e5,40,32,2e6]),new Float64Array([19,44e5,48,40,4e6]),new Float64Array([20,53e5,56,48,4e6]),new Float64Array([21,62e5,64,56,6e6]),new Float64Array([22,7e6,72,64,6e6]),new Float64Array([23,79e5,84.5,72,6e6])],this.d5q_1=n}function bl(){return null==tt&&new yl,tt}function kl(t,n,i,e,r,s){var o,u,a=e,h=r;bl();var _=new Int32Array(3),l=5-s|0,f=Math.pow(10,l);a=jl(0,a/f)*f,h=jl(0,h/f)*f,function(t,n){var i,e,r,s=n%6|0;0===s&&(s=6),bl(),0===Cs(t.w5n_1,"CC")?r=!0:(bl(),r=0===Cs(t.w5n_1,"CD")),r?e=!0:(bl(),e=0===Cs(t.w5n_1,"BR")),e?i=!0:(bl(),i=0===Cs(t.w5n_1,"BN"));var o,u=i?0:1;switch(s){case 1:case 4:var a=t;bl(),a.n5n_1=0;var h=t;bl(),h.o5n_1=7;break;case 2:case 5:var _=t;bl(),_.n5n_1=9;var l=t;bl(),l.o5n_1=17;break;case 3:case 6:var f=t;bl(),f.n5n_1=18;var c=t;bl(),c.o5n_1=25}o=1===u?0==(s%2|0)?5e5:0:0==(s%2|0)?15e5:1e6,t.p5n_1=o}(t,n);var c=function(t,n){bl();var i=0;bl();var e=57.29577951308232*n;if(e>=72&&e<84.5){var r=t;bl(),r.q5n_1=23}else if(e>-80.5&&e<72){bl();var s=n+1.3962634015954636;bl();var o=s/.13962634015954636+1e-12;t.q5n_1=Ms(bl().d5q_1[Ms(o)][0])}else{var u=i;bl(),i=1|u}return i}(t,i);if(_[0]=t.q5n_1,bl(),0===c){1e7===(u=h)&&(u-=1);t:for(;;){var v=u;if(bl(),!(v>=2e6))break t;var w=u;bl(),u=w-2e6}var d=u+=t.p5n_1;if(bl(),d>=2e6){var p=u;bl(),u=p-2e6}var m=u;bl(),_[2]=Ms(m/1e5);var g=_[2];bl(),g>7&&(_[2]=_[2]+1|0);var $=_[2];bl(),$>13&&(_[2]=_[2]+1|0),o=a;var y=_[0];bl(),21===y&&31===n&&5e5===o&&(o-=1);var b,k=t.n5n_1,j=o;bl(),_[1]=k+(Ms(j/1e5)-1|0)|0;var x=t.n5n_1;if(bl(),9===x){var z=_[1];bl(),b=z>13}else b=!1;b&&(_[1]=_[1]+1|0),xl(t,n,_,a,h,s)}return c}function jl(t,n){var i,e=n-(i=Math.floor(n)),r=Xs(i);return(e>.5||.5===e&&r.j8(new ts(2,0)).equals(new ts(1,0)))&&(r=r.ui()),r.ve()}function xl(t,n,i,e,r,s){var o=e,u=r;t.m5n_1=0!==n?ab("%02d",[n]):" ";var a=0;if(a<=2)do{var h=a;if(a=a+1|0,i[h]<0||i[h]>26)return rs();var _=t,l=t.m5n_1;bl(),_.m5n_1=l+new Qs(Zs("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i[h]))}while(a<=2);var f=5-s|0,c=Math.pow(10,f);(o%=1e5)>=99999.5&&(o=99999);var v=Ms(o/c),w=new to(v.toString());if(w.rb()>s)w=new to(w.lg(0,s-1|0));else{var d=0,p=s-w.rb()|0;if(d=99999.5&&(u=99999);var m=Ms(u/c),g=new to(m.toString());if(g.rb()>s)g=new to(g.lg(0,s-1|0));else{var $=0,y=s-g.rb()|0;if($1.567855942887398e-7&&o<=20;)o=o+1|0,Yf(0,u,e)1.567855942887398e-7&&a<=20))break t;a=a+1|0;var c=h.j4w_1-e,v=Vr(c),w=l.j4w_1-e;v!==Vr(w)?_=l:h=l,l=Bf(0,h,_)}r=l}return null!=r&&(r=new x_(e,r.k4w_1)),r}function Bf(t,n,i){var e=n.g5k(i),r=n.h5k(i);return n.i5k(e,r/2,b_())}function Yf(t,n,i){var e,r=n.k4w_1-i;return(e=Math.abs(r))<180?e:360-e}function Wf(t,n){var i;if(Uf(),n.x6c("look_at_latitude")?(Uf(),i=!n.x6c("look_at_longitude")):i=!0,i){var e;t.h6c_1.e4z_1.t54(n.d53_1),n.g53_1.i4z(t.h6c_1.f4z_1),n.x5g().h50(t.h6c_1,t.i6c_1)?(n.j5h().x4z(t.i6c_1.m4z_1,t.i6c_1.n4z_1,t.i6c_1.q4z_1,t.j6c_1),Uf(),n.z6c("look_at_latitude",new o_(t.j6c_1.j4w_1)),Uf(),n.z6c("look_at_longitude",new o_(t.j6c_1.k4w_1)),e=t.i6c_1.c5j(n.d53_1)):(Uf(),n.y6c("look_at_latitude"),Uf(),n.y6c("look_at_longitude"),e=n.a53_1);var r=e,s=n.b52(r);Uf(),n.z6c("graticule_pixel_size",s);var o=Bh().p5h(s/n.j5h().c52());Uf(),n.z6c("graticule_label_offset",o*n.e53_1.p4x_1/4)}}function Gf(t){Uf(),yf.call(this,t),this.f6c_1=!1,this.g6c_1=_l(),this.h6c_1=$_(),this.i6c_1=_l(),this.j6c_1=Y_(),this.k6c_1=new sc,this.l6c_1=_l(),this.m6c_1=0,this.n6c_1=0,this.o6c_1=0,this.p6c_1=0,this.a6d()}function Kf(t,n){uy.call(this,n),this.h6f_1=t,this.i6f_1=null}function Jf(){zt=this,this.n6f_1=-80,this.o6f_1=84,this.p6f_1="Graticule.UTM.100000m",this.q6f_1="Graticule.UTM.10000m",this.r6f_1="Graticule.UTM.1000m",this.s6f_1="Graticule.UTM.100m",this.t6f_1="Graticule.UTM.10m",this.u6f_1="Graticule.UTM.1m",this.v6f_1=1e5}function Xf(){return null==zt&&new Jf,zt}function Zf(t,n,i){Xf(),Gf.call(this,t);var e,r=new Sc(this);r.x6f_1=n,r.b6g(i),e=r,this.u6g_1=e;Xf(),Xf(),Xf(),Xf(),Xf(),Xf(),this.v6g_1=wo(["Graticule.UTM.100000m","Graticule.UTM.10000m","Graticule.UTM.1000m","Graticule.UTM.100m","Graticule.UTM.10m","Graticule.UTM.1m"])}function Qf(){Et=this,this.z6i_1="DrawGraticule",this.a6j_1="GraticuleLineColor",this.b6j_1="GraticuleLineWidth",this.c6j_1="DrawLabels",this.d6j_1="LabelColor",this.e6j_1="LabelFont"}function tc(){return null==Et&&new Qf,Et}function nc(){tc(),this.f6j_1=po()}function ic(t,n,i,e){if(null!=n){tc();var r=n.q1n("LabelColor");if(r instanceof Og){var s=rc(0,r,e),o=new Float32Array(3);s.m6j(o);var u=o[2]<.5?1:0;i.p6e_1.v6j(s),i.p6e_1.w6j(new Og(u,u,u,s.h4u_1))}tc(),(r=n.q1n("LabelFont"))instanceof Zj&&i.p6e_1.x6j(r)}}function ec(t,n,i,e,r){null!=i&&e.y6j(function(t,n,i,e){var r,s=t.s6c_1.g2(n);if(null==s){var o=function(t,n,i){var e=Y$();e.z6j_1=!1,e.a6k_1=!0,tc();var r=n.q1n("GraticuleLineColor");r instanceof Og&&e.w6j(rc(0,r,i)),tc();var s=n.l6j("GraticuleLineWidth");return null!=s&&(e.f6k_1=s),e}(0,i,e);t.s6c_1.f4(n,o),r=o}else r=s;return r}(t,n,i,r))}function rc(t,n,i){return i>=1?n:new Og(n.e4u_1,n.f4u_1,n.g4u_1,n.h4u_1*i)}function sc(){var t;t=os(),this.q6c_1=t;var n;n=os(),this.r6c_1=n;var i;i=os(),this.s6c_1=i,this.t6c_1=null}function oc(t,n,i){return function(t,n,i,e){return hc.call(e,t,n,i,Bh().s50_1),e}(t,n,i,Us(Kr(hc)))}function uc(){Ct=this,this.k6k_1="GridElement_Line",this.l6k_1="GridElement_LineNorth",this.m6k_1="GridElement_LineSouth",this.n6k_1="GridElement_LineWest",this.o6k_1="GridElement_LineEast",this.p6k_1="GridElement_LineNorthing",this.q6k_1="GridElement_LineEasting",this.r6k_1="GridElement_GridZoneLabel",this.s6k_1="GridElement_LongitudeLabel",this.t6k_1="GridElement_LatitudeLabel"}function ac(){return null==Ct&&new uc,Ct}function hc(t,n,i,e){ac(),this.u6k_1=t,this.v6k_1=n,this.w6k_1=i,this.x6k_1=e}function _c(t,n){for(var i=function(t,n){var i=gs(),e=n.x5g().q55(),r=function(t,n){var i=null;if(n.r5e_1<84&&n.s5e_1>-80){var e=yo(n.r5e_1,-80),r=bo(n.s5e_1,84),s=il().y5l(e,n.t5e_1,r-e,n.v5e()),o=lc(0,s.t5e_1),u=lc(0,s.u5e_1),a=fc(0,s.r5e_1),h=fc(0,s.s5e_1);a<=17&&h>=17&&30===u&&(u=31),a<=19&&h>=19&&(31===o&&(o=30),31===u&&(u=32),33===o&&(o=32),33===u&&(u=34),35===o&&(o=34),35===u&&(u=36)),i=new cl(o,a,u,h)}return i}(0,e);if(null!=r){var s=r.o4x_1,o=r.q4x_1;if(s<=o)do{var u=s;s=s+1|0;var a=r.n4x_1,h=r.p4x_1;if(a<=h)do{var _=a;if(a=a+1|0,19!==u||31!==_&&33!==_&&35!==_){var l,f=t.f6m_1[u][_];if(null==f){var c=new yc(t,cc(0,u,_));t.f6m_1[u][_]=c,l=c}else l=f;var v=l;v.k6f(n)?i.a(v):v.m6f()}}while(_!==h)}while(u!==o)}return e.s5e_1>84&&(null==t.g6m_1[2]&&(t.g6m_1[2]=new yc(t,il().y5l(84,-180,6,180))),null==t.g6m_1[3]&&(t.g6m_1[3]=new yc(t,il().y5l(84,0,6,180))),i.a(ws(t.g6m_1[2])),i.a(ws(t.g6m_1[3]))),e.r5e_1<-80&&(null==t.g6m_1[0]&&(t.g6m_1[0]=new yc(t,il().y5l(-90,-180,10,180))),null==t.g6m_1[1]&&(t.g6m_1[1]=new yc(t,il().y5l(-90,0,10,180))),i.a(ws(t.g6m_1[0])),i.a(ws(t.g6m_1[1]))),i}(t,n).d();i.e();)i.f().e6d(n)}function lc(t,n){var i,e=(n+180)/6;return i=Math.floor(e),ko(Ms(i),59)}function fc(t,n){var i,e=(n+80)/8;return i=Math.floor(e),ko(Ms(i),19)}function cc(t,n,i){var e=-80+Hr(n,8)|0,r=e+(72!==e?8:12)|0,s=-180+Hr(i,6)|0,o=s+6|0;return 17===n&&30===i?o=o-3|0:17===n&&31===i?s=s-3|0:19===n&&30===i?o=o+3|0:19===n&&31===i?(s=s+3|0,o=o-3|0):19===n&&32===i?(s=s-3|0,o=o+3|0):19===n&&33===i?(s=s+3|0,o=o-3|0):19===n&&34===i?(s=s-3|0,o=o+3|0):19===n&&35===i?(s=s+3|0,o=o-3|0):19===n&&36===i&&(s=s-3|0),il().y5l(e,s,r-e|0,o-s|0)}function vc(){St=this,this.j6m_1=1e6,this.k6m_1=5e5,this.l6m_1="Graticule.MGRS.Overview",this.m6m_1="Graticule.MGRS.GridZone",this.n6m_1=5e6}function wc(){return null==St&&new vc,St}function dc(){wc(),Zf.call(this,"MGRS graticule",1e5,1e5);for(var t=0,n=ms(Array(20),null);t<20;){var i,e=t;i=ms(Array(60),null),n[e]=i,t=t+1|0}this.f6m_1=n;var r;r=ms(Array(4),null),this.g6m_1=r,this.h6m_1=new jc(this);var s;wc(),wc();var o=jo(["Graticule.MGRS.Overview","Graticule.MGRS.GridZone"]);o.l(Kr(Zf).w6g.call(this)),s=o,this.i6m_1=s}function pc(t){for(var n=ws(t.k6l_1).d();n.e();)mc(0,n.f())}function mc(t,n){var i=Bh().p5h(1567855942887398e-21),e=null;if(n.y6m(new J_(n.v6h_1.j4w_1,n.v6h_1.k4w_1,0))?e=gl().i5n(n.v6h_1.j4w_1,n.v6h_1.k4w_1):n.y6m(n.q6h_1)?e=gl().i5n(i_(Wh(n.q6h_1.j4w_1,i)),e_(Wh(n.q6h_1.k4w_1,i))):n.y6m(n.r6h_1)?e=gl().i5n(i_(Wh(n.r6h_1.j4w_1,i)),e_(Jh(n.r6h_1.k4w_1,i))):n.y6m(n.s6h_1)?e=gl().i5n(i_(Jh(n.s6h_1.j4w_1,i)),e_(Wh(n.s6h_1.k4w_1,i))):n.y6m(n.t6h_1)&&(e=gl().i5n(i_(Jh(n.t6h_1.j4w_1,i)),e_(Jh(n.t6h_1.k4w_1,i)))),null!=e){var r,s=n;r=e.toString().substring(3,5),s.v6i_1=r}}function gc(){qt=this,this.z6m_1=1e5,this.a6n_1=2e6,this.b6n_1=3e6}function $c(){return null==qt&&new gc,qt}function yc(t,n){$c(),Kf.call(this,t,n);var i,e=n.s5e_1;if(Xf(),e>84)i=!0;else{var r=n.r5e_1;Xf(),i=r<-80}this.g6l_1=i,this.k6l_1=null;var s=gl().i5n(n.z5i(),n.a5j());if(this.g6l_1){var o;o=s.toString().substring(2,3),this.h6l_1=o,this.i6l_1=n.r5e_1>0?dl():pl(),this.j6l_1=0}else{var u;u=s.toString().substring(0,3),this.h6l_1=u;var a=Hl().i5n(n.z5i(),n.a5j());this.i6l_1=a.h5q_1,this.j6l_1=a.g5q_1}}function bc(){Ot=this;var t;t=[new Int32Array([3,56,64]),new Int32Array([6,64,72]),new Int32Array([9,72,84]),new Int32Array([21,72,84]),new Int32Array([33,72,84])],this.c6n_1=t,this.d6n_1="CDEFGHJKLMNPQRSTUVWX"}function kc(){return null==Ot&&new bc,Ot}function jc(t){kc(),Kf.call(this,t,Q_())}function xc(){this.f6n_1=1e6,this.g6n_1=0,this.h6n_1=1e7,this.i6n_1=0,this.j6n_1=dl(),this.k6n_1=pl()}function zc(t,n,i){var e=t.w6f_1.v6c(n),r=n.d53_1.c5j(i);return Cc(),r<10*e}function Ec(){It=this,this.l6n_1=-.5,this.m6n_1=-.5,this.n6n_1=10}function Cc(){return null==It&&new Ec,It}function Sc(t){Cc(),this.w6f_1=t,this.x6f_1=1e7,this.y6f_1=1e5,this.z6f_1=0,this.a6g_1=null}function qc(t,n,i,e,r,s,o){Dc.call(this,t,n,i,e,r,s,o),this.l6o_1=null}function Oc(t){return!!(t.y6m(t.s6h_1)&&t.y6m(t.t6h_1)&&t.y6m(t.q6h_1))&&t.y6m(t.r6h_1)}function Ic(t){var n=wo([t.q6h_1,t.r6h_1,t.s6h_1,t.t6h_1]);if(!function(t,n){for(var i=null,e=n.d();e.e();){var r=e.f();if(null!=i){var s=i.k4w_1,o=Vr(s),u=r.k4w_1;if(o!==Vr(u)){var a,h=i.k4w_1-r.k4w_1;if((a=Math.abs(h))>180&&a<360)return!0}}i=r}return!1}(0,n))return n;for(var i,e=0,r=n.d();r.e();){var s=r.f(),o=s.k4w_1;if(180!==Math.abs(o)){var u=s.k4w_1;e=Vr(u)}}if(0===e)return n;var a,h=t.q6h_1.k4w_1;if(180===Math.abs(h)){var _=t.q6h_1.k4w_1;i=!(Vr(_)===e)}else i=!1;i&&(t.q6h_1=new J_(t.q6h_1.j4w_1,Zh(t.q6h_1.k4w_1),t.q6h_1.n4w_1));var l,f=t.r6h_1.k4w_1;if(180===Math.abs(f)){var c=t.r6h_1.k4w_1;a=!(Vr(c)===e)}else a=!1;a&&(t.r6h_1=new J_(t.r6h_1.j4w_1,Zh(t.r6h_1.k4w_1),t.r6h_1.n4w_1));var v,w=t.s6h_1.k4w_1;if(180===Math.abs(w)){var d=t.s6h_1.k4w_1;l=!(Vr(d)===e)}else l=!1;l&&(t.s6h_1=new J_(t.s6h_1.j4w_1,Zh(t.s6h_1.k4w_1),t.s6h_1.n4w_1));var p=t.t6h_1.k4w_1;if(180===Math.abs(p)){var m=t.t6h_1.k4w_1;v=!(Vr(m)===e)}else v=!1;return v&&(t.t6h_1=new J_(t.t6h_1.j4w_1,Zh(t.t6h_1.k4w_1),t.t6h_1.n4w_1)),wo([t.q6h_1,t.r6h_1,t.s6h_1,t.t6h_1])}function Ac(){At=this,this.o6o_1=50}function Tc(){return null==At&&new Ac,At}function Dc(t,n,i,e,r,s,o){Tc(),Kf.call(this,t,Q_()),this.j6h_1=n,this.k6h_1=i,this.l6h_1=e,this.m6h_1=r,this.n6h_1=s,this.o6h_1=o,this.p6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1/2,this.n6h_1+this.o6h_1/2),this.q6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1,this.n6h_1),this.r6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1,this.n6h_1),this.s6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1,this.n6h_1+this.o6h_1),this.t6h_1=t.z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1,this.n6h_1+this.o6h_1);var u,a=function(t,n){for(var i=Bh().t50_1,e=Bh().v50_1,r=Bh().u50_1,s=Bh().w50_1,o=n.d();o.e();){var u=o.f(),a=u.j4w_1;ar&&(r=a);var h=u.k4w_1;hs&&(s=h)}return new el(i,r,e,s)}(0,Ic(this));Oc(this)||a.c5m(this.l6h_1);var h=a;this.s60_1.i5f(h),u=h,this.u6h_1=u,this.v6h_1=this.u6h_1.a5m(b_()),this.w6h_1=!Oc(this),this.x6h_1=!(this.y6m(this.s6h_1)||this.y6m(this.t6h_1)||this.y6m(this.q6h_1)||this.y6m(this.r6h_1))}function Mc(t,n){var i=t.w6i_1;return!0===(null==i?null:i.k6f(n))}function Nc(t,n){var i=t.x6i_1;return!0===(null==i?null:i.k6f(n))}function Rc(t,n,i,e,r,s,o){Dc.call(this,t,n,i,e,r,s,o),this.v6i_1=null,this.w6i_1=null,this.x6i_1=null,this.y6i_1=null}function Pc(){Tt=this}function Lc(){return null==Tt&&new Pc,Tt}function Fc(t,n,i,e){Lc(),cx.call(this,t,n,i,e)}function Uc(){Dt=this}function Hc(){return null==Dt&&new Uc,Dt}function Vc(t,n,i,e){Hc(),el.call(this,Hc().g6q(t),Hc().g6q(n),i,e),this.z6o_1=t,this.a6p_1=n}function Bc(t){this.h6q_1=t}function Yc(t,n,i,e){Yj.call(this,t),this.s6q_1=new Bc(this);var r,s=new Vc(-1,1,Bh().w50_1,Bh().v50_1),o=new x_(s.r5e_1,s.t5e_1),u=new x_(s.w5e(),s.v5e()),a=cy(s,o,u,n,i,i),h=new Wc(this.s6q_1,a);e||h.o6r(new Zg(Xg())),h.f6r_1=1,r=h,this.z6r(r)}function Wc(t,n){ny.call(this,t,n)}function Gc(t,n,i,e,r){Es.call(this,t,n),this.e6t_1=i,this.f6t_1=e,this.g6t_1=r}function Kc(t){Yc.call(this,t.e6t_1,22,256,t.g6t_1),this.s6t_1=t.f6t_1}function Jc(){Rt=this;var t=new qo("earth.worldwind.layer.starfield.StarFieldLayer.StarMetadata",this,6);t.n3a("name",!1),t.n3a("description",!1),t.n3a("datatype",!1),t.n3a("arraysize",!1),t.n3a("unit",!1),t.n3a("ucd",!1),this.u6t_1=t}function Xc(){return null==Rt&&new Jc,Rt}function Zc(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Mo(t,63,Xc().u6t_1),a.v6t_1=n,a.w6t_1=i,a.x6t_1=e,a.y6t_1=r,a.z6t_1=s,a.a6u_1=o,a}(t,n,i,e,r,s,o,0,Us(Kr(rv)))}function Qc(){Pt=this;var t;t=[new No(Xc()),new No(new No(Ro()))],this.b6u_1=t}function tv(){return null==Pt&&new Qc,Pt}function nv(){Lt=this;var t=new qo("earth.worldwind.layer.starfield.StarFieldLayer.StarData",this,2);t.n3a("metadata",!1),t.n3a("data",!1),this.c6u_1=t}function iv(){return null==Lt&&new nv,Lt}function ev(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,iv().c6u_1),r.d6u_1=n,r.e6u_1=i,r}(t,n,i,0,Us(Kr(sv)))}function rv(){}function sv(t,n){tv(),this.d6u_1=t,this.e6u_1=n}function ov(t){t=t===Xr?(null==v&&new Sa,v).m4t_1:t,yf.call(this,"StarField"),this.m6u_1=!1,this.n6u_1=t,this.o6u_1=hx().i64(Ca().k4t_1),this.p6u_1=128,this.q6u_1=!0,this.r6u_1=null,this.s6u_1=T_(),this.t6u_1=this.s6v(),this.u6u_1=0,this.v6u_1=null;Yo(),this.w6u_1=34028235e31;Yo(),this.x6u_1=14e-46,this.y6u_1=0,this.z6u_1=!1,this.a6v_1=1e7,this.b6v_1=this.s6v(),this.c6v_1=new Float32Array(4),this.d6v_1=0}function uv(){var t,n;u$.call(this),t=["//.x = declination\n//.y = right ascension\n//.z = point size\n//.w = magnitude\nattribute vec4 vertexPoint;\n\nuniform mat4 mvpMatrix;\n/* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\nuniform float numDays;\nuniform vec2 magnitudeRange;\n\nvarying float magnitudeWeight;\n\n/* normalizes an angle between 0.0 and 359.0 */\nfloat normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n}\n\n/* transforms declination and right ascension in cartesian coordinates */\nvec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n}\n\n/* normalizes a value between 0.0 and 1.0 */\nfloat normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n}\n\nvoid main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n}","precision mediump float;\n\nuniform sampler2D textureSampler;\nuniform int textureEnabled;\n\nvarying float magnitudeWeight;\n\nconst vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\nconst vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\nvoid main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n/* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n}"],this.h6v_1=t,n=["vertexPoint"],this.i6v_1=n,this.j6v_1=jx().f67_1,this.k6v_1=jx().f67_1,this.l6v_1=jx().f67_1,this.m6v_1=jx().f67_1,this.n6v_1=jx().f67_1,this.o6v_1=new Float32Array(16)}function av(t){this.n6w_1=t}function hv(){Ft=this}function _v(){return null==Ft&&new hv,Ft}function lv(t,n,i,e,r){_v(),Vj.call(this,function(t,n,i){return ol().r5m(n,4,2,256,256,i)}(_v(),e,r),function(t,n,i,e){var r=new fv(n,i);return r.k6w_1=e,new av(jv(r))}(_v(),t,n,i))}function fv(t,n){this.f6w_1=t,this.g6w_1=n,this.h6w_1="1.3.0",this.i6w_1=null,this.j6w_1="EPSG:4326",this.k6w_1=null,this.l6w_1=!0,this.m6w_1=null}function cv(t){return t.a6x_1}function vv(t,n){var i,e=n.h(0).t6y(),r=null==e?null:e.y6y(),s=null==r?null:r.b6z_1,o=null==s?null:s.n6z_1;if(!(null!=o&&o>=n.g()))throw i=wx().s5m("WmsLayerFactory","createFromWmsAsync","The number of layers specified exceeds the services limit"),cs(ss(i));var u=t.r6z(n),a=t.s6z(n);return new ny(jv(u),function(t,n){return fy(t.a71_1,t.b71_1,t.c71_1,t.d71_1,t.e71_1,t.f71_1,n),n}(a,Us(Kr(vy))))}function wv(t){var n,i=t,e=t.x4h();return e.i4j(),n=e,i.g4h_1=n.f1c(),rs()}function dv(t){Yj.call(this,as(t,",",Xr,Xr,Xr,Xr,cv)),this.z6r(vv(kv(),t))}function pv(t,n){this.b70_1=t,Jo.call(this,n)}function mv(t,n){var i=new pv(t,n),e=function(t,n){return i.d70(t,n)};return e.$arity=1,e}function gv(t){var n=t.z6w_1;return null==n?"":n}function $v(t,n,i,e){Jo.call(this,e),this.m70_1=t,this.n70_1=n,this.o70_1=i}function yv(t,n,i){Jo.call(this,i),this.g6y_1=t,this.h6y_1=n}function bv(){Ut=this,this.o6z_1=20,this.p6z_1=wo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.q6z_1=_u(Xr,wv)}function kv(){return null==Ut&&new bv,Ut}function jv(t){return function(t,n){return xv.call(n,t.f6w_1,t.h6w_1,t.g6w_1,t.i6w_1),n.t6w_1=t.j6w_1,n.u6w_1=t.k6w_1,n.v6w_1=t.l6w_1,n.w6w_1=t.m6w_1,n}(t,Us(Kr(xv)))}function xv(t,n,i,e){this.p6w_1=t,this.q6w_1=n,this.r6w_1=i,this.s6w_1=e,this.t6w_1="EPSG:4326",this.u6w_1=null,this.v6w_1=!0,this.w6w_1=null}function zv(t,n){var i,e=function(t,n){for(var i=n.j74(),e=gs(),r=i.d();r.e();){var s=r.f();Dv().d73_1.n(s.f74_1)&&e.a(s)}for(var o=e,u=du(wu(o,10)),a=o.d();a.e();){var h;h=a.f().e74_1,u.a(h)}return u}(0,n);if(e.m())throw i=wx().s5m("WmtsLayerFactory","createWmtsLayer","Coordinate Systems Not Compatible"),cs(ss(i));var r=function(t,n,i){for(var e=new Ev,r=i.d();r.e();){var s=r.f();e.z72_1=s,e.a73_1.d3();var o=ws(n.q73(s)),u=0,a=o.i74_1.d();t:for(;a.e();){var h=a.f();if(Hr(2,h.a74_1)===h.z73_1&&0==(h.z73_1%2|0)&&0==(h.a74_1%2|0)&&h.y73_1===h.x73_1&&!(h.a74_1<2)){var _=h.w73_1,l=pu("\\s+").ch(_,0);if(2===l.g()){var f;try{f=new Float64Array([go(l.h(0)),go(l.h(1))])}catch(t){if(t instanceof Ts){wx().v4w(wx().r4w_1,"WmtsLayerFactory","determineTileSchemeCompatibleTileMatrixSet","Unable to parse TopLeftCorner values");continue t}throw t}var c=f;if("urn:ogc:def:crs:OGC:1.3:CRS84"===o.f74_1||"http://www.opengis.net/def/crs/OGC/1.3/CRS84"===o.f74_1){var v=c[0]+180;if(Math.abs(v)>1e-9)continue t;var w=c[1]-90;if(Math.abs(w)>1e-9)continue t}else{if("urn:ogc:def:crs:EPSG::4326"!==o.f74_1)continue t;var d=c[1]+180;if(Math.abs(d)>1e-9)continue t;var p=c[0]-90;if(Math.abs(p)>1e-9)continue t}(0===u||Hr(2,u)===h.a74_1)&&(u=h.a74_1,e.a73_1.a(h.u73_1))}}}if(e.a73_1.g()>2)return e}return null}(0,n.y6y(),e);if(null==r){var s=wx().s5m("WmtsLayerFactory","createWmtsLayer","Tile Schemes Not Compatible");throw ks(ss(s))}var o=r;return new ny(function(t,n,i){for(var e=n.n72_1.d();e.e();){var r=e.f();if(t.c73_1.n(r.q72_1))return new Rv(vu(vu(r.s72_1,"{style}",n.j72_1.h(0).w72_1),"{TileMatrixSet}",i.b73()),i.a73_1)}var s,o=function(t,n){var i=n.y6y().m73_1;if(null==i)return null;var e=i.l74();if(null==e)return null;var r=e.n74_1;if(r.m())return null;var s=r.h(0).p74();if(s.m())return null;var o=s.h(0).r74_1;return o.m()?null:o.h(0).t74_1.n("KVP")?s.h(0).q74_1:null}(0,n);if(null==o){var u=wx().s5m("WmtsLayerFactory","getWmtsTileFactory","No KVP Get Support");throw ks(ss(u))}t:{for(var a=t.c73_1.d();a.e();){var h=a.f();if(n.k72_1.n(h)){s=h;break t}}s=null}var _=s;if(null==_){var l=wx().s5m("WmtsLayerFactory","getWmtsTileFactory","Image Formats Not Compatible");throw ks(ss(l))}var f=_,c=n.j72_1.h(0).w72_1;return new Rv(function(t,n,i,e,r,s){var o=tu().q1s(n).q4o().s4n("VERSION","1.0.0").s4n("SERVICE","WMTS").s4n("REQUEST","GetTile").s4n("LAYER",i).s4n("STYLE",r).s4n("FORMAT",e).s4n("TILEMATRIXSET",s);Nv();var u=o.s4n("TILEMATRIX","{TileMatrix}");Nv();var a=u.s4n("TILEROW","{TileRow}");return Nv(),ss(a.s4n("TILECOL","{TileCol}").f1c())}(0,o,n.f72_1,f,c,i.b73()),i.a73_1)}(t,n,o),function(t,n,i){var e=n.h72_1,r=null==e?null:e.q55();if(null==r){var s=wx().s5m("WmtsLayerFactory","createWmtsLevelSet","WGS84BoundingBox not defined for layer: "+n.f72_1);throw ks(ss(s))}var o=r,u=n.y6y().q73(i.b73());if(null==u){var a=wx().s5m("WmtsLayerFactory","createWmtsLevelSet","Compatible TileMatrixSet not found for: "+i);throw ks(ss(a))}var h=u.i74_1.h(0).y73_1;return cy(o,new x_(Bh().u50_1,Bh().w50_1),new x_(Bh().t50_1,Bh().t50_1),i.a73_1.g(),h,h)}(0,n,o))}function Ev(){var t;t=gs(),this.a73_1=t}function Cv(t){var n,i=t,e=t.x4h();return e.i4j(),n=e,i.g4h_1=n.f1c(),rs()}function Sv(t,n){var i=t.c72_1;Yj.call(this,null==i?n:i),this.z6r(zv(Dv(),t))}function qv(t,n){this.c75_1=t,Jo.call(this,n)}function Ov(t,n){var i=new qv(t,n),e=function(t,n){return i.e75(t,n)};return e.$arity=1,e}function Iv(t,n,i,e){Jo.call(this,e),this.n75_1=t,this.o75_1=n,this.p75_1=i}function Av(t,n,i){Jo.call(this,i),this.p71_1=t,this.q71_1=n}function Tv(){Ht=this,this.c73_1=wo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.d73_1=wo(["urn:ogc:def:crs:OGC:1.3:CRS84","urn:ogc:def:crs:EPSG::4326","http://www.opengis.net/def/crs/OGC/1.3/CRS84"]),this.e73_1=_u(Xr,Cv)}function Dv(){return null==Ht&&new Tv,Ht}function Mv(){Vt=this,this.s75_1="{TileMatrix}",this.t75_1="{TileRow}",this.u75_1="{TileCol}"}function Nv(){return null==Vt&&new Mv,Vt}function Rv(t,n){Nv(),this.v75_1=t,this.w75_1=n}function Pv(){Bt=this;var t=new qo("earth.worldwind.ogc.wms.WmsAttribution",this,3);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("onlineResource",!0),t.n3a("logoURL",!0),t.p3a(new gu("Attribution","http://www.opengis.net/wms","")),this.y75_1=t}function Lv(){return null==Bt&&new Pv,Bt}function Fv(t,n,i,e,r){return function(t,n,i,e,r,s){return 0!=(0&t)&&Mo(t,0,Lv().y75_1),s.z75_1=0==(1&t)?null:n,s.a76_1=0==(2&t)?null:i,s.b76_1=0==(4&t)?null:e,s}(t,n,i,e,0,Us(Kr(Uv)))}function Uv(){}function Hv(){Yt=this;var t=new qo("earth.worldwind.ogc.wms.WmsAuthorityUrl",this,2);t.n3a("name",!1),t.n3a("onlineResource",!1),t.p3a(new gu("AuthorityURL","http://www.opengis.net/wms","")),this.c76_1=t}function Vv(){return null==Yt&&new Hv,Yt}function Bv(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,Vv().c76_1),r.d76_1=n,r.e76_1=i,r}(t,n,i,0,Us(Kr(Yv)))}function Yv(){}function Wv(){Wt=this;var t=new qo("earth.worldwind.ogc.wms.WmsBoundingBox",this,7);t.n3a("CRS",!1),t.n3a("minx",!1),t.n3a("maxx",!1),t.n3a("miny",!1),t.n3a("maxy",!1),t.n3a("resx",!0),t.n3a("resy",!0),t.p3a(new gu("BoundingBox","http://www.opengis.net/wms","")),this.f76_1=t}function Gv(){return null==Wt&&new Wv,Wt}function Kv(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 31!=(31&t)&&Mo(t,31,Gv().f76_1),h.g76_1=n,h.h76_1=i,h.i76_1=e,h.j76_1=r,h.k76_1=s,h.l76_1=0==(32&t)?null:o,h.m76_1=0==(64&t)?null:u,h}(t,n,i,e,r,s,o,u,0,Us(Kr(Jv)))}function Jv(){}function Xv(){Gt=this}function Zv(){Kt=this;var t=new qo("earth.worldwind.ogc.wms.WmsCapabilities",this,4);t.n3a("version",!0),t.n3a("updateSequence",!0),t.n3a("service",!1),t.n3a("capability",!1),t.p3a(new gu("WMS_Capabilities","http://www.opengis.net/wms","")),this.n76_1=t}function Qv(){return null==Kt&&new Zv,Kt}function tw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 12!=(12&t)&&Mo(t,12,Qv().n76_1),o.z6y_1=0==(1&t)?"1.3.0":n,o.a6z_1=0==(2&t)?null:i,o.b6z_1=e,o.c6z_1=r,o.c6z_1.x6y_1=o,o}(t,n,i,e,r,0,Us(Kr(nw)))}function nw(t,n,i,e){null==Gt&&new Xv,t=t===Xr?"1.3.0":t,n=n===Xr?null:n,this.z6y_1=t,this.a6z_1=n,this.b6z_1=i,this.c6z_1=e,this.c6z_1.x6y_1=this}function iw(){Jt=this;var t;t=[null,new No(sd()),null],this.p76_1=t}function ew(){return null==Jt&&new iw,Jt}function rw(){Xt=this;var t=new qo("earth.worldwind.ogc.wms.WmsCapability",this,3);t.n3a("request",!1),t.n3a("layers",!0),t.n3a("exception",!0),t.p3a(new gu("Capability","http://www.opengis.net/wms","")),this.q76_1=t}function sw(){return null==Xt&&new rw,Xt}function ow(t,n,i,e,r){return function(t,n,i,e,r,s){1!=(1&t)&&Mo(t,1,sw().q76_1),s.u6y_1=n,s.v6y_1=0==(2&t)?ku():i,s.w6y_1=0==(4&t)?new Fw:e;for(var o=s.v6y_1.d();o.e();)o.f().w6x_1=s;return s}(t,n,i,e,0,Us(Kr(uw)))}function uw(){}function aw(){Zt=this;var t=new qo("earth.worldwind.ogc.wms.WmsContactAddress",this,6);t.n3a("addressType",!1),t.o3a(new mu(!0)),t.o3a(new gu("AddressType","http://www.opengis.net/wms","")),t.n3a("address",!1),t.o3a(new mu(!0)),t.o3a(new gu("Address","http://www.opengis.net/wms","")),t.n3a("city",!1),t.o3a(new mu(!0)),t.o3a(new gu("City","http://www.opengis.net/wms","")),t.n3a("stateOrProvince",!1),t.o3a(new mu(!0)),t.o3a(new gu("StateOrProvince","http://www.opengis.net/wms","")),t.n3a("postCode",!1),t.o3a(new mu(!0)),t.o3a(new gu("PostCode","http://www.opengis.net/wms","")),t.n3a("country",!1),t.o3a(new mu(!0)),t.o3a(new gu("Country","http://www.opengis.net/wms","")),t.p3a(new gu("ContactAddress","http://www.opengis.net/wms","")),this.r76_1=t}function hw(){return null==Zt&&new aw,Zt}function _w(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Mo(t,63,hw().r76_1),a.s76_1=n,a.t76_1=i,a.u76_1=e,a.v76_1=r,a.w76_1=s,a.x76_1=o,a}(t,n,i,e,r,s,o,0,Us(Kr(lw)))}function lw(){}function fw(){Qt=this;var t=new qo("earth.worldwind.ogc.wms.WmsContactInformation",this,6);t.n3a("position",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactPosition","http://www.opengis.net/wms","")),t.n3a("voiceTelephone",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactVoiceTelephone","http://www.opengis.net/wms","")),t.n3a("facsimileTelephone",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactFacsimileNumber","http://www.opengis.net/wms","")),t.n3a("electronicMailAddress",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactElectronicMailAddress","http://www.opengis.net/wms","")),t.n3a("contactAddress",!0),t.n3a("contactPersonPrimary",!0),t.p3a(new gu("ContactInformation","http://www.opengis.net/wms","")),this.y76_1=t}function cw(){return null==Qt&&new fw,Qt}function vw(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Mo(t,0,cw().y76_1),a.z76_1=0==(1&t)?null:n,a.a77_1=0==(2&t)?null:i,a.b77_1=0==(4&t)?null:e,a.c77_1=0==(8&t)?null:r,a.d77_1=0==(16&t)?null:s,a.e77_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Us(Kr(ww)))}function ww(){}function dw(){tn=this;var t=new qo("earth.worldwind.ogc.wms.WmsContactPersonPrimary",this,2);t.n3a("contactPerson",!1),t.o3a(new mu(!0)),t.o3a(new gu("ContactPerson","http://www.opengis.net/wms","")),t.n3a("contactOrganization",!1),t.o3a(new mu(!0)),t.o3a(new gu("ContactOrganization","http://www.opengis.net/wms","")),t.p3a(new gu("ContactPersonPrimary","http://www.opengis.net/wms","")),this.f77_1=t}function pw(){return null==tn&&new dw,tn}function mw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,pw().f77_1),r.g77_1=n,r.h77_1=i,r}(t,n,i,0,Us(Kr(gw)))}function gw(){}function $w(){nn=this;var t=new qo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttp",this,2);t.n3a("get",!1),t.o3a(new gu("Get","http://www.opengis.net/wms","")),t.n3a("post",!0),t.o3a(new gu("Post","http://www.opengis.net/wms","")),t.p3a(new gu("HTTP","http://www.opengis.net/wms","")),this.i77_1=t}function yw(){return null==nn&&new $w,nn}function bw(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,yw().i77_1),r.j77_1=n,r.k77_1=0==(2&t)?null:i,r}(t,n,i,0,Us(Kr(zw)))}function kw(){en=this;var t=new qo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttpProtocol",this,1);t.n3a("onlineResource",!1),this.l77_1=t}function jw(){return null==en&&new kw,en}function xw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,jw().l77_1),e.m77_1=n,e}(t,n,0,Us(Kr(Ew)))}function zw(){}function Ew(){}function Cw(){rn=this;var t=new qo("earth.worldwind.ogc.wms.WmsDcpType",this,1);t.n3a("http",!1),t.p3a(new gu("DCPType","http://www.opengis.net/wms","")),this.n77_1=t}function Sw(){return null==rn&&new Cw,rn}function qw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,Sw().n77_1),e.o77_1=n,e}(t,n,0,Us(Kr(Ow)))}function Ow(){}function Iw(){sn=this;var t=new qo("earth.worldwind.ogc.wms.WmsDimension",this,8);t.n3a("name",!1),t.n3a("units",!1),t.n3a("unitSymbol",!0),t.n3a("default",!0),t.n3a("multipleValues",!0),t.n3a("nearestValue",!0),t.n3a("current",!0),t.n3a("value",!0),t.o3a(new ju(!0)),t.p3a(new gu("Dimension","http://www.opengis.net/wms","")),this.s77_1=t}function Aw(){return null==sn&&new Iw,sn}function Tw(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 3!=(3&t)&&Mo(t,3,Aw().s77_1),_.t77_1=n,_.u77_1=i,_.v77_1=0==(4&t)?null:e,_.w77_1=0==(8&t)?null:r,_.x77_1=0==(16&t)?null:s,_.y77_1=0==(32&t)?null:o,_.z77_1=0==(64&t)?null:u,_.a78_1=0==(128&t)?null:a,_}(t,n,i,e,r,s,o,u,a,0,Us(Kr(Dw)))}function Dw(){}function Mw(){on=this;var t;t=[new No(Oo())],this.b78_1=t}function Nw(){return null==on&&new Mw,on}function Rw(){un=this;var t=new qo("earth.worldwind.ogc.wms.WmsException",this,1);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.p3a(new gu("Exception","http://www.opengis.net/wms","")),this.c78_1=t}function Pw(){return null==un&&new Rw,un}function Lw(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Mo(t,0,Pw().c78_1),e.d78_1=0==(1&t)?ku():n,e}(t,n,0,Us(Kr(Fw)))}function Fw(t){Nw(),t=t===Xr?ku():t,this.d78_1=t}function Uw(){an=this;var t=new qo("earth.worldwind.ogc.wms.WmsGeographicBoundingBox",this,4);t.n3a("north",!1),t.o3a(new mu(!0)),t.o3a(new gu("northBoundLatitude","http://www.opengis.net/wms","")),t.n3a("east",!1),t.o3a(new mu(!0)),t.o3a(new gu("eastBoundLongitude","http://www.opengis.net/wms","")),t.n3a("south",!1),t.o3a(new mu(!0)),t.o3a(new gu("southBoundLatitude","http://www.opengis.net/wms","")),t.n3a("west",!1),t.o3a(new mu(!0)),t.o3a(new gu("westBoundLongitude","http://www.opengis.net/wms","")),t.p3a(new gu("EX_GeographicBoundingBox","http://www.opengis.net/wms","")),this.e78_1=t}function Hw(){return null==an&&new Uw,an}function Vw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 15!=(15&t)&&Mo(t,15,Hw().e78_1),o.f78_1=n,o.g78_1=i,o.h78_1=e,o.i78_1=r,o}(t,n,i,e,r,0,Us(Kr(Bw)))}function Bw(){}function Yw(){hn=this;var t=new qo("earth.worldwind.ogc.wms.WmsIdentifier",this,2);t.n3a("authority",!1),t.n3a("identifier",!1),t.o3a(new ju(!0)),t.p3a(new gu("Identifier","http://www.opengis.net/wms","")),this.j78_1=t}function Ww(){return null==hn&&new Yw,hn}function Gw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,Ww().j78_1),r.k78_1=n,r.l78_1=i,r}(t,n,i,0,Us(Kr(Kw)))}function Kw(){}function Jw(){_n=this;var t;t=[new No(Oo()),null],this.m78_1=t}function Xw(){return null==_n&&new Jw,_n}function Zw(){ln=this;var t=new qo("earth.worldwind.ogc.wms.WmsInfoUrl",this,2);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),this.n78_1=t}function Qw(){return null==ln&&new Zw,ln}function td(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Mo(t,2,Qw().n78_1),r.o78_1=0==(1&t)?ku():n,r.p78_1=i,r}(t,n,i,0,Us(Kr(nd)))}function nd(){}function id(){fn=this;var t;t=[new No(sd()),null,null,null,new No(Oo()),new No(Hd()),new No(Oo()),null,new No(Gv()),new No(Aw()),null,new No(Vv()),new No(Ww()),new No(pd()),new No(Qw()),new No(Qw()),null,null,null,null,null,null,null,null],this.q78_1=t}function ed(){return null==fn&&new id,fn}function rd(){cn=this;var t=new qo("earth.worldwind.ogc.wms.WmsLayer",this,24);t.n3a("layers",!0),t.n3a("name",!0),t.o3a(new mu(!0)),t.o3a(new gu("Name","http://www.opengis.net/wms","")),t.n3a("title",!1),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/wms","")),t.n3a("keywordList",!0),t.o3a(new gu("KeywordList","http://www.opengis.net/wms","")),t.o3a(new zu("Keyword","http://www.opengis.net/wms","")),t.n3a("_styles",!0),t.n3a("_referenceSystems",!0),t.o3a(new gu("CRS","http://www.opengis.net/wms","")),t.n3a("_geographicBoundingBox",!0),t.n3a("_boundingBoxes",!0),t.n3a("_dimensions",!0),t.n3a("_attribution",!0),t.n3a("_authorityUrls",!0),t.n3a("identifiers",!0),t.n3a("metadataUrls",!0),t.n3a("dataUrls",!0),t.o3a(new gu("DataURL","http://www.opengis.net/wms","")),t.n3a("featureListUrls",!0),t.o3a(new gu("FeatureListURL","http://www.opengis.net/wms","")),t.n3a("_maxScaleDenominator",!0),t.o3a(new mu(!0)),t.o3a(new gu("MaxScaleDenominator","http://www.opengis.net/wms","")),t.n3a("_minScaleDenominator",!0),t.o3a(new mu(!0)),t.o3a(new gu("MinScaleDenominator","http://www.opengis.net/wms","")),t.n3a("isQueryable",!0),t.o3a(new gu("queryable","http://www.opengis.net/wms","")),t.n3a("_cascaded",!0),t.o3a(new gu("cascaded","http://www.opengis.net/wms","")),t.n3a("isOpaque",!0),t.o3a(new gu("opaque","http://www.opengis.net/wms","")),t.n3a("isNoSubsets",!0),t.o3a(new gu("noSubsets","http://www.opengis.net/wms","")),t.n3a("_fixedWidth",!0),t.o3a(new gu("fixedWidth","http://www.opengis.net/wms","")),t.n3a("_fixedHeight",!0),t.o3a(new gu("fixedHeight","http://www.opengis.net/wms","")),t.p3a(new gu("Layer","http://www.opengis.net/wms","")),this.r78_1=t}function sd(){return null==cn&&new rd,cn}function od(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x){return function(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z){4!=(4&t)&&Mo(t,4,sd().r78_1),z.y6w_1=0==(1&t)?ku():n,z.z6w_1=0==(2&t)?null:i,z.a6x_1=e,z.b6x_1=0==(8&t)?null:r,z.c6x_1=0==(16&t)?ku():s,z.d6x_1=0==(32&t)?ku():o,z.e6x_1=0==(64&t)?ku():u,z.f6x_1=0==(128&t)?null:a,z.g6x_1=0==(256&t)?ku():h,z.h6x_1=0==(512&t)?ku():_,z.i6x_1=0==(1024&t)?null:l,z.j6x_1=0==(2048&t)?ku():f,z.k6x_1=0==(4096&t)?ku():c,z.l6x_1=0==(8192&t)?ku():v,z.m6x_1=0==(16384&t)?ku():w,z.n6x_1=0==(32768&t)?ku():d,z.o6x_1=0==(65536&t)?null:p,z.p6x_1=0==(131072&t)?null:m,z.q6x_1=0!=(262144&t)&&g,z.r6x_1=0==(524288&t)?null:$,z.s6x_1=0!=(1048576&t)&&y,z.t6x_1=0!=(2097152&t)&&b,z.u6x_1=0==(4194304&t)?null:k,z.v6x_1=0==(8388608&t)?null:j,z.w6x_1=null,z.x6x_1=null;for(var E=z.y6w_1.d();E.e();)E.f().x6x_1=z;return z}(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,0,Us(Kr(ud)))}function ud(){}function ad(){vn=this;var t;t=[new Su(Oo()),null,null,null],this.s78_1=t}function hd(){return null==vn&&new ad,vn}function _d(){wn=this;var t=new qo("earth.worldwind.ogc.wms.WmsLogoUrl",this,4);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),t.n3a("width",!0),t.n3a("height",!0),t.p3a(new gu("LogoURL","http://www.opengis.net/wms","")),this.t78_1=t}function ld(){return null==wn&&new _d,wn}function fd(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){if(2!=(2&t)&&Mo(t,2,ld().t78_1),0==(1&t)){var u,a=o;u=qu(),a.u78_1=u}else o.u78_1=n;return o.v78_1=i,o.w78_1=0==(4&t)?null:e,o.x78_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Us(Kr(cd)))}function cd(){}function vd(){dn=this;var t;t=[null,new No(Oo()),null],this.y78_1=t}function wd(){return null==dn&&new vd,dn}function dd(){pn=this;var t=new qo("earth.worldwind.ogc.wms.WmsMetadataUrl",this,3);t.n3a("type",!1),t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),t.p3a(new gu("MetadataURL","http://www.opengis.net/wms","")),this.z78_1=t}function pd(){return null==pn&&new dd,pn}function md(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Mo(t,5,pd().z78_1),s.a79_1=n,s.b79_1=0==(2&t)?ku():i,s.c79_1=e,s}(t,n,i,e,0,Us(Kr(gd)))}function gd(){}function $d(){mn=this;var t=new qo("earth.worldwind.ogc.wms.WmsOnlineResource",this,2);t.n3a("type",!0),t.o3a(new gu("type","http://www.w3.org/1999/xlink","xlink")),t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.p3a(new gu("OnlineResource","http://www.opengis.net/wms","")),this.d79_1=t}function yd(){return null==mn&&new $d,mn}function bd(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Mo(t,2,yd().d79_1),r.q77_1=0==(1&t)?"simple":n,r.r77_1=i,r}(t,n,i,0,Us(Kr(kd)))}function kd(){}function jd(){gn=this;var t=new qo("earth.worldwind.ogc.wms.WmsRequest",this,3);t.n3a("getCapabilities",!1),t.o3a(new gu("GetCapabilities","http://www.opengis.net/wms","")),t.n3a("getMap",!1),t.o3a(new gu("GetMap","http://www.opengis.net/wms","")),t.n3a("getFeatureInfo",!0),t.o3a(new gu("GetFeatureInfo","http://www.opengis.net/wms","")),t.p3a(new gu("Request","http://www.opengis.net/wms","")),this.e79_1=t}function xd(){return null==gn&&new jd,gn}function zd(t,n,i,e,r){return function(t,n,i,e,r,s){return 3!=(3&t)&&Mo(t,3,xd().e79_1),s.r70_1=n,s.s70_1=i,s.t70_1=0==(4&t)?null:e,s}(t,n,i,e,0,Us(Kr(Ed)))}function Ed(){}function Cd(){$n=this;var t;t=[new No(Oo()),null],this.f79_1=t}function Sd(){return null==$n&&new Cd,$n}function qd(){yn=this;var t=new qo("earth.worldwind.ogc.wms.WmsRequestOperation",this,2);t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wms","")),t.n3a("dcpType",!1),this.g79_1=t}function Od(){return null==yn&&new qd,yn}function Id(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Mo(t,2,Od().g79_1),r.u70_1=0==(1&t)?ku():n,r.v70_1=i,r}(t,n,i,0,Us(Kr(Ad)))}function Ad(){}function Td(){bn=this;var t;t=[null,null,null,null,null,new No(Oo()),null,null,null,null,null],this.h79_1=t}function Dd(){return null==bn&&new Td,bn}function Md(){kn=this;var t=new qo("earth.worldwind.ogc.wms.WmsService",this,11);t.n3a("name",!1),t.o3a(new mu(!0)),t.o3a(new gu("Name","http://www.opengis.net/wms","")),t.n3a("title",!1),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/wms","")),t.n3a("fees",!0),t.o3a(new mu(!0)),t.o3a(new gu("Fees","http://www.opengis.net/wms","")),t.n3a("accessConstraints",!0),t.o3a(new mu(!0)),t.o3a(new gu("AccessConstraints","http://www.opengis.net/wms","")),t.n3a("keywordList",!0),t.o3a(new gu("KeywordList","http://www.opengis.net/wms","")),t.o3a(new zu("Keyword","http://www.opengis.net/wms","")),t.n3a("onlineResource",!1),t.n3a("contactInformation",!0),t.n3a("maxWidth",!0),t.o3a(new mu(!0)),t.o3a(new gu("MaxWidth","http://www.opengis.net/wms","")),t.n3a("maxHeight",!0),t.o3a(new mu(!0)),t.o3a(new gu("MaxHeight","http://www.opengis.net/wms","")),t.n3a("layerLimit",!0),t.o3a(new mu(!0)),t.o3a(new gu("LayerLimit","http://www.opengis.net/wms","")),t.p3a(new gu("Service","http://www.opengis.net/wms","")),this.i79_1=t}function Nd(){return null==kn&&new Md,kn}function Rd(t,n,i,e,r,s,o,u,a,h,_,l,f){return function(t,n,i,e,r,s,o,u,a,h,_,l,f,c){if(67!=(67&t)&&Mo(t,67,Nd().i79_1),c.d6z_1=n,c.e6z_1=i,c.f6z_1=0==(4&t)?null:e,c.g6z_1=0==(8&t)?null:r,c.h6z_1=0==(16&t)?null:s,0==(32&t)){var v,w=c;v=ku(),w.i6z_1=v}else c.i6z_1=o;return c.j6z_1=u,c.k6z_1=0==(128&t)?null:a,c.l6z_1=0==(256&t)?null:h,c.m6z_1=0==(512&t)?null:_,c.n6z_1=0==(1024&t)?null:l,c}(t,n,i,e,r,s,o,u,a,h,_,l,0,Us(Kr(Pd)))}function Pd(){}function Ld(){jn=this;var t;t=[null,null,null,new No(ld()),null,null],this.j79_1=t}function Fd(){return null==jn&&new Ld,jn}function Ud(){xn=this;var t=new qo("earth.worldwind.ogc.wms.WmsStyle",this,6);t.n3a("name",!1),t.o3a(new mu(!0)),t.o3a(new gu("Name","http://www.opengis.net/wms","")),t.n3a("title",!1),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/wms","")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/wms","")),t.n3a("legendUrls",!0),t.o3a(new gu("LegendURL","http://www.opengis.net/wms","")),t.n3a("styleSheetUrl",!0),t.o3a(new gu("StyleSheetURL","http://www.opengis.net/wms","")),t.n3a("styleUrl",!0),t.o3a(new gu("StyleURL","http://www.opengis.net/wms","")),t.p3a(new gu("Style","http://www.opengis.net/wms","")),this.k79_1=t}function Hd(){return null==xn&&new Ud,xn}function Vd(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 3!=(3&t)&&Mo(t,3,Hd().k79_1),a.l79_1=n,a.m79_1=i,a.n79_1=0==(4&t)?null:e,a.o79_1=0==(8&t)?ku():r,a.p79_1=0==(16&t)?null:s,a.q79_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Us(Kr(Bd)))}function Bd(){}function Yd(){zn=this;var t;t=[new No(Oo()),null,null,null,null,new No(Oo())],this.r79_1=t}function Wd(){return null==zn&&new Yd,zn}function Gd(){En=this;var t=new qo("earth.worldwind.ogc.wmts.OwsAddress",this,6);t.n3a("deliveryPoints",!0),t.o3a(new gu("DeliveryPoint","http://www.opengis.net/ows/1.1","ows")),t.n3a("city",!0),t.o3a(new mu(!0)),t.o3a(new gu("City","http://www.opengis.net/ows/1.1","ows")),t.n3a("administrativeArea",!0),t.o3a(new mu(!0)),t.o3a(new gu("AdministrativeArea","http://www.opengis.net/ows/1.1","ows")),t.n3a("postalCode",!0),t.o3a(new mu(!0)),t.o3a(new gu("PostalCode","http://www.opengis.net/ows/1.1","ows")),t.n3a("country",!0),t.o3a(new mu(!0)),t.o3a(new gu("Country","http://www.opengis.net/ows/1.1","ows")),t.n3a("electronicMailAddresses",!0),t.o3a(new gu("ElectronicMailAddress","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("Address","http://www.opengis.net/ows/1.1","ows")),this.s79_1=t}function Kd(){return null==En&&new Gd,En}function Jd(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Mo(t,0,Kd().s79_1),a.t79_1=0==(1&t)?ku():n,a.u79_1=0==(2&t)?null:i,a.v79_1=0==(4&t)?null:e,a.w79_1=0==(8&t)?null:r,a.x79_1=0==(16&t)?null:s,a.y79_1=0==(32&t)?ku():o,a}(t,n,i,e,r,s,o,0,Us(Kr(Xd)))}function Xd(){}function Zd(){Cn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsBoundingBox",this,3);t.n3a("crs",!0),t.n3a("lowerCorner",!1),t.o3a(new mu(!0)),t.o3a(new gu("LowerCorner","http://www.opengis.net/ows/1.1","ows")),t.n3a("upperCorner",!1),t.o3a(new mu(!0)),t.o3a(new gu("UpperCorner","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("BoundingBox","http://www.opengis.net/ows/1.1","ows")),this.z79_1=t}function Qd(){return null==Cn&&new Zd,Cn}function tp(t,n,i,e,r){return function(t,n,i,e,r,s){return 6!=(6&t)&&Mo(t,6,Qd().z79_1),s.f73_1=0==(1&t)?null:n,s.g73_1=i,s.h73_1=e,s}(t,n,i,e,0,Us(Kr(np)))}function np(){}function ip(){Sn=this;var t;t=[null,new No(Oo())],this.a7a_1=t}function ep(){return null==Sn&&new ip,Sn}function rp(){qn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsConstraint",this,2);t.n3a("name",!1),t.n3a("allowedValues",!0),t.o3a(new gu("AllowedValues","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Value","http://www.opengis.net/ows/1.1","ows")),t.o3a(new Ou("AnyValue")),t.p3a(new gu("Constraint","http://www.opengis.net/ows/1.1","ows")),this.b7a_1=t}function sp(){return null==qn&&new rp,qn}function op(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,sp().b7a_1),r.s74_1=n,r.t74_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(up)))}function up(){}function ap(){On=this;var t=new qo("earth.worldwind.ogc.wmts.OwsContactInfo",this,5);t.n3a("phone",!0),t.n3a("address",!0),t.n3a("onlineResource",!0),t.n3a("hoursOfService",!0),t.o3a(new mu(!0)),t.o3a(new gu("HoursOfService","http://www.opengis.net/ows/1.1","ows")),t.n3a("contactInstructions",!0),t.o3a(new mu(!0)),t.o3a(new gu("ContactInstructions","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("ContactInfo","http://www.opengis.net/ows/1.1","ows")),this.c7a_1=t}function hp(){return null==On&&new ap,On}function _p(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 0!=(0&t)&&Mo(t,0,hp().c7a_1),u.d7a_1=0==(1&t)?null:n,u.e7a_1=0==(2&t)?null:i,u.f7a_1=0==(4&t)?null:e,u.g7a_1=0==(8&t)?null:r,u.h7a_1=0==(16&t)?null:s,u}(t,n,i,e,r,s,0,Us(Kr(lp)))}function lp(){}function fp(){In=this;var t=new qo("earth.worldwind.ogc.wmts.OwsDcp",this,1);t.n3a("http",!1),t.p3a(new gu("DCP","http://www.opengis.net/ows/1.1","ows")),this.i7a_1=t}function cp(){return null==In&&new fp,In}function vp(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,cp().i7a_1),e.o74_1=n,e}(t,n,0,Us(Kr(wp)))}function wp(){}function dp(){}function pp(){An=this;var t;t=[new No(zp()),new No(zp())],this.l7a_1=t}function mp(){return null==An&&new pp,An}function gp(){Tn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsHttp",this,2);t.n3a("getMethods",!0),t.o3a(new gu("Get","http://www.opengis.net/ows/1.1","ows")),t.n3a("postMethods",!0),t.o3a(new gu("Post","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("HTTP","http://www.opengis.net/ows/1.1","ows")),this.m7a_1=t}function $p(){return null==Tn&&new gp,Tn}function yp(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Mo(t,0,$p().m7a_1),r.j7a_1=0==(1&t)?ku():n,r.k7a_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(bp)))}function bp(){}function kp(){Dn=this;var t;t=[null,new No(sp())],this.n7a_1=t}function jp(){return null==Dn&&new kp,Dn}function xp(){Mn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsHttpMethod",this,2);t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.n3a("constraints",!0),this.o7a_1=t}function zp(){return null==Mn&&new xp,Mn}function Ep(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,zp().o7a_1),r.q74_1=n,r.r74_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(Cp)))}function Cp(){}function Sp(){Nn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsOnlineResource",this,1);t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.p3a(new gu("OnlineResource","http://www.opengis.net/ows/1.1","ows")),this.p7a_1=t}function qp(){return null==Nn&&new Sp,Nn}function Op(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Mo(t,1,qp().p7a_1),e.q7a_1=n,e}(t,n,0,Us(Kr(Ip)))}function Ip(){}function Ap(){Rn=this;var t;t=[null,new No(cp())],this.r7a_1=t}function Tp(){return null==Rn&&new Ap,Rn}function Dp(){Pn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsOperation",this,2);t.n3a("name",!1),t.n3a("dcps",!0),t.p3a(new gu("Operation","http://www.opengis.net/ows/1.1","ows")),this.s7a_1=t}function Mp(){return null==Pn&&new Dp,Pn}function Np(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,Mp().s7a_1),r.m74_1=n,r.n74_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(Rp)))}function Rp(){}function Pp(){Ln=this;var t;t=[new No(Mp())],this.t7a_1=t}function Lp(){return null==Ln&&new Pp,Ln}function Fp(){Fn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsOperationsMetadata",this,1);t.n3a("operations",!0),t.p3a(new gu("OperationsMetadata","http://www.opengis.net/ows/1.1","ows")),this.u7a_1=t}function Up(){return null==Fn&&new Fp,Fn}function Hp(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Mo(t,0,Up().u7a_1),e.k74_1=0==(1&t)?ku():n,e}(t,n,0,Us(Kr(Vp)))}function Vp(){}function Bp(){Un=this;var t;t=[new No(Oo()),new No(Oo())],this.v7a_1=t}function Yp(){return null==Un&&new Bp,Un}function Wp(){Hn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsPhone",this,2);t.n3a("voice",!0),t.o3a(new mu(!0)),t.o3a(new gu("Voice","http://www.opengis.net/ows/1.1","ows")),t.n3a("fax",!0),t.o3a(new mu(!0)),t.o3a(new gu("Facsimile","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("Phone","http://www.opengis.net/ows/1.1","ows")),this.w7a_1=t}function Gp(){return null==Hn&&new Wp,Hn}function Kp(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Mo(t,0,Gp().w7a_1),r.x7a_1=0==(1&t)?ku():n,r.y7a_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(Jp)))}function Jp(){}function Xp(){Vn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsServiceContact",this,4);t.n3a("individualName",!0),t.o3a(new mu(!0)),t.o3a(new gu("IndividualName","http://www.opengis.net/ows/1.1","ows")),t.n3a("positionName",!0),t.o3a(new mu(!0)),t.o3a(new gu("PositionName","http://www.opengis.net/ows/1.1","ows")),t.n3a("contactInfo",!0),t.n3a("role",!0),t.o3a(new mu(!0)),t.o3a(new gu("Role","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("ServiceContact","http://www.opengis.net/ows/1.1","ows")),this.z7a_1=t}function Zp(){return null==Vn&&new Xp,Vn}function Qp(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 0!=(0&t)&&Mo(t,0,Zp().z7a_1),o.a7b_1=0==(1&t)?null:n,o.b7b_1=0==(2&t)?null:i,o.c7b_1=0==(4&t)?null:e,o.d7b_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Us(Kr(tm)))}function tm(){}function nm(){Bn=this;var t;t=[null,null,new No(Oo()),null,new No(Oo()),null,new No(Oo())],this.e7b_1=t}function im(){return null==Bn&&new nm,Bn}function em(){Yn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsServiceIdentification",this,7);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("serviceType",!1),t.o3a(new mu(!0)),t.o3a(new gu("ServiceType","http://www.opengis.net/ows/1.1","ows")),t.n3a("serviceTypeVersions",!0),t.o3a(new gu("ServiceTypeVersion","http://www.opengis.net/ows/1.1","ows")),t.n3a("fees",!0),t.o3a(new mu(!0)),t.o3a(new gu("Fees","http://www.opengis.net/ows/1.1","ows")),t.n3a("accessConstraints",!0),t.o3a(new gu("AccessConstraints","http://www.opengis.net/ows/1.1","ows")),t.p3a(new gu("ServiceIdentification","http://www.opengis.net/ows/1.1","ows")),this.f7b_1=t}function rm(){return null==Yn&&new em,Yn}function sm(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 8!=(8&t)&&Mo(t,8,rm().f7b_1),dp.call(h),h.g7b_1=0==(1&t)?null:n,h.h7b_1=0==(2&t)?null:i,h.i7b_1=0==(4&t)?ku():e,h.j7b_1=r,h.k7b_1=0==(16&t)?ku():s,h.l7b_1=0==(32&t)?null:o,h.m7b_1=0==(64&t)?ku():u,h}(t,n,i,e,r,s,o,u,0,Us(Kr(om)))}function om(){}function um(){Wn=this;var t=new qo("earth.worldwind.ogc.wmts.OwsServiceProvider",this,3);t.n3a("providerName",!1),t.o3a(new mu(!0)),t.o3a(new gu("ProviderName","http://www.opengis.net/ows/1.1","ows")),t.n3a("onlineResource",!0),t.o3a(new gu("ProviderSite","http://www.opengis.net/ows/1.1","ows")),t.n3a("serviceContact",!1),t.p3a(new gu("ServiceProvider","http://www.opengis.net/ows/1.1","ows")),this.n7b_1=t}function am(){return null==Wn&&new um,Wn}function hm(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Mo(t,5,am().n7b_1),s.o7b_1=n,s.p7b_1=0==(2&t)?null:i,s.q7b_1=e,s}(t,n,i,e,0,Us(Kr(_m)))}function _m(){}function lm(){Gn=this;var t;t=[null,null,null,null,null,null,new No(Zm()),new No(qp())],this.r7b_1=t}function fm(){return null==Gn&&new lm,Gn}function cm(){Kn=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsCapabilities",this,8);t.n3a("version",!1),t.n3a("updateSequence",!0),t.n3a("serviceIdentification",!0),t.n3a("serviceProvider",!0),t.n3a("operationsMetadata",!0),t.n3a("contents",!1),t.n3a("themes",!0),t.o3a(new gu("Themes","http://www.opengis.net/wmts/1.0","")),t.o3a(new zu("Theme","http://www.opengis.net/wmts/1.0","")),t.n3a("serviceMetadataUrls",!0),t.o3a(new gu("ServiceMetadataURL","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("Capabilities","http://www.opengis.net/wmts/1.0","")),this.s7b_1=t}function vm(){return null==Kn&&new cm,Kn}function wm(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){33!=(33&t)&&Mo(t,33,vm().s7b_1),_.i73_1=n,_.j73_1=0==(2&t)?null:i,_.k73_1=0==(4&t)?null:e,_.l73_1=0==(8&t)?null:r,_.m73_1=0==(16&t)?null:s,_.n73_1=o,_.o73_1=0==(64&t)?ku():u,_.p73_1=0==(128&t)?ku():a;for(var l=_.u5g().d();l.e();)l.f().p72_1=_;return _}(t,n,i,e,r,s,o,u,a,0,Us(Kr(dm)))}function dm(t,n,i,e,r,s,o,u){fm(),n=n===Xr?null:n,i=i===Xr?null:i,e=e===Xr?null:e,r=r===Xr?null:r,o=o===Xr?ku():o,u=u===Xr?ku():u,this.i73_1=t,this.j73_1=n,this.k73_1=i,this.l73_1=e,this.m73_1=r,this.n73_1=s,this.o73_1=o,this.p73_1=u;for(var a=this.u5g().d();a.e();)a.f().p72_1=this}function pm(){Jn=this;var t;t=[new No(Im()),new No(vg())],this.w7b_1=t}function mm(){return null==Jn&&new pm,Jn}function gm(){Xn=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsContents",this,2);t.n3a("layers",!0),t.n3a("tileMatrixSets",!0),t.p3a(new gu("Contents","http://www.opengis.net/wmts/1.0","")),this.x7b_1=t}function $m(){return null==Xn&&new gm,Xn}function ym(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Mo(t,0,$m().x7b_1),r.t7b_1=0==(1&t)?ku():n,r.u7b_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(bm)))}function bm(){}function km(){Zn=this;var t;t=[null,null,new No(Oo()),null,null,null,null,null,new No(Oo())],this.y7b_1=t}function jm(){return null==Zn&&new km,Zn}function xm(){Qn=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsDimension",this,9);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("unitOfMeasure",!0),t.o3a(new mu(!0)),t.o3a(new gu("UOM","http://www.opengis.net/ows/1.1","ows")),t.n3a("unitSymbol",!0),t.o3a(new mu(!0)),t.o3a(new gu("UnitSymbol","http://www.opengis.net/wmts/1.0","")),t.n3a("valueDefault",!0),t.o3a(new mu(!0)),t.o3a(new gu("Default","http://www.opengis.net/wmts/1.0","")),t.n3a("current",!0),t.o3a(new mu(!0)),t.o3a(new gu("Current","http://www.opengis.net/wmts/1.0","")),t.n3a("values",!0),t.o3a(new gu("Value","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("Dimension","http://www.opengis.net/wmts/1.0","")),this.z7b_1=t}function zm(){return null==Qn&&new xm,Qn}function Em(t,n,i,e,r,s,o,u,a,h,_){return function(t,n,i,e,r,s,o,u,a,h,_,l){return 8!=(8&t)&&Mo(t,8,zm().z7b_1),dp.call(l),l.a7c_1=0==(1&t)?null:n,l.b7c_1=0==(2&t)?null:i,l.c7c_1=0==(4&t)?ku():e,l.d7c_1=r,l.e7c_1=0==(16&t)?null:s,l.f7c_1=0==(32&t)?null:o,l.g7c_1=0==(64&t)?null:u,l.h7c_1=0==(128&t)?null:a,l.i7c_1=0==(256&t)?ku():h,l}(t,n,i,e,r,s,o,u,a,h,0,Us(Kr(Cm)))}function Cm(){}function Sm(){ti=this;var t;t=[null,null,new No(Oo()),null,new No(Qd()),null,new No(qp()),new No(Ym()),new No(Oo()),new No(Oo()),new No($g()),new No(Lm()),new No(zm())],this.j7c_1=t}function qm(){return null==ti&&new Sm,ti}function Om(){ni=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsLayer",this,13);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("boundingBoxes",!0),t.n3a("wgs84BoundingBox",!0),t.o3a(new gu("WGS84BoundingBox","http://www.opengis.net/ows/1.1","ows")),t.n3a("metadata",!0),t.o3a(new gu("Metadata","http://www.opengis.net/ows/1.1","ows")),t.n3a("styles",!0),t.n3a("formats",!0),t.o3a(new gu("Format","http://www.opengis.net/wmts/1.0","")),t.n3a("infoFormats",!0),t.o3a(new gu("InfoFormat","http://www.opengis.net/wmts/1.0","")),t.n3a("tileMatrixSetLinks",!0),t.n3a("resourceUrls",!0),t.n3a("dimensions",!0),t.p3a(new gu("Layer","http://www.opengis.net/wmts/1.0","")),this.k7c_1=t}function Im(){return null==ni&&new Om,ni}function Am(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v){return function(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w){return 8!=(8&t)&&Mo(t,8,Im().k7c_1),dp.call(w),w.c72_1=0==(1&t)?null:n,w.d72_1=0==(2&t)?null:i,w.e72_1=0==(4&t)?ku():e,w.f72_1=r,w.g72_1=0==(16&t)?ku():s,w.h72_1=0==(32&t)?null:o,w.i72_1=0==(64&t)?ku():u,w.j72_1=0==(128&t)?ku():a,w.k72_1=0==(256&t)?ku():h,w.l72_1=0==(512&t)?ku():_,w.m72_1=0==(1024&t)?ku():l,w.n72_1=0==(2048&t)?ku():f,w.o72_1=0==(4096&t)?ku():c,w}(t,n,i,e,r,s,o,u,a,h,_,l,f,c,0,Us(Kr(Tm)))}function Tm(){}function Dm(){ii=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsLegendURL",this,2);t.n3a("url",!1),t.o3a(new gu("href","http://www.w3.org/1999/xlink","xlink")),t.n3a("format",!1),t.p3a(new gu("LegendURL","http://www.opengis.net/wmts/1.0","")),this.n7c_1=t}function Mm(){return null==ii&&new Dm,ii}function Nm(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Mo(t,3,Mm().n7c_1),r.o7c_1=n,r.p7c_1=i,r}(t,n,i,0,Us(Kr(Rm)))}function Rm(){}function Pm(){ei=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsResourceUrl",this,3);t.n3a("format",!1),t.n3a("resourceType",!1),t.n3a("template",!1),t.p3a(new gu("ResourceURL","http://www.opengis.net/wmts/1.0","")),this.q7c_1=t}function Lm(){return null==ei&&new Pm,ei}function Fm(t,n,i,e,r){return function(t,n,i,e,r,s){return 7!=(7&t)&&Mo(t,7,Lm().q7c_1),s.q72_1=n,s.r72_1=i,s.s72_1=e,s}(t,n,i,e,0,Us(Kr(Um)))}function Um(){}function Hm(){ri=this;var t;t=[null,null,new No(Oo()),null,null,new No(Mm())],this.r7c_1=t}function Vm(){return null==ri&&new Hm,ri}function Bm(){si=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsStyle",this,6);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("isDefault",!0),t.n3a("legendUrls",!0),t.p3a(new gu("Style","http://www.opengis.net/wmts/1.0","")),this.s7c_1=t}function Ym(){return null==si&&new Bm,si}function Wm(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Mo(t,8,Ym().s7c_1),dp.call(a),a.t72_1=0==(1&t)?null:n,a.u72_1=0==(2&t)?null:i,a.v72_1=0==(4&t)?ku():e,a.w72_1=r,a.x72_1=0!=(16&t)&&s,a.y72_1=0==(32&t)?ku():o,a}(t,n,i,e,r,s,o,0,Us(Kr(Gm)))}function Gm(){}function Km(){oi=this;var t;t=[null,null,new No(Oo()),null,new No(Zm()),new No(Oo())],this.t7c_1=t}function Jm(){return null==oi&&new Km,oi}function Xm(){ui=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTheme",this,6);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("themes",!0),t.n3a("layerRefs",!0),t.o3a(new gu("LayerRef","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("Theme","http://www.opengis.net/wmts/1.0","")),this.u7c_1=t}function Zm(){return null==ui&&new Xm,ui}function Qm(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Mo(t,8,Zm().u7c_1),dp.call(a),a.v7c_1=0==(1&t)?null:n,a.w7c_1=0==(2&t)?null:i,a.x7c_1=0==(4&t)?ku():e,a.y7c_1=r,a.z7c_1=0==(16&t)?ku():s,a.a7d_1=0==(32&t)?ku():o,a}(t,n,i,e,r,s,o,0,Us(Kr(tg)))}function tg(){}function ng(){ai=this;var t;t=[null,null,new No(Oo()),null,null,null,null,null,null,null],this.b7d_1=t}function ig(){return null==ai&&new ng,ai}function eg(){hi=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrix",this,10);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("scaleDenominator",!1),t.o3a(new mu(!0)),t.o3a(new gu("ScaleDenominator","http://www.opengis.net/wmts/1.0","")),t.n3a("topLeftCorner",!1),t.o3a(new mu(!0)),t.o3a(new gu("TopLeftCorner","http://www.opengis.net/wmts/1.0","")),t.n3a("tileWidth",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileWidth","http://www.opengis.net/wmts/1.0","")),t.n3a("tileHeight",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileHeight","http://www.opengis.net/wmts/1.0","")),t.n3a("matrixWidth",!1),t.o3a(new mu(!0)),t.o3a(new gu("MatrixWidth","http://www.opengis.net/wmts/1.0","")),t.n3a("matrixHeight",!1),t.o3a(new mu(!0)),t.o3a(new gu("MatrixHeight","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("TileMatrix","http://www.opengis.net/wmts/1.0","")),this.c7d_1=t}function rg(){return null==hi&&new eg,hi}function sg(t,n,i,e,r,s,o,u,a,h,_,l){return function(t,n,i,e,r,s,o,u,a,h,_,l,f){return 1016!=(1016&t)&&Mo(t,1016,rg().c7d_1),dp.call(f),f.r73_1=0==(1&t)?null:n,f.s73_1=0==(2&t)?null:i,f.t73_1=0==(4&t)?ku():e,f.u73_1=r,f.v73_1=s,f.w73_1=o,f.x73_1=u,f.y73_1=a,f.z73_1=h,f.a74_1=_,f}(t,n,i,e,r,s,o,u,a,h,_,0,Us(Kr(og)))}function og(){}function ug(){_i=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrixLimits",this,5);t.n3a("tileMatrixIdentifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileMatrix","http://www.opengis.net/wmts/1.0","")),t.n3a("minTileRow",!1),t.o3a(new mu(!0)),t.o3a(new gu("MinTileRow","http://www.opengis.net/wmts/1.0","")),t.n3a("maxTileRow",!1),t.o3a(new mu(!0)),t.o3a(new gu("MaxTileRow","http://www.opengis.net/wmts/1.0","")),t.n3a("minTileCol",!1),t.o3a(new mu(!0)),t.o3a(new gu("MinTileCol","http://www.opengis.net/wmts/1.0","")),t.n3a("maxTileCol",!1),t.o3a(new mu(!0)),t.o3a(new gu("MaxTileCol","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),this.d7d_1=t}function ag(){return null==_i&&new ug,_i}function hg(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 31!=(31&t)&&Mo(t,31,ag().d7d_1),u.e7d_1=n,u.f7d_1=i,u.g7d_1=e,u.h7d_1=r,u.i7d_1=s,u}(t,n,i,e,r,s,0,Us(Kr(_g)))}function _g(){}function lg(){li=this;var t;t=[null,null,new No(Oo()),null,null,null,null,new No(rg())],this.j7d_1=t}function fg(){return null==li&&new lg,li}function cg(){fi=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrixSet",this,8);t.n3a("title",!0),t.o3a(new mu(!0)),t.o3a(new gu("Title","http://www.opengis.net/ows/1.1","ows")),t.n3a("abstract",!0),t.o3a(new mu(!0)),t.o3a(new gu("Abstract","http://www.opengis.net/ows/1.1","ows")),t.n3a("keywords",!0),t.o3a(new gu("Keywords","http://www.opengis.net/ows/1.1","ows")),t.o3a(new zu("Keyword","http://www.opengis.net/ows/1.1","ows")),t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("Identifier","http://www.opengis.net/ows/1.1","ows")),t.n3a("supportedCrs",!1),t.o3a(new mu(!0)),t.o3a(new gu("SupportedCRS","http://www.opengis.net/ows/1.1","ows")),t.n3a("wellKnownScaleSet",!0),t.o3a(new mu(!0)),t.o3a(new gu("WellKnownScaleSet","http://www.opengis.net/wmts/1.0","")),t.n3a("boundingBox",!0),t.n3a("tileMatrices",!0),t.p3a(new gu("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),this.k7d_1=t}function vg(){return null==fi&&new cg,fi}function wg(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 24!=(24&t)&&Mo(t,24,vg().k7d_1),dp.call(_),_.b74_1=0==(1&t)?null:n,_.c74_1=0==(2&t)?null:i,_.d74_1=0==(4&t)?ku():e,_.e74_1=r,_.f74_1=s,_.g74_1=0==(32&t)?null:o,_.h74_1=0==(64&t)?null:u,_.i74_1=0==(128&t)?ku():a,_}(t,n,i,e,r,s,o,u,a,0,Us(Kr(dg)))}function dg(){}function pg(){ci=this;var t;t=[null,new No(ag())],this.l7d_1=t}function mg(){return null==ci&&new pg,ci}function gg(){vi=this;var t=new qo("earth.worldwind.ogc.wmts.WmtsTileMatrixSetLink",this,2);t.n3a("identifier",!1),t.o3a(new mu(!0)),t.o3a(new gu("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),t.n3a("tileMatrixSetLimits",!0),t.o3a(new gu("TileMatrixSetLimits","http://www.opengis.net/wmts/1.0","")),t.o3a(new zu("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),t.p3a(new gu("TileMatrixSetLink","http://www.opengis.net/wmts/1.0","")),this.m7d_1=t}function $g(){return null==vi&&new gg,vi}function yg(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Mo(t,1,$g().m7d_1),r.l7c_1=n,r.m7c_1=0==(2&t)?ku():i,r}(t,n,i,0,Us(Kr(bg)))}function bg(){}function kg(t){t=t===Xr?null:t,this.x6s_1=t,this.y6s_1=!0,this.z6s_1=!0,this.a6t_1=null,this.b6t_1=null}function jg(){return new f_}function xg(){return new Float32Array(2)}function zg(t,n){n=n===Xr?null:n,kg.call(this,n),this.t7d_1=tl(t),this.u7d_1=fo(jg),this.v7d_1=fo(xg),this.w7d_1=new ts(0,0),this.x7d_1=0}function Eg(){return t=Us(Kr(Og)),Og.call(t,1,1,1,1),t;var t}function Cg(t,n,i,e){return function(t,n,i,e,r){return e=e===Xr?255:e,Og.call(r,t/255,n/255,i/255,e/255),r}(t,n,i,e,Us(Kr(Og)))}function Sg(t){return function(t,n){return Og.call(n,t.e4u_1,t.f4u_1,t.g4u_1,t.h4u_1),n}(t,Us(Kr(Og)))}function qg(){wi=this}function Og(t,n,i,e){null==wi&&new qg,e=e===Xr?1:e,this.e4u_1=t,this.f4u_1=n,this.g4u_1=i,this.h4u_1=e}function Ig(){if(mi)return rs();mi=!0,new Ag("NORMAL",0),di=new Ag("BOLD",1),pi=new Ag("ITALIC",2)}function Ag(t,n){Es.call(this,t,n)}function Tg(){return Ig(),di}function Dg(){this.n57_1=Ax().o56_1;var t;t=os(),this.o57_1=t}function Mg(){gi=this,this.h7e_1=16777215}function Ng(){return null==gi&&new Mg,gi}function Rg(t,n){t=t===Xr?null:t,n=n===Xr?null:n,this.i7e_1=t,this.j7e_1=n}function Pg(){return lb().i7g()}function Lg(){Ng(),this.y52_1=1,this.z52_1=1,this.a53_1=0,this.b53_1=0,this.c53_1=new ts(0,0),this.d53_1=_l(),this.e53_1=fl(),this.f53_1=T_(),this.g53_1=T_(),this.h53_1=T_(),this.i53_1=m_(),this.j53_1=null,this.k53_1=null,this.l53_1=null,this.m53_1=null,this.n53_1=null,this.o53_1=null,this.p53_1=null,this.q53_1=!1,this.r53_1=!1,this.s53_1=0,this.t53_1=0;var t;t=os(),this.u53_1=t;var n;n=os(),this.v53_1=n,this.w53_1=new ox(this),this.x53_1=new Rg,this.y53_1=_l(),this.z53_1=fo(Pg)}function Fg(){}function Ug(){$i=this}function Hg(){return null==$i&&new Ug,$i}function Vg(t,n,i,e,r){Hg(),r=r!==Xr&&r,this.c57_1=t,this.d57_1=n,this.e57_1=i,this.f57_1=e,this.g57_1=r,this.h57_1=q_(),this.i57_1=qx().q56_1,this.j57_1=null,this.k57_1=!1,this.l57_1=!1}function Bg(t,n){this.q5c_1=t,this.r5c_1=n;var i;i=os(),this.s5c_1=i,this.t5c_1=Ex().r56_1}function Yg(t,n,i){i=i===Xr?n.length:i,Yo(),Bg.call(this,t,Hr(i,4)),this.z55_1=n}function Wg(t,n,i){i=i===Xr?n.length:i,Iu(),Bg.call(this,t,Hr(i,4)),this.u7h_1=n}function Gg(t,n,i){i=i===Xr?n.length:i,Au(),Bg.call(this,t,Hr(i,2)),this.i56_1=n}function Kg(){if(ki)return rs();ki=!0,yi=new Jg("RGBA_8888",0),bi=new Jg("RGB_565",1)}function Jg(t,n){Es.call(this,t,n)}function Xg(){return Kg(),bi}function Zg(t){t=t===Xr?(Kg(),yi):t,this.x7h_1=t,this.y7h_1=(Qg(),ji),this.z7h_1=(i$(),Ei),this.a7i_1=0,this.b7i_1=0}function Qg(){if(zi)return rs();zi=!0,ji=new t$("BILINEAR",0),xi=new t$("NEAREST_NEIGHBOR",1)}function t$(t,n){Es.call(this,t,n)}function n$(){return Qg(),xi}function i$(){if(Si)return rs();Si=!0,Ei=new e$("CLAMP",0),Ci=new e$("REPEAT",1)}function e$(t,n){Es.call(this,t,n)}function r$(){return i$(),Ci}function s$(){qi=this,this.c7i_1=0,this.d7i_1=1}function o$(){return null==qi&&new s$,qi}function u$(){o$(),this.j5a_1=yx().p56_1,this.k5a_1=!0}function a$(){var t,n;u$.call(this),t=["uniform bool enableTexture;\nuniform mat4 mvpMatrix;\nuniform mat3 texCoordMatrix;\n\nattribute vec4 vertexPoint;\nattribute vec2 vertexTexCoord;\n\nvarying vec2 texCoord;\n\nvoid main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n}","precision mediump float;\n\nuniform bool enablePickMode;\nuniform bool enableTexture;\nuniform vec4 color;\nuniform float opacity;\nuniform sampler2D texSampler;\n\nvarying vec2 texCoord;\n\nvoid main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n}"],this.p5a_1=t,n=["vertexPoint","vertexTexCoord"],this.q5a_1=n,this.r5a_1=!1,this.s5a_1=!1,this.t5a_1=T_(),this.u5a_1=q_(),this.v5a_1=Eg(),this.w5a_1=1,this.x5a_1=jx().f67_1,this.y5a_1=jx().f67_1,this.z5a_1=jx().f67_1,this.a5b_1=jx().f67_1,this.b5b_1=jx().f67_1,this.c5b_1=jx().f67_1,this.d5b_1=jx().f67_1,this.e5b_1=new Float32Array(16)}function h$(){var t,n;u$.call(this),t=["uniform mat4 mvpMatrix;\nuniform mat4 slpMatrix[2];\n\nattribute vec4 vertexPoint;\n\nvarying vec4 sightlinePosition;\nvarying float sightlineDistance;\n\nvoid main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nuniform highp sampler2D depthSampler;\n#else\nprecision mediump float;\nuniform mediump sampler2D depthSampler;\n#endif\n\nuniform float range;\nuniform vec4 color[2];\n\nvarying vec4 sightlinePosition;\nvarying float sightlineDistance;\n\nconst vec3 minusOne = vec3(-1.0, -1.0, -1.0);\nconst vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\nvoid main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n}"],this.k5d_1=t,n=["vertexPoint"],this.l5d_1=n,this.m5d_1=jx().f67_1,this.n5d_1=jx().f67_1,this.o5d_1=jx().f67_1,this.p5d_1=jx().f67_1,this.q5d_1=jx().f67_1,this.r5d_1=new Float32Array(32)}function _$(){var t,n;u$.call(this),t=["uniform bool enableTexture;\nuniform mat4 mvpMatrix;\nuniform mat3 texCoordMatrix[2];\n\nattribute vec4 vertexPoint;\nattribute vec2 vertexTexCoord;\n\nvarying vec2 texCoord;\nvarying vec2 tileCoord;\n\nvoid main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform bool enablePickMode;\nuniform bool enableTexture;\nuniform vec4 color;\nuniform float opacity;\nuniform sampler2D texSampler;\n\nvarying vec2 texCoord;\nvarying vec2 tileCoord;\n\nvoid main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n}"],this.n5f_1=t,n=["vertexPoint","vertexTexCoord"],this.o5f_1=n,this.p5f_1=T_();var i;i=[q_(),q_()],this.q5f_1=i,this.r5f_1=jx().f67_1,this.s5f_1=jx().f67_1,this.t5f_1=jx().f67_1,this.u5f_1=jx().f67_1,this.v5f_1=jx().f67_1,this.w5f_1=jx().f67_1,this.x5f_1=jx().f67_1,this.y5f_1=new Float32Array(16),this.z5f_1=new Float32Array(18),this.a5g_1=Eg(),this.b5g_1=1}function l$(){Oi=this,this.u7i_1=1e-10}function f$(){return null==Oi&&new l$,Oi}function c$(t){f$(),t=t===Xr?Y$():t,kg.call(this),this.r6d_1=t,this.s6d_1=Lh(),this.t6d_1=A$(),this.u6d_1=!1,this.v6d_1=!1,this.w6d_1=null,this.x6d_1=!1,this.y6d_1=10,this.a6e_1=0,this.b6e_1=Eg(),this.c6e_1=Q_(),this.d6e_1=new f_,this.e6e_1=_l()}function v$(){Ii=this,this.f7j_1=6,this.g7j_1=32,this.h7j_1=0,this.i7j_1=1,this.j7j_1=2;var t,n=new Zg;n.z7h_1=r$(),t=n,this.k7j_1=t;var i,e=new Zg;e.z7h_1=r$(),e.y7h_1=n$(),i=e,this.l7j_1=i;var r;r=os(),this.m7j_1=r,this.n7j_1=Y_(),this.o7j_1=_l()}function w$(){return null==Ii&&new v$,Ii}function d$(t,n,i,e){var r;if(w$(),e=e===Xr?Y$():e,c$.call(this,e),this.l7k_1=W_(t),this.m7k_1=n,this.n7k_1=i,this.o7k_1=Bh().s50_1,this.p7k_1=50,this.q7k_1=256,this.r7k_1=0,this.s7k_1=new Float32Array(0),this.t7k_1=0,this.u7k_1=new Object,this.v7k_1=_l(),this.w7k_1=!1,this.x7k_1=0,this.y7k_1=_l(),this.z7k_1=q_(),this.a7l_1=T_(),this.b7l_1=0,this.c7l_1=_l(),!(n>=0&&i>=0))throw r=wx().v4w(wx().q4w_1,"Ellipse","constructor","invalidRadius"),cs(ss(r))}function p$(){}function m$(){Ai=this,this.n7l_1=-.1,this.o7l_1=new $$}function g$(){return null==Ai&&new m$,Ai}function $$(){this.p7l_1=_l(),this.q7l_1=_l(),this.r7l_1=al(),this.s7l_1=T_(),this.t7l_1=fl(),this.u7l_1=0,this.v7l_1=Eg(),this.w7l_1=0}function y$(t,n,i){g$(),n=n===Xr?null:n,i=i===Xr?J$():i,kg.call(this),this.o6e_1=n,this.p6e_1=i,this.q6e_1=W_(t),this.r6e_1=Lh(),this.s6e_1=Bh().s50_1,this.t6e_1=E$(),this.u6e_1=!1,this.v6e_1=null,this.x6e_1=!1}function b$(){}function k$(t,n,i){i=i===Xr?Y$():i,kg.call(this),this.f7m_1=i,this.g7m_1=W_(t),this.h7m_1=n,this.i7m_1=Lh(),this.j7m_1=!1,this.k7m_1=null;var e,r,s=Y$();if(s.i6k_1.s59(new Og(1,0,0,1)),e=s,this.l7m_1=e,this.n7m_1=_l(),this.o7m_1=0,this.p7m_1=Eg(),this.q7m_1=new c_,!(n>=0))throw r=wx().v4w(wx().q4w_1,"OmnidirectionalSightline","constructor","invalidRange"),cs(ss(r))}function j$(){if(Mi)return rs();Mi=!0,Ti=new x$("RELATIVE_TO_GLOBE",0),Di=new x$("RELATIVE_TO_SCREEN",1)}function x$(t,n){Es.call(this,t,n)}function z$(){return j$(),Ti}function E$(){return j$(),Di}function C$(){Ni=this,this.t7m_1=4;var t,n=new Zg;n.y7h_1=n$(),n.z7h_1=r$(),t=n,this.u7m_1=t}function S$(){return null==Ni&&new C$,Ni}function q$(t,n){S$(),n=n===Xr?Y$():n,c$.call(this,n),this.o7n_1=t,this.p7n_1=new Float32Array(0),this.q7n_1=0;var i;i=gs(),this.r7n_1=i;var e;e=gs(),this.s7n_1=e;var r;r=gs(),this.t7n_1=r,this.w7n_1=_l(),this.x7n_1=!1,this.y7n_1=0,this.z7n_1=_l(),this.a7o_1=_l(),this.b7o_1=q_(),this.c7o_1=b_()}function O$(){if(Li)return rs();Li=!0,Ri=new I$("GREAT_CIRCLE",0),Pi=new I$("LINEAR",1),new I$("RHUMB_LINE",2)}function I$(t,n){Es.call(this,t,n)}function A$(){return O$(),Ri}function T$(){return O$(),Pi}function D$(){Fi=this,this.h7o_1=4e5,this.i7o_1=-.03,this.j7o_1=_l(),this.k7o_1=_l(),this.l7o_1=_l(),this.m7o_1=_l(),this.n7o_1=al(),this.o7o_1=T_(),this.p7o_1=T_(),this.q7o_1=fl(),this.r7o_1=fl()}function M$(){return null==Fi&&new D$,Fi}function N$(t,n,i){var e;M$(),n=n===Xr?R$():n,e=!1!==(null==(i=i===Xr?null:i)?null:0===Zo(i))?"Placemark":i,kg.call(this,e),this.j7p_1=n,this.k7p_1=W_(t),this.l7p_1=Lh(),this.m7p_1=null,this.n7p_1=!1,this.o7p_1=null,this.p7p_1=null,this.q7p_1=!1;M$(),this.r7p_1=4e5;M$(),this.s7p_1=6e5,this.t7p_1=!1,this.u7p_1=!1,this.v7p_1=!1,this.w7p_1=Bh().s50_1,this.x7p_1=E$(),this.y7p_1=Bh().s50_1,this.z7p_1=E$(),this.b7q_1=0,this.c7q_1=Eg(),this.d7q_1=0,this.e7q_1=new Float32Array(6),this.f7q_1=0}function R$(){return t=Us(Kr(F$)),F$.call(t,null,new Og(1,1,1,1),R_().j5l(),1,0,!0,!1,!0,J$(),Y$()),t;var t}function P$(){Ui=this}function L$(){return null==Ui&&new P$,Ui}function F$(t,n,i,e,r,s,o,u,a,h){L$(),this.t7o_1=t,this.u7o_1=e,this.v7o_1=r,this.w7o_1=s,this.x7o_1=o,this.y7o_1=u,this.z7o_1=n,this.a7p_1=i,this.b7p_1=a,this.c7p_1=h}function U$(){Hi=this,this.r7q_1=6;var t,n=new Zg;n.z7h_1=r$(),t=n,this.s7q_1=t;var i,e=new Zg;e.z7h_1=r$(),e.y7h_1=n$(),i=e,this.t7q_1=i,this.u7q_1=0,this.v7q_1=1,this.w7q_1=2}function H$(){return null==Hi&&new U$,Hi}function V$(t){this.x7q_1=t,fb.call(this)}function B$(t,n){var i,e;H$(),t===Xr?(e=ku(),rs(),i=e):i=t,t=i,n=n===Xr?Y$():n,c$.call(this,n),this.s7r_1=jo([t]),this.t7r_1=new Float32Array(0),this.u7r_1=0;var r;r=gs(),this.v7r_1=r;var s;s=gs(),this.w7r_1=s;var o;o=gs(),this.x7r_1=o;var u;u=gs(),this.y7r_1=u,this.z7r_1=H$().s6v(),this.a7s_1=H$().s6v(),this.b7s_1=_l(),this.c7s_1=!1,this.d7s_1=0,this.e7s_1=0,this.f7s_1=new V$(this),this.g7s_1=_l(),this.h7s_1=_l(),this.i7s_1=_l(),this.j7s_1=q_(),this.k7s_1=T_(),this.l7s_1=b_(),this.m7s_1=new Float64Array(3),this.n7s_1=new Int32Array(3),this.o7s_1=Ru(3),this.p7s_1=!0,this.q7s_1=0}function Y$(){return t=Us(Kr(W$)),W$.call(t,!0,!0,!1,!0,!0,!1,new Og(1,1,1,1),new Og(1,0,0,1),1,null,null),t;var t}function W$(t,n,i,e,r,s,o,u,a,h,_){this.z6j_1=t,this.a6k_1=n,this.b6k_1=i,this.c6k_1=e,this.d6k_1=r,this.e6k_1=s,this.f6k_1=a,this.g6k_1=h,this.h6k_1=_,this.i6k_1=o,this.j6k_1=u}function G$(t,n){zg.call(this,t,"Surface Image"),this.c65_1=n,this.d65_1=null}function K$(t){return Z$.call(t,function(t){return Zj.call(t,14),t}(Us(Kr(Zj))),new Og(1,1,1,1),R_().l5l(),new Og(0,0,0,1),3,!0,!0,1),t}function J$(){return K$(Us(Kr(Z$)))}function X$(t){return function(t,n){return Z$.call(n,t.r6j_1,Sg(t.s6j_1),M_(t.t6j_1),Sg(t.u6j_1),t.n6j_1,t.o6j_1,t.p6j_1,t.q6j_1),n}(t,Us(Kr(Z$)))}function Z$(t,n,i,e,r,s,o,u){this.n6j_1=r,this.o6j_1=s,this.p6j_1=o,this.q6j_1=u,this.r6j_1=t,this.s6j_1=n,this.t6j_1=i,this.u6j_1=e}function Q$(){Vi=this,this.b7u_1=!0}function ty(){return null==Vi&&new Q$,Vi}function ny(t,n){ty(),kg.call(this,"Tiled Surface Image"),this.b6r_1=t,this.c6r_1=n,this.d6r_1=null,this.e6r_1=1,this.f6r_1=0,this.g6r_1=null,this.h6r_1=!1;var i;i=gs(),this.i6r_1=i,this.j6r_1=new gy(new ts(1200,0)),this.k6r_1=null,this.l6r_1=null,this.m6r_1=null,this.n6r_1=q_()}function iy(t){this.f7u_1=t,this.c7u_1=Bs().v3h(),this.d7u_1=0,this.e7u_1=!1}function ey(t,n){this.k5y_1=t,this.l5y_1=n;var i;io(),i=ro(60,eo()),this.m5y_1=i;var e;e=os(),this.n5y_1=e}function ry(t){this.u6q_1=t,this.v6q_1=null}function sy(){return new f_}function oy(){return new Float32Array(2)}function uy(t){this.s60_1=t,this.t60_1=_l(),this.u60_1=fo(sy),this.v60_1=fo(oy),this.w60_1=new ts(0,0),this.x60_1=0}function ay(){Bi=this,this.i7u_1=12}function hy(){return null==Bi&&new ay,Bi}function _y(){hy(),this.j7u_1=0;var t,n=this.j7u_1;t=ms(Array(n),null),this.k7u_1=t}function ly(t,n,i){var e;if(this.c61_1=t,this.d61_1=n,this.e61_1=i,!(this.e61_1.j4w_1>0&&this.e61_1.k4w_1>0))throw e=wx().v4w(wx().q4w_1,"Level","constructor","The tile delta is zero"),cs(ss(e));this.f61_1=es(this.c61_1.s62_1*this.c61_1.p62_1.v5e()/this.e61_1.k4w_1),this.g61_1=es(this.c61_1.t62_1*this.c61_1.p62_1.w5e()/this.e61_1.j4w_1),this.h61_1=this.c61_1.s62_1,this.i61_1=this.c61_1.t62_1}function fy(t,n,i,e,r,s,o){var u,a,h;if(vy.call(o),!(i.j4w_1>0&&i.k4w_1>0))throw u=wx().v4w(wx().q4w_1,"LevelSet","constructor","invalidTileDelta"),cs(ss(u));if(!(e>=0))throw a=wx().v4w(wx().q4w_1,"LevelSet","constructor","invalidNumLevels"),cs(ss(a));if(!(r>=1&&s>=1))throw h=wx().v4w(wx().q4w_1,"LevelSet","constructor","invalidWidthOrHeight"),cs(ss(h));o.p62_1=t,o.q62_1=n,o.r62_1=i,o.s62_1=r,o.t62_1=s;for(var _=o,l=0,f=e,c=ms(Array(f),null);l=0))throw o=wx().v4w(wx().q4w_1,"LruMemoryCache","constructor","invalidCapacity"),cs(ss(o));var u,a=this.a5h_1,h=this.b5h_1;if(!(new ts(0,0).w(h)<=0&&h.w(a)<0))throw u=wx().v4w(wx().q4w_1,"LruMemoryCache","constructor","The specified low-water value is greater than or equal to the capacity, or less than 1"),cs(ss(u))}function $y(){return Wi||(Wi=!0,Yi=Vs([Hs("errorReadingProgramSource","Error reading program sources"),Hs("exceptionParsingText","Exception parsing text"),Hs("invalidBitmap","The bitmap is recycled"),Hs("invalidCapacity","The capacity is less than 1"),Hs("invalidCount","The count is invalid"),Hs("invalidClipDistance","The clip distance is invalid"),Hs("invalidFieldOfView","The field of view is invalid"),Hs("invalidHeight","The height is invalid"),Hs("invalidIndex","The index is invalid"),Hs("invalidNumIntervals","The number of intervals is invalid"),Hs("invalidNumLevels","The number of levels is invalid"),Hs("invalidRadius","The radius is invalid"),Hs("invalidRange","The range is invalid"),Hs("invalidResolution","The resolution is invalid"),Hs("invalidStride","The stride is invalid"),Hs("invalidTileDelta","The tile delta is invalid"),Hs("invalidWidth","The width is invalid"),Hs("invalidWidthOrHeight","The width or the height is invalid"),Hs("missingArray","The array insufficient length"),Hs("missingLayerNames","The layer names are empty"),Hs("singularMatrix","The matrix cannot be inverted")])),Yi}function yy(){}function by(){}function ky(t,n){this.x6v_1=t,this.y6v_1=n}function jy(){Gi=this}function xy(){return null==Gi&&new jy,Gi}function zy(){Ki=this}function Ey(){return null==Ki&&new zy,Ki}function Cy(t,n,i,e){Ey(),uy.call(this,t),this.p61_1=n,this.q61_1=i,this.r61_1=e,this.s61_1=this.p61_1.d61_1.toString()+new Qs(Uu(46))+this.q61_1+new Qs(Uu(46))+this.r61_1;var r,s=Hh(this.p61_1.e61_1.k4w_1)/this.p61_1.h61_1,o=Hh(t.z5i());r=Math.cos(o),this.t61_1=s*r,this.u61_1=_l()}function Sy(t,n,i,e){if(n=n===Xr?t.rb():n,i=i===Xr?t.rb()-1|0:i,e=e===Xr||e,i<0)return t.m8(0,Uu(49)),e&&t.og(n),Hs(t.toString(),!0);var r=t.sb(i);return Rs(new Qs(r),new Qs(Uu(46)))?Sy(t,n,i-1|0,e):Rs(new Qs(r),new Qs(Uu(57)))?(t.ng(i,Uu(48)),Sy(t,n,i-1|0,e)):(t.ng(i,Bu(r,1)),Hs(t.toString(),!1))}function qy(t,n){t.b7v_1=n,t.d7v_1="e"+t.b7v_1}function Oy(t,n){var i=n;i>t.c7v_1.length&&(i=t.c7v_1.length);var e=new to(Yu(t.c7v_1,xs(0,i)));if(e.rb()===t.c7v_1.length)return e.toString();var r=Zs(t.c7v_1,e.rb());if(Rs(new Qs(r),new Qs(Uu(46)))){if((e.rb()+1|0)>=t.c7v_1.length)return e.toString();r=Zs(t.c7v_1,e.rb()+1|0)}if(Gu("56789",r)){var s=Sy(e),o=s.d4();if(!s.e4())return o;qy(t,t.b7v_1+1|0);var u=Wu(o,Uu(46)),a=new to(o);return-1===u?o:a.og(u).m8(u-1|0,Uu(46)).toString()}return e.toString()}function Iy(t){this.z7u_1=t,this.b7v_1=0;var n,i=this.z7u_1,e=Math.abs(i);if(n=Br(e),qy(this,Ms(n)),this.b7v_1<0){qy(this,this.b7v_1-1|0)}var r,s=this.b7v_1;r=Math.pow(10,s),this.a7v_1=e/r,this.z7u_1<0&&(this.a7v_1=-this.a7v_1),this.c7v_1=this.a7v_1.toString(),this.d7v_1="e"+this.b7v_1}function Ay(){if(Qi)return rs();Qi=!0,Ji=new Ry("FLAGS",0),Xi=new Ry("LENGTH",1),Zi=new Ry("FRACTION",2)}function Ty(t){return vo("englishMonthNames",1,co,(function(t){return Ty(t)}),null),t.f7v_1.s()}function Dy(t){return vo("englishWeekDayNames",1,co,(function(t){return Dy(t)}),null),t.g7v_1.s()}function My(){return Ju("January February March April May June July August September October November December",Ku([Uu(32)]))}function Ny(){return Ju("Monday Tuesday Wednesday Thursday Friday Saturday Sunday",Ku([Uu(32)]))}function Ry(t,n){Es.call(this,t,n)}function Py(t){return t.j7v_1.equals(ib())}function Ly(t,n){t.h7v_1.y7v(n)}function Fy(t){return t.h7v_1.z7v(t.i7v_1)}function Uy(t,n){var i=t.h7v_1.j4();Gy(t);var e,r=i;if(Rs(new Qs(r),new Qs(Uu(72))))e=ab("%02d",[Fy(t).e3j()]);else if(Rs(new Qs(r),new Qs(Uu(107))))e=ab("%d",[Fy(t).e3j()]);else if(Rs(new Qs(r),new Qs(Uu(73)))||Rs(new Qs(r),new Qs(Uu(108)))){var s=Fy(t).e3j();s>12&&(s=s-12|0),e=Rs(new Qs(i),new Qs(Uu(73)))?ab("%02d",[s]):s.toString()}else if(Rs(new Qs(r),new Qs(Uu(77))))e=ab("%02d",[Fy(t).f3j()]);else if(Rs(new Qs(r),new Qs(Uu(83))))e=ab("%02d",[Fy(t).g3j()]);else if(Rs(new Qs(r),new Qs(Uu(76))))e=ab("%03d",[Fy(t).h3j()/1e6|0]);else if(Rs(new Qs(r),new Qs(Uu(78))))e=ab("%09d",[Fy(t).h3j()]);else if(Rs(new Qs(r),new Qs(Uu(112))))e=n?Fy(t).e3j()>12?"PM":"AM":Fy(t).e3j()>12?"pm":"am";else if(Rs(new Qs(r),new Qs(Uu(122)))){var o=fs().j3j();e=vu(Zu(o,Xu(Fy(t),o)).toString(),":","")}else if(Rs(new Qs(r),new Qs(Uu(90)))){var u=fs().j3j();e=Zu(u,Xu(Fy(t),u)).toString()}else if(Rs(new Qs(r),new Qs(Uu(115)))){var a=fs().j3j();e=Xu(Fy(t),a).u3i().toString()}else if(Rs(new Qs(r),new Qs(Uu(81)))){var h=fs().j3j();e=Xu(Fy(t),h).w3i().toString()}else if(Rs(new Qs(r),new Qs(Uu(66))))e=nb().d7w(ta(Fy(t).b3j()));else if(Rs(new Qs(r),new Qs(Uu(98)))||Rs(new Qs(r),new Qs(Uu(104))))e=nb().c7w(ta(Fy(t).b3j()));else if(Rs(new Qs(r),new Qs(Uu(101))))e=Fy(t).d3i().toString();else if(Rs(new Qs(r),new Qs(Uu(100))))e=ab("%02s",[Fy(t).d3i()]);else if(Rs(new Qs(r),new Qs(Uu(109))))e=ab("%02s",[ta(Fy(t).b3j())]);else if(Rs(new Qs(r),new Qs(Uu(65))))e=nb().b7w(Fy(t).c3j());else if(Rs(new Qs(r),new Qs(Uu(97))))e=nb().a7w(Fy(t).c3j());else if(Rs(new Qs(r),new Qs(Uu(121))))e=Qu(Fy(t).b3i().toString(),2);else if(Rs(new Qs(r),new Qs(Uu(89))))e=ab("%04d",[Fy(t).b3i()]);else if(Rs(new Qs(r),new Qs(Uu(106))))e=ab("%03d",[Fy(t).d3j()]);else if(Rs(new Qs(r),new Qs(Uu(82))))e=ab("%1!tH:%1!tM",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(114))))e=ab(n?"%1!tI:%1!tM:%1!tS %1!Tp":"%1!tI:%1!tM:%1!tS %1!tp",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(84))))e=ab("%tH:%1!tM:%1!tS",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(68))))e=ab("%tm/%1!td/%1!ty",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(70))))e=ab("%tY-%1!tm-%1!td",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(99))))e=ab("%ta %1!tb %1!td %1!tT %1!tZ %1!tY",[Fy(t)]);else if(Rs(new Qs(r),new Qs(Uu(79)))){var _=fs().j3j(),l=Zu(_,Xu(Fy(t),_)).toString();e=ab("%tFT%1!tT%s",[Fy(t),l])}else Rs(new Qs(r),new Qs(Uu(35)))?e=ab("%tY%1!tm%1!td%1!tH%1!tM%1!tS",[Xu(Fy(t),fs().m3i_1)]):Ly(t,"unknown time field specificator: 't"+new Qs(i)+"'");Jy(t,e)}function Hy(t){Gy(t);var n=Xs(t.h7v_1.f7w(t.i7v_1));t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&n.w(new ts(0,0))>0?Ky(t,n.toString(),"+"):Jy(t,t.p7v_1?"+"+ss(n):ss(n))}function Vy(t,n){Gy(t);var i=Xs(t.h7v_1.f7w(t.i7v_1));t.p7v_1&&Ly(t,"'+' is incompatible with hex format");var e=na(i,16);Jy(t,n?e.toUpperCase():e.toLowerCase())}function By(t){Gy(t);var n=Xs(t.h7v_1.f7w(t.i7v_1));t.p7v_1&&Ly(t,"'+' is incompatible with oct format"),Jy(t,na(n,8))}function Yy(t){Gy(t),Jy(t,Co(t.h7v_1.g7w(t.i7v_1)))}function Wy(t,n){n&&(t.q7v_1=!0);var i=t.o7v_1;if(Zo(i)>0){switch(t.j7v_1.l6_1){case 1:t.k7v_1=ia(t.o7v_1.toString());break;case 2:t.l7v_1=ia(t.o7v_1.toString());break;case 0:Ly(t,"can't parse format specifier (error 7)")}t.o7v_1.mg()}}function Gy(t,n,i){return Wy(t,n=n===Xr||n)}function Ky(t,n,i){var e=n.length+i.length|0;if(t.k7v_1<0||t.k7v_10))break t;o.k7(t.n7v_1)}o.l8(n);t:for(;;){var a=s;if(s=a-1|0,!(a>0))break t;o.k7(t.n7v_1)}t.h7v_1.h7w(o.toString())}}function Jy(t,n,i,e){return Ky(t,n,i=i===Xr?"":i)}function Xy(t){Gy(t);var n=Js(t.h7v_1.f7w(t.i7v_1)),i=function(t,n,i){i=i===Xr?-1:i;var e=t,r=So(),s=e;if(Math.abs(s)>=1){var o=0===i?Hu(e):Xs(e);r.k8(o),e-=o.ve()}else r.l8(e<0?"-0":"0");var u=i<0?n<0?6:(n-r.rb()|0)-1|0:i;0!==u&&r.k7(Uu(46));var a=10*e;t:for(;;){var h=u;if(u=h-1|0,!(h>0))break t;var _=Ms(a);r.k8(Vu(_)),a=10*(a-_)}var l=Ms(a);return Vu(l)<5?r.toString():Sy(r,Xr,Xr,!1).b4_1}(n,t.k7v_1,t.l7v_1);t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&n>0?Ky(t,i,"+"):Jy(t,t.p7v_1?"+"+i:i)}function Zy(t,n){Gy(t);var i,e,r,s=Js(t.h7v_1.f7w(t.i7v_1)),o=(i=s,e=t.k7v_1,r=(r=t.l7v_1)===Xr?-1:r,new Iy(i).e7v(e,r)),u=n?o.toUpperCase():o.toLowerCase();t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&s>0?Ky(t,u,"+"):Jy(t,t.p7v_1?"+"+u:u)}function Qy(t,n){Gy(t);var i=t.h7v_1.f7w(t.i7v_1),e=ss(i),r=n?e.toUpperCase():e.toLowerCase();t.p7v_1&&Rs(new Qs(t.n7v_1),new Qs(Uu(48)))&&Js(i)>0?Ky(t,r,"+"):Jy(t,t.p7v_1?"+"+r:r)}function tb(){te=this,this.f7v_1=fo(My),this.g7v_1=fo(Ny)}function nb(){return null==te&&new tb,te}function ib(){return Ay(),Ji}function eb(){return Ay(),Xi}function rb(){return Ay(),Zi}function sb(t,n){nb(),this.h7v_1=t,this.i7v_1=n,this.j7v_1=ib(),this.k7v_1=-1,this.l7v_1=-1,this.m7v_1=(ob(),ie),this.n7v_1=Uu(32),this.o7v_1=So(),this.p7v_1=!1,this.q7v_1=!1,this.r7v_1=!1}function ob(){if(re)return rs();re=!0,ne=new ub("LEFT",0),ie=new ub("RIGHT",1),ee=new ub("CENTER",2)}function ub(t,n){Es.call(this,t,n)}function ab(t,n){return new hb(t,n).k7w().toString()}function hb(t,n){this.s7v_1=t,this.t7v_1=n,this.u7v_1=0,this.v7v_1=-1,this.w7v_1=So(),this.x7v_1=0}function _b(){se=this,this.k7e_1=0,this.l7e_1=1,this.m7e_1=100800,this.n7e_1=100801,this.o7e_1="1.3",this.p7e_1="GLU_EXT_object_space_tess ",this.q7e_1=100900,this.r7e_1=100901,this.s7e_1=100902,this.t7e_1=100904,this.u7e_1=100100,this.v7e_1=100101,this.w7e_1=100102,this.x7e_1=100103,this.y7e_1=100104,this.z7e_1=100105,this.a7f_1=100106,this.b7f_1=100107,this.c7f_1=100108,this.d7f_1=100109,this.e7f_1=100110,this.f7f_1=100111,this.g7f_1=100120,this.h7f_1=100121,this.i7f_1=100122,this.j7f_1=100123,this.k7f_1=100124,this.l7f_1=100140,this.m7f_1=100141,this.n7f_1=100142,this.o7f_1=100151,this.p7f_1=100152,this.q7f_1=100153,this.r7f_1=100154,this.s7f_1=100155,this.t7f_1=100156,this.u7f_1=100157,this.v7f_1=100158,this.w7f_1=100151,this.x7f_1=100152,this.y7f_1=100153,this.z7f_1=100154,this.a7g_1=100155,this.b7g_1=100156,this.c7g_1=100130,this.d7g_1=100131,this.e7g_1=100132,this.f7g_1=100133,this.g7g_1=100134,this.h7g_1=1e150}function lb(){return null==se&&new _b,se}function fb(){}function cb(){var t;oe=this,t=["invalid enumerant","invalid value","out of memory","","invalid operation"],this.m7w_1=t}function vb(t){this.c7y_1=t,this.d7y_1=null,this.e7y_1=0,this.f7y_1=!1,this.g7y_1=!1,this.h7y_1=!1,this.i7y_1=!1}function wb(){this.j7y_1=new Float64Array(3),this.k7y_1=null}function db(){ue=this}function pb(){return null==ue&&new db,ue}function mb(t,n,i){pb(),this.o7y_1=t,this.p7y_1=n,this.q7y_1=i}function gb(t){t=t===Xr?null:t,this.s7y_1=t,this.t7y_1=this,this.u7y_1=this}function $b(){this.c7z_1=null,this.d7z_1=null,this.e7z_1=null,this.f7z_1=null,this.g7z_1=null,this.h7z_1=!1,this.i7z_1=!1}function yb(t){this.j7z_1=t,this.k7z_1=null,this.l7z_1=null,this.m7z_1=null,this.n7z_1=null,this.o7z_1=null,this.p7z_1=null,this.q7z_1=null,this.r7z_1=0}function bb(){this.s7z_1=new qb,this.t7z_1=new $b,this.u7z_1=new yb(!0),this.v7z_1=new yb(!1)}function kb(t){var n=t.s7w_1;null==n||(Tb().w7z(n),rs());var i=t;dk(),i.q7w_1=0,t.r7w_1=null,t.s7w_1=null}function jb(t,n){t.q7w_1!==n&&function(t,n){for(;t.q7w_1!==n;)if(t.q7w_10))throw u=wx().v4w(wx().q4w_1,"Font","constructor","invalidSize"),cs(ss(u))}function Qj(){Ir=this}function tx(){return null==Ir&&new Qj,Ir}function nx(t,n,i,e){this.u8n_1=t,this.v8n_1=n,this.w8n_1=i,Jo.call(this,e)}function ix(t,n,i){this.m8o_1=t,this.n8o_1=n,Jo.call(this,i)}function ex(t,n,i){this.x8o_1=t,this.y8o_1=n,Jo.call(this,i)}function rx(t,n,i,e,r){return function(s){var o=t.a8p();return null==o||n._v?(i.c8o(t,e,r),rs()):(n._v=!0,wa(i.e4x_1,Xr,Xr,function(t,n,i){var e=new ex(t,n,i),r=function(t,n){return e.n1f(t,n)};return r.$arity=1,r}(o,r,null)),rs()),null!=o&&(URL.revokeObjectURL(r.src),rs()),rs()}}function sx(t,n){var i,e;tx(),t=t===Xr?tx().m8c():t,n===Xr?(e=.75*t.ve(),rs(),i=Xs(e)):i=n,n=i,gy.call(this,t,n),this.c4x_1=new ts(0,0),this.d4x_1=16,this.e4x_1=$a();var r;io(),r=ro(60,eo()),this.f4x_1=new ey(3,r);var s;s=js(),this.g4x_1=s}function ox(t){this.r7g_1=t,this.s7g_1=.15}function ux(t){Vg.call(this,t.width,t.height,Hk(),Vk()),this.w8p_1=t,this.x8p_1=!!rj(t.width)&&rj(t.height),this.h57_1.q5k()}function ax(){Ar=this}function hx(){return null==Ar&&new ax,Ar}function _x(){}function lx(t){hx(),ry.call(this,t)}function fx(t){Vg.call(this,t.width,t.height,Hk(),Vk()),this.k8q_1=t,this.l8q_1=!!rj(t.width)&&rj(t.height),this.h57_1.q5k()}function cx(t,n,i,e){Cy.call(this,t,n,i,e),this.d6q_1=null,this.e6q_1=null}function vx(){Tr=this,this.q4w_1=1,this.r4w_1=2,this.s4w_1=3,this.t4w_1=4,this.u4w_1=this.q4w_1}function wx(){return null==Tr&&new vx,Tr}function dx(){_y.call(this)}function px(t){this.y8p_1=t,this.z8p_1=!1}function mx(){Dr=this,this.p8q_1=new gx}function gx(t){null==Dr&&new mx,t=t===Xr?null:t,this.n8q_1=t}function $x(){Mr=this,this.p56_1=new bx}function yx(){return null==Mr&&new $x,Mr}function bx(t){yx(),t=t===Xr?null:t,this.e7i_1=t}function kx(){Nr=this,this.f67_1=new xx}function jx(){return null==Nr&&new kx,Nr}function xx(t){jx(),t=t===Xr?null:t,this.o8q_1=t}function zx(){Rr=this,this.r56_1=new Cx}function Ex(){return null==Rr&&new zx,Rr}function Cx(t){Ex(),t=t===Xr?null:t,this.i7h_1=t}function Sx(){Pr=this,this.q56_1=new Ox}function qx(){return null==Pr&&new Sx,Pr}function Ox(t){qx(),t=t===Xr?null:t,this.b7h_1=t}function Ix(){Lr=this,this.o56_1=new Tx}function Ax(){return null==Lr&&new Ix,Lr}function Tx(t){Ax(),t=t===Xr?null:t,this.b7e_1=t}function Dx(){return Ur||(Ur=!0,Fr=Ju(window.navigator.language,Ku([Uu(45)])).h(0),Ju(window.navigator.language,Ku([Uu(45)])).h(1)),Fr}return Zr(Ea,"images",Jr),Zr(Sa,"files",Jr),Zr(qa,"GoToAnimator",is),Zr(Oa,"Companion",Jr),Zr(Aa,"PickedObject",is),Zr(Ma,"PickedObjectList",is),Zr(Fa,"Event",ls),Zr(Na,"RequestRedraw",Jr,Xr,[Fa]),Zr(Ra,"UnmarkResourceAbsent",is,Xr,[Fa]),Zr(Pa,"Companion",Jr,Xr,Xr,Xr,Xr,[1]),Zr(Ua,"WorldWind",is),Zr(Ha,"Companion",Jr),Zr(Oh,"DrawableTerrain",ls),Zr(Ba,"BasicDrawableTerrain",is,Xr,[Oh]),Zr(Ya,"DrawContext",is),Zr(Wa,"Companion",Jr),Zr(Ka,"DrawElements",is),Zr(Ja,"VertexAttrib",is),Zr(Xa,"DrawShapeState",is),Zr(Qa,"DrawableGroup",is,Es),Zr(ih,"DrawableLambda",is),Zr(eh,"Companion",Jr),Zr(sh,"DrawableLines",is),Zr(oh,"Companion",Jr),Zr(ah,"Entry",is),Zr(hh,"sam$kotlin_Comparator$0",is),Zr(lh,"DrawableQueue",is),Zr(fh,"Companion",Jr),Zr(vh,"DrawableScreenTexture",is),Zr(wh,"Companion",Jr),Zr(ph,"DrawableShape",is),Zr(mh,"Companion",Jr),Zr($h,"DrawableSightline",is),Zr(yh,"Companion",Jr),Zr(kh,"DrawableSurfaceColor",is),Zr(jh,"Companion",Jr),Zr(zh,"DrawableSurfaceShape",is),Zr(Eh,"Companion",Jr),Zr(qh,"DrawableSurfaceTexture",is),Zr(Ih,"Companion",Jr),Zr(Th,"DrawableTessellation",is),Zr(Dh,"BasicFrameController",is),Zr(Mh,"Companion",Jr),Zr(Nh,"Frame",is),Zr(Ph,"AltitudeMode",is,Es),Zr(Vh,"Companion",Jr),Zr(o_,"Angle",is,Xr,[Ps]),Zr(__,"Companion",Jr),Zr(f_,"BoundingBox",is),Zr(c_,"BoundingSphere",is),Zr(v_,"Camera",is),Zr(w_,"Companion",Jr),Zr(p_,"Ellipsoid",is),Zr(g_,"Frustum",is),Zr(y_,"Line",is),Zr(k_,"Companion",Jr),Zr(x_,"Location",is),Zr(E_,"LookAt",is),Zr(C_,"Companion",Jr),Zr(O_,"Matrix3",is),Zr(I_,"Companion",Jr),Zr(D_,"Matrix4",is),Zr(N_,"Companion",Jr),Zr(P_,"Offset",is),Zr(L_,"OffsetMode",is,Es),Zr(U_,"Companion",Jr),Zr(B_,"Plane",is),Zr(G_,"Companion",Jr),Zr(J_,"Position",is,x_),Zr(Z_,"Range",is),Zr(nl,"Companion",Jr),Zr(el,"Sector",is),Zr(rl,"TileMatrix",is),Zr(sl,"Companion",Jr),Zr(ul,"TileMatrixSet",is),Zr(hl,"Vec2",is),Zr(ll,"Vec3",is,hl),Zr(cl,"Viewport",is),Zr(wl,"Hemisphere",is,Es),Zr(ml,"Companion",Jr),Zr($l,"MGRSCoord",is),Zr(yl,"Companion",Jr),Zr(zl,"MGRSCoordConverter",is),Zr(El,"Companion",Jr),Zr(Sl,"PolarCoordConverter",is),Zr(ql,"Companion",Jr),Zr(Il,"TMCoord",is),Zr(Al,"Companion",Jr),Zr(Dl,"TMCoordConverter",is),Zr(Ml,"Companion",Jr),Zr(Rl,"UPSCoord",is),Zr(Pl,"Companion",Jr),Zr(Fl,"UPSCoordConverter",is),Zr(Ul,"Companion",Jr),Zr(Vl,"UTMCoord",is),Zr(Bl,"Companion",Jr),Zr(Wl,"UTMCoordConverter",is),Zr(Kl,"GestureState",is,Es),Zr(rf,"SelectDragCallback",ls),Zr(sf,"Globe",is),Zr(of,"ElevationModel",is),Zr(uf,"AbstractElevationCoverage",is),Zr(af,"Companion",Jr),Zr(_f,"TileBlock",is),Zr(lf,"AbstractTiledElevationCoverage",is,uf),Zr(Vj,"TiledElevationCoverage",is,lf),Zr(lv,"WmsElevationCoverage",is,Vj),Zr(ff,"BasicElevationCoverage",is,lv),Zr(cf,"Wgs84Projection",is),Zr(vf,"sam$kotlin_Comparator$0",is),Zr(df,"BasicTerrain",is),Zr(pf,"BasicTessellator",is),Zr(mf,"Companion",Jr),Zr(uy,"AbstractTile",is),Zr(Cy,"Tile",is,uy),Zr($f,"TerrainTile",is,Cy),Zr(yf,"AbstractLayer",is),Zr(jf,"RenderableLayer",is,yf),Zr(bf,"BackgroundLayer",is,jf),Zr(kf,"LayerList",is),Zr(xf,"ShowTessellationLayer",is,yf),Zr(Ef,"FragMode",is,Es),Zr(u$,"AbstractShaderProgram",is),Zr(Sf,"AbstractAtmosphereProgram",is,u$),Zr(qf,"Companion",Jr),Zr(If,"AtmosphereLayer",is,yf),Zr(Af,"Companion",Jr),Zr(Df,"DrawableGroundAtmosphere",is),Zr(Mf,"Companion",Jr),Zr(Rf,"DrawableSkyAtmosphere",is),Zr(Pf,"GroundProgram",is,Sf),Zr(Lf,"SkyProgram",is,Sf),Zr(Ff,"Companion",Jr),Zr(Gf,"AbstractGraticuleLayer",is,yf),Zr(Kf,"AbstractGraticuleTile",is,uy),Zr(Jf,"Companion",Jr),Zr(Zf,"AbstractUTMGraticuleLayer",is,Gf),Zr(Qf,"Companion",Jr),Zr(nc,"GraticuleRenderingParams",is,Xr,[$o]),Zr(sc,"GraticuleSupport",is),Zr(uc,"Companion",Jr),Zr(hc,"GridElement",is),Zr(vc,"Companion",Jr),Zr(dc,"MGRSGraticuleLayer",is,Zf),Zr(gc,"Companion",Jr),Zr(yc,"MGRSGridZone",is,Kf),Zr(bc,"Companion",Jr),Zr(jc,"MGRSOverview",is,Kf),Zr(xc,"UTMExtremes",is),Zr(Ec,"Companion",Jr),Zr(Sc,"UTMMetricScaleSupport",is),Zr(Dc,"UTMSquareSector",is,Kf),Zr(qc,"UTMSquareGrid",is,Dc),Zr(Ac,"Companion",Jr),Zr(Rc,"UTMSquareZone",is,Dc),Zr(Pc,"Companion",Jr),Zr(by,"ResourcePostprocessor",ls,Xr,Xr,Xr,Xr,[1]),Zr(cx,"ImageTile",is,Cy,[Cy,by],Xr,Xr,[1]),Zr(Fc,"AbstractMercatorImageTile",is,cx,Xr,Xr,Xr,[1]),Zr(Uc,"Companion",Jr),Zr(Vc,"MercatorSector",is,el),Zr(Bc,Xr,is),Zr(Bj,"AbstractTiledImageLayer",is,jf),Zr(Yj,"TiledImageLayer",is,Bj),Zr(Yc,"MercatorTiledImageLayer",is,Yj),Zr(Fg,"Renderable",ls),Zr(kg,"AbstractRenderable",is,Xr,[Fg]),Zr(ny,"TiledSurfaceImage",is,kg),Zr(Wc,"MercatorTiledSurfaceImage",is,ny),Zr(Gc,"Type",is,Es),Zr(Kc,"GoogleLayer",is,Yc),Zr(Jc,"$serializer",Jr,Xr,[Do]),Zr(Qc,"Companion",Jr),Zr(nv,"$serializer",Jr,Xr,[Do]),Zr(rv,"StarMetadata",is,Xr,Xr,Xr,{0:Xc}),Zr(sv,"StarData",is,Xr,Xr,Xr,{0:iv}),Zr(ov,"StarFieldLayer",is,yf),Zr(uv,"StarFieldProgram",is,u$),Zr(av,Xr,is),Zr(hv,"Companion",Jr),Zr(fv,"WmsLayerConfig",is),Zr(dv,Xr,is,Yj),Zr(pv,"WmsLayerFactory$retrieveWmsCapabilities$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr($v,"$createLayerCOROUTINE$0",is,Jo),Zr(yv,"$retrieveWmsCapabilitiesCOROUTINE$1",is,Jo),Zr(bv,"WmsLayerFactory",Jr,Xr,Xr,Xr,Xr,[2,1]),Zr(xv,"WmsTileFactory",is),Zr(Ev,"CompatibleTileMatrixSet",is),Zr(Sv,Xr,is,Yj),Zr(qv,"WmtsLayerFactory$retrieveWmtsCapabilities$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(Iv,"$createLayerCOROUTINE$2",is,Jo),Zr(Av,"$retrieveWmtsCapabilitiesCOROUTINE$3",is,Jo),Zr(Tv,"WmtsLayerFactory",Jr,Xr,Xr,Xr,Xr,[2,1]),Zr(Mv,"Companion",Jr),Zr(Rv,"WmtsTileFactory",is),Zr(Pv,"$serializer",Jr,Xr,[Do]),Zr(Uv,"WmsAttribution",is,Xr,Xr,Xr,{0:Lv}),Zr(Hv,"$serializer",Jr,Xr,[Do]),Zr(Yv,"WmsAuthorityUrl",is,Xr,Xr,Xr,{0:Vv}),Zr(Wv,"$serializer",Jr,Xr,[Do]),Zr(Jv,"WmsBoundingBox",is,Xr,Xr,Xr,{0:Gv}),Zr(Xv,"Companion",Jr),Zr(Zv,"$serializer",Jr,Xr,[Do]),Zr(nw,"WmsCapabilities",is,Xr,Xr,Xr,{0:Qv}),Zr(iw,"Companion",Jr),Zr(rw,"$serializer",Jr,Xr,[Do]),Zr(uw,"WmsCapability",is,Xr,Xr,Xr,{0:sw}),Zr(aw,"$serializer",Jr,Xr,[Do]),Zr(lw,"WmsContactAddress",is,Xr,Xr,Xr,{0:hw}),Zr(fw,"$serializer",Jr,Xr,[Do]),Zr(ww,"WmsContactInformation",is,Xr,Xr,Xr,{0:cw}),Zr(dw,"$serializer",Jr,Xr,[Do]),Zr(gw,"WmsContactPersonPrimary",is,Xr,Xr,Xr,{0:pw}),Zr($w,"$serializer",Jr,Xr,[Do]),Zr(kw,"$serializer",Jr,Xr,[Do]),Zr(zw,"WmsHttp",is,Xr,Xr,Xr,{0:yw}),Zr(Ew,"WmsHttpProtocol",is,Xr,Xr,Xr,{0:jw}),Zr(Cw,"$serializer",Jr,Xr,[Do]),Zr(Ow,"WmsDcpType",is,Xr,Xr,Xr,{0:Sw}),Zr(Iw,"$serializer",Jr,Xr,[Do]),Zr(Dw,"WmsDimension",is,Xr,Xr,Xr,{0:Aw}),Zr(Mw,"Companion",Jr),Zr(Rw,"$serializer",Jr,Xr,[Do]),Zr(Fw,"WmsException",is,Xr,Xr,Xr,{0:Pw}),Zr(Uw,"$serializer",Jr,Xr,[Do]),Zr(Bw,"WmsGeographicBoundingBox",is,Xr,Xr,Xr,{0:Hw}),Zr(Yw,"$serializer",Jr,Xr,[Do]),Zr(Kw,"WmsIdentifier",is,Xr,Xr,Xr,{0:Ww}),Zr(Jw,"Companion",Jr),Zr(Zw,"$serializer",Jr,Xr,[Do]),Zr(nd,"WmsInfoUrl",is,Xr,Xr,Xr,{0:Qw}),Zr(id,"Companion",Jr),Zr(rd,"$serializer",Jr,Xr,[Do]),Zr(ud,"WmsLayer",is,Xr,Xr,Xr,{0:sd}),Zr(ad,"Companion",Jr),Zr(_d,"$serializer",Jr,Xr,[Do]),Zr(cd,"WmsLogoUrl",is,Xr,Xr,Xr,{0:ld}),Zr(vd,"Companion",Jr),Zr(dd,"$serializer",Jr,Xr,[Do]),Zr(gd,"WmsMetadataUrl",is,Xr,Xr,Xr,{0:pd}),Zr($d,"$serializer",Jr,Xr,[Do]),Zr(kd,"WmsOnlineResource",is,Xr,Xr,Xr,{0:yd}),Zr(jd,"$serializer",Jr,Xr,[Do]),Zr(Ed,"WmsRequest",is,Xr,Xr,Xr,{0:xd}),Zr(Cd,"Companion",Jr),Zr(qd,"$serializer",Jr,Xr,[Do]),Zr(Ad,"WmsRequestOperation",is,Xr,Xr,Xr,{0:Od}),Zr(Td,"Companion",Jr),Zr(Md,"$serializer",Jr,Xr,[Do]),Zr(Pd,"WmsService",is,Xr,Xr,Xr,{0:Nd}),Zr(Ld,"Companion",Jr),Zr(Ud,"$serializer",Jr,Xr,[Do]),Zr(Bd,"WmsStyle",is,Xr,Xr,Xr,{0:Hd}),Zr(Yd,"Companion",Jr),Zr(Gd,"$serializer",Jr,Xr,[Do]),Zr(Xd,"OwsAddress",is,Xr,Xr,Xr,{0:Kd}),Zr(Zd,"$serializer",Jr,Xr,[Do]),Zr(np,"OwsBoundingBox",is,Xr,Xr,Xr,{0:Qd}),Zr(ip,"Companion",Jr),Zr(rp,"$serializer",Jr,Xr,[Do]),Zr(up,"OwsConstraint",is,Xr,Xr,Xr,{0:sp}),Zr(ap,"$serializer",Jr,Xr,[Do]),Zr(lp,"OwsContactInfo",is,Xr,Xr,Xr,{0:hp}),Zr(fp,"$serializer",Jr,Xr,[Do]),Zr(wp,"OwsDcp",is,Xr,Xr,Xr,{0:cp}),Zr(dp,"OwsDescription",is),Zr(pp,"Companion",Jr),Zr(gp,"$serializer",Jr,Xr,[Do]),Zr(bp,"OwsHttp",is,Xr,Xr,Xr,{0:$p}),Zr(kp,"Companion",Jr),Zr(xp,"$serializer",Jr,Xr,[Do]),Zr(Cp,"OwsHttpMethod",is,Xr,Xr,Xr,{0:zp}),Zr(Sp,"$serializer",Jr,Xr,[Do]),Zr(Ip,"OwsOnlineResource",is,Xr,Xr,Xr,{0:qp}),Zr(Ap,"Companion",Jr),Zr(Dp,"$serializer",Jr,Xr,[Do]),Zr(Rp,"OwsOperation",is,Xr,Xr,Xr,{0:Mp}),Zr(Pp,"Companion",Jr),Zr(Fp,"$serializer",Jr,Xr,[Do]),Zr(Vp,"OwsOperationsMetadata",is,Xr,Xr,Xr,{0:Up}),Zr(Bp,"Companion",Jr),Zr(Wp,"$serializer",Jr,Xr,[Do]),Zr(Jp,"OwsPhone",is,Xr,Xr,Xr,{0:Gp}),Zr(Xp,"$serializer",Jr,Xr,[Do]),Zr(tm,"OwsServiceContact",is,Xr,Xr,Xr,{0:Zp}),Zr(nm,"Companion",Jr),Zr(em,"$serializer",Jr,Xr,[Do]),Zr(om,"OwsServiceIdentification",is,dp,Xr,Xr,{0:rm}),Zr(um,"$serializer",Jr,Xr,[Do]),Zr(_m,"OwsServiceProvider",is,Xr,Xr,Xr,{0:am}),Zr(lm,"Companion",Jr),Zr(cm,"$serializer",Jr,Xr,[Do]),Zr(dm,"WmtsCapabilities",is,Xr,Xr,Xr,{0:vm}),Zr(pm,"Companion",Jr),Zr(gm,"$serializer",Jr,Xr,[Do]),Zr(bm,"WmtsContents",is,Xr,Xr,Xr,{0:$m}),Zr(km,"Companion",Jr),Zr(xm,"$serializer",Jr,Xr,[Do]),Zr(Cm,"WmtsDimension",is,dp,Xr,Xr,{0:zm}),Zr(Sm,"Companion",Jr),Zr(Om,"$serializer",Jr,Xr,[Do]),Zr(Tm,"WmtsLayer",is,dp,Xr,Xr,{0:Im}),Zr(Dm,"$serializer",Jr,Xr,[Do]),Zr(Rm,"WmtsLegendURL",is,Xr,Xr,Xr,{0:Mm}),Zr(Pm,"$serializer",Jr,Xr,[Do]),Zr(Um,"WmtsResourceUrl",is,Xr,Xr,Xr,{0:Lm}),Zr(Hm,"Companion",Jr),Zr(Bm,"$serializer",Jr,Xr,[Do]),Zr(Gm,"WmtsStyle",is,dp,Xr,Xr,{0:Ym}),Zr(Km,"Companion",Jr),Zr(Xm,"$serializer",Jr,Xr,[Do]),Zr(tg,"WmtsTheme",is,dp,Xr,Xr,{0:Zm}),Zr(ng,"Companion",Jr),Zr(eg,"$serializer",Jr,Xr,[Do]),Zr(og,"WmtsTileMatrix",is,dp,Xr,Xr,{0:rg}),Zr(ug,"$serializer",Jr,Xr,[Do]),Zr(_g,"WmtsTileMatrixLimits",is,Xr,Xr,Xr,{0:ag}),Zr(lg,"Companion",Jr),Zr(cg,"$serializer",Jr,Xr,[Do]),Zr(dg,"WmtsTileMatrixSet",is,dp,Xr,Xr,{0:vg}),Zr(pg,"Companion",Jr),Zr(gg,"$serializer",Jr,Xr,[Do]),Zr(bg,"WmtsTileMatrixSetLink",is,Xr,Xr,Xr,{0:$g}),Zr(zg,"AbstractSurfaceRenderable",is,kg),Zr(qg,"Companion",Jr),Zr(Og,"Color",is),Zr(Ag,"FontWeight",is,Es),Zr(Dg,"Framebuffer",is),Zr(Mg,"Companion",Jr),Zr(Rg,"TextCacheKey",is),Zr(Lg,"RenderContext",is),Zr(Ug,"Companion",Jr),Zr(Vg,"Texture",is),Zr(Bg,"AbstractBufferObject",is),Zr(Yg,"FloatBufferObject",is,Bg),Zr(Wg,"IntBufferObject",is,Bg),Zr(Gg,"ShortBufferObject",is,Bg),Zr(Jg,"ImageConfig",is,Es),Zr(Zg,"ImageOptions",is),Zr(t$,"ResamplingMode",is,Es),Zr(e$,"WrapMode",is,Es),Zr(s$,"Companion",Jr),Zr(a$,"BasicShaderProgram",is,u$),Zr(h$,"SightlineProgram",is,u$),Zr(_$,"SurfaceTextureProgram",is,u$),Zr(l$,"Companion",Jr),Zr(p$,"Highlightable",ls),Zr(c$,"AbstractShape",is,kg,[kg,p$]),Zr(v$,"Companion",Jr),Zr(d$,"Ellipse",is,c$),Zr(m$,"Companion",Jr),Zr($$,"RenderData",is),Zr(b$,"Movable",ls),Zr(y$,"Label",is,kg,[kg,p$,b$]),Zr(k$,"OmnidirectionalSightline",is,kg,[kg,p$,b$]),Zr(x$,"OrientationMode",is,Es),Zr(C$,"Companion",Jr),Zr(q$,"Path",is,c$),Zr(I$,"PathType",is,Es),Zr(D$,"Companion",Jr),Zr(N$,"Placemark",is,kg,[kg,p$,b$]),Zr(P$,"Companion",Jr),Zr(F$,"PlacemarkAttributes",is),Zr(U$,"Companion",Jr),Zr(fb,"GLUtessellatorCallbackAdapter",is),Zr(V$,Xr,is,fb),Zr(B$,"Polygon",is,c$),Zr(W$,"ShapeAttributes",is),Zr(G$,"SurfaceImage",is,zg),Zr(Z$,"TextAttributes",is),Zr(Q$,"Companion",Jr),Zr(iy,"AbsentResourceEntry",is),Zr(ey,"AbsentResourceList",is),Zr(ry,"AbstractSource",is),Zr(ay,"Companion",Jr),Zr(yy,"Pool",ls),Zr(_y,"BasicPool",is,Xr,[yy]),Zr(ly,"Level",is),Zr(vy,"LevelSet",is),Zr(wy,"LevelSetConfig",is),Zr(dy,"Entry",is),Zr(py,"sam$kotlin_Comparator$0",is),Zr(gy,"LruMemoryCache",is),Zr(ky,"CelestialLocation",is),Zr(jy,"SunPosition",Jr),Zr(zy,"Companion",Jr),Zr(Iy,"ExponentFormatter",is),Zr(Ry,"Stage",is,Es),Zr(tb,"Companion",Jr),Zr(sb,"Specification",is),Zr(ub,"Positioning",is,Es),Zr(hb,"StringFormat",is),Zr(_b,"GLU",Jr),Zr(cb,"Error",Jr),Zr(vb,"ActiveRegion",is),Zr(wb,"CachedVertex",is),Zr(db,"Companion",Jr),Zr(mb,"Dict",is),Zr(gb,"DictNode",is),Zr($b,"GLUface",is),Zr(yb,"GLUhalfEdge",is),Zr(bb,"GLUmesh",is),Zr(Eb,"Companion",Jr),Zr(Sb,"GLUtessellatorImpl",is),Zr(qb,"GLUvertex",is),Zr(Ob,"Geom",Jr),Zr(Ab,"Mesh",Jr),Zr(Mb,"Normal",Jr),Zr(Nb,"PQnode",is),Zr(Rb,"PQhandleElem",is),Zr(Pb,"Companion",Jr),Zr(Fb,"PriorityQ",is),Zr(Ub,"PriorityQHeap",is,Fb),Zr(Bb,"Stack",is),Zr(Yb,"Companion",Jr),Zr(Gb,"PriorityQSort",is,Fb),Zr(nk,"FaceCount",is),Zr(ik,"RenderTriangle",is),Zr(ek,"RenderFan",is),Zr(rk,"RenderStrip",is),Zr(sk,"Render",Jr),Zr(_k,Xr,is),Zr(lk,"Sweep",Jr),Zr(ck,"TessMono",Jr),Zr(wk,"TessState",Jr),Zr(gk,"Kgl",ls),Zr($j,"WorldWindowController",is),Zr(uj,"BasicWorldWindowController",is,$j),Zr(aj,"KeyboardControls",is),Zr(_j,"WorldWindow$contextRestored$slambda$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(fj,"EventListenerEntry",is),Zr(cj,"Companion",Jr),Zr(wj,"RedrawStage",is,Es),Zr(dj,"sam$kotlinx_coroutines_flow_FlowCollector$0",is,Xr,Xr,Xr,Xr,[1]),Zr(mj,"WorldWindow$contextRestored$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(gj,"WorldWindow",is),Zr(zj,"GestureRecognizer",is),Zr(yj,"ClickRecognizer",is,zj),Zr(bj,"DragRecognizer",is,zj),Zr(kj,"Companion",Jr),Zr(xj,"Click",is),Zr(Ej,"PanRecognizer",is,zj),Zr(Cj,"PinchRecognizer",is,zj),Zr(Sj,"RotationRecognizer",is,zj),Zr(qj,"Companion",Jr),Zr(Ij,Xr,is,bj),Zr(Aj,Xr,is,Ej),Zr(Tj,"SelectDragDetector",is),Zr(Dj,"TapRecognizer",is,zj),Zr(Mj,"Companion",Jr),Zr(Rj,"TiltRecognizer",is,Ej),Zr(Pj,"TouchWrapper",is),Zr(Lj,"Companion",Jr),Zr(Uj,"ElevationSource",is,ry),Zr(Hj,"TiledElevationCoverage$retrieveTileArray$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(Wj,"Companion",Jr),Zr(Kj,"MercatorImageTile",is,Fc,Xr,Xr,Xr,[1]),Zr(Zj,"Font",is),Zr(Qj,"Companion",Jr),Zr(nx,"RenderResourceCache$retrieveTexture$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(ix,"RenderResourceCache$retrieveTextFile$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(ex,"RenderResourceCache$retrieveRemoteImage$lambda$slambda",is,Jo,Xr,Xr,Xr,[1]),Zr(sx,"RenderResourceCache",is,gy),Zr(ox,"TextRenderer",is),Zr(ux,"CanvasTexture",is,Vg),Zr(ax,"Companion",Jr),Zr(_x,"ImageFactory",ls),Zr(lx,"ImageSource",is,ry),Zr(fx,"ImageTexture",is,Vg),Zr(vx,"Logger",Jr),Zr(dx,"SynchronizedPool",is,_y),Zr(px,"WebKgl",is,Xr,[gk]),Zr(mx,"Companion",Jr),Zr(gx,"KglShader",is),Zr($x,"Companion",Jr),Zr(bx,"KglProgram",is),Zr(kx,"Companion",Jr),Zr(xx,"KglUniformLocation",is),Zr(zx,"Companion",Jr),Zr(Cx,"KglBuffer",is),Zr(Sx,"Companion",Jr),Zr(Ox,"KglTexture",is),Zr(Ix,"Companion",Jr),Zr(Tx,"KglFramebuffer",is),Kr(Oa).a4u=function(t,n,i){var e=n.b4u();return new Aa(t,null==e?n:e,i)},Kr(Oa).c4u=function(t,n){var i=W_(n);return new Aa(t,i,Xr,i)},Kr(Oa).d4u=function(t,n){var i=t>>16&255,e=t>>8&255,r=255&t;return n.e4u_1=i/255,n.f4u_1=e/255,n.g4u_1=r/255,n.h4u_1=1,n},Kr(Oa).i4u=function(t){var n=255*t.e4u_1,i=es(n),e=255*t.f4u_1,r=es(e),s=255*t.g4u_1;return i<<16|r<<8|es(s)},Kr(Aa).o4u=function(){return!(null==this.m4u_1)},Kr(Aa).p4u=function(){this.n4u_1=!0},Kr(Aa).toString=function(){return"PickedObject(isOnTop="+this.n4u_1+", identifier="+this.j4u_1+", userObject="+ss(this.k4u_1)+", layer="+this.l4u_1+", terrainPosition="+this.m4u_1+")"},Kr(Ma).r4u=function(){return this.q4u_1.i2()},Kr(Ma).s4u=function(){return this.q4u_1.g()},Kr(Ma).t4u=function(){var t;t:{for(var n=this.r4u().d();n.e();){var i=n.f();if(i.n4u_1){t=i;break t}}t=null}return t},Kr(Ma).u4u=function(){var t;t:{for(var n=this.r4u().d();n.e();){var i=n.f();if(i.o4u()){t=i;break t}}t=null}return t},Kr(Ma).v4u=function(t){var n=this.q4u_1,i=t.j4u_1;n.f4(i,t)},Kr(Ma).w4u=function(t){return this.q4u_1.g2(t)},Kr(Ma).x4u=function(){return this.q4u_1.d3()},Kr(Ma).y4u=function(){var t=this.q4u_1.q();return us(t,Ta)},Kr(Ma).toString=function(){var t=this.r4u();return as(t,", ","PickedObjectList{","}",Xr,Xr,Da)},Kr(Pa).c4v=function(){this.a4v_1.z11((null==d&&new Na,d))},Kr(Ua).p4w=function(t){var n;if(!(t>0))throw n=wx().v4w(wx().q4w_1,"WorldWind","setDensityFactor","invalidDensityFactor"),cs(ss(n));this.p4v_1=t},Kr(Ua).x1g=function(){this.f4v_1.h4x(),this.f4v_1.d3(),this.g4v_1.k4x_1.m4x(),this.n4v_1.r4x(),this.p4w(1)},Kr(Ua).s4x=function(){this.t4v_1.t4x_1.r4y(me),this.t4v_1.t4x_1.r4y($k()),this.t4v_1.t4x_1.r4y(yk()),this.t4v_1.t4x_1.s4y(0),this.t4v_1.t4x_1.t4y(ye),this.t4v_1.t4x_1.u4y(bk(),kk()),this.t4v_1.t4x_1.v4y(je),this.t4v_1.w4y(),this.u4v_1=this.t4v_1.t4x_1.x4y(xe)},Kr(Ua).y4y=function(t,n){if(this.t4v_1.t4x_1.z4y(0,0,t,n),this.o4v_1&&0!==this.n4v_1.q4x_1)try{var i=this.l4v_1;i.a4z((e=i.i4w_1,r=n/this.n4v_1.q4x_1,Bh().e55(e*r)))}catch(t){if(!(t instanceof vs))throw t}var e,r;this.n4v_1.b4z(0,0,t,n)},Kr(Ua).c4z=function(t,n){if(null!=n)this.d4z(this.v4v_1),this.g4v_1.z4z(n.j4w_1,n.k4w_1,n.n4w_1,this.x4v_1),t.r4z_1.a50(n);else if(this.n4v_1.sr()||!this.y4z(this.n4v_1.p4x_1/2,this.n4v_1.q4x_1/2,t.r4z_1)){this.d4z(this.v4v_1),this.v4v_1.h4z(this.y4v_1.e4z_1),this.v4v_1.i4z(this.y4v_1.f4z_1);var i=this.g4v_1.j4z(this.l4v_1.d4w_1,this.l4v_1.e4w_1);this.y4v_1.l4z(this.g4v_1.k4z(i.n4w_1),this.x4v_1),this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,t.r4z_1)}return this.g4v_1.b50(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.w4v_1),this.v4v_1.c50(this.w4v_1),t.t4z_1=-this.v4v_1.g4z_1[11],t.u4z_1=this.v4v_1.d50(this.l4v_1.h4w_1),t.v4z_1=this.v4v_1.e50(),t.w4z_1=this.l4v_1.h4w_1,t},Kr(Ua).f50=function(t,n,i){return n=n===Xr?null:n,i===Xr?this.c4z(t,n):i.c4z.call(this,t,n)},Kr(Ua).g50=function(t,n,i){var e=_l();if(!this.i50(n.m4z_1,n.n4z_1,this.y4v_1)||!this.g4v_1.h50(this.y4v_1,e))return rs();var r=_l();return this.i50(i.m4z_1,i.n4z_1,this.y4v_1)&&this.g4v_1.h50(this.y4v_1,r)?(this.j50(t,this.v4v_1),this.v4v_1.k50(r.m4z_1-e.m4z_1,r.n4z_1-e.n4z_1,r.q4z_1-e.q4z_1),this.v4v_1.h4z(this.y4v_1.e4z_1),this.v4v_1.i4z(this.y4v_1.f4z_1),this.g4v_1.h50(this.y4v_1,this.x4v_1)?(this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,t.r4z_1),this.g4v_1.b50(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.w4v_1),this.v4v_1.c50(this.w4v_1),t.t4z_1=-this.v4v_1.g4z_1[11],t.u4z_1=this.v4v_1.d50(t.w4z_1),t.v4z_1=this.v4v_1.e50(),void(t.w4z_1=t.w4z_1)):rs()):rs()},Kr(Ua).l50=function(t){this.m50(t),this.j50(t,this.v4v_1),this.v4v_1.h4z(this.x4v_1),this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.l4v_1.d4w_1),this.g4v_1.b50(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,this.w4v_1),this.v4v_1.c50(this.w4v_1),this.l4v_1.e4w_1=Lh(),this.l4v_1.f4w_1=this.v4v_1.d50(t.w4z_1),this.l4v_1.g4w_1=this.v4v_1.e50(),this.l4v_1.h4w_1=t.w4z_1;var n=this.l4v_1.d4w_1,i=this.g4v_1.n50(n.j4w_1,n.k4w_1)*this.q4v_1;La();var e=i+10;if(e>n.n4w_1){n.n4w_1=e,this.g4v_1.z4z(n.j4w_1,n.k4w_1,n.n4w_1,this.x4v_1),this.g4v_1.z4z(t.r4z_1.j4w_1,t.r4z_1.k4w_1,t.r4z_1.n4w_1,this.y4v_1.e4z_1),this.g4v_1.o50(t.r4z_1.j4w_1,t.r4z_1.k4w_1,this.y4v_1.f4z_1),this.x4v_1.p50(this.y4v_1.e4z_1).q50();var r=this.y4v_1.f4z_1.r50(this.x4v_1);if(r>=-1&&r<=1){var s,o=this.l4v_1,u=Bh(),a=Math.acos(r);s=u.r51(a),o.g4w_1=s}}},Kr(Ua).y4z=function(t,n,i){var e;return this.i50(t,n,this.y4v_1)&&this.h4v_1.s51().h50(this.y4v_1,this.x4v_1)?(this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,i),e=!0):e=!1,e},Kr(Ua).t51=function(t,n){return this.u51(t.m4z_1,t.n4z_1,t.q4z_1,n)},Kr(Ua).u51=function(t,n,i,e){return!this.n4v_1.sr()&&(this.v51(this.w4v_1,this.v4v_1),this.w4v_1.c50(this.v4v_1),!!this.w4v_1.w51(t,n,i,this.n4v_1,this.x4v_1)&&(e.m4z_1=this.x4v_1.m4z_1,e.n4z_1=this.n4v_1.q4x_1-this.x4v_1.n4z_1,!0))},Kr(Ua).x51=function(t,n,i,e){return this.g4v_1.z4z(t,n,i,this.x4v_1),this.t51(this.x4v_1,e)},Kr(Ua).y51=function(t,n,i){var e;return this.i50(t,n,this.y4v_1)&&this.g4v_1.h50(this.y4v_1,this.x4v_1)?(this.g4v_1.x4z(this.x4v_1.m4z_1,this.x4v_1.n4z_1,this.x4v_1.q4z_1,i),e=!0):e=!1,e},Kr(Ua).i50=function(t,n,i){return!this.n4v_1.sr()&&(this.v51(this.w4v_1,this.v4v_1),this.w4v_1.c50(this.v4v_1).z51(),!!this.w4v_1.a52(t,this.n4v_1.q4x_1-n,this.n4v_1,i.e4z_1,i.f4z_1)&&(i.f4z_1.p50(i.e4z_1).q50(),!0))},Kr(Ua).b52=function(t){var n=.5*Hh(this.l4v_1.i4w_1);return 2*t*Math.tan(n)/this.n4v_1.q4x_1},Kr(Ua).c4w=function(){var t=.5*Hh(this.l4v_1.i4w_1),n=Math.sin(t),i=this.g4v_1.c52();return i/n-i},Kr(Ua).d52=function(t){var n=t.o52_1;if(!n){var i=this.j4v_1;null==i||i.q52(this.s4v_1)}this.s4v_1.r52_1=this.g4v_1,this.s4v_1.s52_1=this.h4v_1,this.s4v_1.u52_1=this.k4v_1,this.s4v_1.w52_1=this.l4v_1;var e=this.g4v_1.j4z(this.l4v_1.d4w_1,this.l4v_1.e4w_1);this.s4v_1.a53_1=this.g4v_1.k4z(e.n4w_1),this.g4v_1.z4z(e.j4w_1,e.k4w_1,e.n4w_1,this.s4v_1.d53_1),this.s4v_1.x52_1=this.f4v_1,this.s4v_1.z52_1=this.q4v_1,this.s4v_1.y52_1=this.p4v_1,this.s4v_1.b53_1=this.r4v_1,this.s4v_1.c53_1=this.g4v_1.k4x_1.a54(),this.v51(t.f52_1,t.g52_1),t.e52_1.b54(this.n4v_1),this.s4v_1.e53_1.b54(t.e52_1),this.s4v_1.f53_1.c54(t.f52_1),this.s4v_1.g53_1.c54(t.g52_1),this.s4v_1.h53_1.d54(t.f52_1,t.g52_1),n?this.s4v_1.i53_1.o54(t.f52_1,t.g52_1,t.e52_1,ws(t.l52_1)):this.s4v_1.i53_1.n54(t.f52_1,t.g52_1,t.e52_1),this.s4v_1.j53_1=t.h52_1,this.s4v_1.k53_1=t.i52_1,this.s4v_1.l53_1=t.j52_1,this.s4v_1.m53_1=t.k52_1,this.s4v_1.n53_1=t.l52_1,this.s4v_1.o53_1=t.m52_1,this.s4v_1.p53_1=t.n52_1,this.s4v_1.q53_1=t.o52_1,this.i4v_1.p54(this.s4v_1);var r=!n&&this.s4v_1.r53_1;if(!n){var s=this.j4v_1;null==s||s.q54(this.s4v_1)}return this.s4v_1.x1g(),r},Kr(Ua).r54=function(t){var n=t.o52_1;if(!n){var i=this.j4v_1;null==i||i.s54(this.t4v_1)}if(this.t4v_1.u4x_1.t54(t.g52_1.h4z(this.t4v_1.u4x_1)),this.t4v_1.v4x_1.b54(t.e52_1),this.t4v_1.w4x_1.c54(t.f52_1),this.t4v_1.x4x_1.c54(t.g52_1),this.t4v_1.y4x_1.d54(t.f52_1,t.g52_1),this.t4v_1.z4x_1.u54(t.e52_1.p4x_1,t.e52_1.q4x_1),this.t4v_1.a4y_1=t.h52_1,this.t4v_1.b4y_1=t.i52_1,this.t4v_1.c4y_1=t.j52_1,this.t4v_1.d4y_1=t.l52_1,this.t4v_1.e4y_1=t.m52_1,this.t4v_1.f4y_1=t.o52_1,this.i4v_1.v54(this.t4v_1),this.f4v_1.w54(),this.f4v_1.x54(this.t4v_1),!n){var e=this.j4v_1;null==e||e.y54(this.t4v_1)}this.t4v_1.x1g()},Kr(Ua).v51=function(t,n){var i=this.g4v_1.j4z(this.l4v_1.d4w_1,this.l4v_1.e4w_1).n4w_1,e=this.g4v_1.k4z(i)+this.g4v_1.k4z(this.r4v_1);e<1e3&&(e=1e3);var r=(1<0){var u,a=.5*Hh(this.l4v_1.i4w_1),h=2*(u=Math.tan(a))*u+1,_=o/(2*Math.sqrt(h));s>_&&(s=_)}s<1&&(s=1),t.z54(this.n4v_1.p4x_1,this.n4v_1.q4x_1,this.l4v_1.i4w_1,s,e),this.d4z(n)},Kr(Ua).d4z=function(t){return this.a55(this.l4v_1.d4w_1,this.l4v_1.e4w_1,t),t.b55(0,0,1,Zh(this.l4v_1.f4w_1)),t.b55(1,0,0,this.l4v_1.g4w_1),t.b55(0,0,1,this.l4v_1.h4w_1),t.c55(),t},Kr(Ua).j50=function(t,n){return this.a55(t.r4z_1,t.s4z_1,n),n.b55(0,0,1,Zh(t.u4z_1)),n.b55(1,0,0,t.v4z_1),n.b55(0,0,1,t.w4z_1),n.k50(0,0,t.t4z_1),n.c55(),n},Kr(Ua).a55=function(t,n,i){switch(n.l6_1){case 0:this.g4v_1.d55(t.j4w_1,t.k4w_1,t.n4w_1,i);break;case 1:this.g4v_1.d55(t.j4w_1,t.k4w_1,this.g4v_1.n50(t.j4w_1,t.k4w_1)*this.q4v_1,i);break;case 2:this.g4v_1.d55(t.j4w_1,t.k4w_1,(t.n4w_1+this.g4v_1.n50(t.j4w_1,t.k4w_1))*this.q4v_1,i)}return i},Kr(Ua).m50=function(t){t.r4z_1.j4w_1=i_(t.r4z_1.j4w_1),t.r4z_1.k4w_1=n_(t.r4z_1.k4w_1),t.t4z_1=ds(t.t4z_1,10,2*this.c4w()),t.u4z_1=Qh(t.u4z_1);var n,i=t,e=Bh(),r=ds(t.v4z_1,0,90);n=e.e55(r),i.v4z_1=n,t.w4z_1=Qh(t.w4z_1),this.g4v_1.f55()&&(t.t4z_1=ds(t.t4z_1,1,2*ps()*this.g4v_1.c52()),t.v4z_1=Bh().s50_1)},Kr(Ha).g55=function(t){var n=t.h55(),i=null==n?new Ba:n;return i.p55_1=t,i},Kr(Ba).q55=function(){return this.i55_1},Kr(Ba).r55=function(){return this.j55_1},Kr(Ba).s55=function(){this.m55_1=null,this.n55_1=null,this.o55_1=null;var t=this.p55_1;null==t||t.t55(this),this.p55_1=null},Kr(Ba).u55=function(t,n){var i=this.m55_1,e=null==i?null:i.a56(t),r=null!=e&&e;return r&&t.t4x_1.b56(n,3,xk(),!1,0,0),r},Kr(Ba).c56=function(t,n){var i=this.n55_1,e=null==i?null:i.a56(t),r=null!=e&&e;return r&&t.t4x_1.b56(n,2,xk(),!1,0,0),r},Kr(Ba).d56=function(t){var n=this.o55_1,i=null==n?null:n.a56(t),e=null!=i&&i;return e&&t.t4x_1.l56(Ok(),this.k55_1.rb(),Sk(),Hr(this.k55_1.j56_1,2)),e},Kr(Ba).m56=function(t){var n=this.o55_1,i=null==n?null:n.a56(t),e=null!=i&&i;return e&&t.t4x_1.l56(Ck(),this.l55_1.rb(),Sk(),Hr(this.l55_1.j56_1,2)),e},Kr(Ba).n56=function(t){this.m56(t)},Kr(Ya).s56=function(){var t=this.b4y_1,n=null==t?null:t.s4u();return null==n?0:n},Kr(Ya).x56=function(){return this.g4y_1},Kr(Ya).y56=function(){return this.h4y_1},Kr(Ya).z56=function(){return this.a57(this.i4y_1)},Kr(Ya).b57=function(){var t,n=this.m4y_1;if(null==n){var i=new Dg,e=new Vg(1024,1024,Hk(),Vk(),!0),r=new Vg(1024,1024,Ke,Sk(),!0);r.m57(Tk(),Dk()),r.m57(Mk(),Dk()),i.p57(this,e,Bk()),i.p57(this,r,Yk());var s=i;this.m4y_1=s,t=s}else t=n;return t},Kr(Ya).q57=function(){var t,n=this.n4y_1;if(null==n){var i=new Yg(jk(),new Float32Array([0,1,0,0,1,1,1,0]));this.n4y_1=i,t=i}else t=n;return t},Kr(Ya).x1g=function(){this.u4x_1.r57(0,0,0),this.v4x_1.r4x(),this.w4x_1.s57(),this.x4x_1.s57(),this.y4x_1.s57(),this.z4x_1.s57(),this.a4y_1=null,this.b4y_1=null,this.c4y_1=null,this.d4y_1=null,this.e4y_1=null,this.f4y_1=!1,$s(this.o4y_1,0),this.q4y_1.d3()},Kr(Ya).w4y=function(){this.g4y_1=Ax().o56_1,this.h4y_1=yx().p56_1,this.i4y_1=Uk(),this.k4y_1=Ex().r56_1,this.l4y_1=Ex().r56_1,this.m4y_1=null,this.n4y_1=null,ys(this.j4y_1,qx().q56_1)},Kr(Ya).t57=function(){var t=this.a4y_1;return null==t?null:t.t57()},Kr(Ya).u57=function(){var t=this.a4y_1;return null==t?null:t.u57()},Kr(Ya).v57=function(){var t=this.a4y_1;null==t||t.v57()},Kr(Ya).w57=function(t){var n=this.b4y_1,i=null==n?null:n.x57(t),e=null==i||bs(i,Oh)?i:Wr();if(null==e)throw ks("Invalid index");return e},Kr(Ya).y57=function(t){this.g4y_1.equals(t)||(this.g4y_1=t,this.t4x_1.z57(Wk(),t))},Kr(Ya).a58=function(t){this.h4y_1.equals(t)||(this.h4y_1=t,this.t4x_1.a58(t))},Kr(Ya).b58=function(t){this.i4y_1!==t&&(this.i4y_1=t,this.t4x_1.c58(t))},Kr(Ya).a57=function(t){return this.j4y_1[t-Uk()|0]},Kr(Ya).d58=function(t){var n=this.i4y_1-Uk()|0;this.j4y_1[n].equals(t)||(this.j4y_1[n]=t,this.t4x_1.e58(Gk(),t))},Kr(Ya).f58=function(t){var n=t;return n===jk()?this.k4y_1:n===Ek()?this.l4y_1:Ex().r56_1},Kr(Ya).g58=function(t,n){t!==jk()||this.k4y_1.equals(n)?(t!==Ek()||this.l4y_1.equals(n)||(this.l4y_1=n),this.t4x_1.g58(t,n)):(this.k4y_1=n,this.t4x_1.g58(t,n))},Kr(Ya).h58=function(t,n,i){return this.t4x_1.i58(t,n,1,1,Hk(),Vk(),this.p4y_1),i.e4u_1=(255&this.p4y_1[0])/255,i.f4u_1=(255&this.p4y_1[1])/255,i.g4u_1=(255&this.p4y_1[2])/255,i.h4u_1=(255&this.p4y_1[3])/255,i},Kr(Ya).j58=function(t,n,i,e){var r=Hr(i,e),s=this.k58(Hr(r,4));this.t4x_1.i58(t,n,i,e,Hk(),Vk(),s);var o=js(),u=Eg(),a=zs(xs(0,r),4),h=a.y_1,_=a.z_1,l=a.a1_1;if(l>0&&h<=_||l<0&&_<=h)do{var f=h;h=h+l|0,u.e4u_1=(255&s[f+0|0])/255,u.f4u_1=(255&s[f+1|0])/255,u.g4u_1=(255&s[f+2|0])/255,u.h4u_1=(255&s[f+3|0])/255,o.a(u)&&(u=Eg())}while(f!==_);return o},Kr(Ya).k58=function(t){return this.o4y_1.length>1;uh();r=Math.max(s,12);var o=ms(Array(e+r|0),null),u=this.v56_1,a=u.length;Ss(u,o,0,0,a),this.v56_1=o}var h,_=this.v56_1[this.t56_1];if(null==_){var l=new ah;this.v56_1[this.t56_1]=l,h=l}else h=_;var f=h,c=this.t56_1;this.t56_1=c+1|0,f.p5b(t,n,i,c)},Kr(lh).x57=function(t){var n;if(t0&&this.p5e(t,a)}while(s180?n-360:n<-180?360+n:n},Kr(Vh).s5h=function(t){var n=t%360;return n>=0?n:360+n},Kr(Vh).t5h=function(t){var n=t%180,i=n>90?180-n:n<-90?-180-n:n;return 0==(Ms(t/180)%2|0)?i:-i},Kr(Vh).u5h=function(t){var n=t%360;return n>180?n-360:n<-180?360+n:n},Kr(Vh).v5h=function(t){return ds(t,-90,90)},Kr(Vh).w5h=function(t){return ds(t,-180,180)},Kr(Vh).x5h=function(t,n){return this.e55(.5*(t+n))},Kr(o_).z5h=function(t){return r_(this.y5h_1,t)},Kr(o_).p8=function(t){return function(t,n){return r_(t.y5h_1,n instanceof o_?n.y5h_1:Wr())}(this,t)},Kr(o_).toString=function(){return this.y5h_1+"°"},Kr(o_).hashCode=function(){return s_(this.y5h_1)},Kr(o_).equals=function(t){return function(t,n){if(!(n instanceof o_))return!1;var i=n instanceof o_?n.y5h_1:Wr();return!!Rs(t,i)}(this.y5h_1,t)},Kr(f_).r5i=function(){return 0===this.d5i_1.m4z_1&&0===this.d5i_1.n4z_1&&0===this.d5i_1.q4z_1&&this.j5i_1===Math.sqrt(3)},Kr(f_).s5i=function(){this.d5i_1.r57(0,0,0),this.e5i_1.r57(-.5,0,0),this.f5i_1.r57(.5,0,0),this.g5i_1.r57(1,0,0),this.h5i_1.r57(0,1,0),this.i5i_1.r57(0,0,1);var t;return t=Math.sqrt(3),this.j5i_1=t,this},Kr(f_).t5i=function(t,n,i){var e=T_();e.u5i(t,n,i),e.v5i(this.g5i_1,this.h5i_1,this.i5i_1),this.g5i_1.q50(),this.h5i_1.q50(),this.i5i_1.q50(),As();var r=1/0;As();var s=-1/0;As();var o=1/0;As();var u=-1/0;As();var a=1/0;As();var h=-1/0,_=_l(),l=zs(xs(0,n),i),f=l.y_1,c=l.z_1,v=l.a1_1;if(v>0&&f<=c||v<0&&c<=f)do{var w=f;f=f+v|0,_.r57(t[w],t[w+1|0],t[w+2|0]);var d=_.r50(this.g5i_1);r>d&&(r=d),sp&&(o=p),um&&(a=m),h180){var p=e;n.z4z(t.z5i(),Wh(t.a5j(),90),p,this.k5i_1),n.z4z(t.z5i(),Jh(t.a5j(),90),p,this.l5i_1),u_(l_(),this.g5i_1,h,this.h5i_1,_,this.i5i_1,l,this.k5i_1),u_(l_(),this.g5i_1,h,this.h5i_1,_,this.i5i_1,l,this.l5i_1)}h[1]-h[0]<_[1]-_[0]&&a_(l_(),this.g5i_1,h,this.h5i_1,_),_[1]-_[0]i&&(n=i),n>(i=this.e5i_1.d5j(t))&&(n=i),n>(i=this.f5i_1.d5j(t))&&(n=i),this.k5i_1.m4z_1=this.d5i_1.m4z_1-.5*this.h5i_1.m4z_1,this.k5i_1.n4z_1=this.d5i_1.n4z_1-.5*this.h5i_1.n4z_1,this.k5i_1.q4z_1=this.d5i_1.q4z_1-.5*this.h5i_1.q4z_1,n>(i=this.k5i_1.d5j(t))&&(n=i),this.k5i_1.m4z_1=this.d5i_1.m4z_1+.5*this.h5i_1.m4z_1,this.k5i_1.n4z_1=this.d5i_1.n4z_1+.5*this.h5i_1.n4z_1,this.k5i_1.q4z_1=this.d5i_1.q4z_1+.5*this.h5i_1.q4z_1,n>(i=this.k5i_1.d5j(t))&&(n=i);var e=n;return Math.sqrt(e)},Kr(f_).e5j=function(t){this.k5i_1.t54(this.e5i_1),this.l5i_1.t54(this.f5i_1);var n,i=this.o5i_1>=0?t.l54_1[this.o5i_1]:null,e=-1;if(!1!==(null==i?null:h_(this,i)>=0)){var r;t:{for(var s=t.l54_1,o=0,u=s.length;o=0;if(h||(this.o5i_1=e),!h){r=!1;break t}}r=!0}n=r}else n=!1;return n},Kr(f_).toString=function(){return"BoundingBox(center="+this.d5i_1+", bottomCenter="+this.e5i_1+", topCenter="+this.f5i_1+", r="+this.g5i_1+", s="+this.h5i_1+", t="+this.i5i_1+", radius="+this.j5i_1+")"},Kr(c_).i5j=function(t){var n;if(!(t>=0))throw n=wx().v4w(wx().q4w_1,"BoundingSphere","setRadius","invalidRadius"),cs(ss(n));this.g5j_1=t},Kr(c_).j5j=function(t,n){return this.f5j_1.t54(t),this.i5j(n),this},Kr(c_).e5j=function(t){var n,i=-this.g5j_1,e=this.h5j_1>=0?t.l54_1[this.h5j_1]:null,r=-1;if(!1!==(null==e?null:e.k5j(this.f5j_1)>i)){var s;t:{for(var o=t.l54_1,u=0,a=o.length;ui;if(_||(this.h5j_1=r),!_){s=!1;break t}}s=!0}n=s}else n=!1;return n},Kr(c_).equals=function(t){return this===t||t instanceof c_&&!!this.f5j_1.equals(t.f5j_1)&&this.g5j_1===t.g5j_1},Kr(c_).hashCode=function(){var t=this.f5j_1.hashCode();return Hr(31,t)+Ns(this.g5j_1)|0},Kr(c_).toString=function(){return"BoundingSphere(center="+this.f5j_1+", radius="+this.g5j_1+")"},Kr(v_).a4z=function(t){var n;if(!(t>0&&t<180))throw n=wx().v4w(wx().q4w_1,"Camera","setFieldOfView","invalidFieldOfView"),cs(ss(n));this.i4w_1=t},Kr(v_).l5j=function(t,n,i,e,r,s,o){return this.d4w_1.o4w(t,n,i),this.e4w_1=e,this.f4w_1=r,this.g4w_1=s,this.h4w_1=o,this},Kr(v_).toString=function(){return"Camera(position="+this.d4w_1+", altitudeMode="+this.e4w_1+", heading="+new o_(this.f4w_1)+", tilt="+new o_(this.g4w_1)+", roll="+new o_(this.h4w_1)+", fieldOfView="+new o_(this.i4w_1)+")"},Kr(p_).o5j=function(){var t=1/this.n5j_1;return this.m5j_1*(1-t)},Kr(p_).p5j=function(){var t=1/this.n5j_1;return 2*t-t*t},Kr(p_).toString=function(){return"Ellipsoid(semiMajorAxis="+this.m5j_1+", inverseFlattening="+this.n5j_1+")"},Kr(p_).hashCode=function(){var t=Ns(this.m5j_1);return Hr(t,31)+Ns(this.n5j_1)|0},Kr(p_).equals=function(t){if(this===t)return!0;if(!(t instanceof p_))return!1;var n=t instanceof p_?t:Wr();return!!Rs(this.m5j_1,n.m5j_1)&&!!Rs(this.n5j_1,n.n5j_1)},Kr(g_).q5j=function(){return this.e54_1.r5j(1,0,0,1),this.f54_1.r5j(-1,0,0,1),this.g54_1.r5j(0,1,0,1),this.h54_1.r5j(0,-1,0,1),this.i54_1.r5j(0,0,-1,1),this.j54_1.r5j(0,0,1,1),this.k54_1.b4z(0,0,1,1),this},Kr(g_).n54=function(t,n,i){this.m54_1.s5j(n);var e=t.g4z_1,r=e[12]+e[0],s=e[13]+e[1],o=e[14]+e[2],u=e[15]+e[3];return this.e54_1.r5j(r,s,o,u),this.e54_1.t5j(this.m54_1),r=e[12]-e[0],s=e[13]-e[1],o=e[14]-e[2],u=e[15]-e[3],this.f54_1.r5j(r,s,o,u),this.f54_1.t5j(this.m54_1),r=e[12]+e[4],s=e[13]+e[5],o=e[14]+e[6],u=e[15]+e[7],this.g54_1.r5j(r,s,o,u),this.g54_1.t5j(this.m54_1),r=e[12]-e[4],s=e[13]-e[5],o=e[14]-e[6],u=e[15]-e[7],this.h54_1.r5j(r,s,o,u),this.h54_1.t5j(this.m54_1),r=e[12]+e[8],s=e[13]+e[9],o=e[14]+e[10],u=e[15]+e[11],this.i54_1.r5j(r,s,o,u),this.i54_1.t5j(this.m54_1),r=e[12]-e[8],s=e[13]-e[9],o=e[14]-e[10],u=e[15]-e[11],this.j54_1.r5j(r,s,o,u),this.j54_1.t5j(this.m54_1),this.k54_1.b54(i),this},Kr(g_).o54=function(t,n,i,e){var r,s,o,u,a,h,_,l,f=e.n4x_1,c=e.n4x_1+e.p4x_1|0,v=e.o4x_1,w=e.o4x_1+e.q4x_1|0,d=this.m54_1.d54(t,n).z51(),p=_l();r=p;var m,g=p,$=_l();s=$,m=$,d.a52(f,v,i,g,m);var y=_l();o=y;var b,k=y,j=_l();u=j,b=j,d.a52(c,v,i,k,b);var x=_l();a=x;var z,E=x,C=_l();h=C,z=C,d.a52(f,w,i,E,z);var S=_l();_=S;var q,O=S,I=_l();l=I,q=I,d.a52(c,w,i,O,q);var A=new ll(h.m4z_1-r.m4z_1,h.n4z_1-r.n4z_1,h.q4z_1-r.q4z_1),T=new ll(a.m4z_1-s.m4z_1,a.n4z_1-s.n4z_1,a.q4z_1-s.q4z_1),D=A.u5j(T);this.e54_1.r5j(D.m4z_1,D.n4z_1,D.q4z_1,-D.r50(r)),A.r57(_.m4z_1-u.m4z_1,_.n4z_1-u.n4z_1,_.q4z_1-u.q4z_1),T.r57(l.m4z_1-o.m4z_1,l.n4z_1-o.n4z_1,l.q4z_1-o.q4z_1);var M=A.u5j(T);this.f54_1.r5j(M.m4z_1,M.n4z_1,M.q4z_1,-M.r50(o)),A.r57(u.m4z_1-r.m4z_1,u.n4z_1-r.n4z_1,u.q4z_1-r.q4z_1),T.r57(s.m4z_1-o.m4z_1,s.n4z_1-o.n4z_1,s.q4z_1-o.q4z_1);var N=A.u5j(T);this.g54_1.r5j(N.m4z_1,N.n4z_1,N.q4z_1,-N.r50(o)),A.r57(h.m4z_1-_.m4z_1,h.n4z_1-_.n4z_1,h.q4z_1-_.q4z_1),T.r57(l.m4z_1-a.m4z_1,l.n4z_1-a.n4z_1,l.q4z_1-a.q4z_1);var R=A.u5j(T);this.h54_1.r5j(R.m4z_1,R.n4z_1,R.q4z_1,-R.r50(a)),A.r57(a.m4z_1-o.m4z_1,a.n4z_1-o.n4z_1,a.q4z_1-o.q4z_1),T.r57(_.m4z_1-r.m4z_1,_.n4z_1-r.n4z_1,_.q4z_1-r.q4z_1);var P=A.u5j(T);this.i54_1.r5j(P.m4z_1,P.n4z_1,P.q4z_1,-P.r50(r)),A.r57(l.m4z_1-s.m4z_1,l.n4z_1-s.n4z_1,l.q4z_1-s.q4z_1),T.r57(h.m4z_1-u.m4z_1,h.n4z_1-u.n4z_1,h.q4z_1-u.q4z_1);var L=A.u5j(T);return this.j54_1.r5j(L.m4z_1,L.n4z_1,L.q4z_1,-L.r50(s)),this.k54_1.b54(e),this},Kr(g_).v5j=function(t){return this.j54_1.r50(t)>0&&this.e54_1.r50(t)>0&&this.f54_1.r50(t)>0&&this.h54_1.r50(t)>0&&this.g54_1.r50(t)>0&&this.i54_1.r50(t)>0},Kr(g_).w5j=function(t,n){if(this.v5j(t)||this.v5j(n))return!0;if(t.equals(n))return!1;var i=0,e=this.l54_1.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=this.l54_1[r];if(s.x5j(t,n)<0)return!1;if(null!=s.y5j(t,n))return!0}while(i<=e);return!1},Kr(g_).z5j=function(t){return this.k54_1.a5k(t)},Kr(y_).b5k=function(t,n){return this.e4z_1.t54(t),this.f4z_1.r57(n.m4z_1-t.m4z_1,n.n4z_1-t.n4z_1,n.q4z_1-t.q4z_1),this},Kr(y_).l4z=function(t,n){return n.m4z_1=this.e4z_1.m4z_1+this.f4z_1.m4z_1*t,n.n4z_1=this.e4z_1.n4z_1+this.f4z_1.n4z_1*t,n.q4z_1=this.e4z_1.q4z_1+this.f4z_1.q4z_1*t,n},Kr(y_).c5k=function(t,n,i,e,r){var s,o,u,a;if(!(t.length>=n))throw s=wx().v4w(wx().q4w_1,"Line","triStripIntersection","missingArray"),cs(ss(s));if(!(n>=3))throw o=wx().v4w(wx().q4w_1,"Line","triStripIntersection","invalidStride"),cs(ss(o));if(0===i.length)throw u=wx().v4w(wx().q4w_1,"Line","triStripIntersection","missingArray"),cs(ss(u));if(!(e>=0))throw a=wx().v4w(wx().q4w_1,"Line","triStripIntersection","invalidCount"),cs(ss(a));var h=this.f4z_1.m4z_1,_=this.f4z_1.n4z_1,l=this.f4z_1.q4z_1,f=this.e4z_1.m4z_1,c=this.e4z_1.n4z_1,v=this.e4z_1.q4z_1;As();var w=1/0,d=1e-5,p=i[0]*n|0,m=p;p=m+1|0;var g=t[m],$=p;p=$+1|0;var y=t[$],b=t[p],k=p=i[1]*n|0;p=k+1|0;var j=t[k],x=p;p=x+1|0;var z=t[x],E=t[p],C=2;if(C-1e-5&&V1.00001)){var J=W*N-G*M,X=G*D-Y*N,Z=Y*M-W*D,Q=B*(h*J+_*X+l*Z);if(!(Q<-1e-5||K+Q>1.00001)){var tt=B*(R*J+P*X+L*Z);tt>=0&&tte?Bh().v50_1:Bh().s50_1;var s=r-i,o=Math.cos(e)*Math.sin(s),u=r-i,a=Math.cos(n)*Math.sin(e)-Math.sin(n)*Math.cos(e)*Math.cos(u),h=Math.atan2(o,a);return Ds(h)?Bh().s50_1:Bh().r51(h)},Kr(x_).h5k=function(t){var n=Hh(this.j4w_1),i=Hh(this.k4w_1),e=Hh(t.j4w_1),r=Hh(t.k4w_1);if(n===e&&i===r)return 0;var s=(e-n)/2,o=Math.sin(s),u=(r-i)/2,a=Math.sin(u),h=o*o+Math.cos(n)*Math.cos(e)*a*a,_=Math.sqrt(h),l=2*Math.asin(_);return Ds(l)?0:l},Kr(x_).i5k=function(t,n,i){if(0===n)return i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1,i;var e=Hh(this.j4w_1),r=Hh(this.k4w_1),s=Hh(t),o=Math.cos(e),u=Math.sin(e),a=Math.cos(s),h=Math.sin(s),_=Math.sin(n),l=Math.cos(n),f=u*l+o*_*a,c=Math.asin(f),v=_*h,w=o*l-u*_*a,d=r+Math.atan2(v,w);return Ds(c)||Ds(d)?(i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1):(i.j4w_1=t_(Bh().r51(c)),i.k4w_1=n_(Bh().r51(d))),i},Kr(x_).j5k=function(t){var n=Hh(this.j4w_1),i=Hh(this.k4w_1),e=Hh(t.j4w_1),r=Hh(t.k4w_1);if(n===e&&i===r)return Bh().s50_1;var s=r-i,o=e/2+ps()/4,u=Math.tan(o),a=n/2+ps()/4,h=u/Math.tan(a),_=Math.log(h),l=s;Math.abs(l)>ps()&&(s=s>0?-(2*ps()-s):2*ps()+s);var f=s,c=Math.atan2(f,_);return Ds(c)?Bh().s50_1:Bh().r51(c)},Kr(x_).k5k=function(t){var n=Hh(this.j4w_1),i=Hh(this.k4w_1),e=Hh(t.j4w_1),r=Hh(t.k4w_1);if(n===e&&i===r)return 0;var s,o=e-n,u=r-i,a=Math.abs(o);if(j_(),a<1e-15)s=Math.cos(n);else{var h=e/2+ps()/4,_=Math.tan(h),l=n/2+ps()/4,f=_/Math.tan(l);s=o/Math.log(f)}var c=s,v=u;Math.abs(v)>ps()&&(u=u>0?-(2*ps()-u):2*ps()+u);var w=o*o+c*c*u*u,d=Math.sqrt(w);return Ds(d)?0:d},Kr(x_).l5k=function(t,n,i){if(0===n)return i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1,i;var e,r=Hh(this.j4w_1),s=Hh(this.k4w_1),o=Hh(t),u=r+n*Math.cos(o),a=u-r,h=Math.abs(a);if(j_(),h<1e-15)e=Math.cos(r);else{var _=u/2+ps()/4,l=Math.tan(_),f=r/2+ps()/4,c=l/Math.tan(f);e=a/Math.log(c)}var v=e,w=n*Math.sin(o)/v,d=u;Math.abs(d)>ps()/2&&(u=u>0?ps()-u:-ps()-u);var p=(s+w+ps())%(2*ps())-ps();return Ds(u)||Ds(p)?(i.j4w_1=this.j4w_1,i.k4w_1=this.k4w_1):(i.j4w_1=t_(Bh().r51(u)),i.k4w_1=n_(Bh().r51(p))),i},Kr(x_).equals=function(t){return this===t||t instanceof x_&&this.j4w_1===t.j4w_1&&this.k4w_1===t.k4w_1},Kr(x_).hashCode=function(){var t=s_(this.j4w_1);return Hr(31,t)+s_(this.k4w_1)|0},Kr(x_).toString=function(){return"Location(latitude="+new o_(this.j4w_1)+", longitude="+new o_(this.k4w_1)+")"},Kr(E_).m5k=function(t,n,i,e,r,s,o,u){return this.r4z_1.o4w(t,n,i),this.s4z_1=e,this.t4z_1=r,this.u4z_1=s,this.v4z_1=o,this.w4z_1=u,this},Kr(E_).n5k=function(t){return this.m5k(t.r4z_1.j4w_1,t.r4z_1.k4w_1,t.r4z_1.n4w_1,t.s4z_1,t.t4z_1,t.u4z_1,t.v4z_1,t.w4z_1)},Kr(E_).toString=function(){return"LookAt(position="+this.r4z_1+", altitudeMode="+this.s4z_1+", range="+this.t4z_1+", heading="+new o_(this.u4z_1)+", tilt="+new o_(this.v4z_1)+", roll="+new o_(this.w4z_1)+")"},Kr(O_).x59=function(t){var n=t.q59_1,i=this.q59_1,e=n.length;return Ss(n,i,0,0,e),this},Kr(O_).p5k=function(t,n){return this.q59_1[0]=t,this.q59_1[4]=n,this},Kr(O_).s57=function(){var t=S_().o5k_1,n=this.q59_1,i=t.length;return Ss(t,n,0,0,i),this},Kr(O_).q5k=function(){return this.q59_1[0]=1,this.q59_1[1]=0,this.q59_1[2]=0,this.q59_1[3]=0,this.q59_1[4]=-1,this.q59_1[5]=1,this.q59_1[6]=0,this.q59_1[7]=0,this.q59_1[8]=1,this},Kr(O_).f5g=function(t,n){var i=t.w5e(),e=t.v5e(),r=n.w5e(),s=n.v5e(),o=e/s,u=i/r,a=(t.t5e_1-n.t5e_1)/s,h=(t.r5e_1-n.r5e_1)/r;return this.q59_1[0]=o,this.q59_1[1]=0,this.q59_1[2]=a,this.q59_1[3]=0,this.q59_1[4]=u,this.q59_1[5]=h,this.q59_1[6]=0,this.q59_1[7]=0,this.q59_1[8]=1,this},Kr(O_).e5g=function(t,n){var i=t.w5e(),e=t.v5e(),r=n.w5e(),s=n.v5e(),o=e/s,u=i/r,a=(t.t5e_1-n.t5e_1)/s,h=(t.r5e_1-n.r5e_1)/r,_=this.q59_1;_[2]=_[2]+(this.q59_1[0]*a+this.q59_1[1]*h);var l=this.q59_1;l[5]=l[5]+(this.q59_1[3]*a+this.q59_1[4]*h);var f=this.q59_1;f[8]=f[8]+(this.q59_1[6]*a+this.q59_1[6]*h);var c=this.q59_1;c[0]=c[0]*o;var v=this.q59_1;v[1]=v[1]*u;var w=this.q59_1;w[3]=w[3]*o;var d=this.q59_1;d[4]=d[4]*u;var p=this.q59_1;p[6]=p[6]*o;var m=this.q59_1;return m[7]=m[7]*u,this},Kr(O_).r5k=function(t){var n=this.q59_1,i=t.q59_1,e=n[0],r=n[1],s=n[2];return n[0]=e*i[0]+r*i[3]+s*i[6],n[1]=e*i[1]+r*i[4]+s*i[7],n[2]=e*i[2]+r*i[5]+s*i[8],e=n[3],r=n[4],s=n[5],n[3]=e*i[0]+r*i[3]+s*i[6],n[4]=e*i[1]+r*i[4]+s*i[7],n[5]=e*i[2]+r*i[5]+s*i[8],e=n[6],r=n[7],s=n[8],n[6]=e*i[0]+r*i[3]+s*i[6],n[7]=e*i[1]+r*i[4]+s*i[7],n[8]=e*i[2]+r*i[5]+s*i[8],this},Kr(O_).s5k=function(t,n){var i,e=n;if(!((t.length-e|0)>=9))throw i=wx().v4w(wx().q4w_1,"Matrix4","transposeToArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.q59_1[0];var s=e;e=s+1|0,t[s]=this.q59_1[3];var o=e;e=o+1|0,t[o]=this.q59_1[6];var u=e;e=u+1|0,t[u]=this.q59_1[1];var a=e;e=a+1|0,t[a]=this.q59_1[4];var h=e;e=h+1|0,t[h]=this.q59_1[7];var _=e;e=_+1|0,t[_]=this.q59_1[2];var l=e;return e=l+1|0,t[l]=this.q59_1[5],t[e]=this.q59_1[8],t},Kr(O_).equals=function(t){return this===t||t instanceof O_&&Ws(this.q59_1,t.q59_1)},Kr(O_).hashCode=function(){return Gs(this.q59_1)},Kr(O_).toString=function(){return"Matrix3(["+this.q59_1[0]+", "+this.q59_1[1]+", "+this.q59_1[2]+"], ["+this.q59_1[3]+", "+this.q59_1[4]+", "+this.q59_1[5]+"], ["+this.q59_1[6]+", "+this.q59_1[7]+", "+this.q59_1[8]+"])"},Kr(I_).y5k=function(t,n){for(var i=0,e=ms(Array(4),null);i<4;){var r,s=i;r=new Float64Array(4),e[s]=r,i=i+1|0}var o=e;o[0][0]=t[0],o[0][1]=t[1],o[0][2]=t[2],o[0][3]=t[3],o[1][0]=t[4],o[1][1]=t[5],o[1][2]=t[6],o[1][3]=t[7],o[2][0]=t[8],o[2][1]=t[9],o[2][2]=t[10],o[2][3]=t[11],o[3][0]=t[12],o[3][1]=t[13],o[3][2]=t[14],o[3][3]=t[15];var u=new Int32Array(4),a=this.z5k(o,u),h=0;if(h<=3)do{var _=h;h=h+1|0,a*=o[_][_]}while(h<=3);var l=a;if(Math.abs(l)<1e-8)return!1;for(var f=0,c=ms(Array(4),null);f<4;){var v,w=f;v=new Float64Array(4),c[w]=v,f=f+1|0}var d=c,p=new Float64Array(4),m=0;if(m<=3)do{var g=m;m=m+1|0;var $=0;if($<=3)do{var y=$;$=$+1|0,p[y]=0}while($<=3);p[g]=1,this.a5l(o,u,p);var b=0;if(b<=3)do{var k=b;b=b+1|0,d[k][g]=p[k]}while(b<=3)}while(m<=3);return n[0]=d[0][0],n[1]=d[0][1],n[2]=d[0][2],n[3]=d[0][3],n[4]=d[1][0],n[5]=d[1][1],n[6]=d[1][2],n[7]=d[1][3],n[8]=d[2][0],n[9]=d[2][1],n[10]=d[2][2],n[11]=d[2][3],n[12]=d[3][0],n[13]=d[3][1],n[14]=d[3][2],n[15]=d[3][3],!0},Kr(I_).z5k=function(t,n){var i=new Float64Array(4),e=1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=0,u=0;if(u<=3)do{var a,h=u;u=u+1|0;var _=t[s][h];(a=Math.abs(_))>o&&(o=a)}while(u<=3);if(0===o)return 0;i[s]=1/o}while(r<=3);var l=0;if(l<=3)do{var f=l;l=l+1|0;var c=0;if(c=g&&(g=m,$=b)}while(y<=3);if(f!==$){var S=0;if(S<=3)do{var q=S;S=S+1|0,m=t[$][q],t[$][q]=t[f][q],t[f][q]=m}while(S<=3);e=-e,i[$]=i[f]}if(n[f]=$,0===t[f][f]&&(t[f][f]=1e-20),3!==f){m=1/t[f][f];var O=f+1|0;if(O<=3)do{var I=O;O=O+1|0;var A=t[I],T=f;A[T]=A[T]*m}while(O<=3)}}while(l<=3);return e},Kr(I_).a5l=function(t,n,i){var e=-1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=n[s],u=i[o];if(i[o]=i[s],-1!==e){var a=e;if(a0))throw s=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidWidth"),cs(ss(s));if(!(n>0))throw o=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidHeight"),cs(ss(o));if(!(i>0&&i<180))throw u=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidFieldOfView"),cs(ss(u));if(e===r)throw a=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance"),cs(ss(a));if(!(e>0&&r>0))throw h=wx().v4w(wx().q4w_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance"),cs(ss(h));var _=t/n,l=.5*Hh(i),f=2*e*Math.tan(l),c=f*_;return this.g4z_1[0]=2*e/c,this.g4z_1[1]=0,this.g4z_1[2]=0,this.g4z_1[3]=0,this.g4z_1[4]=0,this.g4z_1[5]=2*e/f,this.g4z_1[6]=0,this.g4z_1[7]=0,this.g4z_1[8]=0,this.g4z_1[9]=0,this.g4z_1[10]=-(r+e)/(r-e),this.g4z_1[11]=-2*e*r/(r-e),this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=-1,this.g4z_1[15]=0,this},Kr(D_).u54=function(t,n){var i,e;if(!(t>0))throw i=wx().v4w(wx().q4w_1,"Matrix4","setToScreenProjection","invalidWidth"),cs(ss(i));if(!(n>0))throw e=wx().v4w(wx().q4w_1,"Matrix4","setToScreenProjection","invalidHeight"),cs(ss(e));return this.g4z_1[0]=2/t,this.g4z_1[1]=0,this.g4z_1[2]=0,this.g4z_1[3]=-1,this.g4z_1[4]=0,this.g4z_1[5]=2/n,this.g4z_1[6]=0,this.g4z_1[7]=-1,this.g4z_1[8]=0,this.g4z_1[9]=0,this.g4z_1[10]=2,this.g4z_1[11]=-1,this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=0,this.g4z_1[15]=1,this},Kr(D_).u5i=function(t,n,i){var e,r,s;if(!(t.length>=i))throw e=wx().v4w(wx().q4w_1,"Matrix4","setToCovarianceOfPoints","invalidArray"),cs(ss(e));if(!(n>=0))throw r=wx().v4w(wx().q4w_1,"Matrix4","setToCovarianceOfPoints","invalidCount"),cs(ss(r));if(!(i>=3))throw s=wx().v4w(wx().q4w_1,"Matrix4","setToCovarianceOfPoints","invalidStride"),cs(ss(s));var o=0,u=0,a=0,h=0,_=0,l=0,f=0,c=0,v=0,w=0,d=zs(xs(0,n),i),p=d.y_1,m=d.z_1,g=d.a1_1;if(g>0&&p<=m||g<0&&m<=p)do{var $=p;p=p+g|0,o+=t[$],u+=t[$+1|0],a+=t[$+2|0],w+=1}while($!==m);o/=w,u/=w,a/=w;var y=zs(xs(0,n),i),b=y.y_1,k=y.z_1,j=y.a1_1;if(j>0&&b<=k||j<0&&k<=b)do{var x=b;b=b+j|0;var z=t[x]-o,E=t[x+1|0]-u,C=t[x+2|0]-a;h+=z*z,_+=E*E,l+=C*C,f+=z*E,c+=z*C,v+=E*C}while(x!==k);return this.g4z_1[0]=h/w,this.g4z_1[1]=f/w,this.g4z_1[2]=c/w,this.g4z_1[3]=0,this.g4z_1[4]=f/w,this.g4z_1[5]=_/w,this.g4z_1[6]=v/w,this.g4z_1[7]=0,this.g4z_1[8]=c/w,this.g4z_1[9]=v/w,this.g4z_1[10]=l/w,this.g4z_1[11]=0,this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=0,this.g4z_1[15]=0,this},Kr(D_).k50=function(t,n,i){var e=this.g4z_1;e[3]=e[3]+(this.g4z_1[0]*t+this.g4z_1[1]*n+this.g4z_1[2]*i);var r=this.g4z_1;r[7]=r[7]+(this.g4z_1[4]*t+this.g4z_1[5]*n+this.g4z_1[6]*i);var s=this.g4z_1;s[11]=s[11]+(this.g4z_1[8]*t+this.g4z_1[9]*n+this.g4z_1[10]*i);var o=this.g4z_1;return o[15]=o[15]+(this.g4z_1[12]*t+this.g4z_1[13]*n+this.g4z_1[14]*i),this},Kr(D_).b55=function(t,n,i,e){var r=Hh(e),s=Math.cos(r),o=Hh(e),u=Math.sin(o);return this.e5l(s+(1-s)*t*t,(1-s)*t*n-u*i,(1-s)*t*i+u*n,0,(1-s)*t*n+u*i,s+(1-s)*n*n,(1-s)*n*i-u*t,0,(1-s)*t*i-u*n,(1-s)*n*i+u*t,s+(1-s)*i*i,0,0,0,0,1),this},Kr(D_).x5e=function(t,n,i){var e=this.g4z_1;e[0]=e[0]*t;var r=this.g4z_1;r[4]=r[4]*t;var s=this.g4z_1;s[8]=s[8]*t;var o=this.g4z_1;o[12]=o[12]*t;var u=this.g4z_1;u[1]=u[1]*n;var a=this.g4z_1;a[5]=a[5]*n;var h=this.g4z_1;h[9]=h[9]*n;var _=this.g4z_1;_[13]=_[13]*n;var l=this.g4z_1;l[2]=l[2]*i;var f=this.g4z_1;f[6]=f[6]*i;var c=this.g4z_1;c[10]=c[10]*i;var v=this.g4z_1;return v[14]=v[14]*i,this},Kr(D_).c50=function(t){var n=this.g4z_1,i=t.g4z_1,e=n[0],r=n[1],s=n[2],o=n[3];return n[0]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[1]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[2]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[3]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[4],r=n[5],s=n[6],o=n[7],n[4]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[5]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[6]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[7]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[8],r=n[9],s=n[10],o=n[11],n[8]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[9]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[10]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[11]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[12],r=n[13],s=n[14],o=n[15],n[12]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[13]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[14]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[15]=e*i[3]+r*i[7]+s*i[11]+o*i[15],this},Kr(D_).e5l=function(t,n,i,e,r,s,o,u,a,h,_,l,f,c,v,w){var d=this.g4z_1[0],p=this.g4z_1[1],m=this.g4z_1[2],g=this.g4z_1[3];return this.g4z_1[0]=d*t+p*r+m*a+g*f,this.g4z_1[1]=d*n+p*s+m*h+g*c,this.g4z_1[2]=d*i+p*o+m*_+g*v,this.g4z_1[3]=d*e+p*u+m*l+g*w,d=this.g4z_1[4],p=this.g4z_1[5],m=this.g4z_1[6],g=this.g4z_1[7],this.g4z_1[4]=d*t+p*r+m*a+g*f,this.g4z_1[5]=d*n+p*s+m*h+g*c,this.g4z_1[6]=d*i+p*o+m*_+g*v,this.g4z_1[7]=d*e+p*u+m*l+g*w,d=this.g4z_1[8],p=this.g4z_1[9],m=this.g4z_1[10],g=this.g4z_1[11],this.g4z_1[8]=d*t+p*r+m*a+g*f,this.g4z_1[9]=d*n+p*s+m*h+g*c,this.g4z_1[10]=d*i+p*o+m*_+g*v,this.g4z_1[11]=d*e+p*u+m*l+g*w,d=this.g4z_1[12],p=this.g4z_1[13],m=this.g4z_1[14],g=this.g4z_1[15],this.g4z_1[12]=d*t+p*r+m*a+g*f,this.g4z_1[13]=d*n+p*s+m*h+g*c,this.g4z_1[14]=d*i+p*o+m*_+g*v,this.g4z_1[15]=d*e+p*u+m*l+g*w,this},Kr(D_).s5j=function(t){return this.g4z_1[0]=t.g4z_1[0],this.g4z_1[1]=t.g4z_1[4],this.g4z_1[2]=t.g4z_1[8],this.g4z_1[3]=t.g4z_1[12],this.g4z_1[4]=t.g4z_1[1],this.g4z_1[5]=t.g4z_1[5],this.g4z_1[6]=t.g4z_1[9],this.g4z_1[7]=t.g4z_1[13],this.g4z_1[8]=t.g4z_1[2],this.g4z_1[9]=t.g4z_1[6],this.g4z_1[10]=t.g4z_1[10],this.g4z_1[11]=t.g4z_1[14],this.g4z_1[12]=t.g4z_1[3],this.g4z_1[13]=t.g4z_1[7],this.g4z_1[14]=t.g4z_1[11],this.g4z_1[15]=t.g4z_1[15],this},Kr(D_).s5k=function(t,n){var i,e=n;if(!((t.length-e|0)>=16))throw i=wx().v4w(wx().q4w_1,"Matrix4","transposeToArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.g4z_1[0];var s=e;e=s+1|0,t[s]=this.g4z_1[4];var o=e;e=o+1|0,t[o]=this.g4z_1[8];var u=e;e=u+1|0,t[u]=this.g4z_1[12];var a=e;e=a+1|0,t[a]=this.g4z_1[1];var h=e;e=h+1|0,t[h]=this.g4z_1[5];var _=e;e=_+1|0,t[_]=this.g4z_1[9];var l=e;e=l+1|0,t[l]=this.g4z_1[13];var f=e;e=f+1|0,t[f]=this.g4z_1[2];var c=e;e=c+1|0,t[c]=this.g4z_1[6];var v=e;e=v+1|0,t[v]=this.g4z_1[10];var w=e;e=w+1|0,t[w]=this.g4z_1[14];var d=e;e=d+1|0,t[d]=this.g4z_1[3];var p=e;e=p+1|0,t[p]=this.g4z_1[7];var m=e;return e=m+1|0,t[m]=this.g4z_1[11],t[e]=this.g4z_1[15],t},Kr(D_).z51=function(){var t;if(!A_().y5k(this.g4z_1,this.g4z_1))throw t=wx().v4w(wx().q4w_1,"Matrix4","invertMatrix","singularMatrix"),cs(ss(t));return this},Kr(D_).c55=function(){var t=this.g4z_1[1];this.g4z_1[1]=this.g4z_1[4],this.g4z_1[4]=t,t=this.g4z_1[2],this.g4z_1[2]=this.g4z_1[8],this.g4z_1[8]=t,t=this.g4z_1[6],this.g4z_1[6]=this.g4z_1[9],this.g4z_1[9]=t;var n=this.g4z_1[3],i=this.g4z_1[7],e=this.g4z_1[11];return this.g4z_1[3]=-this.g4z_1[0]*n-this.g4z_1[1]*i-this.g4z_1[2]*e,this.g4z_1[7]=-this.g4z_1[4]*n-this.g4z_1[5]*i-this.g4z_1[6]*e,this.g4z_1[11]=-this.g4z_1[8]*n-this.g4z_1[9]*i-this.g4z_1[10]*e,this.g4z_1[12]=0,this.g4z_1[13]=0,this.g4z_1[14]=0,this.g4z_1[15]=1,this},Kr(D_).u5c=function(t){var n=this.g4z_1;return n[10]=n[10]*(1+t),this},Kr(D_).h4z=function(t){return t.m4z_1=-this.g4z_1[0]*this.g4z_1[3]-this.g4z_1[4]*this.g4z_1[7]-this.g4z_1[8]*this.g4z_1[11],t.n4z_1=-this.g4z_1[1]*this.g4z_1[3]-this.g4z_1[5]*this.g4z_1[7]-this.g4z_1[9]*this.g4z_1[11],t.q4z_1=-this.g4z_1[2]*this.g4z_1[3]-this.g4z_1[6]*this.g4z_1[7]-this.g4z_1[10]*this.g4z_1[11],t},Kr(D_).i4z=function(t){return t.m4z_1=-this.g4z_1[8],t.n4z_1=-this.g4z_1[9],t.q4z_1=-this.g4z_1[10],t},Kr(D_).d50=function(t){var n=Hh(t),i=Math.cos(n),e=Hh(t),r=Math.sin(e),s=i*this.g4z_1[0]-r*this.g4z_1[4],o=r*this.g4z_1[5]-i*this.g4z_1[1],u=Bh(),a=Math.atan2(o,s);return u.r51(a)},Kr(D_).e50=function(){var t=this.g4z_1[10],n=this.g4z_1[2]*this.g4z_1[2]+this.g4z_1[6]*this.g4z_1[6],i=Math.sqrt(n),e=Bh(),r=Math.atan2(i,t);return e.r51(r)},Kr(D_).v5i=function(t,n,i){if(this.g4z_1[1]!==this.g4z_1[4]||this.g4z_1[2]!==this.g4z_1[8]||this.g4z_1[6]!==this.g4z_1[9])return!1;for(var e=this.g4z_1[0],r=this.g4z_1[1],s=this.g4z_1[2],o=this.g4z_1[5],u=this.g4z_1[6],a=this.g4z_1[10],h=0,_=ms(Array(3),null);h<3;){var l,f=h;l=new Float64Array(3),_[f]=l,h=h+1|0}var c=_;c[2][2]=1,c[1][1]=c[2][2],c[0][0]=c[1][1];var v=0;A_();if(v<32)t:do{var w,d;v=v+1|0;var p=r,m=Math.abs(p);if(A_(),m<1e-10){var g=s,$=Math.abs(g);A_(),d=$<1e-10}else d=!1;if(d){var y=u,b=Math.abs(y);A_(),w=b<1e-10}else w=!1;if(w)break t;if(0!==r){var k=.5*(o-e)/r,j=k*k,x=j+1,z=x!==j?(k<0?-1:1)*(Math.sqrt(x)-Math.abs(k)):.5/k,E=z*z+1,C=1/Math.sqrt(E),S=C*z;e-=z*r,o+=z*r,r=0;var q=C*s-S*u;u=S*s+C*u,s=q;var O=0;if(O<=2)do{var I=O;O=O+1|0,q=C*c[I][0]-S*c[I][1],c[I][1]=S*c[I][0]+C*c[I][1],c[I][0]=q}while(O<=2)}if(0!==s){var A=.5*(a-e)/s,T=A*A,D=T+1,M=D!==T?(A<0?-1:1)*(Math.sqrt(D)-Math.abs(A)):.5/A,N=M*M+1,R=1/Math.sqrt(N),P=R*M;e-=M*s,a+=M*s,s=0;var L=R*r-P*u;u=P*r+R*u,r=L;var F=0;if(F<=2)do{var U=F;F=F+1|0,L=R*c[U][0]-P*c[U][2],c[U][2]=P*c[U][0]+R*c[U][2],c[U][0]=L}while(F<=2)}if(0!==u){var H=.5*(a-o)/u,V=H*H,B=V+1,Y=B!==V?(H<0?-1:1)*(Math.sqrt(B)-Math.abs(H)):.5/H,W=Y*Y+1,G=1/Math.sqrt(W),K=G*Y;o-=Y*u,a+=Y*u,u=0;var J=G*r-K*s;s=K*r+G*s,r=J;var X=0;if(X<=2)do{var Z=X;X=X+1|0,J=G*c[Z][1]-K*c[Z][2],c[Z][2]=K*c[Z][1]+G*c[Z][2],c[Z][1]=J}while(X<=2)}}while(v<32);var Q=0,tt=1,nt=2;if(e1||(o=.5*(o/=a)+.5,u=.5*u+.5,s=(s=.5*(s/=a)+.5)*e.p4x_1+e.n4x_1,o=o*e.q4x_1+e.o4x_1,r.m4z_1=s,r.n4z_1=o,r.q4z_1=u,0))},Kr(D_).a52=function(t,n,i,e,r){var s=(t-i.n4x_1)/i.p4x_1,o=(n-i.o4x_1)/i.q4x_1;s=2*s-1,o=2*o-1;var u=this.g4z_1[0]*s+this.g4z_1[1]*o+this.g4z_1[3],a=this.g4z_1[4]*s+this.g4z_1[5]*o+this.g4z_1[7],h=this.g4z_1[8]*s+this.g4z_1[9]*o+this.g4z_1[11],_=this.g4z_1[12]*s+this.g4z_1[13]*o+this.g4z_1[15],l=u-this.g4z_1[2],f=a-this.g4z_1[6],c=h-this.g4z_1[10],v=_-this.g4z_1[14],w=u+this.g4z_1[2],d=a+this.g4z_1[6],p=h+this.g4z_1[10],m=_+this.g4z_1[14];return 0!==v&&0!==m&&(e.m4z_1=l/v,e.n4z_1=f/v,e.q4z_1=c/v,r.m4z_1=w/m,r.n4z_1=d/m,r.q4z_1=p/m,!0)},Kr(D_).equals=function(t){return this===t||t instanceof D_&&Ws(this.g4z_1,t.g4z_1)},Kr(D_).hashCode=function(){return Gs(this.g4z_1)},Kr(D_).toString=function(){return"Matrix4(["+this.g4z_1[0]+", "+this.g4z_1[1]+", "+this.g4z_1[2]+", "+this.g4z_1[3]+"], ["+this.g4z_1[4]+", "+this.g4z_1[5]+", "+this.g4z_1[6]+", "+this.g4z_1[7]+"], ["+this.g4z_1[8]+", "+this.g4z_1[9]+", "+this.g4z_1[10]+", "+this.g4z_1[11]+"], ["+this.g4z_1[12]+", "+this.g4z_1[13]+", "+this.g4z_1[14]+", "+this.g4z_1[15]+"])"},Kr(N_).j5l=function(){return new P_(F_(),.5,F_(),.5)},Kr(N_).k5l=function(){return new P_(F_(),0,F_(),0)},Kr(N_).l5l=function(){return new P_(F_(),.5,F_(),0)},Kr(N_).m5l=function(){return new P_(F_(),1,F_(),0)},Kr(P_).n5l=function(t,n,i,e){return this.f5l_1=t,this.g5l_1=n,this.h5l_1=i,this.i5l_1=e,this},Kr(P_).o5l=function(t){return this.n5l(t.f5l_1,t.g5l_1,t.h5l_1,t.i5l_1)},Kr(P_).p5l=function(t,n,i){var e,r;switch(this.f5l_1.l6_1){case 0:e=t*this.g5l_1;break;case 1:e=t-this.g5l_1;break;default:e=this.g5l_1}switch(this.h5l_1.l6_1){case 0:r=n*this.i5l_1;break;case 1:r=n-this.i5l_1;break;default:r=this.i5l_1}return i.q5l(e,r)},Kr(P_).toString=function(){return"Offset(xUnits="+this.f5l_1+", x="+this.g5l_1+", yUnits="+this.h5l_1+", y="+this.i5l_1+")"},Kr(P_).hashCode=function(){var t=this.f5l_1.hashCode();return t=Hr(t,31)+Ns(this.g5l_1)|0,t=Hr(t,31)+this.h5l_1.hashCode()|0,Hr(t,31)+Ns(this.i5l_1)|0},Kr(P_).equals=function(t){if(this===t)return!0;if(!(t instanceof P_))return!1;var n=t instanceof P_?t:Wr();return!!(this.f5l_1.equals(n.f5l_1)&&Rs(this.g5l_1,n.g5l_1)&&this.h5l_1.equals(n.h5l_1)&&Rs(this.i5l_1,n.i5l_1))},Kr(B_).k5j=function(t){return this.r50(t)},Kr(B_).r5j=function(t,n,i,e){return this.b5i_1.m4z_1=t,this.b5i_1.n4z_1=n,this.b5i_1.q4z_1=i,this.c5i_1=e,this.s5l(),this},Kr(B_).t5j=function(t){var n=t.g4z_1,i=n[0]*this.b5i_1.m4z_1+n[1]*this.b5i_1.n4z_1+n[2]*this.b5i_1.q4z_1+n[3]*this.c5i_1,e=n[4]*this.b5i_1.m4z_1+n[5]*this.b5i_1.n4z_1+n[6]*this.b5i_1.q4z_1+n[7]*this.c5i_1,r=n[8]*this.b5i_1.m4z_1+n[9]*this.b5i_1.n4z_1+n[10]*this.b5i_1.q4z_1+n[11]*this.c5i_1,s=n[12]*this.b5i_1.m4z_1+n[13]*this.b5i_1.n4z_1+n[14]*this.b5i_1.q4z_1+n[15]*this.c5i_1;return this.b5i_1.m4z_1=i,this.b5i_1.n4z_1=e,this.b5i_1.q4z_1=r,this.c5i_1=s,this.s5l(),this},Kr(B_).r50=function(t){return this.b5i_1.r50(t)+this.c5i_1},Kr(B_).x5j=function(t,n){var i=this.k5j(t),e=this.k5j(n);return i<0&&e<0?-1:i>0&&e>0?1:0},Kr(B_).y5j=function(t,n){if(t.equals(n))return null;var i=$_().b5k(t,n),e=this.b5i_1.r50(i.f4z_1);if(0===e)return 0===this.r50(i.e4z_1)?[t,n]:null;var r=-this.r50(i.e4z_1)/e;if(r<0||r>1)return null;var s=i.l4z(r,_l());return e>0?[s,n]:[t,s]},Kr(B_).s5l=function(){var t,n=this.b5i_1.t5l();if(0===n)return rs();if(H_(),n>=1-1e-10?(H_(),t=n<=1+1e-10):t=!1,t)return rs();var i=this.b5i_1;i.m4z_1=i.m4z_1/n;var e=this.b5i_1;e.n4z_1=e.n4z_1/n;var r=this.b5i_1;r.q4z_1=r.q4z_1/n;this.c5i_1=this.c5i_1/n},Kr(B_).equals=function(t){return this===t||t instanceof B_&&!!this.b5i_1.equals(t.b5i_1)&&this.c5i_1===t.c5i_1},Kr(B_).hashCode=function(){var t=this.b5i_1.hashCode();return Hr(31,t)+Ns(this.c5i_1)|0},Kr(B_).toString=function(){return"Plane(normal="+this.b5i_1+", distance="+this.c5i_1+")"},Kr(G_).u5l=function(t,n,i){return new J_(Bh().e55(t),Bh().e55(n),i)},Kr(J_).o4w=function(t,n,i){return this.d5k(t,n),this.n4w_1=i,this},Kr(J_).v5l=function(t,n,i){return this.f5k(t,n),this.n4w_1=i,this},Kr(J_).a50=function(t){return this.o4w(t.j4w_1,t.k4w_1,t.n4w_1)},Kr(J_).equals=function(t){return this===t||t instanceof J_&&!!Kr(x_).equals.call(this,t)&&this.n4w_1===t.n4w_1},Kr(J_).hashCode=function(){var t=Kr(x_).hashCode.call(this);return Hr(31,t)+Ns(this.n4w_1)|0},Kr(J_).toString=function(){return"Position(latitude="+new o_(this.j4w_1)+", longitude="+new o_(this.k4w_1)+", altitude="+this.n4w_1+")"},Kr(Z_).rb=function(){return this.k56_1>this.j56_1?this.k56_1-this.j56_1|0:0},Kr(Z_).w5l=function(t,n){return this.j56_1=t,this.k56_1=n,this},Kr(Z_).x5l=function(t){return this.w5l(t.j56_1,t.k56_1)},Kr(Z_).equals=function(t){return this===t||t instanceof Z_&&this.j56_1===t.j56_1&&this.k56_1===t.k56_1},Kr(Z_).hashCode=function(){var t=this.j56_1;return Hr(31,t)+this.k56_1|0},Kr(Z_).toString=function(){return"Range(lower="+this.j56_1+", upper="+this.k56_1+")"},Kr(nl).y5l=function(t,n,i,e){var r=i>0?Bh().v5h(t+i):t,s=e>0?Bh().w5h(n+e):n;return new el(Bh().e55(t),Bh().e55(r),Bh().e55(n),Bh().e55(s))},Kr(el).sr=function(){return!!(Rs(this.r5e_1,Bh().s50_1)&&Rs(this.s5e_1,Bh().s50_1)&&Rs(this.t5e_1,Bh().s50_1))&&Rs(this.u5e_1,Bh().s50_1)},Kr(el).z5l=function(){return!!(Rs(this.r5e_1,Bh().u50_1)&&Rs(this.s5e_1,Bh().t50_1)&&Rs(this.t5e_1,Bh().w50_1))&&Rs(this.u5e_1,Bh().v50_1)},Kr(el).w5e=function(){return Kh(this.s5e_1,this.r5e_1)},Kr(el).v5e=function(){return Kh(this.u5e_1,this.t5e_1)},Kr(el).z5i=function(){return Bh().x5h(this.r5e_1,this.s5e_1)},Kr(el).a5j=function(){return Bh().x5h(this.t5e_1,this.u5e_1)},Kr(el).a5m=function(t){return t.j4w_1=this.z5i(),t.k4w_1=this.a5j(),t},Kr(el).i5f=function(t){return this.r5e_1=t.r5e_1,this.s5e_1=t.s5e_1,this.t5e_1=t.t5e_1,this.u5e_1=t.u5e_1,this},Kr(el).r4x=function(){return this.r5e_1=Bh().s50_1,this.s5e_1=Bh().s50_1,this.t5e_1=Bh().s50_1,this.u5e_1=Bh().s50_1,this},Kr(el).b5m=function(){return this.r5e_1=Bh().u50_1,this.s5e_1=Bh().t50_1,this.t5e_1=Bh().w50_1,this.u5e_1=Bh().v50_1,this},Kr(el).c5g=function(t){return this.r5e_1t.r5e_1&&this.t5e_1t.t5e_1},Kr(el).y5e=function(t){return this.r5e_1<=t.s5e_1&&this.s5e_1>=t.r5e_1&&this.t5e_1<=t.u5e_1&&this.u5e_1>=t.t5e_1},Kr(el).c5m=function(t){return this.r5e_1t.r5e_1&&this.t5e_1t.t5e_1&&(this.r5e_1t.s5e_1&&(this.s5e_1=t.s5e_1),this.t5e_1t.u5e_1&&(this.u5e_1=t.u5e_1),!0)},Kr(el).d5m=function(t,n){var i,e=this.r5e_1,r=this.s5e_1;if(e<=t&&t<=r){var s=this.t5e_1,o=this.u5e_1;i=s<=n&&n<=o}else i=!1;return i},Kr(el).e5m=function(t){return this.d5m(t.j4w_1,t.k4w_1)},Kr(el).f5m=function(t,n,i){var e,r,s;if(!(t.length>=i))throw e=wx().v4w(wx().q4w_1,"Sector","union","missingArray"),cs(ss(e));if(!(n>=0))throw r=wx().v4w(wx().q4w_1,"Sector","union","invalidCount"),cs(ss(r));if(!(i>=2))throw s=wx().v4w(wx().q4w_1,"Sector","union","invalidStride"),cs(ss(s));var o,u=this.sr();u?(As(),o=17976931348623157e292):o=this.r5e_1;var a,h=o;u?(As(),a=-17976931348623157e292):a=this.s5e_1;var _,l=a;u?(As(),_=17976931348623157e292):_=this.t5e_1;var f,c=_;u?(As(),f=-17976931348623157e292):f=this.u5e_1;var v=f,w=zs(xs(0,n),i),d=w.y_1,p=w.z_1,m=w.a1_1;if(m>0&&d<=p||m<0&&p<=d)do{var g=d;d=d+m|0;var $=t[g],y=t[g+1|0];ly&&(h=y),v<$&&(v=$),c>$&&(c=$)}while(g!==p);var b=h;As(),b<17976931348623157e292&&(this.r5e_1=Bh().e55(h));var k=l;As(),k>-17976931348623157e292&&(this.s5e_1=Bh().e55(l));var j=c;As(),j<17976931348623157e292&&(this.t5e_1=Bh().e55(c));var x=v;return As(),x>-17976931348623157e292&&(this.u5e_1=Bh().e55(v)),this},Kr(el).g5m=function(t){return t.sr()||(this.sr()?(this.r5e_1=t.r5e_1,this.s5e_1=t.s5e_1,this.t5e_1=t.t5e_1,this.u5e_1=t.u5e_1):(this.r5e_1>t.r5e_1&&(this.r5e_1=t.r5e_1),this.s5e_1t.t5e_1&&(this.t5e_1=t.t5e_1),this.u5e_10))throw o=wx().s5m("TileMatrixSet","fromTilePyramid","invalidResolution"),cs(ss(o));var u=0,a=n,h=i,_=gs();do{var l=u;u=l+1|0;var f=new rl(t,l,a,h,e,r);_.a(f),a=Hr(a,2),h=Hr(h,2)}while(f.o5m()>s);return new ul(t,_)},Kr(ul).v5m=function(t){var n=-1;As();var i=1/0,e=0,r=this.u5m_1.g()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=this.u5m_1.h(s).o5m()-t,u=o*o;i>u&&(i=u,n=s)}while(e<=r);return n},Kr(hl).w5m=function(){return this.m4z_1*this.m4z_1+this.n4z_1*this.n4z_1},Kr(hl).t5l=function(){var t=this.w5m();return Math.sqrt(t)},Kr(hl).q5l=function(t,n){return this.m4z_1=t,this.n4z_1=n,this},Kr(hl).x5m=function(t){var n=this.m4z_1;return this.m4z_1=t.m4z_1,t.m4z_1=n,n=this.n4z_1,this.n4z_1=t.n4z_1,t.n4z_1=n,this},Kr(hl).y5m=function(t){this.m4z_1=this.m4z_1+t.m4z_1;this.n4z_1=this.n4z_1+t.n4z_1},Kr(hl).z5m=function(t){this.m4z_1=this.m4z_1-t.m4z_1;this.n4z_1=this.n4z_1-t.n4z_1},Kr(hl).a5n=function(t){this.m4z_1=this.m4z_1*t;this.n4z_1=this.n4z_1*t},Kr(hl).b5n=function(t){return this.m4z_1*t.m4z_1+this.n4z_1*t.n4z_1},Kr(hl).equals=function(t){return this===t||t instanceof hl&&this.m4z_1===t.m4z_1&&this.n4z_1===t.n4z_1},Kr(hl).hashCode=function(){var t=Ns(this.m4z_1);return Hr(31,t)+Ns(this.n4z_1)|0},Kr(hl).toString=function(){return"Vec2(x="+this.m4z_1+", y="+this.n4z_1+")"},Kr(ll).w5m=function(){return Kr(hl).w5m.call(this)+this.q4z_1*this.q4z_1},Kr(ll).c5n=function(t,n){var i,e=n;if(!((t.length-e|0)>=3))throw i=wx().v4w(wx().q4w_1,"Vec3","toArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.m4z_1;var s=e;return e=s+1|0,t[s]=this.n4z_1,t[e]=this.q4z_1,t},Kr(ll).c5j=function(t){var n=this.d5j(t);return Math.sqrt(n)},Kr(ll).d5j=function(t){var n=this.m4z_1-t.m4z_1,i=this.n4z_1-t.n4z_1,e=this.q4z_1-t.q4z_1;return n*n+i*i+e*e},Kr(ll).r57=function(t,n,i){return this.q5l(t,n),this.q4z_1=i,this},Kr(ll).t54=function(t){return this.r57(t.m4z_1,t.n4z_1,t.q4z_1)},Kr(ll).a5i=function(t){Kr(hl).x5m.call(this,t);var n=this.q4z_1;return this.q4z_1=t.q4z_1,t.q4z_1=n,this},Kr(ll).d5n=function(t){return this.e5n(t),this},Kr(ll).e5n=function(t){Kr(hl).y5m.call(this,t);this.q4z_1=this.q4z_1+t.q4z_1},Kr(ll).p50=function(t){return this.f5n(t),this},Kr(ll).f5n=function(t){Kr(hl).z5m.call(this,t);this.q4z_1=this.q4z_1-t.q4z_1},Kr(ll).w5i=function(t){return this.a5n(t),this},Kr(ll).a5n=function(t){Kr(hl).a5n.call(this,t);this.q4z_1=this.q4z_1*t},Kr(ll).c50=function(t){var n=t.g4z_1,i=n[0]*this.m4z_1+n[1]*this.n4z_1+n[2]*this.q4z_1+n[3],e=n[4]*this.m4z_1+n[5]*this.n4z_1+n[6]*this.q4z_1+n[7],r=n[8]*this.m4z_1+n[9]*this.n4z_1+n[10]*this.q4z_1+n[11],s=n[12]*this.m4z_1+n[13]*this.n4z_1+n[14]*this.q4z_1+n[15];return this.m4z_1=i/s,this.n4z_1=e/s,this.q4z_1=r/s,this},Kr(ll).q50=function(){var t=this.t5l();if(0!==t){this.m4z_1=this.m4z_1/t;this.n4z_1=this.n4z_1/t;this.q4z_1=this.q4z_1/t}return this},Kr(ll).r50=function(t){return Kr(hl).b5n.call(this,t)+this.q4z_1*t.q4z_1},Kr(ll).u5j=function(t){var n=this.n4z_1*t.q4z_1-this.q4z_1*t.n4z_1,i=this.q4z_1*t.m4z_1-this.m4z_1*t.q4z_1,e=this.m4z_1*t.n4z_1-this.n4z_1*t.m4z_1;return this.m4z_1=n,this.n4z_1=i,this.q4z_1=e,this},Kr(ll).equals=function(t){return this===t||t instanceof ll&&!!Kr(hl).equals.call(this,t)&&this.q4z_1===t.q4z_1},Kr(ll).hashCode=function(){var t=Kr(hl).hashCode.call(this);return Hr(31,t)+Ns(this.q4z_1)|0},Kr(ll).toString=function(){return"Vec3(x="+this.m4z_1+", y="+this.n4z_1+", z="+this.q4z_1+")"},Kr(cl).sr=function(){return this.p4x_1<=0||this.q4x_1<=0},Kr(cl).r4x=function(){return this.p4x_1=0,this.q4x_1=0,this},Kr(cl).b4z=function(t,n,i,e){return this.n4x_1=t,this.o4x_1=n,this.p4x_1=i,this.q4x_1=e,this},Kr(cl).b54=function(t){return this.b4z(t.n4x_1,t.o4x_1,t.p4x_1,t.q4x_1)},Kr(cl).a5k=function(t){return this.p4x_1>0&&this.q4x_1>0&&t.p4x_1>0&&t.q4x_1>0&&this.n4x_1<(t.n4x_1+t.p4x_1|0)&&t.n4x_1<(this.n4x_1+this.p4x_1|0)&&this.o4x_1<(t.o4x_1+t.q4x_1|0)&&t.o4x_1<(this.o4x_1+this.q4x_1|0)},Kr(cl).g5n=function(t){if(this.p4x_1>0&&this.q4x_1>0&&t.p4x_1>0&&t.q4x_1>0&&this.n4x_1<(t.n4x_1+t.p4x_1|0)&&t.n4x_1<(this.n4x_1+this.p4x_1|0)&&this.o4x_1<(t.o4x_1+t.q4x_1|0)&&t.o4x_1<(this.o4x_1+this.q4x_1|0)){if(this.n4x_1(t.n4x_1+t.p4x_1|0)&&(this.p4x_1=(t.n4x_1+t.p4x_1|0)-this.n4x_1|0),(this.o4x_1+this.q4x_1|0)>(t.o4x_1+t.q4x_1|0)&&(this.q4x_1=(t.o4x_1+t.q4x_1|0)-this.o4x_1|0),!0}return!1},Kr(cl).h5n=function(t,n){return Js(t)>=this.n4x_1&&Js(t)<(this.n4x_1+this.p4x_1|0)&&Js(n)>=this.o4x_1&&Js(n)<(this.o4x_1+this.q4x_1|0)},Kr(cl).equals=function(t){return this===t||t instanceof cl&&this.n4x_1===t.n4x_1&&this.o4x_1===t.o4x_1&&this.p4x_1===t.p4x_1&&this.q4x_1===t.q4x_1},Kr(cl).hashCode=function(){var t=this.n4x_1;return t=Hr(31,t)+this.o4x_1|0,t=Hr(31,t)+this.p4x_1|0,Hr(31,t)+this.q4x_1|0},Kr(cl).toString=function(){return"Viewport(x="+this.n4x_1+", y="+this.o4x_1+", width="+this.p4x_1+", height="+this.q4x_1+")"},Kr(ml).i5n=function(t,n){return this.j5n(t,n,5)},Kr(ml).j5n=function(t,n,i){var e=new zl,r=e.x5n(Hh(t),Hh(n),i);if(bl(),0!==r)throw cs(ss("MGRS Conversion Error"));return new $l(t,n,e.m5n_1)},Kr($l).toString=function(){return this.a5o_1},Kr(zl).x5n=function(t,n,i){this.m5n_1="",bl();var e,r,s=0;bl(),t<-1.5707963267948966?e=!0:(bl(),e=t>1.5707963267948966),e&&(bl(),s=1),(n<-ps()||n>2*ps())&&(bl(),s=2),i<0?r=!0:(bl(),r=i>5),r&&(bl(),s=8);var o=s;if(bl(),0===o){var u,a;if(bl(),t<-1.3962634015954636?a=!0:(bl(),a=t>1.4660765716752369),a){var h;try{var _,l=Nl(),f=Bh().r51(t);_=Bh().r51(n);var c=l.i5n(f,_);h=s|function(t,n,i,e,r){var s,o,u,a,h,_=i,l=e;bl();var f=new Int32Array(3);bl();var c,v=0;if(!dl().equals(n)&&!pl().equals(n)){var w=v;bl(),v=512|w}var d,p=_;if(bl(),p<0)c=!0;else{var m=_;bl(),c=m>4e6}if(c){var g=v;bl(),v=64|g}var $,y=l;if(bl(),y<0)d=!0;else{var b=l;bl(),d=b>4e6}if(d){var k=v;bl(),v=128|k}if(r<0?$=!0:(bl(),$=r>5),$){var j=v;bl(),v=8|j}var x=v;if(bl(),0===x){var z=5-r|0,E=Math.pow(10,z);if(_=jl(0,_/E)*E,l=jl(0,l/E)*E,dl().equals(n)){var C=_;bl(),C>=2e6?(bl(),f[0]=25):(bl(),f[0]=24);var S=f[0]-22|0;h=bl().c5q_1[S][1],s=bl().c5q_1[S][4],o=bl().c5q_1[S][5]}else{var q=_;bl(),q>=2e6?(bl(),f[0]=1):(bl(),f[0]=0),h=bl().c5q_1[f[0]][1],s=bl().c5q_1[f[0]][4],o=bl().c5q_1[f[0]][5]}a=l;var O=a-=o;bl(),f[2]=Ms(O/1e5);var I=f[2];bl(),I>7&&(f[2]=f[2]+1|0);var A=f[2];bl(),A>13&&(f[2]=f[2]+1|0),u=_;var T=u-=s;bl(),f[1]=h+Ms(T/1e5)|0;var D=_;if(bl(),D<2e6){var M=f[1];bl(),M>11&&(f[1]=f[1]+3|0);var N=f[1];bl(),N>20&&(f[1]=f[1]+2|0)}else{var R=f[1];bl(),R>2&&(f[1]=f[1]+2|0);var P=f[1];bl(),P>7&&(f[1]=f[1]+1|0);var L=f[1];bl(),L>11&&(f[1]=f[1]+3|0)}xl(t,0,f,_,l,r)}return v}(this,c.m5q_1,c.n5q_1,c.o5q_1,i)}catch(t){if(!(t instanceof Ts))throw t;bl(),h=8192}u=h}else{var v;try{var w,d=Hl(),p=Bh().r51(t);w=Bh().r51(n);var m=d.i5n(p,w);v=s|kl(this,m.g5q_1,t,m.i5q_1,m.j5q_1,i)}catch(t){if(!(t instanceof Ts))throw t;bl(),v=4096}u=v}s=u}return s},Kr(Sl).x5r=function(t,n,i,e,r,s){var o=e,u=1/n;Cl();var a,h,_=0;if(t<=0){var l=_;Cl(),_=64|l}if(u<250||u>350){var f=_;Cl(),_=128|f}if(Cl(),i<-1.5707963267948966?a=!0:(Cl(),a=i>1.5707963267948966),a){var c=_;Cl(),_=4|c}if(o<-ps())h=!0;else{var v=o;Cl(),h=v>6.283185307179586}if(h){var w=_;Cl(),_=8|w}var d=_;if(Cl(),0===d){if(this.d5r_1=t,this.m5r_1=2*this.d5r_1,this.e5r_1=n,o>ps()){var p=o;Cl(),o=p-6.283185307179586}i<0?(this.h5r_1=1,this.n5r_1=-i,this.o5r_1=-o):(this.h5r_1=0,this.n5r_1=i,this.o5r_1=o),this.p5r_1=r,this.q5r_1=s;var m,g=2*this.e5r_1-this.e5r_1*this.e5r_1;m=Math.sqrt(g),this.f5r_1=m,this.g5r_1=this.f5r_1/2;var $=this.n5r_1,y=Math.abs($);Cl();var b=y-1.5707963267948966;if(Math.abs(b)>1e-10){var k,j=this.n5r_1,x=Math.sin(j),z=this.f5r_1*x,E=(1-z)/(1+z),C=this.g5r_1,S=Math.pow(E,C),q=this.n5r_1,O=Math.cos(q),I=1-z*z;k=Math.sqrt(I),this.i5r_1=O/k,this.l5r_1=this.d5r_1*this.i5r_1;var A;Cl();var T=.7853981633974483-this.n5r_1/2;A=Math.tan(T),this.j5r_1=A/S}else{var D,M=1+this.f5r_1,N=1-this.f5r_1,R=Math.pow(M,M)*Math.pow(N,N);D=Math.sqrt(R),this.k5r_1=D}}this.y5r(0,this.o5r_1),this.s5r_1=2*this.u5r_1;var P,L=this.s5r_1;return P=Math.abs(L),this.s5r_1=P+.01,this.r5r_1=this.s5r_1,_},Kr(Sl).y5r=function(t,n){var i=t,e=n;Cl();var r,s,o=0,u=i;if(Cl(),u<-1.5707963267948966)r=!0;else{var a=i;Cl(),r=a>1.5707963267948966}if(r){var h=o;Cl(),o=1|h}if(i<0&&0===this.h5r_1){var _=o;Cl(),o=1|_}if(i>0&&1===this.h5r_1){var l=o;Cl(),o=1|l}if(e<-ps())s=!0;else{var f=e;Cl(),s=f>6.283185307179586}if(s){var c=o;Cl(),o=2|c}var v=o;if(Cl(),0===v){var w=i,d=Math.abs(w);Cl();var p=d-1.5707963267948966;if(Math.abs(p)<1e-10)this.t5r_1=0,this.u5r_1=0;else{0!==this.h5r_1&&(e*=-1,i*=-1);var m=e-this.o5r_1;if(m>ps()){var g=m;Cl(),m=g-6.283185307179586}if(m<-ps()){var $=m;Cl(),m=$+6.283185307179586}var y=i,b=Math.sin(y),k=this.f5r_1*b,j=(1-k)/(1+k),x=this.g5r_1,z=Math.pow(j,x);Cl();var E=.7853981633974483-i/2,C=Math.tan(E)/z,S=this.n5r_1,q=Math.abs(S);Cl();var O=q-1.5707963267948966,I=Math.abs(O)>1e-10?this.l5r_1*C/this.j5r_1:this.m5r_1*C/this.k5r_1;if(0!==this.h5r_1){var A,T=m;A=Math.sin(T),this.t5r_1=-(I*A-this.p5r_1);var D,M=m;D=Math.cos(M),this.u5r_1=I*D+this.q5r_1}else{var N,R=m;N=Math.sin(R),this.t5r_1=I*N+this.p5r_1}var P,L=-I,F=m;P=Math.cos(F),this.u5r_1=L*P+this.q5r_1}}return o},Kr(Sl).z5r=function(t,n){var i=0,e=0,r=0,s=0;Cl();var o=0,u=this.p5r_1-this.r5r_1,a=this.p5r_1+this.r5r_1,h=this.q5r_1-this.s5r_1,_=this.q5r_1+this.s5r_1;if(t>a||t_||nMath.sqrt(w)){var d=o;Cl(),o=256|d}}var p=o;if(Cl(),0===p){if(0===i&&0===e){Cl(),this.v5r_1=1.5707963267948966,this.w5r_1=this.o5r_1}else{0!==this.h5r_1&&(i*=-1,e*=-1);var m=this.n5r_1,g=Math.abs(m);Cl();var $=g-1.5707963267948966,y=Math.abs($)>1e-10?r*this.j5r_1/this.l5r_1:r*this.k5r_1/this.m5r_1;Cl();var b=1.5707963267948966-2*Math.atan(y);t:for(;;){var k=b-s;if(!(Math.abs(k)>1e-10))break t;s=b;var j=b,x=Math.sin(j),z=this.f5r_1*x,E=(1-z)/(1+z),C=this.g5r_1,S=Math.pow(E,C);Cl();var q=y*S;b=1.5707963267948966-2*Math.atan(q)}this.v5r_1=b;var O,I=this.o5r_1,A=e,T=-i;if(O=Math.atan2(A,T),this.w5r_1=I+O,this.w5r_1>ps()){var D=this,M=this.w5r_1;Cl(),D.w5r_1=M-6.283185307179586}else if(this.w5r_1<-ps()){var N=this,R=this.w5r_1;Cl(),N.w5r_1=R+6.283185307179586}var P=this.v5r_1;if(Cl(),P>1.5707963267948966){Cl(),this.v5r_1=1.5707963267948966}else{var L=this.v5r_1;if(Cl(),L<-1.5707963267948966){Cl(),this.v5r_1=-1.5707963267948966}}this.w5r_1>ps()?this.w5r_1=ps():this.w5r_1<-ps()&&(this.w5r_1=-ps())}if(0!==this.h5r_1){this.v5r_1=-1*this.v5r_1;this.w5r_1=-1*this.w5r_1}}return o},Kr(ql).a5s=function(t,n,i,e,r,s,o,u,a){var h=i,_=e,l=new Dl;null!=h&&null!=_||(h=l.c5s_1,_=l.d5s_1);var f,c=l.w5s(h,_,Hh(r),Hh(s),o,u,a),v=c;Tl(),0===v&&(c=l.x5s(Hh(t),Hh(n)));var w=c;if(Tl(),0===w)f=!0;else{var d=c;Tl(),f=512===d}if(!f)throw cs(ss("TM Conversion Error"));return new Il(t,n,l.s5s_1,l.t5s_1)},Kr(ql).y5s=function(t,n,i,e,r,s,o){var u,a=new Dl,h=a.c5s_1,_=a.d5s_1,l=a.w5s(h,_,Hh(i),Hh(e),r,s,o),f=l;Tl(),0===f&&(l=a.z5s(t,n));var c=l;if(Tl(),0===c)u=!0;else{var v=l;Tl(),u=512===v}if(!u)throw cs(ss("TM Conversion Error"));var w=Bh(),d=a.u5s_1,p=w.r51(d),m=Bh(),g=a.v5s_1;return new Il(p,m.r51(g),t,n)},Kr(Dl).w5s=function(t,n,i,e,r,s,o){var u=e,a=1/n;Tl();var h,_,l=0;if(t<=0){var f=l;Tl(),l=64|f}if(a<250||a>350){var c=l;Tl(),l=128|c}if(Tl(),i<-1.570621793869697?h=!0:(Tl(),h=i>1.570621793869697),h){var v=l;Tl(),l=16|v}if(u<-ps()||u>2*ps()){var w=l;Tl(),l=32|w}if(Tl(),o<.3?_=!0:(Tl(),_=o>3),_){var d=l;Tl(),l=256|d}var p=l;if(Tl(),0===p){this.c5s_1=t,this.d5s_1=n,this.g5s_1=0,this.h5s_1=0,this.i5s_1=0,this.j5s_1=0,this.k5s_1=1,this.e5s_1=2*this.d5s_1-this.d5s_1*this.d5s_1,this.f5s_1=1/(1-this.e5s_1)-1;var m=this.c5s_1*(1-this.d5s_1),g=(this.c5s_1-m)/(this.c5s_1+m),$=g*g,y=$*g,b=y*g,k=b*g;this.l5s_1=this.c5s_1*(1-g+5*($-y)/4+81*(b-k)/64),this.m5s_1=3*this.c5s_1*(g-$+7*(y-b)/8+55*k/64)/2,this.n5s_1=15*this.c5s_1*($-y+3*(b-k)/4)/16,this.o5s_1=35*this.c5s_1*(y-b+11*k/16)/48,this.p5s_1=315*this.c5s_1*(b-k)/512,Tl(),Tl(),this.x5s(1.570621793869697,1.5707963267948966),this.q5s_1=this.s5s_1,this.r5s_1=this.t5s_1,Tl(),this.x5s(0,1.5707963267948966),this.q5s_1=this.s5s_1,this.g5s_1=i,u>ps()&&(u-=2*ps()),this.h5s_1=u,this.i5s_1=s,this.j5s_1=r,this.k5s_1=o}return l},Kr(Dl).x5s=function(t,n){var i=n;Tl();var e,r,s=0;if(Tl(),t<-1.570621793869697?e=!0:(Tl(),e=t>1.570621793869697),e){var o=s;Tl(),s=1|o}i>ps()&&(i-=2*ps());var u=i,a=this.h5s_1;if(Tl(),u_+1.5707963267948966}if(r){var l,f=i<0?i+2*ps():i,c=this.h5s_1<0?this.h5s_1+2*ps():this.h5s_1;if(Tl(),fc+1.5707963267948966),l){var v=s;Tl(),s=2|v}}var w=s;if(Tl(),0===w){var d=i-this.h5s_1,p=d;if(Math.abs(p)>9*ps()/180){var m=s;Tl(),s=512|m}d>ps()&&(d-=2*ps()),d<-ps()&&(d+=2*ps());var g=d;Math.abs(g)<2e-10&&(d=0);var $,y,b=Math.sin(t),k=Math.cos(t),j=k*k,x=j*k,z=x*j,E=z*j,C=($=Math.tan(t))*$,S=C*$*$,q=S*$*$,O=this.f5s_1*j,I=O*O,A=I*O,T=A*O,D=this.c5s_1,M=this.e5s_1,N=Math.sin(t),R=1-M*Math.pow(N,2),P=D/Math.sqrt(R),L=2*t,F=4*t,U=6*t,H=8*t,V=this.l5s_1*t-this.m5s_1*Math.sin(L)+this.n5s_1*Math.sin(F)-this.o5s_1*Math.sin(U)+this.p5s_1*Math.sin(H),B=this.l5s_1*this.g5s_1,Y=this.m5s_1,W=2*this.g5s_1,G=B-Y*Math.sin(W),K=this.n5s_1,J=4*this.g5s_1,X=G+K*Math.sin(J),Z=this.o5s_1,Q=6*this.g5s_1,tt=X-Z*Math.sin(Q),nt=this.p5s_1,it=8*this.g5s_1,et=(V-(tt+nt*Math.sin(it)))*this.k5s_1,rt=P*b*k*this.k5s_1/2,st=P*b*x*this.k5s_1*(5-C+9*O+4*I)/24,ot=P*b*z*this.k5s_1*(61-58*C+S+270*O-330*C*O+445*I+324*A-680*C*I+88*T-600*C*A-192*C*T)/720,ut=P*b*E*this.k5s_1*(1385-3111*C+543*S-q)/40320,at=d,ht=d,_t=d,lt=this.i5s_1+et+Math.pow(at,2)*rt+Math.pow(ht,4)*st+Math.pow(_t,6)*ot,ft=d;y=Math.pow(ft,8),this.t5s_1=lt+y*ut;var ct,vt=P*k*this.k5s_1,wt=P*x*this.k5s_1*(1-C+O)/6,dt=P*z*this.k5s_1*(5-18*C+S+14*O-58*C*O+13*I+4*A-64*C*I-24*C*A)/120,pt=P*E*this.k5s_1*(61-479*C+179*S-q)/5040,mt=d,gt=d,$t=this.j5s_1+d*vt+Math.pow(mt,3)*wt+Math.pow(gt,5)*dt,yt=d;ct=Math.pow(yt,7),this.s5s_1=$t+ct*pt}return s},Kr(Dl).z5s=function(t,n){Tl();var i=0;if(tthis.j5s_1+this.q5s_1){var e=i;Tl(),i=4|e}if(nthis.i5s_1+this.r5s_1){var r=i;Tl(),i=8|r}var s=i;if(Tl(),0===s){var o=this.l5s_1*this.g5s_1,u=this.m5s_1,a=2*this.g5s_1,h=o-u*Math.sin(a),_=this.n5s_1,l=4*this.g5s_1,f=h+_*Math.sin(l),c=this.o5s_1,v=6*this.g5s_1,w=f-c*Math.sin(v),d=this.p5s_1,p=8*this.g5s_1,m=w+d*Math.sin(p)+(n-this.i5s_1)/this.k5s_1,g=this.c5s_1*(1-this.e5s_1),$=this.e5s_1,y=Math.sin(0),b=1-$*Math.pow(y,2),k=Math.sqrt(b),j=g/Math.pow(k,3),x=m/j,z=0;if(z<=4)do{z=z+1|0;var E=2*x,C=4*x,S=6*x,q=8*x,O=this.l5s_1*x-this.m5s_1*Math.sin(E)+this.n5s_1*Math.sin(C)-this.o5s_1*Math.sin(S)+this.p5s_1*Math.sin(q),I=this.c5s_1*(1-this.e5s_1),A=this.e5s_1,T=x,D=Math.sin(T),M=1-A*Math.pow(D,2),N=Math.sqrt(M);x+=(m-O)/(j=I/Math.pow(N,3))}while(z<=4);var R=this.c5s_1*(1-this.e5s_1),P=this.e5s_1,L=x,F=Math.sin(L),U=1-P*Math.pow(F,2),H=Math.sqrt(U);j=R/Math.pow(H,3);var V=this.c5s_1,B=this.e5s_1,Y=x,W=Math.sin(Y),G=1-B*Math.pow(W,2),K=V/Math.sqrt(G),J=x,X=Math.cos(J),Z=x,Q=Math.tan(Z),tt=Q*Q,nt=tt*tt,it=this.f5s_1*Math.pow(X,2),et=it*it,rt=et*it,st=rt*it,ot=t-this.j5s_1,ut=ot;Math.abs(ut)<1e-4&&(ot=0);var at,ht=2*j*K,_t=this.k5s_1,lt=Q/(ht*Math.pow(_t,2)),ft=Q*(5+3*tt+it-4*Math.pow(it,2)-9*tt*it),ct=24*j*Math.pow(K,3),vt=this.k5s_1,wt=ft/(ct*Math.pow(vt,4)),dt=Q*(61+90*tt+46*it+45*nt-252*tt*it-3*et+100*rt-66*tt*et-90*nt*it+88*st+225*nt*et+84*tt*rt-192*tt*st),pt=720*j*Math.pow(K,5),mt=this.k5s_1,gt=dt/(pt*Math.pow(mt,6)),$t=Q*(1385+3633*tt+4095*nt+1575*Math.pow(Q,6)),yt=40320*j*Math.pow(K,7),bt=this.k5s_1,kt=$t/(yt*Math.pow(bt,8)),jt=ot,xt=ot,zt=ot,Et=x-Math.pow(jt,2)*lt+Math.pow(xt,4)*wt-Math.pow(zt,6)*gt,Ct=ot;at=Math.pow(Ct,8),this.u5s_1=Et+at*kt;var St=1/(K*X*this.k5s_1),qt=1+2*tt+it,Ot=6*Math.pow(K,3)*X,It=this.k5s_1,At=qt/(Ot*Math.pow(It,3)),Tt=5+6*it+28*tt-3*et+8*tt*it+24*nt-4*rt+4*tt*et+24*tt*rt,Dt=120*Math.pow(K,5)*X,Mt=this.k5s_1,Nt=Tt/(Dt*Math.pow(Mt,5)),Rt=61+662*tt+1320*nt+720*Math.pow(Q,6),Pt=5040*Math.pow(K,7)*X,Lt=this.k5s_1,Ft=Rt/(Pt*Math.pow(Lt,7)),Ut=ot,Ht=ot,Vt=ot,Bt=ot*St-Math.pow(Ut,3)*At+Math.pow(Ht,5)*Nt-Math.pow(Vt,7)*Ft;this.v5s_1=this.h5s_1+Bt;var Yt=this.u5s_1;if(Math.abs(Yt)>90*ps()/180){var Wt=i;Tl(),i=8|Wt}if(this.v5s_1>ps()){this.v5s_1=this.v5s_1-2*ps();var Gt=this.v5s_1;if(Math.abs(Gt)>ps()){var Kt=i;Tl(),i=4|Kt}}var Jt=Math.abs(Bt),Xt=9*ps()/180,Zt=this.u5s_1;if(Jt>Xt*Math.cos(Zt)){var Qt=i;Tl(),i=512|Qt}if(this.u5s_1>1e10){var tn=i;Tl(),i=512|tn}}return i},Kr(Ml).i5n=function(t,n){var i=new Fl,e=i.g5u(Hh(t),Hh(n));if(Ll(),0!==e)throw cs(ss("UPS Conversion Error"));return new Rl(t,n,i.a5u_1,i.b5u_1,i.c5u_1)},Kr(Ml).h5u=function(t,n,i){var e=new Fl,r=e.i5u(t,n,i);if(Yl(),0!==r)throw cs(ss("UTM Conversion Error"));var s=Bh(),o=e.d5u_1,u=s.r51(o),a=Bh(),h=e.e5u_1;return new Rl(u,a.r51(h),t,n,i)},Kr(Rl).toString=function(){return this.m5q_1.toString()+" "+this.n5q_1+"E "+this.o5q_1+"N"},Kr(Fl).g5u=function(t,n){var i,e,r;if(Ll(),t<-1.5707963267948966?i=!0:(Ll(),i=t>1.5707963267948966),i)return Ll(),1;if(t<0?(Ll(),e=t>-1.2566370614359172):e=!1,e)return Ll(),1;if(t>=0?(Ll(),r=t<1.2566370614359172):r=!1,r)return Ll(),1;if(n<-ps()||n>2*ps())return Ll(),2;if(t<0){Ll(),this.t5t_1=-1.4157155848011311,this.a5u_1=pl()}else{Ll(),this.t5t_1=1.4157155848011311,this.a5u_1=dl()}return this.f5u_1.x5r(this.w5t_1,this.x5t_1,this.t5t_1,this.u5t_1,0,0),this.f5u_1.y5r(t,n),this.b5u_1=this.y5t_1+this.f5u_1.t5r_1,this.c5u_1=this.z5t_1+(pl().equals(this.a5u_1)?-this.f5u_1.u5r_1:this.f5u_1.u5r_1),Ll(),0},Kr(Fl).i5u=function(t,n,i){Ll();var e,r,s=0;if(!dl().equals(t)&&!pl().equals(t)){var o=s;Ll(),s=4|o}if(Ll(),n<0?e=!0:(Ll(),e=n>4e6),e){var u=s;Ll(),s=8|u}if(Ll(),i<0?r=!0:(Ll(),r=i>4e6),r){var a=s;Ll(),s=16|a}if(dl().equals(t)){Ll(),this.t5t_1=1.4157155848011311}if(pl().equals(t)){Ll(),this.t5t_1=-1.4157155848011311}var h=s;if(Ll(),0===h){var _,l;if(this.f5u_1.x5r(this.w5t_1,this.x5t_1,this.t5t_1,this.u5t_1,this.y5t_1,this.z5t_1),this.f5u_1.z5r(n,i),this.d5u_1=this.f5u_1.v5r_1,this.e5u_1=this.f5u_1.w5r_1,this.d5u_1<0){var f=this.d5u_1;Ll(),_=f>-1.2566370614359172}else _=!1;if(_){var c=s;Ll(),s=1|c}if(this.d5u_1>=0){var v=this.d5u_1;Ll(),l=v<1.2566370614359172}else l=!1;if(l){var w=s;Ll(),s=1|w}}return s},Kr(Ul).i5n=function(t,n){var i=new Wl,e=i.g5v(Hh(t),Hh(n));if(Yl(),0!==e)throw cs(ss("UTM Conversion Error"));return new Vl(t,n,i.d5v_1,i.a5v_1,i.b5v_1,i.c5v_1)},Kr(Ul).h5v=function(t,n,i,e){var r=new Wl,s=r.i5v(t,n,i,e);if(Yl(),0!==s)throw cs(ss("UTM Conversion Error"));var o=Bh(),u=r.e5v_1,a=o.r51(u),h=Bh(),_=r.f5v_1;return new Vl(a,h.r51(_),t,n,i,e)},Kr(Vl).toString=function(){return this.g5q_1.toString()+" "+this.h5q_1+" "+es(this.i5q_1)+"E "+es(this.j5q_1)+"N"},Kr(Wl).g5v=function(t,n){var i=n;Yl();var e,r=0,s=0;if(Yl(),t<-1.43116998663535?e=!0:(Yl(),e=t>1.5009831567151233),e){var o=r;Yl(),r=1|o}if(i<-ps()||i>2*ps()){var u=r;Yl(),r=2|u}var a=r;if(Yl(),0===a){i<0&&(i+=2*ps()+1e-10);var h=Ms(180*t/ps()),_=Ms(180*i/ps()),l=Ms(i60&&(l=1),56<=h&&h<=63&&_>-1&&_<3&&(l=31),56<=h&&h<=63&&_>2&&_<12&&(l=32),h>71&&_>-1&&_<9&&(l=31),h>71&&_>8&&_<21&&(l=33),h>71&&_>20&&_<33&&(l=35),h>71&&_>32&&_<42&&(l=37),0!==this.y5u_1&&(1===l&&60===this.y5u_1||60===l&&1===this.y5u_1||(l-1|0)<=this.y5u_1&&this.y5u_1<=(l+1|0)?l=this.y5u_1:(Yl(),r=64));var f=r;if(Yl(),0===f){this.z5u_1=l>=31?(Hr(6,l)-183|0)*ps()/180:(Hr(6,l)+177|0)*ps()/180,this.d5v_1=l,t<0?(s=1e7,this.a5v_1=pl()):this.a5v_1=dl();try{var c,v=Ol(),w=Bh().r51(t),d=Bh(),p=i,m=d.r51(p),g=Bh().r51(0),$=Bh(),y=this.z5u_1;c=$.r51(y);var b,k=v.a5s(w,m,this.w5u_1,this.x5u_1,g,c,5e5,s,.9996);this.b5v_1=k.c5t_1,this.c5v_1=k.d5t_1;var j,x=this.b5v_1;if(Yl(),x<1e5)b=!0;else{var z=this.b5v_1;Yl(),b=z>9e5}b&&(Yl(),r=4);var E=this.c5v_1;if(Yl(),E<0)j=!0;else{var C=this.c5v_1;Yl(),j=C>1e7}if(j){var S=r;Yl(),r=8|S}}catch(t){if(!(t instanceof Ts))throw t;Yl(),r=512}}}return r},Kr(Wl).i5v=function(t,n,i,e){Yl();var r,s=0,o=0;if(t<1||t>60){var u=s;Yl(),s=16|u}if(!n.equals(pl())&&!n.equals(dl())){var a=s;Yl(),s=32|a}if(Yl(),e<0?r=!0:(Yl(),r=e>1e7),r){var h=s;Yl(),s=8|h}var _=s;if(Yl(),0===_){this.z5u_1=t>=31?(Hr(6,t)-183|0)*ps()/180:(Hr(6,t)+177|0)*ps()/180,n.equals(pl())&&(o=1e7);try{var l,f=Ol(),c=Bh().r51(0),v=Bh(),w=this.z5u_1;l=v.r51(w);var d,p=f.y5s(i,e,c,l,5e5,o,.9996);this.e5v_1=Hh(p.a5t_1),this.f5v_1=Hh(p.b5t_1);var m=this.e5v_1;if(Yl(),m<-1.43116998663535)d=!0;else{var g=this.e5v_1;Yl(),d=g>1.5009831567151233}if(d){var $=s;Yl(),s=8|$}}catch(t){if(!(t instanceof Ts))throw t;Yl(),s=512}}return s},Kr(sf).c52=function(){return this.i4x_1.m5j_1},Kr(sf).i5w=function(){return this.i4x_1.o5j()},Kr(sf).p5j=function(){return this.i4x_1.p5j()},Kr(sf).f55=function(){return this.j4x_1.f55()},Kr(sf).j5w=function(t,n){var i=Hh(t),e=Math.sin(i),r=this.i4x_1.p5j(),s=1-r*e*e,o=1+(r*r-2*r)*e*e;return this.i4x_1.m5j_1/Math.sqrt(s)*Math.sqrt(o)},Kr(sf).z4z=function(t,n,i,e){return this.j4x_1.k5w(this,t,n,i,e)},Kr(sf).o50=function(t,n,i){return this.j4x_1.l5w(this,t,n,i)},Kr(sf).d55=function(t,n,i,e){return this.j4x_1.m5w(this,t,n,i,e)},Kr(sf).y5i=function(t,n,i,e,r,s,o,u,a){return this.j4x_1.n5w(this,t,n,i,e,r,s,o,u,a)},Kr(sf).o5w=function(t,n,i,e,r,s){return this.j4x_1.p5w(this,t,n,i,e,r,s)},Kr(sf).x4z=function(t,n,i,e){return this.j4x_1.q5w(this,t,n,i,e)},Kr(sf).b50=function(t,n,i,e){return this.j4x_1.r5w(this,t,n,i,e)},Kr(sf).k4z=function(t){var n;if(t>0){var i=t*(2*this.i4x_1.m5j_1+t);n=Math.sqrt(i)}else n=0;return n},Kr(sf).h50=function(t,n){return this.j4x_1.s5w(this,t,n)},Kr(sf).t5w=function(t,n,i){return this.k4x_1.u5w(t,n,i)},Kr(sf).n50=function(t,n,i,e){return i=i!==Xr&&i,e===Xr?this.t5w(t,n,i):e.t5w.call(this,new o_(t),new o_(n),i)},Kr(sf).v5w=function(t,n){return new J_(t,n,this.t5w(t,n,!0))},Kr(sf).j4z=function(t,n){var i;switch(n.l6_1){case 1:i=this.v5w(t.j4w_1,t.k4w_1);break;case 2:var e=this.v5w(t.j4w_1,t.k4w_1),r=e;r.n4w_1=r.n4w_1+t.n4w_1,i=e;break;default:i=W_(t)}return i},Kr(of).a54=function(){var t=new ts(0,0),n=0,i=this.l4x_1.g()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.l4x_1.h(e).a54();t.w(r)<0&&(t=r)}while(n<=i);return t},Kr(of).m4x=function(){for(var t=this.l4x_1.d();t.e();)t.f().w5w();return rs()},Kr(of).x5w=function(t){return!this.l4x_1.n(t)&&this.l4x_1.a(t)},Kr(of).d=function(){return this.l4x_1.d()},Kr(of).u5w=function(t,n,i){var e=this.l4x_1.g()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=this.l4x_1.h(r).u5w(t,n,i);if(null!=s)return s}while(0<=e);return 0},Kr(of).y5w=function(t,n,i,e){var r=0,s=this.l4x_1.g()-1|0;if(r<=s)do{var o=r;r=r+1|0,this.l4x_1.h(o).y5w(t,n,i,e)}while(r<=s)},Kr(of).z5w=function(t,n){var i=0,e=this.l4x_1.g()-1|0;if(i<=e)do{var r=i;i=i+1|0,this.l4x_1.h(r).z5w(t,n)}while(i<=e)},Kr(uf).f5x=function(){return this.b5x_1},Kr(uf).g5x=function(t){this.c5x_1=t},Kr(uf).a54=function(){return this.c5x_1},Kr(uf).h5x=function(){this.g5x(Bs().v3h().w3i()),this.e5x_1.d3()},Kr(uf).u5w=function(t,n,i){var e;if(this.f5x()){var r,s=Hr(31,Ns(t))+Ns(n)|0,o=this.e5x_1.g2(s);if(null==o){var u,a=this.i5x(t,n,i);null==a?u=null:(this.e5x_1.h5h(s,a,1),u=a),r=u}else r=o;e=r}else e=null;return e},Kr(uf).y5w=function(t,n,i,e){this.f5x()&&this.j5x(t,n,i,e)},Kr(uf).z5w=function(t,n){this.f5x()&&this.k5x(t,n)},Kr(_f).t5x=function(){var t=this.m5x_1;if(null!=t)return t;no("tileMatrix")},Kr(_f).d3=function(){this.n5x_1.d3(),this.o5x_1.d3(),this.p5x_1.d3(),this.q5x_1=-1,this.r5x_1=-1,this.s5x_1=null},Kr(_f).u5x=function(t,n,i){var e=this.t5x().p5m(t,n);this.p5x_1.f4(e,i)},Kr(_f).v5x=function(t,n){return this.q5x_1===t&&this.r5x_1===n||(this.q5x_1=t,this.r5x_1=n,this.s5x_1=this.p5x_1.g2(this.t5x().p5m(t,n))),this.s5x_1},Kr(_f).w5x=function(t,n,i,e){var r=this.v5x(t,n),s=null==r?null:r[i+Hr(e,this.t5x().m5m_1)|0];return null==s?0:s},Kr(lf).w5w=function(){this.f5y_1.d3(),this.g5y_1.d3(),this.i5y_1.d3(),this.h5x()},Kr(lf).i5x=function(t,n,i){if(!this.c5y_1.t5m_1.d5m(t,n))return null;var e=this.c5y_1.u5m_1.g()-1|0,r=e;if(0<=r)do{var s=r;r=r+-1|0,this.h5y_1=!!i&&(s===e||0===s);var o,u=this.c5y_1.u5m_1.h(s),a=u.i5m_1.w5e()/u.l5m_1,h=u.i5m_1.v5e()/u.k5m_1,_=(u.i5m_1.s5e_1-t)/a;o=Math.floor(_);var l,f=Ms(o),c=(n-u.i5m_1.t5e_1)/h;l=Math.floor(c);var v=Ms(l),w=this.o5y(u,f,v);if(null!=w){var d,p=u.i5m_1.s5e_1-a*f,m=u.i5m_1.t5e_1+h*v,g=u.m5m_1-1|0,$=u.n5m_1-1|0,y=g*(n-m)/h,b=$*(p-t)/a;d=Math.floor(y);var k,j=so(Ms(d),0,g),x=so(j+1|0,0,g);k=Math.floor(b);var z=so(Ms(k),0,$),E=so(z+1|0,0,$),C=y-j,S=b-z;return(1-C)*(1-S)*w[j+Hr(z,u.m5m_1)|0]+C*(1-S)*w[x+Hr(z,u.m5m_1)|0]+(1-C)*S*w[j+Hr(E,u.m5m_1)|0]+C*S*w[x+Hr(E,u.m5m_1)|0]}}while(0<=r);return null},Kr(lf).j5x=function(t,n,i,e){if(!this.c5y_1.t5m_1.c5g(t))return rs();var r=t.w5e()/i,s=this.c5y_1.v5m(r),o=new _f,u=s;if(0<=u)do{var a=u;u=u+-1|0,this.h5y_1=a===s||0===a;var h=this.c5y_1.u5m_1.h(a);if(this.q5y(t,n,i,h,o))return this.p5y(t,n,i,o,e),rs()}while(0<=u)},Kr(lf).k5x=function(t,n){if(!this.c5y_1.t5m_1.c5g(t))return rs();var i=t.w5e();hf();var e=i/32,r=this.c5y_1.v5m(e),s=new _f,o=r;if(0<=o)do{var u=o;o=o+-1|0,this.h5y_1=u===r||0===u;var a=this.c5y_1.u5m_1.h(u);if(this.s5y(t,a,s))return this.r5y(t,s,n),rs()}while(0<=o)},Kr(lf).q5y=function(t,n,i,e,r){var s=e.m5m_1,o=e.n5m_1,u=Hr(e.k5m_1,s),a=Hr(e.l5m_1,o),h=e.i5m_1.r5e_1,_=e.i5m_1.s5e_1,l=e.i5m_1.t5e_1,f=e.i5m_1.u5e_1,c=e.i5m_1.w5e(),v=e.i5m_1.v5e(),w=1/(2*u),d=1-w,p=1/(2*a),m=1-p;r.m5x_1=e,r.d3();for(var g=t.t5e_1,$=t.v5e()/(n-1|0),y=0;yK&&(i[0]=K),i[1]=1&&e>=1))throw _=wx().v4w(wx().q4w_1,"Wgs84Projection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one"),cs(ss(_));if(!(null==r||r.length>=Hr(i,e)))throw l=wx().v4w(wx().q4w_1,"Wgs84Projection","geographicToCartesianGrid","missingArray"),cs(ss(l));var f=Hh(n.r5e_1),c=Hh(n.s5e_1),v=Hh(n.t5e_1),w=Hh(n.u5e_1),d=(c-f)/(i>1?i-1|0:1),p=(w-v)/(e>1?e-1|0:1),m=t.c52(),g=t.p5j(),$=new Float64Array(e),y=new Float64Array(e),b=0,k=null==o?null:o.m4z_1,j=null==k?0:k,x=null==o?null:o.n4z_1,z=null==x?0:x,E=null==o?null:o.q4z_1,C=null==E?0:E,S=v,q=0;if(q=1&&e>=1))throw u=wx().v4w(wx().q4w_1,"Wgs84Projection","geographicToCartesianBorder","Number of latitude or longitude locations is less than one"),cs(ss(u));var a=Hh(n.r5e_1),h=Hh(n.s5e_1),_=Hh(n.t5e_1),l=Hh(n.u5e_1),f=(h-a)/(i>1?i-3|0:1),c=(l-_)/(e>1?e-3|0:1),v=a,w=_,d=t.c52(),p=t.p5j(),m=null==s?null:s.m4z_1,g=null==m?0:m,$=null==s?null:s.n4z_1,y=null==$?0:$,b=null==s?null:s.q4z_1,k=null==b?0:b,j=0,x=0;if(x0||0!==v){var p,m;if(d>0){var g,$,y=Math.sqrt(d),b=f*c*v,k=Math.sqrt(b),j=(y+k)*(y+k);if(g=Math.pow(j,.3333333333333333),d>10*l)$=w+.5*g+2*w*w/g;else{var x=(y-k)*(y-k);$=w+.5*g+.5*Math.pow(x,.3333333333333333)}p=$}else{var z=-d,E=Math.sqrt(z),C=-8*w*w*w,S=Math.sqrt(C),q=f*c*v,O=Math.sqrt(q),I=E+S,A=2*Math.atan2(O,I)/3,T=-4*w*Math.sin(A),D=ps()/6+A;p=T*Math.cos(D)}var M,N=p*p+f*v,R=l*(p+(m=Math.sqrt(N))-v)/(2*m),P=R*R+p+m,L=(p+m)/(Math.sqrt(P)+R),F=L*a/(L+l),U=F*F+i*i;s=(L+l-1)*(M=Math.sqrt(U))/L;var H=M+F;o=2*Math.atan2(i,H)}else{var V,B=1-l,Y=Math.sqrt(B),W=l-c,G=Math.sqrt(W);s=-h*Y*G/(V=Math.sqrt(l)),o=G/(V*G+Y*Math.sqrt(c))}var K,J=Math.sqrt(2);if((J-1)*n0||(d=(-v+Math.sqrt(w))/(2*c))>0)&&(i.r57(o+e*d,u+r*d,a+s*d),!0)},Kr(vf).sh=function(t,n){return this.s5z_1(t,n)},Kr(vf).compare=function(t,n){return this.sh(t,n)},Kr(df).q55=function(){return this.o60_1},Kr(df).r60=function(t){this.n60_1.a(t),this.q55().g5m(t.s60_1)},Kr(df).d3=function(){this.p60_1=null,this.n60_1.d3(),this.q55().r4x()},Kr(df).y60=function(t){this.n60_1.d3(),this.n60_1.l(t.n60_1),this.q55().i5f(t.q55()),this.p60_1=t.p60_1},Kr(df).z60=function(){var t,n,i=this.n60_1;return i.g()>1&&(n=new vf(wf),uo(i,n),t=rs()),t},Kr(df).h50=function(t,n){var i=!1,e=this.p60_1;if(null==e)return i;var r=e,s=0,o=this.n60_1.g()-1|0;if(s<=o)t:do{var u=s;s=s+1|0;var a=this.n60_1.h(u);if(t.e4z_1.p50(a.h60_1),t.c5k(a.a61(),3,r,r.length,this.q60_1)&&(n.t54(this.q60_1).d5n(a.h60_1),i=!0),t.e4z_1.d5n(a.h60_1),i)break t}while(s<=o);return i},Kr(df).b61=function(t,n,i){var e=0,r=this.n60_1.g()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=this.n60_1.h(s),u=o.s60_1;if(u.d5m(t,n)){var a=o.p61_1.h61_1,h=o.p61_1.i61_1,_=(n-u.t5e_1)/u.v5e()*(a-1|0),l=(t-u.r5e_1)/u.w5e()*(h-1|0),f=_<(a-1|0)?sj(_):1,c=l<(h-1|0)?sj(l):1,v=_<(a-1|0)?Ms(_+1):a-1|0,w=l<(h-1|0)?Ms(l+1):h-1|0,d=a+2|0,p=Hr(v+Hr(w,d)|0,3),m=p+3|0,g=Hr(v+Hr(w+1|0,d)|0,3),$=g+3|0,y=(1-f)*(1-c),b=f*(1-c),k=(1-f)*c,j=f*c,x=o.a61();i.m4z_1=x[p]*y+x[m]*b+x[g]*k+x[$]*j,i.n4z_1=x[p+1|0]*y+x[m+1|0]*b+x[g+1|0]*k+x[$+1|0]*j,i.q4z_1=x[p+2|0]*y+x[m+2|0]*b+x[g+2|0]*k+x[$+2|0]*j;var z=i;z.m4z_1=z.m4z_1+o.h60_1.m4z_1;var E=i;E.n4z_1=E.n4z_1+o.h60_1.n4z_1;var C=i;return C.q4z_1=C.q4z_1+o.h60_1.q4z_1,!0}}while(e<=r);return!1},Kr(pf).s51=function(){return this.v61_1},Kr(pf).s5g=function(t){this.k62(t),t.t52_1=this.a62_1,t.q53_1||this.s51().y60(this.a62_1)},Kr(pf).l62=function(t,n,i,e){return new $f(t,n,i,e)},Kr(pf).k62=function(t){this.a62_1.d3(),this.m62(t),this.a62_1.p60_1=this.d62_1,this.z61_1.m()&&this.n62();var n=0,i=this.z61_1.g()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.z61_1.h(e);this.o62(t,r instanceof $f?r:Wr())}while(n<=i);this.a62_1.z60(),this.g62_1=null,this.h62_1=null},Kr(pf).n62=function(){var t=this.w61_1.v62();null==t||Ey().w62(t,this,this.z61_1)},Kr(pf).o62=function(t,n){if(!n.y62(this.w61_1.p62_1)||!n.x62(t))return rs();if(n.p61_1.b63()||!n.a63(t,this.x61_1))return this.z62(t,n),rs();var i=n.c63(this,this.y61_1,4),e=0,r=i.length-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=i[s];this.o62(t,o instanceof $f?o:Wr())}while(e<=r)},Kr(pf).z62=function(t,n){n.d63(t),this.a62_1.r60(n);var i,e=Is(Ba),r=t.v53_1.g2(e),s=null==r||bs(r,yy)?r:Wr();if(null==s){var o=new dx;t.v53_1.f4(e,o),i=o}else i=s;var u=i,a=Va().g55(u);this.e63(t,n,a),t.f63(a,n.l60_1)},Kr(pf).e63=function(t,n,i){i.q55().i5f(n.s60_1),i.r55().t54(n.h60_1),i.k55_1.x5l(this.e62_1),i.l55_1.x5l(this.f62_1),i.m55_1=n.g63(t),i.n55_1=this.g62_1,i.o55_1=this.h62_1},Kr(pf).m62=function(t){var n,i=this.w61_1.t62_1+2|0,e=this.w61_1.s62_1+2|0,r=this.b62_1;if(null==r){var s=new Float32Array(Hr(Hr(i,e),2));this.b62_1=s,this.h63(i,e,s),n=s}else n=r;var o,u=n,a=this.c62_1;if(null==a){var h=this.i63(i,e);this.c62_1=h,o=h}else o=a;var _,l=o,f=this.d62_1;if(null==f){var c=this.j63(i,e);this.d62_1=c,_=c}else _=f;var v,w,d,p=_,m=this.i62_1,g=t.z5g(),$=g.g2(m);if(null==$){var y=new Yg(jk(),u);g.h5h(m,y,y.r5c_1),d=y}else d=$;v=(w=d)instanceof Yg?w:Wr(),this.g62_1=v;var b,k,j,x=this.j62_1,z=t.z5g(),E=z.g2(x);if(null==E){var C=new Gg(Ek(),_o([l,p]));this.e62_1.k56_1=l.length,this.f62_1.j56_1=l.length,this.f62_1.k56_1=l.length+p.length|0;var S=C;z.h5h(x,S,S.r5c_1),j=S}else j=E;b=(k=j)instanceof Gg?k:Wr(),this.h62_1=b},Kr(pf).h63=function(t,n,i){var e=1/(n>1?n-3|0:1),r=1/(t>1?t-3|0:1),s=0,o=0,u=0,a=0;if(a1)return!0;var e=t.n6c_1-n.h64().g4w_1;if(Math.abs(e)>1)return!0;var r=t.o6c_1-n.h64().i4w_1;return Math.abs(r)>1||n.d53_1.c5j(t.l6c_1)>t.v6c(n)/100})(this,t)&&(this.d6d(t),this.e6d(t)),this.k6c_1.f6d(t,this.c64())},Kr(Gf).d6d=function(t){this.k6c_1.u6c(),this.l6c_1.t54(t.d53_1),this.o6c_1=t.h64().i4w_1,this.m6c_1=t.h64().f4w_1,this.n6c_1=t.h64().g4w_1,this.p6c_1=t.z52_1},Kr(Gf).h6d=function(t){var n;if(this.k6d(t)){var i=function(t,n){Wf(t,n),Uf();var i=n.w6c("graticule_label_offset");return null!=i&&"number"==typeof i?i:Wr()}(this,t),e=new x_(Jh(this.i6d(t),i),Jh(this.j6d(t),i));e.e5k(ds(Bh().t5h(e.j4w_1),-70,70),Bh().u5h(e.k4w_1)),n=e}else n=t.h64().d4w_1;return n},Kr(Gf).l6d=function(t,n){var i=new q$(t);return i.f6e(n),i.g6e(!0),i.h6e(Fh()),i},Kr(Gf).i6e=function(t,n,i){var e=new y$(t,n);return e.h6e(Fh()),e},Kr(Gf).k6d=function(t){var n;return Wf(this,t),Uf(),null!=t.w6c("look_at_latitude")?(Uf(),n=!(null==t.w6c("look_at_longitude"))):n=!1,n},Kr(Gf).i6d=function(t){Wf(this,t),Uf();var n=t.w6c("look_at_latitude");return n instanceof o_?n.y5h_1:Wr()},Kr(Gf).j6d=function(t){Wf(this,t),Uf();var n=t.w6c("look_at_longitude");return n instanceof o_?n.y5h_1:Wr()},Kr(Gf).y6e=function(t){Wf(this,t),Uf();var n=t.w6c("graticule_pixel_size");return null!=n&&"number"==typeof n?n:Wr()},Kr(Gf).z6e=function(t,n,i){return t.x5g().b61(n,i,this.g6c_1)||t.j5h().z4z(n,i,t.j5h().n50(n,i)*t.z52_1,this.g6c_1),this.g6c_1},Kr(Gf).v6c=function(t){var n=this.z6e(t,t.h64().d4w_1.j4w_1,t.h64().d4w_1.k4w_1);return t.d53_1.c5j(n)},Kr(Gf).a6f=function(t,n,i,e){var r=i.d5m(t.j4w_1,t.k4w_1),s=i.d5m(n.j4w_1,n.k4w_1);if(!r&&!s)return rs();if(r&&s)e.a(t),e.a(n);else{var o=r?n:t,u=r?t:n,a=1;if(a<=2)t:do{a=a+1|0;var h=null;if(o.k4w_1>i.u5e_1||180===i.u5e_1&&o.k4w_1<0?h=Hf(0,u,o,i.u5e_1):o.k4w_10?h=Hf(0,u,o,i.t5e_1):o.j4w_1>i.s5e_1?h=Vf(0,u,o,i.s5e_1):o.j4w_1=1e5?(Xf(),n="Graticule.UTM.100000m"):t>=1e4?(Xf(),n="Graticule.UTM.10000m"):t>=1e3?(Xf(),n="Graticule.UTM.1000m"):t>=100?(Xf(),n="Graticule.UTM.100m"):t>=10?(Xf(),n="Graticule.UTM.10m"):(Xf(),n="Graticule.UTM.1m"),n},Kr(Zf).d6d=function(t){Kr(Gf).d6d.call(this,t),this.u6g_1.d3(),this.u6g_1.x6g(t)},Kr(Zf).e6d=function(t){this.u6g_1.e6d(t)},Kr(Zf).y6g=function(t,n,i,e){this.u6g_1.y6g(t,n,i,e)},Kr(Zf).z6g=function(t,n,i,e){return t>0?function(t,n,i,e,r){var s=Hl().h5v(n,i,e,r);return new J_(i_(s.e5q_1),e_(s.f5q_1),1e4)}(0,t,n,i,e):function(t,n,i,e){var r=Nl().h5u(n,i,e);return new J_(i_(r.k5q_1),e_(r.l5q_1),1e4)}(0,n,i,e)},Kr(Zf).a6h=function(t,n,i,e,r,s,o){var u=gs();Xf();var a=e/1e5,h=Math.floor(a);Xf();var _=1e5*h;Xf();var l=s/1e5,f=Math.floor(l);Xf();var c,v=1e5*f,w=r-_;Xf();var d=w/1e5;c=Math.ceil(d);var p,m=Ms(c),g=o-v;Xf();var $=g/1e5;p=Math.ceil($);for(var y=Ms(p),b=0,k=y,j=ms(Array(k),null);b3e6)return rs();null==this.k6l_1&&(this.g6l_1?function(t){var n,i,e,r,s,o,u,a,h,_=t;n=gs(),_.k6l_1=n,dl().equals(t.i6l_1)?($c(),$c(),r=13e5,$c(),$c(),s=27e5,"Y"===t.h6l_1?($c(),$c(),o=13e5):($c(),o=2e6),i=o,"Y"===t.h6l_1?($c(),u=2e6):($c(),$c(),u=27e5),e=u):($c(),$c(),r=8e5,$c(),$c(),s=32e5,"A"===t.h6l_1?($c(),$c(),a=8e5):($c(),a=2e6),i=a,"A"===t.h6l_1?($c(),h=2e6):($c(),$c(),h=32e5),e=h),t.k6l_1=t.j6f().a6h(t.j6l_1,t.i6l_1,t.s60_1,i,e,r,s),pc(t)}(this):function(t){var n=Hl().i5n(t.s60_1.r5e_1,t.s60_1.a5j()),i=n.j5q_1,e=(n=Hl().i5n(t.s60_1.s5e_1,t.s60_1.a5j())).j5q_1;e=0===e?1e7:e;var r=(n=Hl().i5n(t.s60_1.r5e_1,t.s60_1.t5e_1)).i5q_1;n=Hl().i5n(t.s60_1.s5e_1,t.s60_1.t5e_1);var s=1e6-(r=bo(n.i5q_1,r));if("32V"===t.h6l_1&&(e+=2e4),"31X"===t.h6l_1){var o=s;$c(),s=o+1e5}t.k6l_1=t.j6f().a6h(t.j6l_1,t.i6l_1,t.s60_1,r,s,i,e),pc(t)}(this));for(var o=ws(this.k6l_1).d();o.e();){var u=o.f();u.k6f(t)?u.e6d(t):u.m6f()}},Kr(yc).m6f=function(){Kr(Kf).m6f.call(this);var t=this.k6l_1;if(null==t);else{for(var n=t.d();n.e();)n.f().m6f();t.d3(),rs(),rs()}this.k6l_1=null},Kr(yc).l6f=function(){Kr(Kf).l6f.call(this);var t=jo([new J_(this.s60_1.r5e_1,this.s60_1.t5e_1,1e4),new J_(this.s60_1.s5e_1,this.s60_1.t5e_1,1e4)]),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.r5e_1,this.s60_1.s5e_1,this.s60_1.t5e_1,this.s60_1.t5e_1),e=ws(this.i6f_1),r=i,s=n;if(ac(),e.a(oc(r,s,"GridElement_LineWest")),!this.g6l_1){t.d3(),t.a(new J_(this.s60_1.r5e_1,this.s60_1.u5e_1,1e4)),t.a(new J_(this.s60_1.s5e_1,this.s60_1.u5e_1,1e4)),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.r5e_1,this.s60_1.s5e_1,this.s60_1.u5e_1,this.s60_1.u5e_1);var o=ws(this.i6f_1),u=i,a=n;ac(),o.a(oc(u,a,"GridElement_LineEast")),t.d3(),t.a(new J_(this.s60_1.r5e_1,this.s60_1.t5e_1,1e4)),t.a(new J_(this.s60_1.r5e_1,this.s60_1.u5e_1,1e4)),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.r5e_1,this.s60_1.r5e_1,this.s60_1.t5e_1,this.s60_1.u5e_1);var h=ws(this.i6f_1),_=i,l=n;ac(),h.a(oc(_,l,"GridElement_LineSouth")),t.d3(),t.a(new J_(this.s60_1.s5e_1,this.s60_1.t5e_1,1e4)),t.a(new J_(this.s60_1.s5e_1,this.s60_1.u5e_1,1e4)),n=this.j6f().l6d(xo(t),T$()),i=new el(this.s60_1.s5e_1,this.s60_1.s5e_1,this.s60_1.t5e_1,this.s60_1.u5e_1);var f=ws(this.i6f_1),c=i,v=n;ac(),f.a(oc(c,v,"GridElement_LineNorth"))}var w=this.j6f().i6e(new J_(this.s60_1.z5i(),this.s60_1.a5j(),0),this.h6l_1,1e7),d=ws(this.i6f_1);ac(),d.a(oc(this.s60_1,w,"GridElement_GridZoneLabel"))},Kr(jc).e6d=function(t){Kr(Kf).e6d.call(this,t);for(var n=this.j6f().h6d(t),i=ws(this.i6f_1).d();i.e();){var e=i.f();if(e.k6f(t)){if(e.v6k_1 instanceof y$){var r=e.v6k_1;if(n.j4w_1<72||!zo("*32*34*36*","*"+r.o6e_1+"*")){var s=r.q6e_1;ac(),"GridElement_LatitudeLabel"===e.w6k_1?s=new J_(s.j4w_1,n.k4w_1,s.n4w_1):(ac(),"GridElement_LongitudeLabel"===e.w6k_1&&(s=new J_(n.j4w_1,s.k4w_1,s.n4w_1))),r.e6n(s)}}var o=this.j6f(),u=this.j6f();wc(),o.c6d(e.v6k_1,u.g6d(1e6))}}},Kr(jc).l6f=function(){Kr(Kf).l6f.call(this);var t,n=gs(),i=-180,e=1,r=0;if(r<=59)do{r=r+1|0;var s=i;n.d3(),n.a(K_().u5l(-80,s,1e4)),n.a(K_().u5l(-60,s,1e4)),n.a(K_().u5l(-30,s,1e4)),n.a(K_().u5l(0,s,1e4)),n.a(K_().u5l(30,s,1e4)),i<6||i>36?(t=84,n.a(K_().u5l(60,s,1e4))):6===i?t=56:(t=72,n.a(K_().u5l(60,s,1e4))),n.a(K_().u5l(t,s,1e4));var o=this.j6f().l6d(Eo(n),A$()),u=il().y5l(-80,s,t+80,1e-15),a=ws(this.i6f_1),h=u;ac(),a.a(oc(h,o,"GridElement_Line"));var _=this.j6f().i6e(K_().u5l(0,s+3,0),e.toString(),1e7);u=il().y5l(-90,s+3,180,1e-15);var l=ws(this.i6f_1),f=u;ac(),l.a(oc(f,_,"GridElement_LongitudeLabel")),i=i+6|0,e=e+1|0}while(r<=59);var c=0;if(c<=4)do{var v=c;c=c+1|0,n.d3();var w=kc().c6n_1[v][0],d=kc().c6n_1[v][1],p=kc().c6n_1[v][2];n.a(K_().u5l(d,w,1e4)),n.a(K_().u5l(p,w,1e4));var m=this.j6f().l6d(xo(n),A$()),g=il().y5l(d,w,p-d,1e-15),$=ws(this.i6f_1);ac(),$.a(oc(g,m,"GridElement_Line"))}while(c<=4);var y=-80,b=0;if(b<=20)do{var k=b;b=b+1|0;var j=y,x=0;if(x<=3)do{var z=x;x=x+1|0,n.d3();var E=i=-180+Hr(z,90)|0;n.a(K_().u5l(j,E,1e4)),n.a(K_().u5l(j,E+30,1e4)),n.a(K_().u5l(j,E+60,1e4)),n.a(K_().u5l(j,E+90,1e4));var C=this.j6f().l6d(xo(n),T$()),S=il().y5l(j,E,1e-15,90),q=ws(this.i6f_1);ac(),q.a(oc(S,C,"GridElement_Line"))}while(x<=3);if(k<20){var O=this.j6f(),I=K_().u5l(j+4,0,0);kc();var A=O.i6e(I,Co(Zs("CDEFGHJKLMNPQRSTUVWX",k)),1e7),T=il().y5l(j+4,-180,1e-15,360),D=ws(this.i6f_1);ac(),D.a(oc(T,A,"GridElement_LatitudeLabel"))}y=y+(y<72?8:12)|0}while(b<=20)},Kr(Sc).b6g=function(t){this.y6f_1=t,this.d3()},Kr(Sc).x6g=function(t){try{if(this.w6f_1.k6d(t)){var n,i=this.w6f_1.i6d(t),e=this.w6f_1.j6d(t);Xf();Xf();n=-80<=i&&i<=84?Hl().i5n(i,e).g5q_1:0,this.z6f_1=n}}catch(t){if(!(t instanceof Ts))throw t;this.z6f_1=0}},Kr(Sc).d3=function(){var t,n=this.y6f_1;t=Br(n);for(var i=0,e=Ms(t),r=ms(Array(e),null);ithis.y6f_1)return rs();var r,s=ws(this.a6g_1);r=Br(e);var o,u,a,h,_=s[Ms(r)-1|0];ac(),"GridElement_LineEasting"===i.w6k_1?u=!0:(ac(),u="GridElement_LineEast"===i.w6k_1),u?o=!0:(ac(),o="GridElement_LineWest"===i.w6k_1),o?(_.f6n_1=bo(i.x6k_1,_.f6n_1),_.g6n_1=yo(i.x6k_1,_.g6n_1)):(ac(),"GridElement_LineNorthing"===i.w6k_1?h=!0:(ac(),h="GridElement_LineSouth"===i.w6k_1),h?a=!0:(ac(),a="GridElement_LineNorth"===i.w6k_1),a&&(n.equals(_.j6n_1)?_.h6n_1=bo(i.x6k_1,_.h6n_1):n.equals(pl())&&(_.h6n_1=i.x6k_1,_.j6n_1=n),n.equals(_.k6n_1)?_.i6n_1=yo(i.x6k_1,_.i6n_1):n.equals(dl())&&(_.i6n_1=i.x6k_1,_.k6n_1=n)))},Kr(Sc).e6d=function(t){var n=this.a6g_1;if(null==n)return rs();var i=n;if(!this.w6f_1.k6d(t))return rs();var e=this.w6f_1.y6e(t),r=t.e53_1.p4x_1*e;Cc();var s=-.5*r/2,o=t.e53_1.q4x_1*e;Cc();var u,a,h,_=-.5*o/2;if(this.z6f_1>0){var l=Hl().i5n(this.w6f_1.i6d(t),this.w6f_1.j6d(t));u=l.i5q_1+s,a=l.j5q_1+_,h=l.h5q_1,a<0&&(a+=1e7,h=pl())}else{var f=Nl().i5n(this.w6f_1.i6d(t),this.w6f_1.j6d(t));u=f.n5q_1+s,a=f.o5q_1+_,h=f.m5q_1}var c,v=t.i53_1,w=0,d=i.length-1|0;if(w<=d)do{var p=w;w=w+1|0;var m=i[p],g=p,$=Math.pow(10,g),y=10*$,b=this.w6f_1.g6d($);if(m.f6n_1<=m.g6n_1)for(var k=m.f6n_1;k<=m.g6n_1;){if(p===(i.length-1|0)||k%y!=0){var j=(c=this.w6f_1.z6g(this.z6f_1,h,k,a)).j4w_1,x=c.k4w_1,z=this.w6f_1.z6e(t,j,x);if(v.v5j(z)&&zc(this,t,z)){var E=Ms(k%this.x6f_1).toString(),C=this.w6f_1.i6e(new J_(j,x,0),E,y);this.w6f_1.c6d(C,b)}}k+=$}if(!m.k6n_1.equals(pl())||0!==m.i6n_1)for(var S=m.j6n_1,q=m.h6n_1;q<=m.i6n_1||!S.equals(m.k6n_1);){if(p===(i.length-1|0)||q%y!=0){var O=(c=this.w6f_1.z6g(this.z6f_1,S,u,q)).j4w_1,I=c.k4w_1,A=this.w6f_1.z6e(t,O,I);if(v.v5j(A)&&zc(this,t,A)){var T=Ms(q%this.x6f_1).toString(),D=this.w6f_1.i6e(new J_(O,I,0),T,y);this.w6f_1.c6d(D,b)}!S.equals(m.k6n_1)&&q>=1e7-$&&(S=m.k6n_1,q=-$)}q+=$}}while(w<=d)},Kr(Sc).toString=function(){var t=So(),n=0;if(n<=4)do{var i=n;n=n+1|0,t.l8("level "),t.k8(i),t.l8(" : ");var e=ws(this.a6g_1)[i];e.f6n_1Hr(50,4)}else n=!1;return n},Kr(qc).e6d=function(t){Kr(Dc).e6d.call(this,t);var n=this.m6o(t);Tc();for(var i=n>1.7*Hr(50,4),e=this.j6f().g6d(this.o6h_1/10),r=ws(this.i6f_1).d();r.e();){var s=r.f();s.k6f(t)&&(i&&this.j6f().y6g(this.j6h_1,this.k6h_1,s,this.o6h_1),this.j6f().c6d(s.v6k_1,e))}var o=this.m6o(t);if(Tc(),o<=Hr(Hr(50,4),2))return rs();null==this.l6o_1&&function(t){var n,i=t;n=gs(),i.l6o_1=n;var e=t.o6h_1/10,r=0;if(r<=9)do{var s=r;r=r+1|0;var o=t.m6h_1+e*s,u=0;if(u<=9)do{var a=u;u=u+1|0;var h=t.n6h_1+e*a,_=new qc(t.j6f(),t.j6h_1,t.k6h_1,t.l6h_1,o,h,e);_.x6h_1||ws(t.l6o_1).a(_)}while(u<=9)}while(r<=9)}(this);for(var u=ws(this.l6o_1).d();u.e();){var a=u.f();a.k6f(t)?a.e6d(t):a.m6f()}},Kr(qc).m6f=function(){Kr(Dc).m6f.call(this);var t=this.l6o_1;if(null==t);else{for(var n=t.d();n.e();)n.f().m6f();t.d3(),rs(),rs()}this.l6o_1=null},Kr(qc).l6f=function(){Kr(Dc).l6f.call(this);var t=this.o6h_1/10,n=gs(),i=1;if(i<=9)do{var e=i;i=i+1|0;var r=this.m6h_1+t*e;n.d3();var s=this.j6f().z6g(this.j6h_1,this.k6h_1,r,this.n6h_1),o=this.j6f().z6g(this.j6h_1,this.k6h_1,r,this.n6h_1+this.o6h_1);if(this.w6h_1?this.j6f().a6f(s,o,this.l6h_1,n):(n.a(s),n.a(o)),n.g()>0){s=n.h(0),o=n.h(1);var u,a=this.j6f().l6d(xo(n),A$()),h=this.n6o(s,o),_=ws(this.i6f_1);ac(),u=Bh().e55(r),_.a(new hc(h,a,"GridElement_LineEasting",u))}}while(i<=9);var l=1;if(l<=9)do{var f=l;l=l+1|0;var c=this.n6h_1+t*f;n.d3();var v=this.j6f().z6g(this.j6h_1,this.k6h_1,this.m6h_1,c),w=this.j6f().z6g(this.j6h_1,this.k6h_1,this.m6h_1+this.o6h_1,c);if(this.w6h_1?this.j6f().a6f(v,w,this.l6h_1,n):(n.a(v),n.a(w)),n.g()>0){v=n.h(0),w=n.h(1);var d,p=this.j6f().l6d(xo(n),A$()),m=this.n6o(v,w),g=ws(this.i6f_1);ac(),d=Bh().e55(c),g.a(new hc(m,p,"GridElement_LineNorthing",d))}}while(l<=9)},Kr(Dc).j6f=function(){var t=Kr(Kf).j6f.call(this);return t instanceof Zf?t:Wr()},Kr(Dc).n6o=function(t,n){var i=t.j4w_1,e=t.k4w_1,r=t.j4w_1,s=t.k4w_1;return n.j4w_1r&&(r=n.j4w_1),n.k4w_1s&&(s=n.k4w_1),new el(i,r,e,s)},Kr(Dc).y6m=function(t){return this.l6h_1.e5m(t)},Kr(Dc).m6o=function(t){var n=this.j6f().z6e(t,this.v6h_1.j4w_1,this.v6h_1.k4w_1),i=t.d53_1.c5j(n);return this.o6h_1/t.b52(i)/t.y52_1},Kr(Rc).k6f=function(t){var n;if(Kr(Dc).k6f.call(this,t)){var i=this.m6o(t);Tc(),n=i>50}else n=!1;return n},Kr(Rc).e6d=function(t){Kr(Dc).e6d.call(this,t);var n=this.m6o(t);Tc();var i=n>Hr(50,2),e=this.j6f().g6d(this.o6h_1),r=ws(this.i6f_1).d();t:for(;r.e();){var s=r.f();if(s.k6f(t)){if(ac(),"GridElement_LineNorth"===s.w6k_1&&Mc(this,t))continue t;if(ac(),"GridElement_LineEast"===s.w6k_1&&Nc(this,t))continue t;i&&this.j6f().y6g(this.j6h_1,this.k6h_1,s,10*this.o6h_1),this.j6f().c6d(s.v6k_1,e)}}var o=this.m6o(t);if(Tc(),o<=Hr(50,2))return rs();var u,a=this.y6i_1;if(null==a){var h=new qc(this.j6f(),this.j6h_1,this.k6h_1,this.l6h_1,this.m6h_1,this.n6h_1,this.o6h_1);this.y6i_1=h,u=h}else u=a;var _=u;_.k6f(t)?_.e6d(t):_.m6f()},Kr(Rc).m6f=function(){Kr(Dc).m6f.call(this);var t=this.y6i_1;null==t||t.m6f(),this.y6i_1=null},Kr(Rc).l6f=function(){Kr(Dc).l6f.call(this);var t=gs();if(this.w6h_1?this.j6f().a6f(this.q6h_1,this.s6h_1,this.l6h_1,t):(t.a(this.q6h_1),t.a(this.s6h_1)),t.g()>0){var n,i=t.h(0),e=t.h(1),r=this.j6f().l6d(xo(t),A$()),s=this.n6o(i,e),o=ws(this.i6f_1);ac();var u=Bh(),a=this.m6h_1;n=u.e55(a),o.a(new hc(s,r,"GridElement_LineWest",n))}if(t.d3(),this.w6h_1?this.j6f().a6f(this.r6h_1,this.t6h_1,this.l6h_1,t):(t.a(this.r6h_1),t.a(this.t6h_1)),t.g()>0){var h,_=t.h(0),l=t.h(1),f=this.j6f().l6d(xo(t),A$()),c=this.n6o(_,l),v=ws(this.i6f_1);ac();var w=Bh(),d=this.m6h_1+this.o6h_1;h=w.e55(d),v.a(new hc(c,f,"GridElement_LineEast",h))}if(t.d3(),this.w6h_1?this.j6f().a6f(this.q6h_1,this.r6h_1,this.l6h_1,t):(t.a(this.q6h_1),t.a(this.r6h_1)),t.g()>0){var p,m=t.h(0),g=t.h(1),$=this.j6f().l6d(xo(t),A$()),y=this.n6o(m,g),b=ws(this.i6f_1);ac();var k=Bh(),j=this.n6h_1;p=k.e55(j),b.a(new hc(y,$,"GridElement_LineSouth",p))}if(t.d3(),this.w6h_1?this.j6f().a6f(this.s6h_1,this.t6h_1,this.l6h_1,t):(t.a(this.s6h_1),t.a(this.t6h_1)),t.g()>0){var x,z=t.h(0),E=t.h(1),C=this.j6f().l6d(xo(t),A$()),S=this.n6o(z,E),q=ws(this.i6f_1);ac();var O=Bh(),I=this.n6h_1+this.o6h_1;x=O.e55(I),q.a(new hc(S,C,"GridElement_LineNorth",x))}if(null!=this.v6i_1){var A=this.u6h_1.v5e(),T=Hh(this.v6h_1.j4w_1);if(A*Math.cos(T)>.2&&this.u6h_1.w5e()>.2){var D=0!==this.j6h_1?this.v6h_1:this.y6m(new J_(this.p6h_1.j4w_1,this.p6h_1.k4w_1,0))?this.p6h_1:this.p6h_1.j4w_1<=this.l6h_1.s5e_1&&this.p6h_1.j4w_1>=this.l6h_1.r5e_1?this.v6h_1:null;if(null!=D){var M=this.j6f().i6e(new J_(D.j4w_1,D.k4w_1,0),ws(this.v6i_1),10*this.o6h_1),N=ws(this.i6f_1),R=this.u6h_1;ac(),N.a(oc(R,M,"GridElement_GridZoneLabel"))}}}},Kr(Pc).p6o=function(t,n,i){var e=Hc().q6o(t.c61_1.p62_1),r=t.c61_1.q62_1,s=t.e61_1.j4w_1,o=t.e61_1.k4w_1,u=Ey().r6o(s,e.r5e_1,r.j4w_1),a=Ey().s6o(s,e.s5e_1,r.j4w_1),h=Ey().t6o(o,e.t5e_1,r.k4w_1),_=Ey().u6o(o,e.u5e_1,r.k4w_1),l=s/e.w5e()*(e.a6p_1-e.z6o_1),f=Hc().b6p(r.j4w_1)+u*l,c=Wh(r.k4w_1,h*o),v=f,w=u;if(w<=a)do{var d=w;w=w+1|0;var p=v+l,m=c,g=h;if(g<=_)do{var $=g;g=g+1|0;var y=Yh(m,o);i.a(n.l62(new Vc(v,p,m,y),t,d,$)),m=y}while($!==_);v=p}while(d!==a)},Kr(Fc).o63=function(t){var n=this.p61_1.q6p();if(null==n)return[];var i=n,e=this.s60_1,r=e instanceof Vc?e:Wr(),s=r.z6o_1,o=r.a6p_1,u=s+(o-s)/2,a=r.t5e_1,h=r.u5e_1,_=Bh().x5h(a,h),l=Hr(2,this.q61_1),f=l+1|0,c=Hr(2,this.r61_1),v=c+1|0;return[t.l62(new Vc(s,u,a,_),i,l,c),t.l62(new Vc(s,u,_,h),i,l,v),t.l62(new Vc(u,o,a,_),i,f,c),t.l62(new Vc(u,o,_,h),i,f,v)]},Kr(Uc).q6o=function(t){return new Vc(this.b6p(t.r5e_1),this.b6p(t.s5e_1),t.t5e_1,t.u5e_1)},Kr(Uc).b6p=function(t){var n=ps()/4+Hh(t)/2,i=Math.tan(n);return Math.log(i)/ps()},Kr(Uc).g6q=function(t){var n,i=Bh(),e=t*ps(),r=Yr(e);return n=Math.atan(r),i.r51(n)},Kr(Bc).l62=function(t,n,i,e){var r,s=new Kj(t instanceof Vc?t:Wr(),n,i,e),o=s,u=this.h6q_1.t6q(e,((1<this.d6v_1&&wx().j5y(wx().r4w_1,"StarFieldLayer - sunSize is to big, max size allowed is: "+this.d6v_1),i.a56(t),t.t4x_1.b56(0,4,xk(),!1,0,0),n.b6w(!0),e.l5c(t),t.t4x_1.j5b(zk(),0,1)},Kr(ov).u6v=function(t,n){var i,e,r,s=this.d6w(t.d6u_1);if(-1===s[0])throw i=wx().v4w(wx().q4w_1,"StarFieldLayer","createStarsGeometry","Missing ra field in star data."),cs(ss(i));if(-1===s[1])throw e=wx().v4w(wx().q4w_1,"StarFieldLayer","createStarsGeometry","Missing dec field in star data."),cs(ss(e));if(-1===s[2])throw r=wx().v4w(wx().q4w_1,"StarFieldLayer","createStarsGeometry","Missing vmag field in star data."),cs(ss(r));this.u6u_1=t.e6u_1.g();Yo(),this.w6u_1=34028235e31;Yo(),this.x6u_1=14e-46;var o=new Float32Array(Hr(this.u6u_1,4)),u=0,a=0,h=t.e6u_1.g()-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=t.e6u_1.h(_),f=l.h(s[0]),c=l.h(s[1]),v=l.h(s[2]),w=v<2?2:1,d=u;u=d+1|0,o[d]=c;var p=u;u=p+1|0,o[p]=f;var m=u;u=m+1|0,o[m]=w*n.y52_1;var g=u;u=g+1|0,o[g]=v,this.w6u_1=Wo(this.w6u_1,v),this.x6u_1=Ko(this.x6u_1,v)}while(a<=h);return o},Kr(ov).d6w=function(t){var n=-1,i=-1,e=-1,r=0,s=t.g()-1|0;if(r<=s)do{var o=r;r=r+1|0;var u=t.h(o);"ra"===u.v6t_1&&(n=o),"dec"===u.v6t_1&&(i=o),"vmag"===u.v6t_1&&(e=o)}while(r<=s);return[n,i,e]},Kr(uv).v67=function(t){this.h6v_1=t},Kr(uv).w67=function(){return this.h6v_1},Kr(uv).x67=function(){return this.i6v_1},Kr(uv).g67=function(t){Kr(u$).g67.call(this,t),this.j6v_1=this.h67().i67(this.j5a_1,"mvpMatrix"),this.k6v_1=this.h67().i67(this.j5a_1,"numDays"),this.l6v_1=this.h67().i67(this.j5a_1,"magnitudeRange"),this.m6v_1=this.h67().i67(this.j5a_1,"textureSampler"),this.n6v_1=this.h67().i67(this.j5a_1,"textureEnabled")},Kr(uv).h5b=function(t){t.s5k(this.o6v_1,0),this.h67().k67(this.j6v_1,1,!1,this.o6v_1,0)},Kr(uv).p6v=function(t){return this.h67().n67(this.k6v_1,t)},Kr(uv).a6w=function(t,n){return this.h67().e6w(this.l6v_1,t,n)},Kr(uv).b6w=function(t){return this.h67().j67(this.n6v_1,t?1:0)},Kr(av).o6w=function(t,n,i){var e=t.q5m(n,i),r=this.n6w_1.x6w(e,t.m5m_1,t.n5m_1);return Fj().t6t(r)},Kr(pv).d70=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(pv).ck=function(t,n){return this.d70(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(pv).qj=function(){for(this.jj_1;;)try{var t=this.hj_1;if(0===t){this.ij_1=1;var n=kv().q6z_1,i=n.y35(),e=Vo(i,Ho(Is(nw),Uo([]),!1));return n.s3j(bs(e,Bo)?e:Wr(),this.b70_1)}if(1===t)throw this.kj_1}catch(t){throw t}},Kr(pv).o1f=function(t,n){var i=new pv(this.b70_1,n);return i.c70_1=t,i},Kr($v).qj=function(){var t,n,i,e=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,!(Zo(this.n70_1)>0)){var r=wx().v4w(wx().q4w_1,"WmsLayerFactory","createLayer","missingServiceAddress");throw cs(ss(r))}if(this.o70_1.m()){var s=wx().v4w(wx().q4w_1,"WmsLayerFactory","createLayer","missingLayerNames");throw cs(ss(s))}if(this.hj_1=1,t=this.m70_1,n=this.n70_1,i=void 0,(i=new yv(t,n,this)).jj_1=rs(),i.kj_1=null,(e=i.qj())===Qo())return e;continue t;case 1:for(var o=e,u=gs(),a=this.o70_1.d();a.e();){var h=a.f(),_=o.p70(h);null==_||u.a(_)}var l=u;if(l.m()){var f=wx().s5m("WmsLayerFactory","createLayer","Provided layers did not match available layers");throw cs(ss(f))}return new dv(l);case 2:throw this.kj_1}}catch(t){var c=t;if(2===this.ij_1)throw c;this.hj_1=this.ij_1,this.kj_1=c}},Kr(yv).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=8,this.i6y_1=pk(),this.j6y_1=!1,this.hj_1=1;continue t;case 1:this.ij_1=5,this.ij_1=4,this.l6y_1=tu().q1s(this.h6y_1).q4o().s4n("VERSION","1.3.0").s4n("SERVICE","WMS").s4n("REQUEST","GetCapabilities").f1c(),this.m6y_1=ss(this.l6y_1);var n=new nu;if(iu(n,this.m6y_1),eu(n,!0),this.n6y_1=n,this.n6y_1.d27_1=ru().l1y_1,this.hj_1=2,(t=new su(this.n6y_1,this.i6y_1).c2x(this))===Qo())return t;continue t;case 2:if(this.o6y_1=t,this.hj_1=3,(t=ou(this.o6y_1,Xr,this))===Qo())return t;continue t;case 3:this.k6y_1=t,this.ij_1=8,this.hj_1=6;continue t;case 4:if(this.ij_1=5,this.kj_1 instanceof Error){this.p6y_1=this.kj_1;try{this.j6y_1=!0,this.i6y_1.a14()}catch(t){if(!(t instanceof Error))throw t;var i=t;uu(this.p6y_1,i)}throw this.p6y_1}throw this.kj_1;case 5:throw this.ij_1=8,this.q6y_1=this.kj_1,this.j6y_1||this.i6y_1.a14(),this.q6y_1;case 6:this.r6y_1=this.k6y_1,this.j6y_1||this.i6y_1.a14(),this.s6y_1=this.r6y_1,this.hj_1=7;var e=au().zq_1;if((t=hu(e,mv(this.s6y_1,null),this))===Qo())return t;continue t;case 7:return t;case 8:throw this.kj_1}}catch(t){var r=t;if(8===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},Kr(bv).q70=function(t,n,i){var e=new $v(this,t,n,i);return e.jj_1=rs(),e.kj_1=null,e.qj()},Kr(bv).r6z=function(t){var n=t.h(0).t6y(),i=null==n?null:n.y6y(),e=null==i?null:i.c6z_1,r=null==e?null:e.u6y_1,s=null==r?null:r.s70_1,o=null==s?null:s.w70();if(null==o){var u=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Unable to resolve GetMap URL");throw ks(ss(u))}for(var a=o,h=null,_=t.d();_.e();){var l=_.f().x70();null==h?h=fu(l):h.bc(lu(l))}var f=new fv(a,as(t,",",Xr,Xr,Xr,Xr,gv)),c=i.z6y_1;if("1.3.0"!==c){var v=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Version not compatible");throw ks(ss(v))}if(f.h6w_1=c,!0===(null==h?null:h.n("EPSG:4326")))f.j6w_1="EPSG:4326";else{if(!0!==(null==h?null:h.n("CRS:84"))){var w=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Coordinate systems not compatible");throw ks(ss(w))}f.j6w_1="CRS:84"}var d,p=i.c6z_1.u6y_1.s70_1.u70_1,m=f;t:{for(var g=this.p6z_1.d();g.e();){var $=g.f();if(p.n($)){d=$;break t}}d=null}var y,b=d;if(null==b){var k=wx().s5m("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Image Formats Not Compatible");throw ks(ss(k))}y=b,m.k6w_1=y;var j,x=f;t:if(bs(t,cu)&&t.m())j=!1;else{for(var z=t.d();z.e();)if(z.f().s6x_1){j=!0;break t}j=!1}return x.l6w_1=!j,f},Kr(bv).s6z=function(t){var n=new wy;As();for(var i=17976931348623157e292,e=Q_(),r=t.d();r.e();){var s=r.f(),o=s.y70();null==o||(i=bo(i,o),rs());var u=s.z70();null==u||e.g5m(u)}if(e.sr()){var a=wx().s5m("WmsLayerFactory","getLevelSetConfigFromWmsCapabilities","Geographic Bounding Box Not Defined");throw ks(ss(a))}n.a71_1.i5f(e);var h,_=n,l=i;if(As(),17976931348623157e292!==l){var f=28e-5*i/d_().d4v_1.m5j_1;h=n.g71(f)}else h=20;return _.d71_1=h,n},Kr(xv).l62=function(t,n,i,e){var r,s=new cx(t,n,i,e),o=this.x6w(t,n.h61_1,n.i61_1),u=s,a=hx().t6t(o);return a.v6q_1=bs(s,by)?s:Wr(),r=a,u.d6q_1=r,rs(),s},Kr(xv).x6w=function(t,n,i){var e,r=tu().q1s(this.p6w_1).q4o();if(!(n>=1&&i>=1))throw e=wx().v4w(wx().q4w_1,"WmsTileFactory","urlForTile","invalidWidthOrHeight"),cs(ss(e));r.s4n("VERSION",this.q6w_1),r.s4n("SERVICE","WMS"),r.s4n("REQUEST","GetMap"),r.s4n("LAYERS",this.r6w_1);var s=this.s6w_1;r.s4n("STYLES",null==s?"":s),r.s4n("WIDTH",n.toString()),r.s4n("HEIGHT",i.toString());var o,u,a=this.u6w_1;r.s4n("FORMAT",null==a?"image/png":a),r.s4n("TRANSPARENT",this.v6w_1?"TRUE":"FALSE"),"1.3.0"===this.q6w_1?(r.s4n("CRS",this.t6w_1),o="CRS:84"===this.t6w_1?t.t5e_1+","+t.r5e_1+","+t.u5e_1+","+t.s5e_1:t.r5e_1+","+t.t5e_1+","+t.s5e_1+","+t.u5e_1,r.s4n("BBOX",o)):(r.s4n("SRS",this.t6w_1),u=t.t5e_1+","+t.r5e_1+","+t.u5e_1+","+t.s5e_1,r.s4n("BBOX",u));var h=this.w6w_1;return null==h||(r.s4n("TIME",h),rs()),ss(r.f1c())},Kr(Ev).b73=function(){var t=this.z72_1;if(null!=t)return t;no("tileMatrixSetId")},Kr(qv).e75=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(qv).ck=function(t,n){return this.e75(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(qv).qj=function(){for(this.jj_1;;)try{var t=this.hj_1;if(0===t){this.ij_1=1;var n=Dv().e73_1,i=n.y35(),e=Vo(i,Ho(Is(dm),Uo([]),!1));return n.s3j(bs(e,Bo)?e:Wr(),this.c75_1)}if(1===t)throw this.kj_1}catch(t){throw t}},Kr(qv).o1f=function(t,n){var i=new qv(this.c75_1,n);return i.d75_1=t,i},Kr(Iv).qj=function(){var t,n,i,e=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,!(Zo(this.o75_1)>0)){var r=wx().v4w(wx().q4w_1,"WmtsLayerFactory","createLayer","missingServiceAddress");throw cs(ss(r))}if(!(Zo(this.p75_1)>0)){var s=wx().v4w(wx().q4w_1,"WmtsLayerFactory","createLayer","missingLayerNames");throw cs(ss(s))}if(this.hj_1=1,t=this.n75_1,n=this.o75_1,i=void 0,(i=new Av(t,n,this)).jj_1=rs(),i.kj_1=null,(e=i.qj())===Qo())return e;continue t;case 1:var o=e.q75(this.p75_1);n:do{if(null==o){var u=wx().s5m("WmtsLayerFactory","createLayer","The layer identifier specified was not found");throw cs(ss(u))}break n}while(0);return new Sv(o,this.p75_1);case 2:throw this.kj_1}}catch(t){var a=t;if(2===this.ij_1)throw a;this.hj_1=this.ij_1,this.kj_1=a}},Kr(Av).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=8,this.r71_1=pk(),this.s71_1=!1,this.hj_1=1;continue t;case 1:this.ij_1=5,this.ij_1=4,this.u71_1=tu().q1s(this.q71_1).q4o().s4n("VERSION","1.0.0").s4n("SERVICE","WMTS").s4n("REQUEST","GetCapabilities").f1c(),this.v71_1=ss(this.u71_1);var n=new nu;if(iu(n,this.v71_1),eu(n,!0),this.w71_1=n,this.w71_1.d27_1=ru().l1y_1,this.hj_1=2,(t=new su(this.w71_1,this.r71_1).c2x(this))===Qo())return t;continue t;case 2:if(this.x71_1=t,this.hj_1=3,(t=ou(this.x71_1,Xr,this))===Qo())return t;continue t;case 3:this.t71_1=t,this.ij_1=8,this.hj_1=6;continue t;case 4:if(this.ij_1=5,this.kj_1 instanceof Error){this.y71_1=this.kj_1;try{this.s71_1=!0,this.r71_1.a14()}catch(t){if(!(t instanceof Error))throw t;var i=t;uu(this.y71_1,i)}throw this.y71_1}throw this.kj_1;case 5:throw this.ij_1=8,this.z71_1=this.kj_1,this.s71_1||this.r71_1.a14(),this.z71_1;case 6:this.a72_1=this.t71_1,this.s71_1||this.r71_1.a14(),this.b72_1=this.a72_1,this.hj_1=7;var e=au().zq_1;if((t=hu(e,Ov(this.b72_1,null),this))===Qo())return t;continue t;case 7:return t;case 8:throw this.kj_1}}catch(t){var r=t;if(8===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},Kr(Tv).r75=function(t,n,i){var e=new Iv(this,t,n,i);return e.jj_1=rs(),e.kj_1=null,e.qj()},Kr(Rv).l62=function(t,n,i,e){var r=new cx(t,n,i,e),s=this.x75(n.d61_1,i,e);if(null==s);else{var o,u=r,a=hx().t6t(s);a.v6q_1=bs(r,by)?r:Wr(),o=a,u.d6q_1=o,rs()}return r},Kr(Rv).x75=function(t,n,i){if(t>=this.w75_1.g())return wx().v4w(wx().r4w_1,"WmtsTileFactory","urlForTile","invalid level for tileMatrixIdentifiers: "+t),null;var e=((2<i[1]&&Ls(i,0));var s=t.z52_1;if(s!==this.x7d_1||!r.equals(this.w7d_1)){var o=i[0]*s,u=i[1]*s;e.x5i(this.t7d_1,n,o,u)}return this.w7d_1=r,this.x7d_1=s,e},Kr(Og).p59=function(t,n,i,e){return this.e4u_1=t,this.f4u_1=n,this.g4u_1=i,this.h4u_1=e,this},Kr(Og).s59=function(t){return this.p59(t.e4u_1,t.f4u_1,t.g4u_1,t.h4u_1)},Kr(Og).m6j=function(t){var n,i,e=Ko(Ko(this.e4u_1,this.f4u_1),this.g4u_1),r=e-Wo(Wo(this.e4u_1,this.f4u_1),this.g4u_1);if(0===r)n=0,i=0;else{i=r/e;var s=(e-this.e4u_1)/6/r+.5,o=(e-this.f4u_1)/6/r+.5,u=(e-this.g4u_1)/6/r+.5;(n=this.e4u_1===e?u-o:this.f4u_1===e?1/3+s-u:this.g4u_1===e?2/3+o-s:0)<0?n+=1:n>1&&(n-=1)}t[0]=360*n,t[1]=i,t[2]=e},Kr(Og).y7d=function(t,n){var i,e=n;if(!((t.length-e|0)>=4))throw i=wx().v4w(wx().q4w_1,"Color","premultiplyToArray","missingArray"),cs(ss(i));var r=e;e=r+1|0,t[r]=this.e4u_1*this.h4u_1;var s=e;e=s+1|0,t[s]=this.f4u_1*this.h4u_1;var o=e;return e=o+1|0,t[o]=this.g4u_1*this.h4u_1,t[e]=this.h4u_1,t},Kr(Og).equals=function(t){return this===t||t instanceof Og&&this.e4u_1===t.e4u_1&&this.f4u_1===t.f4u_1&&this.g4u_1===t.g4u_1&&this.h4u_1===t.h4u_1},Kr(Og).hashCode=function(){var t=Ns(this.e4u_1);return t=Hr(31,t)+Ns(this.f4u_1)|0,t=Hr(31,t)+Ns(this.g4u_1)|0,Hr(31,t)+Ns(this.h4u_1)|0},Kr(Og).toString=function(){return"Color(red="+this.e4u_1+", green="+this.f4u_1+", blue="+this.g4u_1+", alpha="+this.h4u_1+")"},Kr(Og).z7d=function(){var t=255*this.e4u_1,n=es(t),i=255*this.f4u_1,e=es(i),r=255*this.g4u_1;return"rgba("+n+", "+e+", "+es(r)+", "+this.h4u_1+")"},Kr(Dg).w5d=function(t){return this.n57_1.c7e()||this.a7e(t),this.n57_1.c7e()&&t.y57(this.n57_1),this.n57_1.c7e()},Kr(Dg).p57=function(t,n,i){return this.n57_1.c7e()||this.a7e(t),this.n57_1.c7e()&&(this.d7e(t,n,i),this.o57_1.f4(i,n)),this.n57_1.c7e()},Kr(Dg).x5d=function(t){var n=this.o57_1.g2(t);if(null==n)throw ks("Invalid attachment type");return n},Kr(Dg).a7e=function(t){var n=t.x56();try{this.n57_1=t.t4x_1.e7e(),t.t4x_1.z57(Wk(),this.n57_1)}finally{t.t4x_1.z57(Wk(),n)}},Kr(Dg).d7e=function(t,n,i){var e=t.x56();try{t.y57(this.n57_1);var r=null==n?null:n.f7e(t),s=null==r?qx().q56_1:r;t.t4x_1.g7e(Wk(),i,Gk(),s,0)}finally{t.y57(e)}},Kr(Rg).toString=function(){return"TextCacheKey(text="+this.i7e_1+", attributes="+this.j7e_1+")"},Kr(Rg).hashCode=function(){var t=null==this.i7e_1?0:Po(this.i7e_1);return Hr(t,31)+(null==this.j7e_1?0:this.j7e_1.hashCode())|0},Kr(Rg).equals=function(t){if(this===t)return!0;if(!(t instanceof Rg))return!1;var n=t instanceof Rg?t:Wr();return this.i7e_1==n.i7e_1&&!!Rs(this.j7e_1,n.j7e_1)},Kr(Lg).j5h=function(){var t=this.r52_1;if(null!=t)return t;no("globe")},Kr(Lg).r5g=function(){var t=this.s52_1;if(null!=t)return t;no("terrainTessellator")},Kr(Lg).x5g=function(){var t=this.t52_1;if(null!=t)return t;no("terrain")},Kr(Lg).u5g=function(){var t=this.u52_1;if(null!=t)return t;no("layers")},Kr(Lg).j7g=function(){var t=this.v52_1;if(null!=t)return t;no("currentLayer")},Kr(Lg).h64=function(){var t=this.w52_1;if(null!=t)return t;no("camera")},Kr(Lg).z5g=function(){var t=this.x52_1;if(null!=t)return t;no("renderResourceCache")},Kr(Lg).k7g=function(){return vo("tessellator",1,co,(function(t){return t.k7g()}),null),this.z53_1.s()},Kr(Lg).x1g=function(){this.y52_1=1,this.z52_1=1,this.a53_1=0,this.b53_1=0,this.c53_1=new ts(0,0),this.d53_1.r57(0,0,0),this.e53_1.r4x(),this.f53_1.s57(),this.g53_1.s57(),this.h53_1.s57(),this.i53_1.q5j(),this.j53_1=null,this.k53_1=null,this.l53_1=null,this.m53_1=null,this.n53_1=null,this.o53_1=null,this.p53_1=null,this.q53_1=!1,this.s53_1=0,this.r53_1=!1,this.t53_1=0,this.u53_1.d3()},Kr(Lg).b52=function(t){if(0===this.t53_1){var n=.5*Hh(this.h64().i4w_1),i=Math.tan(n);this.t53_1=2*i/this.e53_1.q4x_1}return t*this.t53_1},Kr(Lg).l7g=function(t,n,i){var e=t.m4z_1,r=t.n4z_1,s=t.q4z_1,o=this.g53_1.g4z_1,u=o[0]*e+o[1]*r+o[2]*s+o[3],a=o[4]*e+o[5]*r+o[6]*s+o[7],h=o[8]*e+o[9]*r+o[10]*s+o[11],_=o[12]*e+o[13]*r+o[14]*s+o[15],l=this.f53_1.g4z_1,f=l[0]*u+l[1]*a+l[2]*h+l[3]*_,c=l[4]*u+l[5]*a+l[6]*h+l[7]*_,v=l[8]*u+l[9]*a+l[10]*h+l[11]*_,w=l[12]*u+l[13]*a+l[14]*h+l[15]*_;return 0!==w&&(f/=w,c/=w,!((v/=w)<-1||v>1||(v=l[8]*u+l[9]*a+l[10]*h*(1+n)+l[11]*_,c=.5*c+.5,v=.5*(v=ds(v/=w,-1,1))+.5,f=(f=.5*f+.5)*this.e53_1.p4x_1+this.e53_1.n4x_1,c=c*this.e53_1.q4x_1+this.e53_1.o4x_1,i.m4z_1=f,i.n4z_1=c,i.q4z_1=v,0)))},Kr(Lg).m7g=function(t,n,i){return this.n7g(t.j4w_1,t.k4w_1,t.n4w_1,n,i)},Kr(Lg).n7g=function(t,n,i,e,r){switch(e.l6_1){case 0:this.j5h().z4z(t,n,i*this.z52_1,r);break;case 1:if(!this.x5g().b61(t,n,r)){var s=this.j5h(),o=s.n50(t,n);s.z4z(t,n,o*this.z52_1,r)}break;case 2:if(this.x5g().b61(t,n,r))0!==i&&(this.j5h().o50(t,n,this.y53_1),r.d5n(this.y53_1.w5i(i)));else{var u=this.j5h(),a=i+u.n50(t,n);u.z4z(t,n,a*this.z52_1,r)}}return r},Kr(Lg).o7g=function(t,n,i){var e,r=this.z5g(),s=r.g2(t);return null==(e=null==s?i?r.p7g(t,n):null:s)||e instanceof Vg?e:Wr()},Kr(Lg).m69=function(t,n,i,e){return i=i===Xr||i,e===Xr?this.o7g(t,n,i):e.o7g.call(this,t,n,i)},Kr(Lg).q7g=function(t,n,i){var e=this.z5g();this.x53_1.i7e_1=t,this.x53_1.j7e_1=n;var r,s=e.g2(this.x53_1),o=null==s||s instanceof Vg?s:Wr();if(null==o){var u;if(i){var a,h=this.w53_1.t7g(t,n);null==h?a=null:(e.h5h(new Rg(t,X$(n)),h,h.u7g()),a=h),u=a}else u=null;r=u}else r=o;return r},Kr(Lg).s5b=function(t,n,i){var e=this.j53_1;null==e||e.s5b(t,n,i)},Kr(Lg).i5h=function(t,n){var i=this.j53_1;null==i||i.s5b(t,nh(),n)},Kr(Lg).v7g=function(t,n){var i=this.j53_1;null==i||i.s5b(t,(Za(),b),-n)},Kr(Lg).f63=function(t,n){var i=this.k53_1;null==i||i.s5b(t,nh(),n)},Kr(Lg).t5b=function(){var t=this.j53_1;null==t||t.t5b();var n=this.k53_1;null==n||n.t5b()},Kr(Lg).w7g=function(){var t=this.j53_1,n=null==t?null:t.s4u();return null==n?0:n},Kr(Lg).v4u=function(t){var n=this.l53_1;null==n||n.v4u(t)},Kr(Lg).y5g=function(){var t=this;t.s53_1=t.s53_1+1|0;var n=t.s53_1;return Ng(),n>16777215&&(this.s53_1=1),this.s53_1},Kr(Lg).w6c=function(t){return this.u53_1.g2(t)},Kr(Lg).z6c=function(t,n){return this.u53_1.f4(t,n)},Kr(Lg).y6c=function(t){return this.u53_1.wc(t)},Kr(Lg).x6c=function(t){return this.u53_1.a2(t)},Kr(Ug).x7g=function(t,n,i,e,r){var s;if(!(t>=0&&n>=0))throw s=wx().v4w(wx().q4w_1,"Texture","estimateByteCount","invalidWidthOrHeight"),cs(ss(s));var o,u=ej(t),a=e;if(a===Vk()){var h=i;o=h===tr||h===nr?u:h===ir?Hr(u,2):h===er?Hr(u,3):(Hk(),Hr(u,4))}else o=a===Sk()||a===rr||a===sr||a===or?Hr(u,2):(Ik(),Hr(u,4));var _=o,l=ej(n),f=Hr(_,l);return r&&(f=f+(f/3|0)|0),f},Kr(Vg).u7g=function(){return Hg().x7g(this.c57_1,this.d57_1,this.e57_1,this.f57_1,this.y7g())},Kr(Vg).y7g=function(){return this.k57_1},Kr(Vg).z7g=function(t){var n=this.j57_1,i=null==n?null:n.g2(t);return null==i?0:i},Kr(Vg).m57=function(t,n){var i,e=this.j57_1;if(null==e){var r=os();this.j57_1=r,i=r}else i=e;i.f4(t,n)},Kr(Vg).f7e=function(t){return this.i57_1.c7e()||this.a7h(t),this.i57_1},Kr(Vg).l5c=function(t){return this.i57_1.c7e()||this.a7h(t),this.i57_1.c7e()&&t.d58(this.i57_1),this.i57_1.c7e()&&this.l57_1!==t.f4y_1&&(this.c7h(t),this.l57_1=t.f4y_1),this.i57_1.c7e()},Kr(Vg).a7h=function(t){var n=t.z56();try{this.i57_1=t.t4x_1.d7h(),t.t4x_1.e58(Gk(),this.i57_1),this.e7h(t),this.c7h(t)}finally{t.t4x_1.e58(Gk(),n)}},Kr(Vg).e7h=function(t){this.g57_1&t.t4x_1.g7h()&&t.t4x_1.f7h(Gk(),0,this.e57_1,1,1,0,this.e57_1,this.f57_1,null),t.t4x_1.f7h(Gk(),0,this.e57_1,this.c57_1,this.d57_1,0,this.e57_1,this.f57_1,null)},Kr(Vg).c7h=function(t){var n;if(t.f4y_1)t.t4x_1.h7h(Gk(),Tk(),Dk());else{var i=this.z7g(Tk());n=i,0!==i?t.t4x_1.h7h(Gk(),Tk(),n):t.t4x_1.h7h(Gk(),Tk(),this.y7g()?ur:Kk())}if(t.f4y_1)t.t4x_1.h7h(Gk(),Mk(),Dk());else{var e=this.z7g(Mk());n=e,0!==e?t.t4x_1.h7h(Gk(),Mk(),n):t.t4x_1.h7h(Gk(),Mk(),Kk())}var r=this.z7g(Nk());n=r,0!==r?t.t4x_1.h7h(Gk(),Nk(),n):t.t4x_1.h7h(Gk(),Nk(),Jk());var s=this.z7g(Pk());n=s,0!==s?t.t4x_1.h7h(Gk(),Pk(),n):t.t4x_1.h7h(Gk(),Pk(),Jk())},Kr(Bg).a56=function(t){return this.t5c_1.c7e()&&t.g58(this.q5c_1,this.t5c_1),this.t5c_1.c7e()},Kr(Bg).j7h=function(t){var n=t.f58(this.q5c_1);try{this.t5c_1.c7e()||this.k7h(t),t.g58(this.q5c_1,this.t5c_1),this.l7h(t)}catch(n){if(!(n instanceof Ts))throw n;var i=n;this.m7h(t),wx().n5h(wx().q4w_1,"BufferObject","loadBuffer","Exception attempting to load buffer data",i)}finally{t.g58(this.q5c_1,n)}},Kr(Bg).k7h=function(t){this.t5c_1=t.t4x_1.n7h()},Kr(Bg).m7h=function(t){this.t5c_1.c7e()&&(t.t4x_1.o7h(this.t5c_1),this.t5c_1=Ex().r56_1)},Kr(Yg).a56=function(t){return null==this.z55_1||(this.j7h(t),rs(),rs()),this.z55_1=null,Kr(Bg).a56.call(this,t)},Kr(Yg).l7h=function(t){var n=this.z55_1;null==n||(t.t4x_1.p7h(this.q5c_1,this.r5c_1,n,Xk()),rs())},Kr(Wg).a56=function(t){return null==this.u7h_1||(this.j7h(t),rs(),rs()),this.u7h_1=null,Kr(Bg).a56.call(this,t)},Kr(Wg).l7h=function(t){var n=this.u7h_1;null==n||(t.t4x_1.v7h(this.q5c_1,this.r5c_1,n,Xk()),rs())},Kr(Gg).a56=function(t){return null==this.i56_1||(this.j7h(t),rs(),rs()),this.i56_1=null,Kr(Bg).a56.call(this,t)},Kr(Gg).l7h=function(t){var n=this.i56_1;null==n||(t.t4x_1.w7h(this.q5c_1,this.r5c_1,n,Xk()),rs())},Kr(u$).h67=function(){var t=this.i5a_1;if(null!=t)return t;no("gl")},Kr(u$).g5h=function(){for(var t=0,n=this.w67(),i=0,e=n.length;i0&&_<=l||f<0&&l<=_)do{var c=_;_=_+f|0;var v=n[c]-s,w=n[c+1|0]-o,d=n[c+2|0]-u,p=v*v+w*w+d*d;a>p&&(a=p)}while(c!==l);var m=a;return Math.sqrt(m)},Kr(c$).e7j=function(t,n,i){var e=i.s57();return e.p5k(1/(t.c57_1*n),1/(t.d57_1*n)),e.r5k(t.h57_1),e},Kr(v$).p7j=function(t){var n=gs(),i=lo(t),e=this.q7j(t);n.a(0),n.a(1);var r=2;if(r(t/2|0))i=Tu(i-1),n.a(i);else{var o=i;i=Tu(o+1),n.a(o)}s===(t/2|0)&&n.a(lo(s)),n.a(lo(s))}while(rthis.n7k_1,a=u?90:0,h=2*ps()/this.r7k_1,_=t.j5h().c52(),l=t.j5h().i5w(),f=Math.max(_,l);u?(s=this.m7k_1/f,o=this.n7k_1/f):(s=this.n7k_1/f,o=this.m7k_1/f);var c=w$().q7j(this.r7k_1);w$();var v=Hr(c,6),w=0,d=new Float64Array(n),p=0,m=this.r7k_1;if(p0&&g<(this.r7k_1/2|0)){var q=w;w=q+1|0,d[q]=b}}while(p=this.q7k_1)return n;var i=t.m7g(this.l7k_1,this.s6d_1,w$().o7j_1),e=this.m7k_1,r=this.n7k_1,s=Math.max(e,r),o=i.c5j(t.d53_1)-s;if(o<=0)return this.q7k_1;var u,a=t.b52(o),h=this.m7l()/a/this.p7k_1/n,_=Math.log(h)/Math.log(2);u=Math.ceil(_);var l=Mu(Ms(u),0);return ko(n<<=l,this.q7k_1)},Kr(d$).j7l=function(t){return 0==(t%2|0)?t:t-1|0},Kr(d$).m7l=function(){var t=this.m7k_1,n=this.n7k_1,i=(3*t+n)*(t+3*n);return ps()*(3*(t+n)-Math.sqrt(i))},Kr(d$).x1g=function(){this.s7k_1=new Float32Array(0)},Kr(y$).e6n=function(t){this.q6e_1.a50(t)},Kr(y$).h6e=function(t){this.r6e_1=t},Kr(y$).x7l=function(){return this.r6e_1},Kr(y$).x7i=function(t){this.u6e_1=t},Kr(y$).y7i=function(){return this.u6e_1},Kr(y$).z7i=function(){var t=this.w6e_1;if(null!=t)return t;no("activeAttributes")},Kr(y$).y7l=function(){return this.q6e_1},Kr(y$).z7l=function(t,n){this.e6n(n)},Kr(y$).f64=function(t){var n=this.o6e_1;if(!1!==(null==n?null:0===Zo(n)))return rs();t.m7g(this.q6e_1,this.x7l(),g$().o7l_1.p7l_1),g$().o7l_1.w7l_1=this.x6e_1?0:t.d53_1.c5j(g$().o7l_1.p7l_1);var i=0;if(g$().o7l_1.w7l_10)}else n=!1;return n},Kr(N$).j7q=function(t){return!(!this.z7i().x7o_1||!this.t7p_1&&t.q53_1||this.x7l().equals(Fh()))},Kr(P$).o7q=function(t){var n=R$();return n.t7o_1=t,n},Kr(P$).p7q=function(t){var n=R$();return n.t7o_1=t,n.x7o_1=!0,n},Kr(F$).d7p=function(t){this.z7o_1.s59(t)},Kr(F$).q7q=function(t){this.a7p_1.o5l(t)},Kr(F$).equals=function(t){return this===t||t instanceof F$&&!!Rs(this.t7o_1,t.t7o_1)&&!!this.z7o_1.equals(t.z7o_1)&&!!this.a7p_1.equals(t.a7p_1)&&this.u7o_1===t.u7o_1&&this.v7o_1===t.v7o_1&&this.w7o_1===t.w7o_1&&this.x7o_1===t.x7o_1&&this.y7o_1===t.y7o_1&&!!this.b7p_1.equals(t.b7p_1)&&!!this.c7p_1.equals(t.c7p_1)},Kr(F$).hashCode=function(){var t=this.t7o_1,n=null==t?null:t.hashCode(),i=null==n?0:n;return i=Hr(31,i)+this.z7o_1.hashCode()|0,i=Hr(31,i)+this.a7p_1.hashCode()|0,i=Hr(31,i)+Ns(this.u7o_1)|0,i=Hr(31,i)+Ns(this.v7o_1)|0,i=Hr(31,i)+(0|this.w7o_1)|0,i=Hr(31,i)+(0|this.x7o_1)|0,i=Hr(31,i)+(0|this.y7o_1)|0,i=Hr(31,i)+this.b7p_1.hashCode()|0,Hr(31,i)+this.c7p_1.hashCode()|0},Kr(U$).s6v=function(){return new Object},Kr(V$).y7q=function(t,n,i,e,r){return this.x7q_1.r7s(r instanceof Lg?r:Wr(),t,n,i,e)},Kr(V$).s7s=function(t,n){return this.x7q_1.t7s(n instanceof Lg?n:Wr(),t)},Kr(V$).u7s=function(t,n){return this.x7q_1.v7s(n instanceof Lg?n:Wr(),t)},Kr(V$).w7s=function(t,n){return this.x7q_1.x7s(n instanceof Lg?n:Wr(),t)},Kr(B$).g7t=function(t){return this.x1g(),this.s7r_1.a(t)},Kr(B$).x1g=function(){this.t7r_1=new Float32Array(0),this.v7r_1.d3(),this.w7r_1.d3(),this.x7r_1.d3(),this.y7r_1.d3()},Kr(B$).b7j=function(t){if(this.s7r_1.m())return rs();var n,i;if(this.f7l(t)&&(this.e7l(t),this.z7r_1=H$().s6v(),this.a7s_1=H$().s6v()),this.c7s_1){var e,r=Is(zh),s=t.v53_1.g2(r),o=null==s||bs(s,yy)?s:Wr();if(null==o){var u=new dx;t.v53_1.f4(r,u),e=u}else e=o;var a=e;i=(n=xh().h5e(a)).j5e_1,this.d7s_1=this.c7j(t,this.c6e_1),n.i5e_1.i5f(this.c6e_1)}else{var h,_=Is(ph),l=t.v53_1.g2(_),f=null==l||bs(l,yy)?l:Wr();if(null==f){var c=new dx;t.v53_1.f4(_,c),h=c}else h=f;var v=h;i=(n=dh().m5c(v)).n5c_1;var w=this.t7r_1,d=this.u7r_1;H$(),this.d7s_1=this.d7j(t,w,d,6,this.b7s_1)}var p,m,g,$=i,y=Is(a$),b=t.z5g(),k=b.g2(y);if(null==k){var j=new a$;b.h5h(y,j,j.g5h()),g=j}else g=k;p=(m=g)instanceof a$?m:Wr(),$.y58_1=p;var x,z,E,C=i,S=this.z7r_1,q=t.z5g(),O=q.g2(S);if(null==O){var I=new Yg(jk(),this.t7r_1,this.u7r_1);q.h5h(S,I,I.r5c_1),E=I}else E=O;x=(z=E)instanceof Yg?z:Wr(),C.z58_1=x;var A,T,D,M=i,N=this.a7s_1,R=t.z5g(),P=R.g2(N);if(null==P){var L=new Wg(Ek(),Nu(Cu(Cu(Cu(this.v7r_1,this.w7r_1),this.x7r_1),this.y7r_1)));R.h5h(N,L,L.r5c_1),D=L}else D=P;A=(T=D)instanceof Wg?T:Wr(),M.a59_1=A,this.c7s_1||this.z7i().i6k_1.h4u_1>=1?(this.h7l(t,i),this.g7l(t,i)):(this.g7l(t,i),this.h7l(t,i)),i.b59_1.t54(this.b7s_1);var F=i;H$(),F.c59_1=Hr(6,4),i.d59_1=this.u6d_1,i.e59_1=this.z7i().c6k_1,i.f59_1=this.z7i().d6k_1,this.c7s_1?t.i5h(n,0):t.v7g(n,this.d7s_1)},Kr(B$).h7l=function(t,n){if(!this.z7i().z6j_1)return rs();var i,e=this.z7i().g6k_1;if(null==e)i=null;else{var r,s=t.m69(e,H$().s7q_1);if(null==s)r=null;else{var o=t.b52(this.d7s_1);this.e7j(s,o,this.j7s_1),n.v59(s),r=n.w59(this.j7s_1)}i=r}if(null==i&&n.v59(null),n.r59(t.q53_1?this.b6e_1:this.z7i().i6k_1),n.t59(t.j7g().c64()),n.y59(2,12),n.l56(Ak(),this.v7r_1.g(),Ik(),0),this.u6d_1){n.v59(null);var u=Ak(),a=this.w7r_1.g(),h=Ik(),_=this.v7r_1.g();Iu(),n.l56(u,a,h,Hr(_,4))}},Kr(B$).g7l=function(t,n){if(!this.z7i().a6k_1)return rs();var i,e=this.z7i().h6k_1;if(null==e)i=null;else{var r,s=t.m69(e,H$().t7q_1);if(null==s)r=null;else{var o=t.b52(this.d7s_1);this.e7j(s,o,this.j7s_1),n.v59(s),r=n.w59(this.j7s_1)}i=r}null==i&&n.v59(null),n.r59(t.q53_1?this.b6e_1:this.z7i().j6k_1),n.t59(t.j7g().c64()),n.u59(this.z7i().f6k_1),n.y59(1,20);var u=Ok(),a=this.x7r_1.g(),h=Ik(),_=this.v7r_1.g()+this.w7r_1.g()|0;if(Iu(),n.l56(u,a,h,Hr(_,4)),this.z7i().b6k_1&&this.u6d_1){n.r59(t.q53_1?this.b6e_1:this.z7i().j6k_1),n.t59(t.j7g().c64()),n.u59(this.z7i().f6k_1),n.v59(null);var l=Ok(),f=this.y7r_1.g(),c=Ik(),v=(this.v7r_1.g()+this.w7r_1.g()|0)+this.x7r_1.g()|0;Iu(),n.l56(l,f,c,Hr(v,4))}},Kr(B$).f7l=function(t){return 0===this.t7r_1.length},Kr(B$).e7l=function(t){this.c7s_1=!!this.s6d_1.equals(Fh())&&this.v6d_1;for(var n=this.y6d_1<=0||this.t6d_1.equals(T$()),i=0,e=this.s7r_1.d();e.e();){var r=e.f();i=i+(n?r.g():!r.m()&&r.h(0).equals(r.h(r.g()-1|0))?r.g()+Hr(r.g()-1|0,this.y6d_1)|0:r.g()+Hr(r.g(),this.y6d_1)|0)|0}var s=i;this.u7r_1=0;var o;if(this.u6d_1&&!this.c7s_1){var u=Hr(s,2);H$(),o=new Float32Array(Hr(u,6))}else if(this.c7s_1){var a=s+this.s7r_1.g()|0;H$(),o=new Float32Array(Hr(a,6))}else H$(),o=new Float32Array(Hr(s,6));this.t7r_1=o,this.v7r_1.d3(),this.w7r_1.d3(),this.x7r_1.d3(),this.y7r_1.d3(),this.k7l(t);var h=t.k7g();lb().h7t(h,0,0,1);var _=lb();lb(),_.i7t(h,100111,this.f7s_1);var l=lb();lb(),l.i7t(h,100107,this.f7s_1);var f=lb();lb(),f.i7t(h,100110,this.f7s_1);var c=lb();lb(),c.i7t(h,100109,this.f7s_1),lb().j7t(h,t);var v=0,w=this.s7r_1.g()-1|0;if(v<=w)do{var d=v;v=v+1|0;var p=this.s7r_1.h(d);if(!p.m()){lb().k7t(h);var m=p.h(0),g=m.j4w_1,$=m.k4w_1,y=m.n4w_1;H$(),this.l7t(t,g,$,y,0);var b=1,k=p.g();if(b>1,12),i=new Float32Array(t+n|0),e=this.t7r_1,r=e.length;Ss(e,i,0,0,r),this.t7r_1=i}},Kr(W$).r7t=function(t){this.i6k_1.s59(t)},Kr(W$).w6j=function(t){this.j6k_1.s59(t)},Kr(W$).equals=function(t){return this===t||t instanceof W$&&this.z6j_1===t.z6j_1&&this.a6k_1===t.a6k_1&&this.b6k_1===t.b6k_1&&this.c6k_1===t.c6k_1&&this.d6k_1===t.d6k_1&&this.e6k_1===t.e6k_1&&!!this.i6k_1.equals(t.i6k_1)&&!!this.j6k_1.equals(t.j6k_1)&&this.f6k_1===t.f6k_1&&!!Rs(this.g6k_1,t.g6k_1)&&!!Rs(this.h6k_1,t.h6k_1)},Kr(W$).hashCode=function(){var t=0|this.z6j_1;t=Hr(31,t)+(0|this.a6k_1)|0,t=Hr(31,t)+(0|this.b6k_1)|0,t=Hr(31,t)+(0|this.c6k_1)|0,t=Hr(31,t)+(0|this.d6k_1)|0,t=Hr(31,t)+(0|this.e6k_1)|0,t=Hr(31,t)+this.i6k_1.hashCode()|0,t=Hr(31,t)+this.j6k_1.hashCode()|0,t=Hr(31,t)+Ns(this.f6k_1)|0;var n=Hr(31,t),i=this.g6k_1,e=null==i?null:i.hashCode(),r=Hr(31,t=n+(null==e?0:e)|0),s=this.h6k_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},Kr(G$).f64=function(t){if(this.t7d_1.sr()||!t.x5g().q55().c5g(this.t7d_1)||!this.s63(t).e5j(t.i53_1))return rs();var n=t.m69(this.c65_1,this.d65_1);if(null==n)return rs();var i,e=n,r=this.s7t(t),s=Is(qh),o=t.v53_1.g2(s),u=null==o||bs(o,yy)?o:Wr();if(null==u){var a=new dx;t.v53_1.f4(s,a),i=a}else i=u;var h=i,_=Ch().z5e(h).h5f(r,this.t7d_1,e,e.h57_1);if(_.c5f_1=t.j7g().c64(),t.i5h(_,0),t.q53_1){var l=t.y5g();Ia().d4u(l,_.b5f_1),t.v4u(Ia().a4u(l,this,t.j7g()))}},Kr(G$).s7t=function(t){var n,i,e=Is(_$),r=t.z5g(),s=r.g2(e);if(null==s){var o=new _$;r.h5h(e,o,o.g5h()),i=o}else i=s;return(n=i)instanceof _$?n:Wr()},Kr(Z$).x6j=function(t){this.r6j_1.z7t(t)},Kr(Z$).v6j=function(t){this.s6j_1.s59(t)},Kr(Z$).a7u=function(t){this.t6j_1.o5l(t)},Kr(Z$).w6j=function(t){this.u6j_1.s59(t)},Kr(Z$).equals=function(t){return this===t||t instanceof Z$&&!!this.r6j_1.equals(t.r6j_1)&&!!this.s6j_1.equals(t.s6j_1)&&!!this.t6j_1.equals(t.t6j_1)&&!!this.u6j_1.equals(t.u6j_1)&&this.n6j_1===t.n6j_1&&this.o6j_1===t.o6j_1&&this.p6j_1===t.p6j_1&&this.q6j_1===t.q6j_1},Kr(Z$).hashCode=function(){var t=this.r6j_1.hashCode();return t=Hr(31,t)+this.s6j_1.hashCode()|0,t=Hr(31,t)+this.t6j_1.hashCode()|0,t=Hr(31,t)+this.u6j_1.hashCode()|0,t=Hr(31,t)+Ns(this.n6j_1)|0,t=Hr(31,t)+(0|this.o6j_1)|0,t=Hr(31,t)+(0|this.p6j_1)|0,Hr(31,t)+Ns(this.q6j_1)|0},Kr(ny).o6r=function(t){this.d6r_1=t,this.w5w()},Kr(ny).f64=function(t){if(t.x5g().q55().sr())return rs();this.s6s(t),this.k62(t),this.k6r_1=null,this.l6r_1=null,this.m6r_1=null},Kr(ny).s6s=function(t){var n,i,e,r=Is(_$),s=t.z5g(),o=s.g2(r);if(null==o){var u=new _$;s.h5h(r,u,u.g5h()),e=u}else e=o;n=(i=e)instanceof _$?i:Wr(),this.k6r_1=n},Kr(ny).k62=function(t){this.i6r_1.m()&&this.n62();var n=0,i=this.i6r_1.g()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.i6r_1.h(e);this.t6s(t,r instanceof cx?r:Wr())}while(n<=i)},Kr(ny).n62=function(){var t=this.c6r_1.v62();null==t||Ey().w62(t,this.b6r_1,this.i6r_1)},Kr(ny).t6s=function(t,n){if(!n.y62(this.c6r_1.p62_1)||!n.y62(t.x5g().q55())||!n.x62(t))return rs();var i=n.p61_1.d61_1>=this.f6r_1;if(n.p61_1.b63()||!n.a63(t,this.e6r_1))return i&&this.u6s(t,n),rs();var e,r=this.l6r_1,s=this.m6r_1;ty(),e=i;var o=this.v6s(t,n,e);null==o||(this.l6r_1=n,this.m6r_1=o,rs());var u=n.c63(this.b6r_1,this.j6r_1,4),a=0,h=u.length-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=u[_];this.t6s(t,l instanceof cx?l:Wr())}while(a<=h);this.l6r_1=r,this.m6r_1=s},Kr(ny).u6s=function(t,n){var i=this.w6s(t,n),e=this.l6r_1,r=this.m6r_1;if(null!=i){var s,o=Is(qh),u=t.v53_1.g2(o),a=null==u||bs(u,yy)?u:Wr();if(null==a){var h=new dx;t.v53_1.f4(o,h),s=h}else s=a;var _=s,l=Ch().z5e(_).h5f(this.k6r_1,n.s60_1,i,i.h57_1);t.i5h(l,0)}else if(null!=e&&null!=r){this.n6r_1.x59(r.h57_1),this.n6r_1.e5g(n.s60_1,e.s60_1);var f,c=Is(qh),v=t.v53_1.g2(c),w=null==v||bs(v,yy)?v:Wr();if(null==w){var d=new dx;t.v53_1.f4(c,d),f=d}else f=w;var p=f,m=Ch().z5e(p).h5f(this.k6r_1,n.s60_1,r,this.n6r_1);t.i5h(m,0)}},Kr(ny).v6s=function(t,n,i){var e=n.d6q_1;if(null==e)return null;var r,s=e,o=n.e6q_1;if(null==o){var u,a=this.g6r_1;if(null==a)u=null;else{var h,_=a.l62(n.s60_1,n.p61_1,n.q61_1,n.r61_1),l=(_ instanceof cx?_:Wr()).d6q_1;null==l?h=null:(n.e6q_1=l,h=l),u=h}r=u}else r=o;var f=r,c=null==f||t.z5g().f4x_1.u5y(f.hashCode());return t.o7g(c?s:ws(f),this.d6r_1,!(!i||this.h6r_1&&c))},Kr(ny).w6s=function(t,n,i,e){return i=i===Xr||i,e===Xr?this.v6s(t,n,i):e.v6s.call(this,t,n,i)},Kr(ny).w5w=function(){this.i6r_1.d3(),this.j6r_1.d3()},Kr(iy).g7u=function(t){var n=this.d7u_1;this.d7u_1=n+1|0,this.c7u_1=Bs().v3h(),this.e7u_1=t},Kr(ey).d3=function(){this.n5y_1.d3()},Kr(ey).u5y=function(t){var n=this.n5y_1.g2(t);if(null==n)return!1;var i=n;if(i.e7u_1)return!0;var e=Bs().v3h().x3i(i.c7u_1);return Pu(e,this.m5y_1)>0?(this.n5y_1.wc(t),!1):Pu(e,this.l5y_1)<0||i.d7u_1>this.k5y_1},Kr(ey).h7u=function(t,n){var i,e=this.n5y_1.g2(t);if(null==e){var r=new iy(this);this.n5y_1.f4(t,r),i=r}else i=e;i.g7u(n)},Kr(ey).y5y=function(t,n,i){var e;return n=n!==Xr&&n,i===Xr?(this.h7u(t,n),e=rs()):e=i.h7u.call(this,t,n),e},Kr(ey).w5y=function(t){this.n5y_1.wc(t)},Kr(ry).equals=function(t){return this===t||t instanceof ry&&!!Rs(this.u6q_1,t.u6q_1)},Kr(ry).hashCode=function(){return Lo(this.u6q_1)},Kr(ry).toString=function(){return ss(this.u6q_1)},Kr(uy).q63=function(){return vo("extent",1,co,(function(t){return t.q63()}),null),this.u60_1.s()},Kr(uy).r63=function(){return vo("heightLimits",1,co,(function(t){return t.r63()}),null),this.v60_1.s()},Kr(uy).x62=function(t){return this.s63(t).e5j(t.i53_1)},Kr(uy).y62=function(t){return this.s60_1.c5g(t)},Kr(uy).n63=function(t){var n=t.h64().d4w_1,i=n.j4w_1-this.s60_1.z5i(),e=Math.abs(i),r=n.k4w_1-this.s60_1.a5j(),s=Math.abs(r),o=360-s;return e+Math.min(s,o)},Kr(uy).p63=function(t){var n,i=t.h64().d4w_1,e=ds(i.j4w_1,this.s60_1.r5e_1,this.s60_1.s5e_1),r=i.k4w_1-this.s60_1.a5j(),s=r<-180?this.s60_1.u5e_1:r>180?this.s60_1.t5e_1:ds(i.k4w_1,this.s60_1.t5e_1,this.s60_1.u5e_1),o=this.r63()[0]*t.z52_1,u=t.j5h(),a=Bh().e55(e);return n=Bh().e55(s),u.z4z(a,n,o,this.t60_1)},Kr(uy).s63=function(t){var n=t.j5h(),i=this.r63(),e=this.q63(),r=t.c53_1;r.equals(this.w60_1)||(Yo(),i[0]=34028235e31,Yo(),i[1]=-34028235e31,n.k4x_1.z5w(this.s60_1,i),i[0]>i[1]&&Ls(i,0));var s=t.z52_1;if(s!==this.x60_1||!r.equals(this.w60_1)){var o=i[0]*s,u=i[1]*s;e.x5i(this.s60_1,n,o,u)}return this.w60_1=r,this.x60_1=s,e},Kr(_y).h55=function(){if(this.j7u_1>0){var t=this;t.j7u_1=t.j7u_1-1|0;var n=t.j7u_1,i=this.k7u_1[n];return this.k7u_1[n]=null,null==i||mo(i)?i:Wr()}return null},Kr(_y).t55=function(t){if(null!=t){var n=this.k7u_1.length;if(n===this.j7u_1){var i,e=n>>1;hy();i=Math.max(e,12);var r=ms(Array(n+i|0),null),s=this.k7u_1;Ss(s,r,0,0,n),this.k7u_1=r}var o=this.k7u_1,u=this.j7u_1;this.j7u_1=u+1|0,o[u]=t}},Kr(ly).b63=function(){return this.d61_1===(this.c61_1.l7u()-1|0)},Kr(ly).q6p=function(){return this.c61_1.m7u(this.d61_1+1|0)},Kr(vy).l7u=function(){return this.u62_1.length},Kr(vy).v62=function(){return 0!==this.u62_1.length?this.u62_1[0]:null},Kr(vy).m7u=function(t){return 0<=t&&t<=(this.u62_1.length-1|0)?this.u62_1[t]:null},Kr(wy).g71=function(t){var n;if(!(t>0))throw n=wx().v4w(wx().q4w_1,"LevelSetConfig","numLevelsForMinResolution","invalidResolution"),cs(ss(n));var i,e=Bh().p5h(t),r=this.c71_1.j4w_1/this.f71_1/e,s=Math.log(r)/Math.log(2);i=Math.floor(s);var o=Ms(i);return o<0&&(o=0),o+1|0},Kr(py).sh=function(t,n){return this.r7u_1(t,n)},Kr(py).compare=function(t,n){return this.sh(t,n)},Kr(gy).s7u=function(){return this.d5h_1},Kr(gy).t7u=function(){return this.f5h_1=this.f5h_1.ui(),this.f5h_1},Kr(gy).g2=function(t){var n,i=this.e5h_1.g2(t);return null==i?n=null:(i.q7u_1=this.t7u(),n=i.o7u_1),n},Kr(gy).h5h=function(t,n,i){this.c5h_1.o7(Ks(i)).w(this.a5h_1)>0&&this.u7u(i);var e=new dy(t,n,i);e.q7u_1=this.t7u();var r,s=this,o=this.c5h_1,u=e.p7u_1;r=o.o7(Ks(u)),s.c5h_1=r;var a=this.e5h_1.f4(t,e);if(null!=a){var h,_=this,l=this.c5h_1,f=a.p7u_1;if(h=l.p7(Ks(f)),_.c5h_1=h,e.o7u_1!==a.o7u_1)return this.v7u(a.n7u_1,a.o7u_1,e.o7u_1,!1),a.o7u_1}return null},Kr(gy).d3=function(){this.e5h_1.d3(),this.c5h_1=new ts(0,0)},Kr(gy).u7u=function(t){var n=this.w7u(),i=0,e=n.g()-1|0;if(i<=e)t:do{var r=i;i=i+1|0;var s=n.h(r);if(!(this.c5h_1.w(this.b5h_1)>0||this.a5h_1.p7(this.c5h_1).w(Ks(t))<0))break t;this.e5h_1.wc(s.n7u_1);var o,u=this,a=this.c5h_1,h=s.p7u_1;o=a.p7(Ks(h)),u.c5h_1=o,this.v7u(s.n7u_1,s.o7u_1,null,!0)}while(i<=e)},Kr(gy).w7u=function(){return Lu(this.e5h_1.i2(),this.s7u())},Kr(gy).v7u=function(t,n,i,e){},Kr(jy).s68=function(t){return this.y7u(this.w6v(t),t)},Kr(jy).w6v=function(t){var n=this.v6v(t)-2451545,i=Bh().s5h(280.46+.9856474*n),e=Bh().o5h(Bh().s5h(357.528+.9856003*n)),r=2*e,s=i+1.915*Math.sin(e)+.02*Math.sin(r),o=Bh().o5h(s),u=Bh().o5h(23.439-4e-7*n),a=Bh(),h=Math.sin(u)*Math.sin(o),_=Math.asin(h),l=a.r51(_),f=Bh(),c=Math.cos(u)*Math.tan(o),v=Math.atan(c),w=f.r51(v);return s>=90&&s<270&&(w=Yh(w,Bh().v50_1)),new ky(l,function(t){var n;if(0<=t&&t<=360)n=t;else{var i=Bh(),e=Bh().s5h(t);n=i.e55(e)}return n}(w))},Kr(jy).y7u=function(t,n){var i=this.v6v(n)-2451545,e=Bh().s5h(280.46061837+360.98564736629*i),r=-Bh().s5h(e-t.y6v_1),s=n_(Bh().e55(r));return new x_(t.x6v_1,s)},Kr(jy).v6v=function(t){var n,i=Fu(t,fs().m3i_1),e=i.b3i(),r=i.c3i()+1|0,s=i.d3i(),o=(i.e3j()+i.f3j()/60+i.g3j()/3600)/24;r<=2&&(e=e-1|0,r=r+12|0);var u=e/100,a=(n=Math.floor(u))/4,h=2-n+Math.floor(a),_=365.25*(e+4716|0),l=30.6001*(r+1|0);return Math.floor(_)+Math.floor(l)+s+h-1524.5+o},Kr(zy).r6o=function(t,n,i){var e,r=(n-i)/t;e=Math.floor(r);var s=Ms(e);return n-i==180&&(s=s-1|0),s},Kr(zy).t6o=function(t,n,i){var e,r=(n-i)/t;e=Math.floor(r);var s=Ms(e);return n-i==360&&(s=s-1|0),s},Kr(zy).s6o=function(t,n,i){var e,r=(n-i)/t-1;e=Math.ceil(r);var s=Ms(e);return n-it.b52(r)*n*t.y52_1},Kr(Cy).o63=function(t){var n=this.p61_1.q6p();if(null==n)return[];var i=n,e=this.s60_1.r5e_1,r=this.s60_1.t5e_1,s=this.s60_1.z5i(),o=this.s60_1.a5j(),u=this.s60_1.s5e_1,a=this.s60_1.u5e_1,h=Hr(2,this.q61_1),_=Hr(2,this.r61_1),l=new el(e,s,r,o),f=t.l62(l,i,h,_);h=Hr(2,this.q61_1),_=Hr(2,this.r61_1)+1|0,l=new el(e,s,o,a);var c=t.l62(l,i,h,_);h=Hr(2,this.q61_1)+1|0,_=Hr(2,this.r61_1),l=new el(s,u,r,o);var v=t.l62(l,i,h,_);return h=Hr(2,this.q61_1)+1|0,_=Hr(2,this.r61_1)+1|0,l=new el(s,u,o,a),[f,c,v,t.l62(l,i,h,_)]},Kr(Cy).c63=function(t,n,i){var e,r=n.g2(this.s61_1);if(null==r){var s=this.o63(t);n.h5h(this.s61_1,s,i),e=s}else e=r;return e},Kr(Iy).e7v=function(t,n){var i=this.a7v_1<0?2:1;if(0===t)return this.c7v_1+this.d7v_1;if(n<0&&t>0){var e=t-this.d7v_1.length|0;return e=0){var e=this.u7v_1;this.u7v_1=e-1|0;var r=this.x7v_1;this.x7v_1=r+1|0,new sb(this,r).i7w()}else this.w7v_1.k7(n)}return this},Kr(hb).j4=function(){this.u7v_1>=this.s7v_1.length&&this.y7v("unexpected end of string inside format specification");var t=this.u7v_1;return this.u7v_1=t+1|0,Zs(this.s7v_1,t)},Kr(hb).y7v=function(t){throw cs("bad format: "+t+" at ofset "+(this.u7v_1-1|0)+' of "'+this.s7v_1+'"')},Kr(hb).toString=function(){return this.w7v_1.toString()},Kr(hb).f7w=function(t){return this.l7w(t)},Kr(hb).e7w=function(t){return ss(ws(this.t7v_1[t]))},Kr(hb).g7w=function(t){return this.l7w(t).j7_1},Kr(hb).h7w=function(t){this.w7v_1.l8(t),this.v7v_1=-1},Kr(hb).z7v=function(t){var n=this.l7w(t),i=n;return i instanceof aa?Fu(n,fs().j3j()):i instanceof ua?n:i instanceof oa?sa(n,0,0,0):Fu(function(t){if(!(t instanceof Date))throw cs("Can't convert to LocalDateTime: "+ss(t));return ns().r3i(Xs(t.getTime()))}(n),fs().j3j())},Kr(hb).l7w=function(t){var n=ws(this.t7v_1[t]);return mo(n)?n:Wr()},Kr(hb).j7w=function(){var t=this.x7v_1;this.x7v_1=t-1|0},Kr(_b).q7t=function(t){return(null==oe&&new cb,oe).q7t(t)},Kr(_b).i7g=function(){return Cb().i7g()},Kr(_b).h7t=function(t,n,i,e){(t instanceof Sb?t:Wr()).v7x(n,i,e)},Kr(_b).i7t=function(t,n,i){(t instanceof Sb?t:Wr()).w7x(n,i)},Kr(_b).o7t=function(t,n,i,e){(t instanceof Sb?t:Wr()).x7x(n,i,e)},Kr(_b).j7t=function(t,n){(t instanceof Sb?t:Wr()).y7x(n)},Kr(_b).k7t=function(t){(t instanceof Sb?t:Wr()).z7x()},Kr(_b).m7t=function(t){(t instanceof Sb?t:Wr()).a7y()},Kr(_b).n7t=function(t){(t instanceof Sb?t:Wr()).b7y()},Kr(fb).y7s=function(t){},Kr(fb).z7s=function(t){},Kr(fb).a7t=function(t){},Kr(fb).b7t=function(){},Kr(fb).c7t=function(t){},Kr(fb).d7t=function(t,n,i,e){},Kr(fb).e7t=function(t,n){},Kr(fb).u7s=function(t,n){},Kr(fb).s7s=function(t,n){},Kr(fb).f7t=function(t){},Kr(fb).w7s=function(t,n){},Kr(fb).y7q=function(t,n,i,e,r){},Kr(cb).q7t=function(t){return 0===t?"no error":(lb(),t>=100900?(lb(),n=t<=100904):n=!1,n?(lb(),this.m7w_1[t-100900|0]):(lb(),t>=100151?(lb(),e=t<=100158):e=!1,e?(lb(),i=this.m7w_1[t-100150|0]):i=null,i));var n,i,e},Kr(db).l7y=function(t,n){return new mb(new gb,t,n)},Kr(db).m7y=function(t){},Kr(db).n7y=function(t,n){return this.r7y(t,t.o7y_1,n)},Kr(db).r7y=function(t,n,i){var e=n;do{e=e.u7y_1}while(null!=e.s7y_1&&!t.q7y_1.v7y(t.p7y_1,e.s7y_1,i));var r=new gb(i);r.u7y_1=e,r.t7y_1=e.t7y_1;var s=r;return e.t7y_1.u7y_1=s,e.t7y_1=s,s},Kr(db).w7y=function(t){return t.s7y_1},Kr(db).x7y=function(t){return t.t7y_1},Kr(db).y7y=function(t){return t.u7y_1},Kr(db).z7y=function(t){return t.o7y_1.t7y_1},Kr(db).a7z=function(t){t.t7y_1.u7y_1=t.u7y_1,t.u7y_1.t7y_1=t.t7y_1},Kr(db).b7z=function(t,n){var i=t.o7y_1;do{i=i.t7y_1}while(null!=i.s7y_1&&!t.q7y_1.v7y(t.p7y_1,n,i.s7y_1));return i},Kr(Eb).i7g=function(){return new Sb},Kr(Sb).v7x=function(t,n,i){this.t7w_1[0]=t,this.t7w_1[1]=n,this.t7w_1[2]=i},Kr(Sb).w7x=function(t,n){var i=t;if(lb(),100100===i){var e=n;this.j7x_1=null==e?Cb().p7w_1:e}else if(lb(),100106===i){var r=n;this.p7x_1=null==r?Cb().p7w_1:r}else if(lb(),100104===i){var s=n;this.k7x_1=null==s?Cb().p7w_1:s,this.c7x_1=!(null==n)}else if(lb(),100110===i){var o=n;this.j7x_1=null==o?Cb().p7w_1:o,this.q7x_1=this.j7x_1,rs(),this.c7x_1=!(null==n)}else if(lb(),100101===i){var u=n;this.l7x_1=null==u?Cb().p7w_1:u}else if(lb(),100107===i){var a=n;this.r7x_1=null==a?Cb().p7w_1:a}else if(lb(),100102===i){var h=n;this.m7x_1=null==h?Cb().p7w_1:h}else if(lb(),100108===i){var _=n;this.s7x_1=null==_?Cb().p7w_1:_}else if(lb(),100103===i){var l=n;this.n7x_1=null==l?Cb().p7w_1:l}else if(lb(),100109===i){var f=n;this.t7x_1=null==f?Cb().p7w_1:f}else if(lb(),100105===i){var c=n;this.o7x_1=null==c?Cb().p7w_1:c}else if(lb(),100111===i){var v=n;this.u7x_1=null==v?Cb().p7w_1:v}else lb(),this.x7z(100900)},Kr(Sb).x7x=function(t,n,i){var e=!1,r=new Float64Array(3);if(dk(),jb(this,2),this.f7x_1){if(!zb(this))return lb(),this.x7z(100902),rs();this.r7w_1=null}for(var s=0;s<3;){var o=t[s+n|0],u=o;lb(),u<-1e150&&(lb(),o=-1e150,e=!0);var a=o;lb(),a>1e150&&(lb(),o=1e150,e=!0),r[s]=o,s=s+1|0}if(e&&(lb(),this.x7z(100155)),null==this.s7w_1){var h=this.g7x_1;if(Cb(),h<100)return function(t,n,i){var e=t.h7x_1[t.g7x_1];e.k7y_1=i,e.j7y_1[0]=n[0],e.j7y_1[1]=n[1],e.j7y_1[2]=n[2];var r=t;r.g7x_1=r.g7x_1+1|0}(this,r,i),rs();if(!zb(this))return lb(),this.x7z(100902),rs()}xb(this,r,i)||(lb(),this.x7z(100902))},Kr(Sb).y7x=function(t){dk(),jb(this,0);dk(),this.q7w_1=1,this.g7x_1=0,this.f7x_1=!1,this.s7w_1=null,this.i7x_1=t},Kr(Sb).z7x=function(){dk(),jb(this,1);dk(),this.q7w_1=2,this.r7w_1=null,this.g7x_1>0&&(this.f7x_1=!0)},Kr(Sb).a7y=function(){dk(),jb(this,2);dk(),this.q7w_1=1},Kr(Sb).b7y=function(){try{dk(),jb(this,1);if(dk(),this.q7w_1=0,null==this.s7w_1){if(!this.c7x_1&&ok().p80(this))return this.i7x_1=null,rs();if(!zb(this))throw ha()}if((null==le&&new Mb,le).u80(this),!fk().x80(this))throw ha();var t=ws(this.s7w_1);if(!this.y7w_1){if(!(this.d7x_1?vk().z80(t,1,!0):vk().y80(t)))throw ha();Tb().a81(t),this.j7x_1===Cb().p7w_1&&this.m7x_1===Cb().p7w_1&&this.l7x_1===Cb().p7w_1&&this.k7x_1===Cb().p7w_1&&this.p7x_1===Cb().p7w_1&&this.s7x_1===Cb().p7w_1&&this.r7x_1===Cb().p7w_1&&this.q7x_1===Cb().p7w_1||(this.d7x_1?ok().c81(this,t):ok().b81(this,t))}Tb().w7z(t),this.i7x_1=null}catch(t){if(!(t instanceof Ts))throw t;_a(t),lb(),this.x7z(100902)}},Kr(Sb).d81=function(t){this.p7x_1!==Cb().p7w_1?this.p7x_1.e7t(t,ws(this.i7x_1)):this.j7x_1.y7s(t)},Kr(Sb).e81=function(t){this.r7x_1!==Cb().p7w_1?this.r7x_1.s7s(t,ws(this.i7x_1)):this.l7x_1.a7t(t)},Kr(Sb).f81=function(t){this.q7x_1!==Cb().p7w_1?this.q7x_1.u7s(t,ws(this.i7x_1)):this.k7x_1.z7s(t)},Kr(Sb).g81=function(){this.s7x_1!==Cb().p7w_1?this.s7x_1.f7t(ws(this.i7x_1)):this.m7x_1.b7t()},Kr(Sb).h81=function(t,n,i,e){this.u7x_1!==Cb().p7w_1?this.u7x_1.y7q(t,n,i,e,ws(this.i7x_1)):this.o7x_1.d7t(t,n,i,e)},Kr(Sb).x7z=function(t){this.t7x_1!==Cb().p7w_1?this.t7x_1.w7s(t,ws(this.i7x_1)):this.n7x_1.c7t(t)},Kr(Ob).i81=function(t,n,i){var e=n.g80_1-t.g80_1,r=i.g80_1-n.g80_1;return e+r>0?e0?(n.h80_1-i.h80_1)*e+(n.h80_1-t.h80_1)*r:0},Kr(Ob).k81=function(t,n,i){var e=n.h80_1-t.h80_1,r=i.h80_1-n.h80_1;return e+r>0?e0?(n.g80_1-i.g80_1)*e+(n.g80_1-t.g80_1)*r:0},Kr(Ob).m81=function(t,n,i,e){var r=t<0?0:t,s=i<0?0:i;return r<=s?0===s?(n+e)/2:n+r/(r+s)*(e-n):e+s/(r+s)*(n-e)},Kr(Ob).n81=function(t,n,i,e,r){var s=t,o=n,u=i,a=e;if(!this.o81(s,o)){var h=s;s=o,o=h}if(!this.o81(u,a)){var _=u;u=a,a=_}if(!this.o81(s,u)){var l=s;s=u,u=l,l=o,o=a,a=l}if(this.o81(u,o))if(this.o81(o,a)){var f=this.i81(s,u,o),c=this.i81(u,o,a);f+c<0&&(f=-f,c=-c),r.g80_1=this.m81(f,u.g80_1,c,o.g80_1)}else{var v=this.j81(s,u,o),w=-this.j81(s,a,o);v+w<0&&(v=-v,w=-w),r.g80_1=this.m81(v,u.g80_1,w,a.g80_1)}else r.g80_1=(u.g80_1+o.g80_1)/2;if(!this.p81(s,o)){var d=s;s=o,o=d}if(!this.p81(u,a)){var p=u;u=a,a=p}if(!this.p81(s,u)){var m=u;u=s,s=m,m=a,a=o,o=m}if(this.p81(u,o))if(this.p81(o,a)){var g=this.k81(s,u,o),$=this.k81(u,o,a);g+$<0&&(g=-g,$=-$),r.h80_1=this.m81(g,u.h80_1,$,o.h80_1)}else{var y=this.l81(s,u,o),b=-this.l81(s,a,o);y+b<0&&(y=-y,b=-b),r.h80_1=this.m81(y,u.h80_1,b,a.h80_1)}else r.h80_1=(u.h80_1+o.h80_1)/2},Kr(Ob).q81=function(t,n){return t.g80_1===n.g80_1&&t.h80_1===n.h80_1},Kr(Ob).o81=function(t,n){return t.g80_1Math.abs(r)&&(n=1);var s=t[2],o=Math.abs(s),u=t[n];return o>Math.abs(u)&&(n=2),n},Kr(Mb).g82=function(t,n){var i=t.s7w_1,e=ws(null==i?null:i.s7z_1),r=new Float64Array(3),s=new Float64Array(3),o=ms(Array(3),null),u=ms(Array(3),null),a=new Float64Array(3),h=new Float64Array(3),_=new Float64Array(3);lb(),r[2]=-2e150,r[1]=r[2],r[0]=r[1],lb(),s[2]=2e150,s[1]=s[2],s[0]=s[1];for(var l=ws(e.b80_1);l!==e;){for(var f=0;f<3;){var c=l.f80_1[f];cr[f]&&(r[f]=c,u[f]=l),f=f+1|0}l=ws(l.b80_1)}var v=0;if(r[1]-s[1]>r[0]-s[0]&&(v=1),r[2]-s[2]>r[v]-s[v]&&(v=2),s[v]>=r[v])return n[0]=0,n[1]=0,n[2]=1,rs();var w=0,d=ws(o[v]),p=ws(u[v]);for(a[0]=d.f80_1[0]-p.f80_1[0],a[1]=d.f80_1[1]-p.f80_1[1],a[2]=d.f80_1[2]-p.f80_1[2],l=ws(e.b80_1);l!==e;){h[0]=l.f80_1[0]-p.f80_1[0],h[1]=l.f80_1[1]-p.f80_1[1],h[2]=l.f80_1[2]-p.f80_1[2],_[0]=a[1]*h[2]-a[2]*h[1],_[1]=a[2]*h[0]-a[0]*h[2],_[2]=a[0]*h[1]-a[1]*h[0];var m=_[0]*_[0]+_[1]*_[1]+_[2]*_[2];m>w&&(w=m,n[0]=_[0],n[1]=_[1],n[2]=_[2]),l=ws(l.b80_1)}w<=0&&(n[2]=0,n[1]=n[2],n[0]=n[1],n[this.f82(a)]=1)},Kr(Mb).h82=function(t){for(var n=t.s7w_1,i=ws(null==n?null:n.t7z_1),e=t.s7w_1,r=ws(null==e?null:e.s7z_1),s=0,o=ws(i.c7z_1);o!==i;){var u=ws(o.e7z_1);if(u.r7z_1<=0)o=ws(o.c7z_1);else{do{s+=(ws(u.o7z_1).g80_1-ws(ws(u.l7z_1).o7z_1).g80_1)*(ws(u.o7z_1).h80_1+ws(ws(u.l7z_1).o7z_1).h80_1),u=ws(u.n7z_1)}while(u!==o.e7z_1);o=ws(o.c7z_1)}}if(s<0){for(var a=ws(r.b80_1);a!==r;)a.h80_1=-a.h80_1,a=ws(a.b80_1);t.v7w_1[0]=-t.v7w_1[0],t.v7w_1[1]=-t.v7w_1[1],t.v7w_1[2]=-t.v7w_1[2]}},Kr(Mb).u80=function(t){var n=t.s7w_1,i=ws(null==n?null:n.s7z_1),e=new Float64Array(3),r=!1;e[0]=t.t7w_1[0],e[1]=t.t7w_1[1],e[2]=t.t7w_1[2],0===e[0]&&0===e[1]&&0===e[2]&&(this.g82(t,e),r=!0);var s=t.u7w_1,o=t.v7w_1,u=this.f82(e);s[u]=0,s[(u+1|0)%3|0]=this.r80_1,s[(u+2|0)%3|0]=this.s80_1,o[u]=0,o[(u+1|0)%3|0]=e[u]>0?-this.s80_1:this.s80_1,o[(u+2|0)%3|0]=e[u]>0?this.r80_1:-this.r80_1;for(var a=ws(i.b80_1);a!==i;)a.g80_1=Db(0,a.f80_1,s),a.h80_1=Db(0,a.f80_1,o),a=ws(a.b80_1);r&&this.h82(t)},Kr(Pb).m82=function(t,n){var i=Ib(),e=t instanceof qb?t:Wr();return i.o81(e,n instanceof qb?n:Wr())},Kr(Pb).n82=function(){return new Gb},Kr(Ub).o82=function(){var t,n;t=[],this.v82_1=t,n=[],this.u82_1=n},Kr(Ub).a83=function(t){var n=t,i=this.u82_1,e=this.v82_1,r=i[n].i82_1;t:for(;;){var s=n<<1;sthis.w82_1||Lb().m82(ws(e[r].j82_1),ws(e[o].j82_1))){i[n].i82_1=r,e[r].k82_1=n;break t}i[n].i82_1=o,e[o].k82_1=n,n=s}},Kr(Ub).b83=function(t){var n=t,i=this.u82_1,e=this.v82_1,r=i[n].i82_1;t:for(;;){var s=n>>1,o=i[s].i82_1;if(0===s||Lb().m82(ws(e[o].j82_1),ws(e[r].j82_1))){i[n].i82_1=r,e[r].k82_1=n;break t}i[n].i82_1=o,e[o].k82_1=n,n=s}},Kr(Ub).p82=function(){for(var t=this.w82_1;t>=1;)this.a83(t),t=t-1|0;return this.z82_1=!0,!0},Kr(Ub).q82=function(t){var n,i=this;i.w82_1=i.w82_1+1|0;var e=i.w82_1;if(Hr(e,2)>this.x82_1){this.x82_1=this.x82_1<<1;for(var r=0,s=this.x82_1+1|0,o=ms(Array(s),null);r0){t[1].i82_1=t[this.w82_1].i82_1,n[t[1].i82_1].k82_1=1,n[i].j82_1=null,n[i].k82_1=this.y82_1,this.y82_1=i;var r=this;r.w82_1=r.w82_1-1|0,r.w82_1>0&&this.a83(1)}return e},Kr(Ub).s82=function(t){var n=this.u82_1,i=this.v82_1,e=i[t].k82_1;n[e].i82_1=n[this.w82_1].i82_1,i[n[e].i82_1].k82_1=e;var r=this;r.w82_1=r.w82_1-1|0,e<=r.w82_1&&(e<=1||Lb().m82(ws(i[n[e>>1].i82_1].j82_1),ws(i[n[e].i82_1].j82_1))?this.a83(e):this.b83(e)),i[t].j82_1=null,i[t].k82_1=this.y82_1,this.y82_1=t},Kr(Ub).t82=function(){return this.v82_1[this.u82_1[1].i82_1].j82_1},Kr(Ub).c83=function(){return 0===this.w82_1},Kr(Gb).o82=function(){this.f83_1.o82(),this.h83_1=null,this.g83_1=null},Kr(Gb).p82=function(){var t=ms(Array(50),null),n=0,i=t.length-1|0;if(n<=i)do{var e=n;n=n+1|0,t[e]=new Bb}while(n<=i);var r=0,s=2016473283;this.h83_1=new Int32Array(this.i83_1+1|0);for(var o=0,u=this.i83_1-1|0,a=0,h=o;h<=u;)ws(this.h83_1)[h]=a,a=a+1|0,h=h+1|0;var _=t[r];null==_||(_.d83_1=o);var l,f,c=t[r];for(null==c||(c.e83_1=u),r=r+1|0;(r=r-1|0)>=0;){for(o=ws(t[r]).d83_1,u=ws(t[r]).e83_1;u>(o+10|0);){h=o+((s=Vu(Hr(s,1539415821)+1|0))%(1+(u-o|0)|0)|0)|0,a=ws(this.h83_1)[h],ws(this.h83_1)[h]=ws(this.h83_1)[o],ws(this.h83_1)[o]=a,h=o-1|0;var v=u+1|0;do{do{h=h+1|0}while(Wb(),l=ws(ws(this.g83_1)[ws(this.h83_1)[h]]),f=ws(ws(this.g83_1)[a]),!Lb().m82(l,f));do{v=v-1|0}while(Hb(Wb(),ws(ws(this.g83_1)[ws(this.h83_1)[v]]),ws(ws(this.g83_1)[a])));Vb(Wb(),ws(this.h83_1),h,v)}while(ho&&Hb(Wb(),ws(ws(this.g83_1)[ws(this.h83_1)[g-1|0]]),ws(ws(this.g83_1)[a]));)ws(this.h83_1)[g]=ws(this.h83_1)[g-1|0],g=g-1|0;ws(this.h83_1)[g]=a,h=h+1|0}}return this.j83_1=this.i83_1,this.k83_1=!0,this.f83_1.p82(),!0},Kr(Gb).q82=function(t){if(this.k83_1)return this.f83_1.q82(t);var n=this.i83_1,i=this;if(i.i83_1=i.i83_1+1|0,i.i83_1>=this.j83_1){this.j83_1=this.j83_1<<1;var e=this.j83_1,r=ms(Array(e),null),s=this.g83_1;if(null==s);else{var o=s.length;Ss(s,r,0,0,o)}this.g83_1=r}return ws(this.g83_1)[n]=t,0|-(n+1|0)},Kr(Gb).r82=function(){if(0===this.i83_1)return this.f83_1.r82();var t=ws(ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]]);if(!this.f83_1.c83()){var n=ws(this.f83_1.t82());if(Lb().m82(n,t))return this.f83_1.r82()}do{this.i83_1=this.i83_1-1|0}while(this.i83_1>0&&null==ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]]);return t},Kr(Gb).t82=function(){if(0===this.i83_1)return this.f83_1.t82();var t=ws(ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]]);if(!this.f83_1.c83()){var n=ws(this.f83_1.t82());if(Lb().m82(n,t))return n}return t},Kr(Gb).s82=function(t){var n=t;if(n>=0)return this.f83_1.s82(n),rs();for(n=0|-(n+1|0),ws(this.g83_1)[n]=null;this.i83_1>0&&null==ws(this.g83_1)[ws(this.h83_1)[this.i83_1-1|0]];){this.i83_1=this.i83_1-1|0}},Kr(ik).o83=function(t,n,i){t.e7x_1=Zb(ok(),ws(n.p7z_1),t.e7x_1)},Kr(ek).o83=function(t,n,i){var e=n,r=i;t.d81(br);var s=e.o7z_1;t.e81(ws(null==s?null:s.e80_1));var o=e.l7z_1,u=null==o?null:o.o7z_1;for(t.e81(ws(null==u?null:u.e80_1));!Xb(ok(),ws(e.p7z_1));){var a=e.p7z_1;null==a||(a.h7z_1=!0),r=r.vi();var h=(e=ws(e.m7z_1)).l7z_1,_=null==h?null:h.o7z_1;t.e81(ws(null==_?null:_.e80_1))}t.g81()},Kr(rk).o83=function(t,n,i){var e=n,r=i;t.d81(Ck());var s=e.o7z_1;t.e81(ws(null==s?null:s.e80_1));var o=e.l7z_1,u=null==o?null:o.o7z_1;t.e81(ws(null==u?null:u.e80_1));t:for(;!Xb(ok(),ws(e.p7z_1));){var a=e.p7z_1;null==a||(a.h7z_1=!0),r=r.vi();var h=e.n7z_1,_=(e=ws(null==h?null:h.l7z_1)).o7z_1;if(t.e81(ws(null==_?null:_.e80_1)),Xb(ok(),ws(e.p7z_1)))break t;var l=e.p7z_1;null==l||(l.h7z_1=!0),r=r.vi();var f=(e=ws(e.m7z_1)).l7z_1,c=null==f?null:f.o7z_1;t.e81(ws(null==c?null:c.e80_1))}t.g81()},Kr(sk).b81=function(t,n){t.e7x_1=null;for(var i=ws(n.t7z_1.c7z_1);i!==n.t7z_1;)i.h7z_1=!1,i=ws(i.c7z_1);for(i=ws(n.t7z_1.c7z_1);i!==n.t7z_1;)i.i7z_1&&!i.h7z_1&&this.p83(t,i),i=ws(i.c7z_1);null!=t.e7x_1&&(this.q83(t,t.e7x_1),t.e7x_1=null)},Kr(sk).p83=function(t,n){var i=ws(n.e7z_1),e=Kb();if(e.l83_1=new ts(1,0),e.m83_1=i,e.n83_1=this.n80_1,!t.c7x_1){var r=this.r83(i);r.l83_1.w(e.l83_1)>0&&(e=r),(r=this.r83(ws(i.n7z_1))).l83_1.w(e.l83_1)>0&&(e=r);var s=i.m7z_1;(r=this.r83(ws(null==s?null:s.l7z_1))).l83_1.w(e.l83_1)>0&&(e=r),(r=this.s83(i)).l83_1.w(e.l83_1)>0&&(e=r),(r=this.s83(ws(i.n7z_1))).l83_1.w(e.l83_1)>0&&(e=r);var o=i.m7z_1;(r=this.s83(ws(null==o?null:o.l7z_1))).l83_1.w(e.l83_1)>0&&(e=r)}var u=e.n83_1;null==u||u.o83(t,ws(e.m83_1),e.l83_1)},Kr(sk).r83=function(t){for(var n=Jb(new ts(0,0),null,this.l80_1),i=null,e=t;!Xb(0,ws(e.p7z_1));){i=Zb(0,ws(e.p7z_1),i);var r=n;r.l83_1=r.l83_1.ui(),e=ws(e.m7z_1)}e=t;t:for(;;){var s=e.l7z_1;if(Xb(0,ws(null==s?null:s.p7z_1)))break t;var o=e.l7z_1;i=Zb(0,ws(null==o?null:o.p7z_1),i);var u=n;u.l83_1=u.l83_1.ui();var a=e.l7z_1;e=ws(null==a?null:a.n7z_1)}return n.m83_1=e,Qb(0,i),n},Kr(sk).s83=function(t){var n=Jb(new ts(0,0),null,this.m80_1),i=new ts(0,0),e=new ts(0,0),r=null,s=t;t:for(;!Xb(0,ws(s.p7z_1));){r=Zb(0,ws(s.p7z_1),r),e=e.ui();var o=s.n7z_1;if(s=ws(null==o?null:o.l7z_1),Xb(0,ws(s.p7z_1)))break t;r=Zb(0,ws(s.p7z_1),r),e=e.ui(),s=ws(s.m7z_1)}var u=s;s=t;t:for(;;){var a=s.l7z_1;if(Xb(0,ws(null==a?null:a.p7z_1)))break t;var h=s.l7z_1;r=Zb(0,ws(null==h?null:h.p7z_1),r),i=i.ui();var _=s.l7z_1,l=(s=ws(null==_?null:_.n7z_1)).l7z_1;if(Xb(0,ws(null==l?null:l.p7z_1)))break t;var f=s.l7z_1;r=Zb(0,ws(null==f?null:f.p7z_1),r),i=i.ui();var c=s.l7z_1,v=null==c?null:c.m7z_1;s=ws(null==v?null:v.l7z_1)}var w=s;if(n.l83_1=e.o7(i),tk(0,e))n.m83_1=u.l7z_1;else if(tk(0,i))n.m83_1=w;else{var d=n;d.l83_1=d.l83_1.vi(),n.m83_1=w.m7z_1}return Qb(0,r),n},Kr(sk).q83=function(t,n){var i=n,e=-1;for(t.d81(Ak());null!=i;){var r=ws(i.e7z_1);do{if(t.c7x_1){var s=ws(ws(r.l7z_1).p7z_1).i7z_1?0:1;e!==s&&(e=s,t.f81(!(0===e)))}var o=r.o7z_1;t.e81(ws(null==o?null:o.e80_1)),r=ws(r.n7z_1)}while(r!==i.e7z_1);i=i.g7z_1}t.g81()},Kr(sk).c81=function(t,n){for(var i=ws(n.t7z_1.c7z_1);i!==n.t7z_1;){if(i.i7z_1){t.d81(qk());var e=ws(i.e7z_1);do{var r=e.o7z_1;t.e81(ws(null==r?null:r.e80_1)),e=ws(e.n7z_1)}while(e!==i.e7z_1);t.g81()}i=ws(i.c7z_1)}},Kr(sk).t83=function(t,n,i){var e=t.h7x_1,r=t.g7x_1,s=new Float64Array(3),o=0;i||(n[2]=0,n[1]=n[2],n[0]=n[1]);for(var u=1,a=e[u].j7y_1[0]-e[0].j7y_1[0],h=e[u].j7y_1[1]-e[0].j7y_1[1],_=e[u].j7y_1[2]-e[0].j7y_1[2];(u=u+1|0)0){if(o<0)return 2;w=1}else{if(o>0)return 2;w=-1}o=w}}else if(v>=0){var d=n;d[0]=d[0]+s[0];var p=n;p[1]=p[1]+s[1];var m=n;m[2]=m[2]+s[2]}else{var g=n;g[0]=g[0]-s[0];var $=n;$[1]=$[1]-s[1];var y=n;y[2]=y[2]-s[2]}}return o},Kr(sk).p80=function(t){t.h7x_1,t.g7x_1;var n=new Float64Array(3);if(t.g7x_1<3)return!0;n[0]=t.t7w_1[0],n[1]=t.t7w_1[1],n[2]=t.t7w_1[2],0===n[0]&&0===n[1]&&0===n[2]&&this.t83(t,n,!1);var i=this.t83(t,n,!0);return 2!==i&&(0===i||!1)},Kr(_k).v7y=function(t,n,i){var e=fk(),r=n instanceof vb?n:Wr();return e.v83(this.u83_1,r,i instanceof vb?i:Wr())},Kr(lk).v83=function(t,n,i){var e=ws(t.b7x_1),r=n.c7y_1,s=i.c7y_1,o=r.l7z_1;if((null==o?null:o.o7z_1)===e){var u,a=s.l7z_1;if((null==a?null:a.o7z_1)===e){var h;if(Ib().o81(ws(r.o7z_1),ws(s.o7z_1))){var _=Ib(),l=s.l7z_1;h=_.j81(ws(null==l?null:l.o7z_1),ws(r.o7z_1),ws(s.o7z_1))<=0}else{var f=Ib(),c=r.l7z_1;h=f.j81(ws(null==c?null:c.o7z_1),ws(s.o7z_1),ws(r.o7z_1))>=0}u=h}else{var v=Ib(),w=s.l7z_1;u=v.j81(ws(null==w?null:w.o7z_1),e,ws(s.o7z_1))<=0}return u}var d=s.l7z_1;if((null==d?null:d.o7z_1)===e){var p=Ib(),m=r.l7z_1;return p.j81(ws(null==m?null:m.o7z_1),e,ws(r.o7z_1))>=0}var g=Ib(),$=r.l7z_1,y=g.i81(ws(null==$?null:$.o7z_1),e,ws(r.o7z_1)),b=Ib(),k=s.l7z_1;return y>=b.i81(ws(null==k?null:k.o7z_1),e,ws(s.o7z_1))},Kr(lk).w83=function(t){t.c7y_1.q7z_1=null,pb().a7z(ws(t.d7y_1))},Kr(lk).x83=function(t,n){return!!Tb().b82(t.c7y_1)&&(t.i7y_1=!1,t.c7y_1=n,n.q7z_1=t,!0)},Kr(lk).y83=function(t){var n=t,i=n.c7y_1.o7z_1;do{n=ws(hk(0,n))}while(n.c7y_1.o7z_1===i);if(n.i7y_1){var e=Tb().d82(ws(ak(0,n).c7y_1.l7z_1),ws(n.c7y_1.n7z_1));if(!this.x83(n,e))return null;n=ws(hk(0,n))}return n},Kr(lk).z83=function(t){var n=t,i=n.c7y_1.l7z_1,e=null==i?null:i.o7z_1;do{var r=(n=ws(hk(0,n))).c7y_1.l7z_1}while((null==r?null:r.o7z_1)===e);return n},Kr(lk).a84=function(t,n,i){var e=new vb(i);return e.d7y_1=pb().r7y(ws(t.z7w_1),ws(n.d7y_1),e),e.i7y_1=!1,e.g7y_1=!1,e.h7y_1=!1,i.q7z_1=e,e},Kr(lk).b84=function(t,n){var i=t.x7w_1;if(lb(),100130===i)return!(0==(1&n));if(lb(),100131===i)return!(0===n);if(lb(),100132===i)return n>0;if(lb(),100133===i)return n<0;if(lb(),100134===i)return n>=2||n<=-2;throw ha()},Kr(lk).c84=function(t,n){n.e7y_1=ws(hk(0,n)).e7y_1+n.c7y_1.r7z_1|0,n.f7y_1=this.b84(t,n.e7y_1)},Kr(lk).d84=function(t){var n=t.c7y_1,i=ws(n.p7z_1);i.i7z_1=t.f7y_1,i.e7z_1=n,this.w83(t)},Kr(lk).e84=function(t,n){var i=t,e=t.c7y_1;t:for(;i!==n;){i.i7y_1=!1;var r=ak(0,i),s=r.c7y_1;if(s.o7z_1!==e.o7z_1){if(!r.i7y_1){this.d84(i);break t}var o=Tb(),u=e.m7z_1;if(s=o.d82(ws(null==u?null:u.l7z_1),ws(s.l7z_1)),!this.x83(r,s))throw ha()}if(e.m7z_1!==s){var a=Tb(),h=s.l7z_1;if(!a.a80(ws(null==h?null:h.n7z_1),s))throw ha();if(!Tb().a80(e,s))throw ha()}this.d84(i),e=r.c7y_1,i=r}return e},Kr(lk).f84=function(t,n,i,e,r,s){var o=r,u=!0,a=i;do{this.a84(t,n,ws(a.l7z_1)),a=ws(a.m7z_1)}while(a!==e);if(null==o){var h=ak(0,n).c7y_1.l7z_1;o=null==h?null:h.m7z_1}for(var _,l=n,f=ws(o);_=ak(0,l),(a=ws(_.c7y_1.l7z_1)).o7z_1===f.o7z_1;){if(a.m7z_1!==f){var c=Tb(),v=a.l7z_1;if(!c.a80(ws(null==v?null:v.n7z_1),a))throw ha();var w=Tb(),d=f.l7z_1;if(!w.a80(ws(null==d?null:d.n7z_1),a))throw ha()}if(_.e7y_1=l.e7y_1-a.r7z_1|0,_.f7y_1=this.b84(t,_.e7y_1),l.h7y_1=!0,!u&&this.g84(t,l)&&(uk(0,a,f),this.w83(l),!Tb().b82(f)))throw ha();u=!1,l=_,f=a}l.h7y_1=!0,s&&this.h84(t,l)},Kr(lk).i84=function(t,n,i,e,r){var s=new Float64Array(3);s[0]=n.f80_1[0],s[1]=n.f80_1[1],s[2]=n.f80_1[2];var o=ms(Array(1),null);t.h81(s,i,e,o),n.e80_1=o[0],null==n.e80_1&&(r?t.y7w_1||(lb(),t.x7z(100156),t.y7w_1=!0):n.e80_1=i[0])},Kr(lk).j84=function(t,n,i){var e=ms(Array(4),null),r=new Float32Array([.5,.5,0,0]),s=n.o7z_1;e[0]=null==s?null:s.e80_1;var o=i.o7z_1;if(e[1]=null==o?null:o.e80_1,this.i84(t,ws(n.o7z_1),e,r,!1),!Tb().a80(n,i))throw ha()},Kr(lk).k84=function(t,n,i,e){var r=Ib().t81(n,t),s=Ib().t81(i,t);e[0]=.5*s/(r+s),e[1]=.5*r/(r+s);var o=t.f80_1;o[0]=o[0]+(e[0]*n.f80_1[0]+e[1]*i.f80_1[0]);var u=t.f80_1;u[1]=u[1]+(e[0]*n.f80_1[1]+e[1]*i.f80_1[1]);var a=t.f80_1;a[2]=a[2]+(e[0]*n.f80_1[2]+e[1]*i.f80_1[2])},Kr(lk).l84=function(t,n,i,e,r,s){var o=ms(Array(4),null),u=new Float32Array(4),a=new Float32Array(2),h=new Float32Array(2);o[0]=i.e80_1,o[1]=e.e80_1,o[2]=r.e80_1,o[3]=s.e80_1,n.f80_1[2]=0,n.f80_1[1]=n.f80_1[2],n.f80_1[0]=n.f80_1[1],this.k84(n,i,e,a),this.k84(n,r,s,h);var _=a.length;Ss(a,u,0,0,_);var l=h.length;Ss(h,u,2,0,l),this.i84(t,n,o,u,!0)},Kr(lk).g84=function(t,n){var i=ak(0,n),e=n.c7y_1,r=i.c7y_1;if(Ib().o81(ws(e.o7z_1),ws(r.o7z_1))){var s=Ib(),o=r.l7z_1;if(s.j81(ws(null==o?null:o.o7z_1),ws(e.o7z_1),ws(r.o7z_1))>0)return!1;if(Ib().q81(ws(e.o7z_1),ws(r.o7z_1))){if(e.o7z_1!==r.o7z_1){var u=t.a7x_1;if(null==u);else{var a=e.o7z_1;u.s82(ws(null==a?null:a.i80_1))}var h=r.l7z_1;this.j84(t,ws(null==h?null:h.n7z_1),e)}}else{Tb().y7z(ws(r.l7z_1));var _=Tb(),l=r.l7z_1;if(!_.a80(e,ws(null==l?null:l.n7z_1)))throw ha();i.h7y_1=!0,n.h7y_1=i.h7y_1}}else{var f=Ib(),c=e.l7z_1;if(f.j81(ws(null==c?null:c.o7z_1),ws(r.o7z_1),ws(e.o7z_1))<0)return!1;n.h7y_1=!0;var v=hk(0,n);null==v||(v.h7y_1=n.h7y_1),Tb().y7z(ws(e.l7z_1));var w=Tb(),d=r.l7z_1;if(!w.a80(ws(null==d?null:d.n7z_1),e))throw ha()}return!0},Kr(lk).m84=function(t){var n=ak(0,t),i=t.c7y_1,e=n.c7y_1,r=Ib(),s=i.l7z_1,o=ws(null==s?null:s.o7z_1),u=e.l7z_1;if(r.o81(o,ws(null==u?null:u.o7z_1))){var a=Ib(),h=i.l7z_1,_=ws(null==h?null:h.o7z_1),l=e.l7z_1;if(a.j81(_,ws(null==l?null:l.o7z_1),ws(i.o7z_1))<0)return!1;t.h7y_1=!0;var f=hk(0,t);null==f||(f.h7y_1=t.h7y_1);var c=Tb().y7z(i);if(!Tb().a80(ws(e.l7z_1),c))throw ha();var v=c.p7z_1;null==v||(v.i7z_1=t.f7y_1)}else{var w=Ib(),d=e.l7z_1,p=ws(null==d?null:d.o7z_1),m=i.l7z_1;if(w.j81(p,ws(null==m?null:m.o7z_1),ws(e.o7z_1))>0)return!1;n.h7y_1=!0,t.h7y_1=n.h7y_1;var g=Tb().y7z(e);if(!Tb().a80(ws(i.n7z_1),ws(e.l7z_1)))throw ha();var $=g.l7z_1,y=null==$?null:$.p7z_1;null==y||(y.i7z_1=t.f7y_1)}return!0},Kr(lk).n84=function(t,n){var i=n,e=ak(0,i),r=i.c7y_1,s=e.c7y_1,o=ws(r.o7z_1),u=ws(s.o7z_1),a=r.l7z_1,h=ws(null==a?null:a.o7z_1),_=s.l7z_1,l=ws(null==_?null:_.o7z_1),f=new qb;if(o===u)return!1;if(bo(o.h80_1,h.h80_1)>yo(u.h80_1,l.h80_1))return!1;if(Ib().o81(o,u)){if(Ib().j81(l,o,u)>0)return!1}else if(Ib().j81(h,u,o)<0)return!1;Ib().n81(h,o,l,u,f),Ib().o81(f,ws(t.b7x_1))&&(f.g80_1=ws(t.b7x_1).g80_1,f.h80_1=ws(t.b7x_1).h80_1);var c=Ib().o81(o,u)?o:u;if(Ib().o81(c,f)&&(f.g80_1=c.g80_1,f.h80_1=c.h80_1),Ib().q81(f,o)||Ib().q81(f,u))return this.g84(t,i),!1;if(!Ib().q81(h,ws(t.b7x_1))&&Ib().j81(h,ws(t.b7x_1),f)>=0||!Ib().q81(l,ws(t.b7x_1))&&Ib().j81(l,ws(t.b7x_1),f)<=0){if(l===t.b7x_1){if(Tb().y7z(ws(r.l7z_1)),!Tb().a80(ws(s.l7z_1),r))throw ha();r=ak(0,i=ws(this.y83(i))).c7y_1,this.e84(ak(0,i),e);var v=i,w=r.l7z_1;return this.f84(t,v,ws(null==w?null:w.n7z_1),r,r,!0),!0}if(h===t.b7x_1){Tb().y7z(ws(s.l7z_1));var d=Tb(),p=ws(r.n7z_1),m=s.l7z_1;if(!d.a80(p,ws(null==m?null:m.n7z_1)))throw ha();e=i;var g=ak(0,i=this.z83(i)).c7y_1.l7z_1,$=null==g?null:g.m7z_1,y=e,b=s.l7z_1;y.c7y_1=ws(null==b?null:b.n7z_1),s=this.e84(e,null);var k=i,j=ws(s.m7z_1),x=r.l7z_1;return this.f84(t,k,j,null==x?null:x.m7z_1,$,!0),!0}if(Ib().j81(h,ws(t.b7x_1),f)>=0){i.h7y_1=!0;var z=hk(0,i);null==z||(z.h7y_1=i.h7y_1),Tb().y7z(ws(r.l7z_1));var E=r.o7z_1;null==E||(E.g80_1=ws(t.b7x_1).g80_1);var C=r.o7z_1;null==C||(C.h80_1=ws(t.b7x_1).h80_1)}if(Ib().j81(l,ws(t.b7x_1),f)<=0){e.h7y_1=!0,i.h7y_1=e.h7y_1,Tb().y7z(ws(s.l7z_1));var S=s.o7z_1;null==S||(S.g80_1=ws(t.b7x_1).g80_1);var q=s.o7z_1;null==q||(q.h80_1=ws(t.b7x_1).h80_1)}return!1}Tb().y7z(ws(r.l7z_1)),Tb().y7z(ws(s.l7z_1));var O=Tb(),I=s.l7z_1;if(!O.a80(ws(null==I?null:I.n7z_1),r))throw ha();var A=r.o7z_1;null==A||(A.g80_1=f.g80_1);var T=r.o7z_1;null==T||(T.h80_1=f.h80_1);var D=r.o7z_1;null==D||(D.i80_1=ws(t.a7x_1).q82(r.o7z_1)),this.l84(t,ws(r.o7z_1),o,h,u,l),e.h7y_1=!0,i.h7y_1=e.h7y_1;var M=hk(0,i);return null==M||(M.h7y_1=i.h7y_1),!1},Kr(lk).h84=function(t,n){for(var i=n,e=ak(0,i);;){for(;e.h7y_1;)i=e,e=ak(0,e);if(!i.h7y_1){e=i;var r=hk(0,i);if(null==r)return rs();if(!(i=r).h7y_1)return rs()}i.h7y_1=!1;var s,o=i.c7y_1,u=e.c7y_1,a=o.l7z_1,h=null==a?null:a.o7z_1,_=u.l7z_1;if(h!==(null==_?null:_.o7z_1)&&this.m84(i))if(e.i7y_1){if(this.w83(e),!Tb().b82(u))throw ha();u=(e=ak(0,i)).c7y_1}else if(i.i7y_1){if(this.w83(i),!Tb().b82(o))throw ha();o=(i=ws(hk(0,e))).c7y_1}if(o.o7z_1!==u.o7z_1){var l,f=o.l7z_1,c=null==f?null:f.o7z_1,v=u.l7z_1;if(c===(null==v?null:v.o7z_1)||i.i7y_1||e.i7y_1)l=!1;else{var w,d=o.l7z_1;if((null==d?null:d.o7z_1)===t.b7x_1)w=!0;else{var p=u.l7z_1;w=(null==p?null:p.o7z_1)===t.b7x_1}l=w}if(l){if(this.n84(t,i))return rs()}else this.g84(t,i)}if(o.o7z_1===u.o7z_1){var m=o.l7z_1,g=null==m?null:m.o7z_1,$=u.l7z_1;s=g===(null==$?null:$.o7z_1)}else s=!1;if(s){if(uk(0,u,o),this.w83(i),!Tb().b82(o))throw ha();i=ws(hk(0,e))}}},Kr(lk).o84=function(t,n,i){var e,r=n,s=i,o=ws(s.m7z_1),u=ak(0,r),a=r.c7y_1,h=u.c7y_1,_=!1,l=a.l7z_1,f=null==l?null:l.o7z_1,c=h.l7z_1;if(f!==(null==c?null:c.o7z_1)&&this.n84(t,r),Ib().q81(ws(a.o7z_1),ws(t.b7x_1))){var v=Tb(),w=o.l7z_1;if(!v.a80(ws(null==w?null:w.n7z_1),a))throw ha();o=ak(0,r=ws(this.y83(r))).c7y_1,this.e84(ak(0,r),u),_=!0}if(Ib().q81(ws(h.o7z_1),ws(t.b7x_1))){var d=Tb(),p=s,m=h.l7z_1;if(!d.a80(p,ws(null==m?null:m.n7z_1)))throw ha();s=this.e84(u,null),_=!0}if(_)return this.f84(t,r,ws(s.m7z_1),o,o,!0),rs();if(Ib().o81(ws(h.o7z_1),ws(a.o7z_1))){var g=h.l7z_1;e=ws(null==g?null:g.n7z_1)}else e=a;var $=e,y=Tb(),b=s.m7z_1;$=y.d82(ws(null==b?null:b.l7z_1),$),this.f84(t,r,$,$.m7z_1,$.m7z_1,!1);var k=$.l7z_1,j=null==k?null:k.q7z_1;null==j||(j.i7y_1=!0),this.h84(t,r)},Kr(lk).p84=function(t,n,i){var e=n,r=e.c7y_1;if(Ib().q81(ws(r.o7z_1),i))return this.j84(t,r,ws(i.d80_1)),rs();var s=Ib(),o=r.l7z_1;if(!s.q81(ws(null==o?null:o.o7z_1),i)){if(Tb().y7z(ws(r.l7z_1)),e.i7y_1){if(!Tb().b82(ws(r.m7z_1)))throw ha();e.i7y_1=!1}if(!Tb().a80(ws(i.d80_1),r))throw ha();return this.q84(t,i),rs()}var u=ak(0,e=this.z83(e)),a=ws(u.c7y_1.l7z_1),h=a.m7z_1,_=h;if(u.i7y_1){if(this.w83(u),!Tb().b82(a))throw ha();var l=null==_?null:_.l7z_1;a=ws(null==l?null:l.n7z_1)}if(!Tb().a80(ws(i.d80_1),a))throw ha();Ib().r81(ws(_))||(_=null),this.f84(t,e,ws(a.m7z_1),h,_,!0)},Kr(lk).r84=function(t,n){var i=n.d80_1,e=new vb(ws(null==i?null:i.l7z_1)),r=pb().w7y(pb().b7z(ws(t.z7w_1),e)),s=r instanceof vb?r:Wr(),o=ak(0,s),u=s.c7y_1,a=o.c7y_1,h=Ib(),_=u.l7z_1;if(0===h.j81(ws(null==_?null:_.o7z_1),n,ws(u.o7z_1)))return this.p84(t,s,n),rs();var l=Ib(),f=a.l7z_1,c=ws(null==f?null:f.o7z_1),v=u.l7z_1,w=l.o81(c,ws(null==v?null:v.o7z_1))?s:o;if(s.f7y_1||w.i7y_1){var d;if(w===s){var p=Tb(),m=n.d80_1;d=p.d82(ws(null==m?null:m.l7z_1),ws(u.n7z_1))}else{var g=Tb(),$=a.l7z_1,y=null==$?null:$.m7z_1,b=g.d82(ws(null==y?null:y.l7z_1),ws(n.d80_1));d=ws(b.l7z_1)}var k=d;if(w.i7y_1){if(!this.x83(w,k))throw ha()}else this.c84(t,this.a84(t,s,k));this.q84(t,n)}else this.f84(t,s,ws(n.d80_1),n.d80_1,null,!0)},Kr(lk).q84=function(t,n){t.b7x_1=n;for(var i=ws(n.d80_1);null==i.q7z_1;)if((i=ws(i.m7z_1))===n.d80_1)return this.r84(t,n),rs();var e=ws(this.y83(ws(i.q7z_1))),r=ak(0,e),s=r.c7y_1,o=this.e84(r,null);o.m7z_1===s?this.o84(t,e,o):this.f84(t,e,ws(o.m7z_1),s,s,!0)},Kr(lk).s84=function(t,n){var i=Tb().z7z(ws(t.s7w_1)),e=i.o7z_1;null==e||(e.g80_1=4e150);var r=i.o7z_1;null==r||(r.h80_1=n);var s=i.l7z_1,o=null==s?null:s.o7z_1;null==o||(o.g80_1=-4e150);var u=i.l7z_1,a=null==u?null:u.o7z_1;null==a||(a.h80_1=n);var h=t,_=i.l7z_1;h.b7x_1=null==_?null:_.o7z_1;var l=new vb(i);l.e7y_1=0,l.f7y_1=!1,l.i7y_1=!1,l.g7y_1=!0,l.h7y_1=!1,l.d7y_1=pb().n7y(ws(t.z7w_1),l)},Kr(lk).t84=function(t){var n=t,i=pb();n.z7w_1=i.l7y(t,new _k(t)),this.s84(t,-4e150),this.s84(t,4e150)},Kr(lk).u84=function(t){t:for(;;){var n=pb().w7y(pb().z7y(ws(t.z7w_1))),i=null==n||n instanceof vb?n:Wr();if(null==i)break t;var e=i;this.w83(e)}pb().m7y(ws(t.z7w_1))},Kr(lk).v84=function(t){for(var n=t.s7w_1,i=ws(null==n?null:n.u7z_1),e=ws(i.k7z_1);e!==i;){var r,s=ws(e.k7z_1),o=ws(e.n7z_1),u=Ib(),a=ws(e.o7z_1),h=e.l7z_1;if(u.q81(a,ws(null==h?null:h.o7z_1))){var _=e.n7z_1;r=!((null==_?null:_.n7z_1)===e)}else r=!1;if(r){if(this.j84(t,o,e),!Tb().b82(e))throw ha();o=ws((e=o).n7z_1)}if(o.n7z_1===e){if(o!==e&&(o!==s&&o!==s.l7z_1||(s=ws(s.k7z_1)),!Tb().b82(o)))throw ha();if(e!==s&&e!==s.l7z_1||(s=ws(s.k7z_1)),!Tb().b82(e))throw ha()}e=s}},Kr(lk).w84=function(t){t.a7x_1=Lb().n82();for(var n=ws(t.a7x_1),i=t.s7w_1,e=ws(null==i?null:i.s7z_1),r=ws(e.b80_1);r!==e;)r.i80_1=n.q82(r),r=ws(r.b80_1);if(!n.p82()){var s=t.a7x_1;return null==s||s.o82(),t.a7x_1=null,!1}return!0},Kr(lk).x84=function(t){var n=t.a7x_1;null==n||n.o82()},Kr(lk).y84=function(t){for(var n=ws(t.t7z_1.c7z_1);n!==t.t7z_1;){var i=ws(n.c7z_1),e=ws(n.e7z_1),r=e.n7z_1;if((null==r?null:r.n7z_1)===e&&(uk(0,ws(e.m7z_1),e),!Tb().b82(e)))return!1;n=i}return!0},Kr(lk).x80=function(t){if(t.y7w_1=!1,this.v84(t),!this.w84(t))return!1;this.t84(t);t:for(;;){var n=t.a7x_1,i=null==n?null:n.r82(),e=null==i||i instanceof qb?i:Wr();if(null==e)break t;var r=e;n:for(;;){var s=t.a7x_1,o=null==s?null:s.t82(),u=null==o||o instanceof qb?o:Wr();if(null==u||!Ib().q81(u,r))break n;var a=t.a7x_1,h=null==a?null:a.r82();u=h instanceof qb?h:Wr(),this.j84(t,ws(r.d80_1),ws(u.d80_1))}this.q84(t,r)}var _=t,l=pb().w7y(pb().z7y(ws(t.z7w_1)));return _.b7x_1=(l instanceof vb?l:Wr()).c7y_1.o7z_1,this.u84(t),this.x84(t),!!this.y84(ws(t.s7w_1))&&(Tb().a81(ws(t.s7w_1)),!0)},Kr(ck).z84=function(t){var n=ws(t.e7z_1);t:for(;;){var i=Ib(),e=n.l7z_1;if(!i.o81(ws(null==e?null:e.o7z_1),ws(n.o7z_1)))break t;var r=n.m7z_1;n=ws(null==r?null:r.l7z_1)}t:for(;;){var s=Ib(),o=ws(n.o7z_1),u=n.l7z_1;if(!s.o81(o,ws(null==u?null:u.o7z_1)))break t;n=ws(n.n7z_1)}for(var a=n.m7z_1,h=ws(null==a?null:a.l7z_1);n.n7z_1!==h;){var _=Ib(),l=n.l7z_1;if(_.o81(ws(null==l?null:l.o7z_1),ws(h.o7z_1))){t:for(;;){var f;if(h.n7z_1!==n){var c;if(Ib().r81(ws(h.n7z_1)))c=!0;else{var v=Ib(),w=ws(h.o7z_1),d=h.l7z_1,p=ws(null==d?null:d.o7z_1),m=h.n7z_1,g=null==m?null:m.l7z_1;c=v.j81(w,p,ws(null==g?null:g.o7z_1))<=0}f=c}else f=!1;if(!f)break t;var $=Tb().d82(ws(h.n7z_1),h);h=ws($.l7z_1)}var y=h.m7z_1;h=ws(null==y?null:y.l7z_1)}else{t:for(;;){var b;if(h.n7z_1!==n){var k,j=Ib(),x=n.m7z_1;if(j.s81(ws(null==x?null:x.l7z_1)))k=!0;else{var z=Ib(),E=n.l7z_1,C=ws(null==E?null:E.o7z_1),S=ws(n.o7z_1),q=n.m7z_1,O=null==q?null:q.l7z_1;k=z.j81(C,S,ws(null==O?null:O.o7z_1))>=0}b=k}else b=!1;if(!b)break t;var I=Tb(),A=n,T=n.m7z_1,D=I.d82(A,ws(null==T?null:T.l7z_1));n=ws(D.l7z_1)}n=ws(n.n7z_1)}}t:for(;;){var M=h.n7z_1;if((null==M?null:M.n7z_1)===n)break t;var N=Tb().d82(ws(h.n7z_1),h);h=ws(N.l7z_1)}},Kr(ck).y80=function(t){for(var n=ws(t.t7z_1.c7z_1);n!==t.t7z_1;){var i=ws(n.c7z_1);n.i7z_1&&this.z84(n),n=i}return!0},Kr(ck).z80=function(t,n,i){for(var e=ws(t.u7z_1.k7z_1);e!==t.u7z_1;){var r=ws(e.k7z_1),s=e.l7z_1,o=null==s?null:s.p7z_1,u=null==o?null:o.i7z_1,a=e.p7z_1;if(u!=(null==a?null:a.i7z_1))e.r7z_1=ws(e.p7z_1).i7z_1?n:0|-n;else if(i){if(!Tb().b82(e))return!1}else e.r7z_1=0;e=r}return!0},Kr(uj).ci=function(t){if(Kr($j).ci.call(this,t),!t.defaultPrevented)if("wheel"===t.type)t.preventDefault(),this.e88(t instanceof WheelEvent?t:Wr());else for(var n=jj().d88_1.d();n.e();){var i=n.f();Rs(i.t85_1,this.b88_1.i85_1)&&i.ci(t)}},Kr(uj).handleEvent=function(t){return this.ci(t)},Kr(uj).f88=function(t){var n=t;Rs(n,this.q86_1)||Rs(n,this.s86_1)?this.k88(t):Rs(n,this.r86_1)?this.j88(t):Rs(n,this.t86_1)?this.i88(t instanceof Cj?t:Wr()):Rs(n,this.u86_1)?this.h88(t instanceof Sj?t:Wr()):Rs(n,this.v86_1)&&this.g88(t)},Kr(uj).k88=function(t){this.b88_1.n88().g4v_1.f55()?this.m88(t):this.l88(t)},Kr(uj).l88=function(t){var n=t.v85_1,i=t.y85_1,e=t.z85_1;switch(n.l6_1){case 3:this.o88(),this.z86_1.q5l(0,0);break;case 4:var r=this.b88_1.n88().g4v_1,s=r.c52(),o=r.i5w(),u=Math.max(s,o),a=this.x86_1.t4z_1,h=Math.max(1,a),_=this.b88_1.n88().b52(h)*this.b88_1.n88().p4v_1,l=(e-this.z86_1.n4z_1)*_/u,f=-(i-this.z86_1.m4z_1)*_/u,c=Hh(this.x86_1.u4z_1),v=Math.sin(c),w=Hh(this.x86_1.u4z_1),d=Math.cos(w),p=this.x86_1.r4z_1;p.j4w_1=Gh(p.j4w_1,l*d-f*v),p.k4w_1=Gh(p.k4w_1,l*v+f*d),this.z86_1.q5l(i,e),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).m88=function(t){var n=t.v85_1,i=t.w85_1,e=t.x85_1,r=t.y85_1,s=t.z85_1;switch(n.l6_1){case 3:this.o88(),this.y86_1.q5l(i,e),this.z86_1.q5l(i,e);break;case 4:var o=this.z86_1.m4z_1,u=this.z86_1.n4z_1,a=this.y86_1.m4z_1+r,h=this.y86_1.n4z_1+s;this.z86_1.q5l(a,h),this.b88_1.n88().g50(this.x86_1,this.b88_1.r88(o,u),this.b88_1.r88(a,h)),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).j88=function(t){var n=t.v85_1,i=t.y85_1,e=t.z85_1;switch(n.l6_1){case 3:this.o88();break;case 4:var r=180*i/this.b88_1.i85_1.clientWidth,s=90*e/this.b88_1.i85_1.clientHeight;this.x86_1.u4z_1=Wh(this.w86_1.u4z_1,r),this.x86_1.v4z_1=Wh(this.w86_1.v4z_1,s),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).i88=function(t){var n=t.v85_1,i=t.s89();switch(n.l6_1){case 3:this.o88();break;case 4:0!==i&&(this.x86_1.t4z_1=this.w86_1.t4z_1/i,this.p88());break;case 6:case 5:this.q88()}},Kr(uj).h88=function(t){var n=t.v85_1,i=t.t8a();switch(n.l6_1){case 3:this.o88(),this.a87_1=0;break;case 4:this.x86_1.u4z_1=Jh(this.x86_1.u4z_1,i-this.a87_1),this.a87_1=i,this.p88();break;case 6:case 5:this.q88()}},Kr(uj).g88=function(t){var n=t.v85_1,i=t.z85_1;switch(n.l6_1){case 3:this.o88();break;case 4:var e=-90*i/this.b88_1.i85_1.clientHeight;this.x86_1.v4z_1=Wh(this.w86_1.v4z_1,e),this.p88();break;case 6:case 5:this.q88()}},Kr(uj).e88=function(t){var n=Ms(t.timeStamp);(n-this.b87_1|0)>500&&(this.b88_1.n88().f50(this.x86_1),this.b87_1=n);var i=t.deltaMode,e=1+(i===WheelEvent.DOM_DELTA_PIXEL?t.deltaY:i===WheelEvent.DOM_DELTA_LINE?20*t.deltaY:i===WheelEvent.DOM_DELTA_PAGE?200*t.deltaY:t.deltaY)/1e3,r=this.x86_1;r.t4z_1=r.t4z_1*e,this.p88()},Kr(uj).p88=function(){this.b88_1.n88().l50(this.x86_1),this.b88_1.c4v()},Kr(uj).o88=function(){var t=this.c87_1;this.c87_1=t+1|0,0===t&&(this.b88_1.n88().f50(this.w86_1),this.x86_1.n5k(this.w86_1))},Kr(uj).q88=function(){if(this.c87_1>0){var t=this.c87_1;this.c87_1=t-1|0}},Kr(aj).g8b=function(){this.z8a_1.u4z_1=Bh().s50_1,this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v()},Kr(aj).h8b=function(){this.z8a_1.u4z_1=Bh().s50_1,this.z8a_1.v4z_1=Bh().s50_1,this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v()},Kr(aj).f8b=function(t){if(this.a8b_1){var n=this.z8a_1.u4z_1,i=this.x8a_1*this.z8a_1.t4z_1;switch(t){case"panDown":n=Kh(n,Bh().v50_1);break;case"panLeft":n=Kh(n,Bh().t50_1);break;case"panRight":n=Yh(n,Bh().t50_1)}this.z8a_1.r4z_1.i5k(n,i,this.z8a_1.r4z_1),this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v(),window.setTimeout((e=this,(r=function(t){return e.f8b(t),rs()}).callableName="handlePan",r),50,t)}var e,r},Kr(aj).d8b=function(t){if(this.a8b_1){if("zoomIn"===t){var n=this.z8a_1;n.t4z_1=n.t4z_1*(1-this.w8a_1)}else if("zoomOut"===t){var i=this.z8a_1;i.t4z_1=i.t4z_1*(1+this.w8a_1)}this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v(),window.setTimeout((e=this,(r=function(t){return e.d8b(t),rs()}).callableName="handleZoom",r),50,t)}var e,r},Kr(aj).e8b=function(t){var n,i;this.a8b_1&&("tiltUp"===t?this.z8a_1.v4z_1=Jh(this.z8a_1.v4z_1,this.y8a_1):"tiltDown"===t&&(this.z8a_1.v4z_1=Wh(this.z8a_1.v4z_1,this.y8a_1)),this.u8a_1.n88().l50(this.z8a_1),this.u8a_1.c4v(),window.setTimeout((n=this,(i=function(t){return n.e8b(t),rs()}).callableName="handleTilt",i),50,t))},Kr(_j).t8b=function(t,n){var i=this.u8b(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(_j).ck=function(t,n){return this.t8b(null!=t&&bs(t,Fa)?t:Wr(),n)},Kr(_j).qj=function(){for(this.jj_1;;)try{var t=this.hj_1;if(0===t){this.ij_1=1;var n=this.s8b_1;return n instanceof Na?this.r8b_1.c4v():n instanceof Ra&&this.r8b_1.n88().f4v_1.f4x_1.w5y(this.s8b_1.v8b_1),rs()}if(1===t)throw this.kj_1}catch(t){throw t}},Kr(_j).u8b=function(t,n){var i=new _j(this.r8b_1,n);return i.s8b_1=t,i},Kr(cj).y8b=function(t){var n,i={alpha:!0,depth:!0,stencil:!1,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,preferLowPowerToHighPerformance:!1,failIfMajorPerformanceCaveat:!1},e=t.getContext("webgl",i),r=null==e?t.getContext("experimental-webgl",i):e;if(!(r instanceof WebGLRenderingContext))throw n=wx().v4w(wx().q4w_1,"WorldWindow","createContext","webglNotSupported"),cs(ss(n));return r},Kr(dj).u11=function(t,n){return this.z8b_1(t,n)},Kr(mj).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(mj).ck=function(t,n){return this.n1f(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(mj).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2,this.hj_1=1;var n=La().b4v_1,i=lj(this.j8c_1,null);if((t=n.x11(new dj(i),this))===Qo())return t;continue t;case 1:va();break;case 2:throw this.kj_1}}catch(t){var e=t;if(2===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},Kr(mj).o1f=function(t,n){var i=new mj(this.j8c_1,n);return i.k8c_1=t,i},Kr(gj).n8c=function(){return this.n88().f4v_1.e4x_1},Kr(gj).n88=function(){return this.k85_1},Kr(gj).o8c=function(){return this.o85_1},Kr(gj).i8b=function(t,n){var i,e,r={_v:this.l85_1.g2(t)};if(null==r._v){var s,o=new fj((i=this,e=r,function(t){t.worldWindow=i;var n=e._v,r=null==n?null:n.x8b_1;if(null==r);else for(var s=r.d();s.e();)s.f().handleEvent(t);return rs()}));this.l85_1.f4(t,o),s=o,r._v=s}r._v.x8b_1.n(n)||(r._v.x8b_1.z2(0,n),1===r._v.x8b_1.g()&&this.i85_1.addEventListener(t,r._v.w8b_1,!1))},Kr(gj).c4v=function(){this.s85_1=!0},Kr(gj).r88=function(t,n){var i=this.i85_1.getBoundingClientRect();return new hl(Js(t)-(i.left+this.i85_1.clientLeft),Js(n)-(i.top+this.i85_1.clientTop))},Kr(gj).p8c=function(t){return this.q8c(t.m4z_1,t.n4z_1)},Kr(gj).r8c=function(t,n,i,e,r){var s,o=new Ma,u=this.n88().n4v_1;if(u.sr())return o;if(0!==i&&0!==e){var a;a=Math.floor(t);var h,_=Ms(a),l=u.q4x_1,f=n+e;h=Math.ceil(f);var c,v=l-Ms(h)|0;c=Math.ceil(i);var w,d=Ms(c);w=Math.ceil(e),s=new cl(_,v,d,Ms(w))}else s=new cl(es(t)-1|0,(u.q4x_1-es(n)|0)-1|0,3,3);var p=s;if(!p.g5n(u))return o;if(this.q85_1.j52_1=o,this.q85_1.l52_1=p,r){var m=p.n4x_1+p.p4x_1/2,g=p.o4x_1+p.q4x_1/2;if(u.h5n(m,g)){var $=$_();this.n88().i50(m,u.q4x_1-g,$)&&(this.q85_1.m52_1=new hl(m,g),this.q85_1.n52_1=$)}}return this.q85_1.o52_1=!0,this.s8c(),o},Kr(gj).q8c=function(t,n,i,e,r,s){return i=i===Xr?0:i,e=e===Xr?0:e,r=r===Xr||r,s===Xr?this.r8c(t,n,i,e,r):s.r8c.call(this,t,n,i,e,r)},Kr(gj).w4y=function(){window.cancelAnimationFrame(this.r85_1),this.n88().x1g()},Kr(gj).a8c=function(){this.n88().f4v_1.d3(),this.n88().s4x(),this.n88().p4w(window.devicePixelRatio),this.j85_1.getExtension("WEBGL_depth_texture");var t,n,i=this.n8c();wa(i,Xr,Xr,(t=new mj(this,null),(n=function(n,i){return t.n1f(n,i)}).$arity=1,n)),this.c4v(),this.l8c()},Kr(gj).l8c=function(){this.t8c();var t,n=window;this.r85_1=n.requestAnimationFrame((t=this,function(n){return t.l8c(),rs()}))},Kr(gj).t8c=function(){if(this.u8c(),!this.s85_1)return rs();this.s85_1=!1,this.s8c()},Kr(gj).s8c=function(){var t=this.q85_1.o52_1;try{t||this.v8c((hj(),jr)),(this.n88().d52(this.q85_1)||t)&&this.c4v(),this.n88().r54(this.q85_1)}catch(t){if(!(t instanceof Ts))throw t;var n=t;wx().v4w(wx().q4w_1,"WorldWindow","drawFrame","Exception occurred during redrawing.\n"+n)}finally{this.q85_1.s55(),t||this.v8c((hj(),kr))}},Kr(gj).u8c=function(){var t=this.j85_1.canvas.clientWidth*this.n88().p4v_1,n=es(t),i=this.j85_1.canvas.clientHeight*this.n88().p4v_1,e=es(i);(this.j85_1.canvas.width!==n||this.j85_1.canvas.height!==e||this.n88().n4v_1.sr())&&(this.j85_1.canvas.width=n,this.j85_1.canvas.height=e,this.n88().y4y(this.j85_1.drawingBufferWidth,this.j85_1.drawingBufferHeight),this.c4v())},Kr(gj).v8c=function(t){for(var n=this.p85_1.d();n.e();){var i=n.f();try{i(this,t)}catch(t){if(!(t instanceof Ts))throw t;var e=t;wx().j5y(wx().q4w_1,"Exception calling redraw callback.\n"+e)}}return rs()},Kr($j).ci=function(t){var n=0,i=this.c88_1.g()-1|0;if(n<=i)t:do{var e=n;if(n=n+1|0,this.c88_1.h(e).handleEvent(t),t.defaultPrevented)break t}while(n<=i)},Kr($j).handleEvent=function(t){return this.ci(t)},Kr(yj).x1g=function(){Kr(zj).x1g.call(this),this.v8d_1.d3(),this.y8d()},Kr(yj).z8d=function(t){if(!this.v85_1.equals(Jl()))return rs();this.r8d_1!==t.button?this.x8d(Xl()):(this.v8d_1.a(new xj(this.w85_1,this.x85_1)),this.a8e(this.t8d_1))},Kr(yj).b8e=function(t){if(!this.v85_1.equals(Jl()))return rs();var n=this.y85_1,i=this.z85_1,e=n*n+i*i;Math.sqrt(e)>this.s8d_1*window.devicePixelRatio&&this.x8d(Xl())},Kr(yj).c8e=function(t){return this.v85_1.equals(Jl())?0!==this.a86_1?rs():void(this.v8d_1.g()===this.q8d_1?(this.w85_1=this.v8d_1.h(0).d8e_1,this.x85_1=this.v8d_1.h(0).e8e_1,this.x8d(Zl())):this.a8e(this.u8d_1)):rs()},Kr(yj).f8e=function(t){if(!this.v85_1.equals(Jl()))return rs();this.x8d(Xl())},Kr(yj).a8e=function(t){var n=this.w8d_1;null==n||(window.clearTimeout(n),rs());var i,e=window;this.w8d_1=e.setTimeout((i=this,function(){return i.w8d_1=null,i.v85_1.equals(Jl())&&(i.x8d(Xl()),rs()),rs()}),t)},Kr(yj).y8d=function(){var t=this.w8d_1;null==t||(window.clearTimeout(t),rs(),rs()),this.w8d_1=null},Kr(bj).b8e=function(t){var n;this.v85_1.equals(Jl())?this.k8f()&&(this.j8f()?(this.i8f(),n=Ql()):n=Xl(),this.x8d(n)):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(tf())},Kr(bj).c8e=function(t){0===this.a86_1&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(ef()))},Kr(bj).f8e=function(t){this.v85_1.equals(Jl())&&this.x8d(Xl())},Kr(bj).k8f=function(){var t=this.y85_1,n=this.z85_1,i=t*t+n*n;return Math.sqrt(i)>this.y87_1*window.devicePixelRatio},Kr(bj).j8f=function(){return 1<0)return rs();var n=1<this.o8g_1*window.devicePixelRatio},Kr(Ej).j8f=function(){var t=this.m8g_1,n=this.n8g_1,i=this.l8f();return t<=i&&i<=n},Kr(Cj).s89=function(){return this.p89_1*this.q89_1},Kr(Cj).x1g=function(){Kr(zj).x1g.call(this),this.p89_1=1,this.q89_1=1,this.m89_1=0,this.r89_1.d3()},Kr(Cj).z8d=function(t){this.v85_1.equals(Jl())&&this.x8d(Xl())},Kr(Cj).f8e=function(t){if(this.r89_1.g()<2&&(this.r89_1.a(t),2===this.r89_1.g())){this.m89_1=this.p8g();this.q89_1=this.q89_1*this.p89_1,this.p89_1=1}},Kr(Cj).k8e=function(t){if(2===this.r89_1.g())if(this.v85_1.equals(Jl()))this.j8f()&&this.x8d(Ql());else if(this.v85_1.equals(Ql())||this.v85_1.equals(tf())){var n=this.p8g()/this.m89_1,i=Math.abs(n),e=this.o89_1;this.p89_1=this.p89_1*(1-e)+i*e,this.x8d(tf())}},Kr(Cj).m8e=function(t){this.r89_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(ef()))},Kr(Cj).l8e=function(t){this.r89_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(nf()))},Kr(Cj).j8e=function(){this.m89_1=this.p8g(),this.p89_1=1},Kr(Cj).j8f=function(){var t=this.p8g()-this.m89_1;return Math.abs(t)>this.n89_1*window.devicePixelRatio},Kr(Cj).p8g=function(){var t=this.r89_1.h(0),n=this.r89_1.h(1),i=t.o8f_1-n.o8f_1|0,e=t.p8f_1-n.p8f_1|0,r=Hr(i,i)+Hr(e,e)|0;return Math.sqrt(r)},Kr(Sj).t8a=function(){return this.q8a_1+this.r8a_1},Kr(Sj).x1g=function(){Kr(zj).x1g.call(this),this.q8a_1=0,this.r8a_1=0,this.n8a_1=0,this.s8a_1.d3()},Kr(Sj).z8d=function(t){this.v85_1.equals(Jl())&&this.x8d(Xl())},Kr(Sj).f8e=function(t){if(this.s8a_1.g()<2&&(this.s8a_1.a(t),2===this.s8a_1.g())){this.n8a_1=this.q8g();this.r8a_1=this.r8a_1+this.q8a_1,this.q8a_1=0}},Kr(Sj).k8e=function(t){if(2===this.s8a_1.g())if(this.v85_1.equals(Jl()))this.j8f()&&this.x8d(Ql());else if(this.v85_1.equals(Ql())||this.v85_1.equals(tf())){var n=this.q8g(),i=Bh().r5h(n-this.n8a_1),e=this.p8a_1;this.q8a_1=this.q8a_1*(1-e)+i*e,this.x8d(tf())}},Kr(Sj).m8e=function(t){this.s8a_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(ef()))},Kr(Sj).l8e=function(t){this.s8a_1.b3(t),0===this.l8f()&&(this.v85_1.equals(Jl())?this.x8d(Xl()):(this.v85_1.equals(Ql())||this.v85_1.equals(tf()))&&this.x8d(nf()))},Kr(Sj).j8e=function(){this.n8a_1=this.q8g(),this.q8a_1=0},Kr(Sj).j8f=function(){this.q8a_1=Bh().r5h(this.q8g()-this.n8a_1);var t=this.q8a_1;return Math.abs(t)>this.o8a_1},Kr(Sj).q8g=function(){var t,n=this.s8a_1.h(0),i=this.s8a_1.h(1),e=n.o8f_1-i.o8f_1|0,r=n.p8f_1-i.p8f_1|0,s=Bh(),o=r,u=e;return t=Math.atan2(o,u),s.p5h(t)},Kr(Ij).j8f=function(){return!!Kr(bj).j8f.call(this)&&this.l8i_1.b8h_1},Kr(Aj).j8f=function(){return!!Kr(Ej).j8f.call(this)&&this.j8j_1.b8h_1},Kr(Tj).o8h=function(){this.a8h_1=!1,this.b8h_1=!1},Kr(Dj).x1g=function(){Kr(zj).x1g.call(this),this.j8k_1.d3(),this.l8k()},Kr(Dj).z8d=function(t){if(!this.v85_1.equals(Jl()))return rs();this.x8d(Xl())},Kr(Dj).f8e=function(t){if(!this.v85_1.equals(Jl()))return rs();if(this.l8f()>this.f8k_1)this.x8d(Xl());else if(1===this.l8f())this.j8k_1.a(new Pj(this.l8f(),this.w85_1,this.x85_1)),this.a8e(this.h8k_1);else{var n=this.j8k_1.h(this.j8k_1.g()-1|0);n.n8f_1=this.l8f(),n.o8f_1=this.w85_1,n.p8f_1=this.x85_1}},Kr(Dj).k8e=function(t){if(!this.v85_1.equals(Jl()))return rs();var n=this.y85_1,i=this.z85_1,e=n*n+i*i;Math.sqrt(e)>this.g8k_1*window.devicePixelRatio&&this.x8d(Xl())},Kr(Dj).m8e=function(t){if(!this.v85_1.equals(Jl()))return rs();if(0!==this.l8f())return rs();var n=this.j8k_1.g();this.j8k_1.h(n-1|0).n8f_1!==this.f8k_1?this.x8d(Xl()):n===this.e8k_1?(this.w85_1=this.j8k_1.h(0).o8f_1,this.x85_1=this.j8k_1.h(0).p8f_1,this.x8d(Zl())):this.a8e(this.i8k_1)},Kr(Dj).l8e=function(t){if(!this.v85_1.equals(Jl()))return rs();this.x8d(Xl())},Kr(Dj).a8e=function(t){var n=this.k8k_1;null==n||(window.clearTimeout(n),rs());var i,e=window;this.k8k_1=e.setTimeout((i=this,function(){return i.k8k_1=null,i.v85_1.equals(Jl())&&(i.x8d(Xl()),rs()),rs()}),t)},Kr(Dj).l8k=function(){var t,n=this.k8k_1;null==n?t=null:(window.clearTimeout(n),rs(),t=rs());var i=t;return this.k8k_1=null,i},Kr(Rj).k8f=function(){var t=0,n=this.l8f();if(tthis.o8g_1)return!0}while(tthis.n8l_1*window.devicePixelRatio)return!1;var s=t.p8l()-n.p8l()|0,o=t.q8l()-n.q8l()|0,u=Hr(s,s)+Hr(o,o)|0;if(Math.sqrt(u)>this.o8l_1*window.devicePixelRatio)return!1;Nj(),Nj();return!(0==(12&this.r8l(t)&this.r8l(n)&12))},Kr(Rj).r8l=function(t){var n=t.p8l(),i=t.q8l(),e=0;if(Vu(n)>Vu(i)){var r,s=e;n<0?(Nj(),r=1):r=0;var o,u=e=s|r;n>0?(Nj(),o=2):o=0,e=u|o}else{var a,h=e;i<0?(Nj(),a=4):a=0;var _,l=e=h|a;i>0?(Nj(),_=8):_=0,e=l|_}return e},Kr(Pj).p8l=function(){return this.o8f_1-this.q8f_1|0},Kr(Pj).q8l=function(){return this.p8f_1-this.r8f_1|0},Kr(Lj).s8l=function(t){return new Uj(t.href)},Kr(Lj).t6t=function(t){var n;try{n=this.s8l(new URL(t))}catch(t){if(t instanceof Ts){var i=t;throw wx().n5h(wx().q4w_1,"ElevationSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Kr(Uj).v8l=function(){var t=this.v6q_1;return null==t||bs(t,by)?t:Wr()},Kr(Uj).w8l=function(){return"string"==typeof this.u6q_1},Kr(Uj).x8l=function(){var t=this.u6q_1;return"string"==typeof t?t:Wr()},Kr(Uj).toString=function(){return"string"==typeof this.u6q_1?"URL: "+ss(this.u6q_1):Kr(ry).toString.call(this)},Kr(Hj).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=rs(),i.kj_1=null,i.qj()},Kr(Hj).ck=function(t,n){return this.n1f(null!=t&&bs(t,Xo)?t:Wr(),n)},Kr(Hj).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=8,this.k8m_1=this.g8m_1.x8l(),this.ij_1=7,this.hj_1=1,(t=da(fetch(this.k8m_1),this))===Qo())return t;continue t;case 1:if(this.l8m_1=t,this.l8m_1.ok){if(this.hj_1=2,(t=da(this.l8m_1.arrayBuffer(),this))===Qo())return t;continue t}this.h8m_1.o5z(this.i8m_1,"Elevations retrieval failed ("+this.l8m_1.statusText+"): "+this.k8m_1),this.hj_1=6;continue t;case 2:this.m8m_1=t,this.n8m_1=this.l8m_1.headers.get("Content-Type"),this.o8m_1=null;var n;if(ma(this.n8m_1,"image/bil",!0)||ma(this.n8m_1,"application/bil",!0)||ma(this.n8m_1,"application/bil16",!0))n=new Int16Array(this.m8m_1);else if(ma(this.n8m_1,"application/bil32",!0))n=new Float32Array(this.m8m_1);else{if(ma(this.n8m_1,"image/tiff",!0))throw new ga("An operation is not implemented: Implement Tiff parsing for JS");ma(this.n8m_1,"text/xml",!0)?(this.o8m_1="Elevations retrieval failed ("+this.l8m_1.statusText+"): "+this.k8m_1+".\n",pa().fromCharCode.apply(null,new Uint8Array(this.m8m_1)),n=null):(this.o8m_1="Elevations retrieval failed (Unexpected content type "+this.n8m_1+"): "+this.k8m_1,n=null)}if(this.p8m_1=n,null==this.p8m_1){this.q8m_1=null,this.hj_1=5;continue t}if(this.r8m_1=this.g8m_1.v8l(),null==this.r8m_1){this.s8m_1=null,this.hj_1=4;continue t}if(this.hj_1=3,(t=this.r8m_1.x7u(this.p8m_1,this))===Qo())return t;continue t;case 3:this.s8m_1=t,this.hj_1=4;continue t;case 4:var i=this.s8m_1;this.q8m_1=null==i?this.p8m_1:i,this.hj_1=5;continue t;case 5:var e,r=this.q8m_1,s=this.h8m_1.m5z(r);if(null==s?e=null:(this.h8m_1.n5z(this.i8m_1,s,"Elevation retrieval succeeded: "+this.k8m_1),e=rs()),null==e){var o=this.o8m_1;this.h8m_1.o5z(this.i8m_1,null==o?"Elevations retrieval failed: "+this.k8m_1:o)}this.hj_1=6;continue t;case 6:this.ij_1=8,this.hj_1=9;continue t;case 7:if(this.ij_1=8,this.kj_1 instanceof Error){var u=this.kj_1;this.h8m_1.o5z(this.i8m_1,"Elevations retrieval failed ("+u.message+"): "+this.k8m_1),this.hj_1=9;continue t}throw this.kj_1;case 8:throw this.kj_1;case 9:return this.ij_1=8,rs()}}catch(t){var a=t;if(8===this.ij_1)throw a;this.hj_1=this.ij_1,this.kj_1=a}},Kr(Hj).o1f=function(t,n){var i=new Hj(this.g8m_1,this.h8m_1,this.i8m_1,n);return i.j8m_1=t,i},Kr(Vj).w5w=function(){ya(this.l5z_1.ok()),Kr(lf).w5w.call(this)},Kr(Vj).t5y=function(t,n,i,e){var r,s,o=this.d5y_1.o6w(n,i,e);o.w8l()?wa(this.l5z_1,Xr,Xr,(r=new Hj(o,this,t,null),(s=function(t,n){return r.n1f(t,n)}).$arity=1,s)):this.o5z(t,"Unsupported elevation source type")},Kr(Vj).m5z=function(t){var n,i=t;if(i instanceof Int16Array){for(var e=0,r=t.length,s=new Int16Array(r);e=this.d4x_1||this.g4x_1.n(t)||this.f4x_1.u5y(t.hashCode())||(t.j8p()?this.h8p(t,n,t.i8p().n16_1):t.w8l()?this.h8p(t,n,t.x8l()):t.e8p()&&(this.g4x_1.a(t),wa(this.e4x_1,Xr,Xr,(u=new nx(t,this,n,null),(a=function(t,n){return u.n1f(t,n)}).$arity=1,a)))),null;var u,a},Kr(sx).z6v=function(t,n){var i,e;wa(this.e4x_1,Xr,Xr,(i=new ix(n,t,null),(e=function(t,n){return i.n1f(t,n)}).$arity=1,e))},Kr(sx).h8p=function(t,n,i){var e,r,s=new Image;s.onload=rx(t,{_v:!1},this,n,s),s.onerror=(e=this,r=t,function(t,n,i,s,o){return e.d8o(r),rs()}),this.g4x_1.a(t),s.crossOrigin="anonymous",s.src=i},Kr(sx).c8p=function(t,n){if(0===n.width||0===n.height){var i=null!=t&&t.a7i_1>0?n.width/t.a7i_1|0:0,e=null!=t&&t.b7i_1>0?n.height/t.b7i_1|0:0,r=e>i?e:i;r>0&&(n.width=n.width/r|0,n.height=n.height/r|0)}else null!=t&&t.a7i_1>0&&t.b7i_1>0&&(n.width=t.a7i_1,n.height=t.b7i_1);var s=new fx(n);return Rs(null==t?null:t.y7h_1,n$())&&(s.m57(Tk(),Dk()),s.m57(Mk(),Dk())),Rs(null==t?null:t.z7h_1,r$())&&(s.m57(Nk(),Rk()),s.m57(Pk(),Rk())),s},Kr(sx).c8o=function(t,n,i){var e=this.c8p(n,i);this.h5h(t,e,e.u7g()),this.g4x_1.b3(t),this.f4x_1.w5y(t.hashCode()),La().c4v(),wx().t8m(wx().t4w_1)&&wx().j5y(wx().t4w_1,"Image retrieval succeeded: "+t)},Kr(sx).d8o=function(t){this.g4x_1.b3(t),this.f4x_1.y5y(t.hashCode()),wx().j5y(wx().r4w_1,"Image retrieval failed: "+t)},Kr(ox).t7g=function(t,n){return!0===(null==t?null:Zo(t)>0)?new ux(this.k8p(t,n)):null},Kr(ox).k8p=function(t,n){var i,e,r=document.createElement("canvas"),s=r instanceof HTMLCanvasElement?r:Wr(),o=s.getContext("2d"),u=o instanceof CanvasRenderingContext2D?o:Wr(),a=this.l8p(u,t,n),h=ja(t,["\n"]),_=n.o6j_1?n.n6j_1/2:0,l=a.m4z_1*this.r7g_1.y52_1;i=Math.ceil(l),s.width=Ms(i);var f=a.n4z_1*this.r7g_1.y52_1;e=Math.ceil(f),s.height=Ms(e),u.scale(this.r7g_1.y52_1,this.r7g_1.y52_1),u.font=n.r6j_1.toString(),u.textBaseline="bottom",u.textAlign=n.r6j_1.y7t_1,u.fillStyle=n.s6j_1.z7d(),u.strokeStyle=n.u6j_1.z7d(),u.lineWidth=n.n6j_1,u.lineCap="round",u.lineJoin="round";var c=n.r6j_1.y7t_1;Rs(c,"left")?u.translate(_,0):Rs(c,"right")?u.translate(a.m4z_1-_,0):u.translate(a.m4z_1/2,0);var v=0,w=h.g()-1|0;if(v<=w)do{var d=v;v=v+1|0;var p=h.h(d);u.translate(0,n.r6j_1.t7t_1*(1+this.s7g_1)+_),n.o6j_1&&u.strokeText(p,0,0),u.fillText(p,0,0)}while(v<=w);return s},Kr(ox).l8p=function(t,n,i){0===Zo(n)&&al(),t.font=i.r6j_1.toString();var e=ja(n,["\n"]),r=e.g()*(i.r6j_1.t7t_1*(1+this.s7g_1)),s=0,o=0,u=e.g()-1|0;if(o<=u)do{var a=o;o=o+1|0,s=yo(s,t.measureText(e.h(a)).width)}while(o<=u);return i.o6j_1&&(s+=i.n6j_1,r+=i.n6j_1),new hl(s,r)},Kr(ux).y7g=function(){return this.x8p_1},Kr(ux).e7h=function(t){try{t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);var n=t.t4x_1;(n instanceof px?n:Wr()).y8p_1.texImage2D(Gk(),0,this.e57_1,this.e57_1,this.f57_1,this.w8p_1),t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),this.y7g()&&t.t4x_1.g85(Gk())}catch(t){if(!(t instanceof Ts))throw t;var i=t;wx().n5h(wx().q4w_1,"Texture","loadTexImage","Exception attempting to load texture image '"+this.w8p_1+"'",i)}finally{this.w8p_1=null}},Kr(ax).i64=function(t){return new lx(t)},Kr(ax).s8l=function(t){return new lx(t.href)},Kr(ax).t6t=function(t){var n;try{n=this.s8l(new URL(t))}catch(t){if(t instanceof Ts){var i=t;throw wx().n5h(wx().q4w_1,"ImageSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Kr(lx).a8p=function(){var t=this.v6q_1;return null==t||bs(t,by)?t:Wr()},Kr(lx).j8p=function(){return this.u6q_1 instanceof Gr},Kr(lx).g8p=function(){return this.u6q_1 instanceof Image},Kr(lx).e8p=function(){var t=this.u6q_1;return bs(t,_x)},Kr(lx).w8l=function(){return"string"==typeof this.u6q_1},Kr(lx).i8p=function(){var t=this.u6q_1;return t instanceof Gr?t:Wr()},Kr(lx).f8p=function(){var t=this.u6q_1;return t instanceof Image?t:Wr()},Kr(lx).a8o=function(){var t=this.u6q_1;return bs(t,_x)?t:Wr()},Kr(lx).x8l=function(){var t=this.u6q_1;return"string"==typeof t?t:Wr()},Kr(lx).toString=function(){var t=this.u6q_1;return t instanceof Gr?"Resource: "+ss(this.u6q_1):t instanceof Image?"Image: "+ss(this.u6q_1):bs(t,_x)?"ImageFactory: "+ss(this.u6q_1):"string"==typeof t?"URL: "+ss(this.u6q_1):Kr(ry).toString.call(this)},Kr(fx).y7g=function(){return this.l8q_1},Kr(fx).e7h=function(t){try{t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);var n=t.t4x_1;(n instanceof px?n:Wr()).y8p_1.texImage2D(Gk(),0,this.e57_1,this.e57_1,this.f57_1,this.k8q_1),t.t4x_1.h85(WebGLRenderingContext.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),this.y7g()&&t.t4x_1.g85(Gk())}catch(t){if(!(t instanceof Ts))throw t;var i=t;wx().n5h(wx().q4w_1,"Texture","loadTexImage","Exception attempting to load texture image '"+this.k8q_1+"'",i)}finally{this.k8q_1=null}},Kr(cx).f6q=function(t,n){var i=t.onload;return(null==i?null:i(new Event("load")))instanceof ba||Wr(),t},Kr(cx).x7u=function(t,n){return this.f6q(t instanceof Image?t:Wr(),n)},Kr(vx).t8m=function(t){var n=this.q4w_1;return t>>0,e=arguments[1]>>0,r=e<0?Math.max(i+e,0):Math.min(e,i),s=arguments[2],o=void 0===s?i:s>>0,u=o<0?Math.max(i+o,0):Math.min(o,i);r>>0;return 0===n?32:31-(r(n)/s|0)|0})),void 0===Math.sign&&(Math.sign=function(t){return 0==(t=+t)||isNaN(t)?Number(t):t>0?1:-1}),void 0===Math.sinh){var o=Math.sqrt(2220446049250313e-31),u=Math.sqrt(o);Math.sinh=function(t){if(Math.abs(t)o&&(n+=t*t*t/6),n}var i=Math.exp(t),e=1/i;return isFinite(i)?isFinite(e)?(i-e)/2:-Math.exp(-t-Math.LN2):Math.exp(t-Math.LN2)}}void 0===String.prototype.startsWith&&Object.defineProperty(String.prototype,"startsWith",{value:function(t,n){return n=n||0,this.lastIndexOf(t,n)===n}}),void 0===Math.imul&&(Math.imul=function(t,n){return(4294901760&t)*(65535&n)+(65535&t)*(0|n)|0}),void 0===(e="function"==typeof(i=function(t){"use strict";var n,i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ft,ct,vt,wt,dt,pt,mt,gt,$t,yt,bt,kt,jt,xt,zt,Et,Ct,St=Math.imul,qt=ArrayBuffer.isView,Ot=Math.clz32;function It(t){return t===ie()?this:t.e6(this,Qi)}function At(t){return p_(this.r(),t)?pl(this,Zi)?this:z_():null}function Tt(t,n){return n(t,this)}function Dt(t){return p_(this.r(),t)?ie():this}function Mt(t,n){return Nt(t,n)>=0}function Nt(t,n){if(null==n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,null==t[r])return r}while(i<=e)}else{var s=0,o=t.length-1|0;if(s<=o)do{var u=s;if(s=s+1|0,p_(n,t[u]))return u}while(s<=o)}return-1}function Rt(t){var n;switch(t.length){case 0:throw jf("Array is empty.");case 1:n=t[0];break;default:throw nf("Array has more than one element.")}return n}function Pt(t){return t.length-1|0}function Lt(t,n){for(var i=t,e=0,r=i.length;e=0}function Ut(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Ht(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Vt(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function Bt(t,n,i,e,r,s,o){return n=n===jt?", ":n,i=i===jt?"":i,e=e===jt?"":e,r=r===jt?-1:r,s=s===jt?"...":s,o=o===jt?null:o,function(t,n,i,e,r,s,o,u){i=i===jt?", ":i,e=e===jt?"":e,r=r===jt?"":r,s=s===jt?-1:s,o=o===jt?"...":o,u=u===jt?null:u,n.b(e);var a=0,h=t,_=0,l=h.length;t:for(;_1&&n.b(i),!(s<0||a<=s))break t;Se(n,f,u)}return s>=0&&a>s&&n.b(o),n.b(r),n}(t,Ea(),n,i,e,r,s,o).toString()}function Yt(t){this.c_1=t}function Wt(t,n,i,e,r,s,o){return n=n===jt?", ":n,i=i===jt?"":i,e=e===jt?"":e,r=r===jt?-1:r,s=s===jt?"...":s,o=o===jt?null:o,Gt(t,Ea(),n,i,e,r,s,o).toString()}function Gt(t,n,i,e,r,s,o,u){i=i===jt?", ":i,e=e===jt?"":e,r=r===jt?"":r,s=s===jt?-1:s,o=o===jt?"...":o,u=u===jt?null:u,n.b(e);var a=0,h=t.d();t:for(;h.e();){var _=h.f();if((a=a+1|0)>1&&n.b(i),!(s<0||a<=s))break t;Se(n,_,u)}return s>=0&&a>s&&n.b(o),n.b(r),n}function Kt(t){if(pl(t,Ih)){var n;switch(t.g()){case 0:n=Bi();break;case 1:n=Do(pl(t,Oh)?t.h(0):t.d().f());break;default:n=nn(t,Mu(t.g()))}return n}return function(t){switch(t.g()){case 0:return Bi();case 1:return Do(t.d().f());default:return t}}(nn(t,Au()))}function Jt(t,n){if(pl(n,Ih)){var i=tu(t.g()+n.g()|0);return i.l(t),i.l(n),i}var e=nu(t);return vi(e,n),e}function Xt(t){return new un(t)}function Zt(t){if(pl(t,Ih)){var n;switch(t.g()){case 0:n=Kn();break;case 1:n=To(pl(t,Oh)?t.h(0):t.d().f());break;default:n=Qt(t)}return n}return Zn(en(t))}function Qt(t){return nu(t)}function tn(t){if(pl(t,Oh))return rn(t);var n=t.d();if(!n.e())throw jf("Collection is empty.");return n.f()}function nn(t,n){for(var i=t.d();i.e();){var e=i.f();n.a(e)}return n}function en(t){return pl(t,Ih)?Qt(t):nn(t,Qo())}function rn(t){if(t.m())throw jf("List is empty.");return t.h(0)}function sn(t){if(pl(t,Oh))return function(t){var n;switch(t.g()){case 0:throw jf("List is empty.");case 1:n=t.h(0);break;default:throw nf("List has more than one element.")}return n}(t);var n=t.d();if(!n.e())throw jf("Collection is empty.");var i=n.f();if(n.e())throw nf("Collection has more than one element.");return i}function on(t,n){return pl(t,Ih)?t.n(n):function(t,n){if(pl(t,Oh))return t.o(n);for(var i=0,e=t.d();e.e();){var r=e.f();if(No(i),p_(n,r))return i;i=i+1|0}return-1}(t,n)>=0}function un(t){this.p_1=t}function an(t){var n=Eh(t).toUpperCase();if(n.length>1){var i;if(p_(new qh(t),new qh(329)))i=n;else{var e=s_(n,0),r=n.substring(1).toLowerCase();i=Eh(e)+r}return i}return Eh(function(t){return function(t){var n=zh(t);return 452<=n&&n<=460||497<=n&&n<=499?ul(St(3,(n+1|0)/3|0)):4304<=n&&n<=4346||4349<=n&&n<=4351?t:Sa(t)}(t)}(t))}function hn(t,n){return n<=zo().MIN_VALUE?we().t_1:hl(t,n-1|0)}function _n(t,n,i){if(n.w(i)>0)throw nf("Cannot coerce value to an empty range: maximum "+d_(i)+" is less than minimum "+d_(n)+".");return t.w(n)<0?n:t.w(i)>0?i:t}function ln(t,n){return be().x(t,n,-1)}function fn(t,n){return tn?n:t}function vn(t,n,i){if(n>i)throw nf("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t}function wn(t,n){return new ji(t,n)}function dn(t){return Zn(function(t){return function(t,n){for(var i=t.d();i.e();){var e=i.f();n.a(e)}return n}(t,Qo())}(t))}function pn(t){return new mn(t)}function mn(t){this.c1_1=t}function gn(t){if(0===u_(t))throw jf("Char sequence is empty.");return s_(t,Le(t))}function $n(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));return yn(t,fn(t.length-n|0,0))}function yn(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));var i=cn(n,t.length);return t.substring(0,i)}function bn(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));var i=cn(n,t.length);return t.substring(i)}function kn(){var t,n=(pf(t=b_(y_(jn))),jn.call(t),t);return $_(n,kn),n}function jn(){$_(this,jn)}function xn(){}function zn(t){this.k1_1=t,this.j1_1=0}function En(){i=this}function Cn(){return null==i&&new En,i}function Sn(){Cn(),xn.call(this)}function qn(t){this.r1_1=t}function On(t){this.s1_1=t}function In(t,n){return n===t?"(this Map)":Hh(n)}function An(t,n){var i;t:{for(var e=t.q().d();e.e();){var r=e.f();if(p_(r.r(),n)){i=r;break t}}i=null}return i}function Tn(){e=this}function Dn(){return null==e&&new Tn,e}function Mn(t){this.w1_1=t,Fn.call(this)}function Nn(t){this.c2_1=t,xn.call(this)}function Rn(){Dn(),this.y1_1=null,this.z1_1=null}function Pn(){r=this}function Ln(){return null==r&&new Pn,r}function Fn(){Ln(),xn.call(this)}function Un(t,n){if(n<0)throw _f("Deque is too big.");if(n<=t.n2_1.length)return $o();if(t.n2_1===Wn().p2_1){var i,e=t;Wn();var r=fn(n,10);return i=Yh(Array(r),null),e.n2_1=i,$o()}!function(t,n){var i=Yh(Array(n),null);Po(t.n2_1,i,0,t.m2_1,t.n2_1.length),Po(t.n2_1,i,t.n2_1.length-t.m2_1|0,0,t.m2_1),t.m2_1=0,t.n2_1=i}(t,Wn().s2(t.n2_1.length,n))}function Hn(t,n){return n>=t.n2_1.length?n-t.n2_1.length|0:n}function Vn(t,n){return n===Pt(t.n2_1)?0:n+1|0}function Bn(t,n){return 0===n?Pt(t.n2_1):n-1|0}function Yn(){var t;s=this,t=[],this.p2_1=t,this.q2_1=2147483639,this.r2_1=10}function Wn(){return null==s&&new Yn,s}function Gn(){Wn(),this.m2_1=0,this.o2_1=0}function Kn(){return ii()}function Jn(t){return t.g()-1|0}function Xn(t){return hl(0,t.g()-1|0)}function Zn(t){switch(t.g()){case 0:return Kn();case 1:return To(t.h(0));default:return t}}function Qn(){o=this}function ti(){return null==o&&new Qn,o}function ni(){u=this,this.k3_1=new I_(-1478467534,-1720727600)}function ii(){return null==u&&new ni,u}function ei(t,n){this.o3_1=t,this.p3_1=n}function ri(t){return 0===t.length?Qo():nu(new ei(t,!0))}function si(t,n){this.s3_1=t,this.t3_1=n}function oi(t,n){return pl(t,Ih)?t.g():n}function ui(t){this.u3_1=t}function ai(t){this.v3_1=t,this.w3_1=0}function hi(){}function _i(){var t=(null==a&&new li,a);return pl(t,Mh)?t:z_()}function li(){a=this,this.y3_1=new I_(-888910638,1920087921)}function fi(t,n){return function(t,n){for(var i=n.d();i.e();){var e=i.f(),r=e.d4(),s=e.e4();t.f4(r,s)}}(n,t),n}function ci(t,n){for(var i=n,e=0,r=i.length;e=0))throw nf(d_("count must be non-negative, but was "+this.o5_1+"."))}function Ni(t){t.p5_1=-2===t.q5_1?t.r5_1.s5_1():t.r5_1.t5_1(x_(t.p5_1)),t.q5_1=null==t.p5_1?0:1}function Ri(t){this.r5_1=t,this.p5_1=null,this.q5_1=-2}function Pi(t,n){this.s5_1=t,this.t5_1=n}function Li(){h=this}function Fi(){return null==h&&new Li,h}function Ui(t){this.u5_1=t}function Hi(t){return t.d()}function Vi(t){return t}function Bi(){return Wi()}function Yi(){_=this,this.v5_1=new I_(1993859828,793161749)}function Wi(){return null==_&&new Yi,_}function Gi(){}function Ki(){l=this}function Ji(){return null==l&&new Ki,l}function Xi(){}function Zi(){}function Qi(t,n){var i,e=t.d6(n.r());if(e===ie())i=n;else{var r,s=e.y5(Ji());if(null==s)r=new oe(e,n);else{var o=e.d6(Ji());r=o===ie()?new oe(n,s):new oe(new oe(o,n),s)}i=r}return i}function te(){}function ne(){f=this,this.g6_1=new I_(0,0)}function ie(){return null==f&&new ne,f}function ee(t){for(var n=t,i=2;;){var e=n.h6_1,r=e instanceof oe?e:null;if(null==r)return i;n=r,i=i+1|0}}function re(t,n){return p_(t.y5(n.r()),n)}function se(t,n){return 0===u_(t)?d_(n):t+", "+n}function oe(t,n){this.h6_1=t,this.i6_1=n}function ue(t,n){this.z5_1=n;var i;i=t instanceof ue?t.a6_1:t,this.a6_1=i}function ae(t){this.j6_1=t}function he(){return function(){if(v)return $o();v=!0,c=new _e("COROUTINE_SUSPENDED",0),new _e("UNDECIDED",1),new _e("RESUMED",2)}(),c}function _e(t,n){Uh.call(this,t,n)}function le(t,n,i){var e;if(i>0)e=t>=n?n:n-fe(n,t,i)|0;else{if(!(i<0))throw nf("Step is zero.");e=t<=n?n:n+fe(t,n,0|-i)|0}return e}function fe(t,n,i){return ce(ce(t,i)-ce(n,i)|0,i)}function ce(t,n){var i=t%n|0;return i>=0?i:i+n|0}function ve(){w=this,this.t_1=new de(1,0)}function we(){return null==w&&new ve,w}function de(t,n){we(),ke.call(this,t,n,1)}function pe(){d=this,this.p6_1=new me(1,0)}function me(t,n){null==d&&new pe,xe.call(this,t,n,1)}function ge(t,n,i){di.call(this),this.w6_1=i,this.x6_1=n,this.y6_1=this.w6_1>0?t<=n:t>=n,this.z6_1=this.y6_1?t:this.x6_1}function $e(t,n,i){pi.call(this),this.a7_1=i;var e;e=zh(n),this.b7_1=e,this.c7_1=this.a7_1>0?jh(t,n)<=0:jh(t,n)>=0;var r;r=this.c7_1?zh(t):this.b7_1,this.d7_1=r}function ye(){p=this}function be(){return null==p&&new ye,p}function ke(t,n,i){if(be(),0===i)throw nf("Step must be non-zero.");if(i===zo().MIN_VALUE)throw nf("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.y_1=t,this.z_1=le(t,n,i),this.a1_1=i}function je(){m=this}function xe(t,n,i){if(null==m&&new je,0===i)throw nf("Step must be non-zero.");if(i===zo().MIN_VALUE)throw nf("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.t6_1=t;var e,r=zh(t);e=zh(n),this.u6_1=ul(le(r,e,i)),this.v6_1=i}function ze(){}function Ee(t,n){this.f7_1=t,this.g7_1=n}function Ce(){}function Se(t,n,i){null!=i?t.b(i(n)):null==n||kl(n)?t.b(n):n instanceof qh?t.k7(n.j7_1):t.b(Hh(n))}function qe(t,n,i){if(i=i!==jt&&i,p_(new qh(t),new qh(n)))return!0;if(!i)return!1;var e=Sa(t),r=Sa(n);return!!p_(new qh(e),new qh(r))||p_(new qh(s_(Eh(e).toLowerCase(),0)),new qh(s_(Eh(r).toLowerCase(),0)))}function Oe(t){return 0===u_(t)?Ae:(n=t,function(t){return n+t});var n}function Ie(t){var n;t:{var i=0,e=u_(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!qa(s_(t,r))){n=r;break t}}while(i<=e);n=-1}var s=n;return-1===s?t.length:s}function Ae(t){return t}function Te(t){return function(t,n){Oa(n);var i,e,r,s=t.length;if(0===s)return null;var o=s_(t,0);if(jh(o,48)<0){if(1===s)return null;if(i=1,p_(new qh(o),new qh(45)))e=!0,O_(),r=new I_(0,-2147483648);else{if(!p_(new qh(o),new qh(43)))return null;e=!1,O_(),r=new I_(-1,2147483647).l7()}}else i=0,e=!1,O_(),r=new I_(-1,2147483647).l7();O_();var u=new I_(-1,2147483647).l7().m7(new I_(36,0)),a=u,h=new I_(0,0),_=i;if(_bo().MAX_VALUE?null:el(e)}(t,10)}function Pe(t){return function(t,n){var i=Me(t,n);if(null==i)return null;var e=i;return ejo().MAX_VALUE?null:sl(e)}(t,10)}function Le(t){return u_(t)-1|0}function Fe(t,n,i,e){var r;if(i=i===jt?0:i,(e=e!==jt&&e)||"string"!=typeof t)r=Ye(t,Xh([n]),i,e);else{var s=t,o=Eh(n);r=s.indexOf(o,i)}return r}function Ue(t){return function(t,n,i,e){return wn(Ke(t,n,jt,i=i!==jt&&i,e=e===jt?0:e),(r=t,function(t){return Ge(r,t)}));var r}(t,["\r\n","\n","\r"])}function He(t,n,i){return Fe(t,n,jt,i=i!==jt&&i)>=0}function Ve(t,n,i,e){var r;if(i=i===jt?Le(t):i,(e=e!==jt&&e)||"string"!=typeof t)r=function(t,n,i,e){if(i=i===jt?Le(t):i,!(e=e!==jt&&e)&&1===n.length&&"string"==typeof t){var r=t,s=Eh(Rt(n));return r.lastIndexOf(s,i)}var o=cn(i,Le(t));if(0<=o)do{var u=o;o=o+-1|0;var a,h=s_(t,u);t:{for(var _=n,l=0,f=_.length;l0&&qe(s_(t,0),n,i)}function Ye(t,n,i,e){if(i=i===jt?0:i,!(e=e!==jt&&e)&&1===n.length&&"string"==typeof t){var r=t,s=Eh(Rt(n));return r.indexOf(s,i)}var o=fn(i,0),u=Le(t);if(o<=u)do{var a=o;o=o+1|0;var h,_=s_(t,a);t:{for(var l=n,f=0,c=l.length;f0,a=tu(u?cn(e,10):10);t:do{var h;if(h=d_(a_(t,r,s)),a.a(h),r=s+n.length|0,u&&a.g()===(e-1|0))break t;s=Ze(t,n,r,i)}while(-1!==s);return o=d_(a_(t,r,u_(t))),a.a(o),a}function Ge(t,n){return d_(a_(t,n.n6(),n.o6()+1|0))}function Ke(t,n,i,e,r){return i=i===jt?0:i,e=e!==jt&&e,Xe(r=r===jt?0:r),new nr(t,i,r,(s=Ml(n),o=e,function(t,n){var i=function(t,n,i,e,r){if(!e&&1===n.g()){var s=sn(n),o=r?er(t,s,i):Ze(t,s,i);return o<0?null:es(o,s)}var u=r?ln(cn(i,Le(t)),0):hl(fn(i,0),u_(t));if("string"==typeof t){var a=u.y_1,h=u.z_1,_=u.a1_1;if(_>0&&a<=h||_<0&&h<=a)do{var l,f=a;a=a+_|0;t:{for(var c=n.d();c.e();){var v=c.f();if(Ja(v,0,t,f,v.length,e)){l=v;break t}}l=null}if(null!=l)return es(f,l)}while(f!==h)}else{var w=u.y_1,d=u.z_1,p=u.a1_1;if(p>0&&w<=d||p<0&&d<=w)do{var m,g=w;w=w+p|0;t:{for(var $=n.d();$.e();){var y=$.f();if(Je(y,0,t,g,y.length,e)){m=y;break t}}m=null}if(null!=m)return es(g,m)}while(g!==d)}return null}(t,s,n,o,!1);return null==i?null:es(i.b4_1,i.c4_1.length)}));var s,o}function Je(t,n,i,e,r,s){if(e<0||n<0||n>(u_(t)-r|0)||e>(u_(i)-r|0))return!1;var o=0;if(o=0))throw nf(d_("Limit must be non-negative, but was "+t))}function Ze(t,n,i,e){return i=i===jt?0:i,(e=e!==jt&&e)||"string"!=typeof t?ir(t,n,i,u_(t),e):t.indexOf(n,i)}function Qe(t){if(t.s7_1<0)t.q7_1=0,t.t7_1=null;else{var n;if(t.v7_1.y7_1>0){var i=t;i.u7_1=i.u7_1+1|0,n=i.u7_1>=t.v7_1.y7_1}else n=!1;if(n||t.s7_1>u_(t.v7_1.w7_1))t.t7_1=hl(t.r7_1,Le(t.v7_1.w7_1)),t.s7_1=-1;else{var e=t.v7_1.z7_1(t.v7_1.w7_1,t.s7_1);if(null==e)t.t7_1=hl(t.r7_1,Le(t.v7_1.w7_1)),t.s7_1=-1;else{var r=e,s=r.d4(),o=r.e4();t.t7_1=hn(t.r7_1,s),t.r7_1=s+o|0,t.s7_1=t.r7_1+(0===o?1:0)|0}}t.q7_1=1}}function tr(t){this.v7_1=t,this.q7_1=-1,this.r7_1=vn(t.x7_1,0,u_(t.w7_1)),this.s7_1=this.r7_1,this.t7_1=null,this.u7_1=0}function nr(t,n,i,e){this.w7_1=t,this.x7_1=n,this.y7_1=i,this.z7_1=e}function ir(t,n,i,e,r,s){var o=(s=s!==jt&&s)?ln(cn(i,Le(t)),fn(e,0)):hl(fn(i,0),cn(e,u_(t)));if("string"==typeof t&&"string"==typeof n){var u=o.y_1,a=o.z_1,h=o.a1_1;if(h>0&&u<=a||h<0&&a<=u)do{var _=u;if(u=u+h|0,Ja(n,0,t,_,u_(n),r))return _}while(_!==a)}else{var l=o.y_1,f=o.z_1,c=o.a1_1;if(c>0&&l<=f||c<0&&f<=l)do{var v=l;if(l=l+c|0,Je(n,0,t,v,u_(n),r))return v}while(v!==f)}return-1}function er(t,n,i,e){return i=i===jt?Le(t):i,(e=e!==jt&&e)||"string"!=typeof t?ir(t,n,i,0,e,!0):t.lastIndexOf(n,i)}function rr(t){return dn(Ue(t))}function sr(t,n,i){return i=i===jt?32:i,d_(function(t,n,i){if(i=i===jt?32:i,n<0)throw nf("Desired length "+n+" is less than zero.");if(n<=u_(t))return a_(t,0,u_(t));var e=xa(n),r=1,s=n-u_(t)|0;if(r<=s)do{var o=r;r=r+1|0,e.k7(i)}while(o!==s);return e.b(t),e}(kl(t)?t:z_(),n,i))}function or(t){if(ar(t)){var n=new I_(387905,-1073741824),i=new I_(-387905,1073741823),e=ur(t);if(!(n.w(e)<=0&&e.w(i)<=0))throw Af(d_(ur(t))+" ns is out of nanoseconds range")}else{var r=new I_(1,-1073741824),s=new I_(-1,1073741823),o=ur(t);if(!(r.w(o)<=0&&o.w(s)<=0))throw Af(d_(ur(t))+" ms is out of milliseconds range");var u=new I_(1108857478,-1074),a=new I_(-1108857478,1073),h=ur(t);if(u.w(h)<=0&&h.w(a)<=0)throw Af(d_(ur(t))+" ms is denormalized")}return t}function ur(t){return t.b8(1)}function ar(t){return 0==(1&t.c8())}function hr(t){return 1==(1&t.c8())}function _r(){g=this,this.d8_1=or(new I_(0,0)),this.e8_1=xr(new I_(-1,1073741823)),this.f8_1=xr(new I_(1,-1073741824))}function lr(){return null==g&&new _r,g}function fr(t){return n=ur(t).l7(),i=1&t.c8(),or(n.q8(1).o7(al(i)));var n,i}function cr(t,n){if(dr(t)){if(function(t){return!dr(t)}(n)||t.h8(n).w(new I_(0,0))>=0)return t;throw nf("Summing infinite durations of different signs yields an undefined result.")}if(dr(n))return n;var i,e,r;if((1&t.c8())==(1&n.c8())){var s=ur(t).o7(ur(n));i=ar(t)?(e=s,r=new I_(387905,-1073741824),e.w(new I_(-387905,1073741823))<=0&&r.w(e)<=0?Or(e):xr(Sr(e))):Cr(s)}else i=hr(t)?vr(0,ur(t),ur(n)):vr(0,ur(n),ur(t));return i}function vr(t,n,i){var e,r=Sr(i),s=n.o7(r),o=new I_(1108857478,-1074);if(s.w(new I_(-1108857478,1073))<=0&&o.w(s)<=0){var u=i.p7(qr(r));e=Or(qr(s).o7(u))}else e=xr(_n(s,new I_(1,-1073741824),new I_(-1,1073741823)));return e}function wr(t){return t.w(new I_(0,0))<0}function dr(t){return!!t.equals(lr().e8_1)||t.equals(lr().f8_1)}function pr(t,n){var i=t.h8(n);if(i.w(new I_(0,0))<0||0==(1&i.c8()))return t.w(n);var e=(1&t.c8())-(1&n.c8())|0;return wr(t)?0|-e:e}function mr(t){return dr(t)?0:function(t){return yr(t,gh())}(t).j8(new I_(24,0)).c8()}function gr(t){return dr(t)?0:function(t){return yr(t,mh())}(t).j8(new I_(60,0)).c8()}function $r(t){return dr(t)?0:function(t){return yr(t,ph())}(t).j8(new I_(60,0)).c8()}function yr(t,n){var i,e=t;return e.equals(lr().e8_1)?(O_(),i=new I_(-1,2147483647)):e.equals(lr().f8_1)?(O_(),i=new I_(0,-2147483648)):i=ch(ur(t),function(t){return ar(t)?wh():dh()}(t),n),i}function br(t){var n,i=t;if(i.equals(new I_(0,0)))n="0s";else if(i.equals(lr().e8_1))n="Infinity";else if(i.equals(lr().f8_1))n="-Infinity";else{var e=wr(t),r=Ea();e&&r.k7(45);var s=function(t){return wr(t)?fr(t):t}(t),o=function(t){return yr(t,$h())}(s),u=mr(s),a=gr(s),h=$r(s),_=function(t){return dr(t)?0:hr(t)?qr(ur(t).j8(new I_(1e3,0))).c8():ur(t).j8(new I_(1e9,0)).c8()}(s),l=!o.equals(new I_(0,0)),f=!(0===u),c=!(0===a),v=0!==h||!(0===_),w=0;if(l&&(r.k8(o).k7(100),w=w+1|0),f||l&&(c||v)){var d=w;w=d+1|0,d>0&&r.k7(32),r.k8(u).k7(104)}if(c||v&&(f||l)){var p=w;w=p+1|0,p>0&&r.k7(32),r.k8(a).k7(109)}if(v){var m=w;w=m+1|0,m>0&&r.k7(32),0!==h||l||f||c?kr(r,0,h,_,9,"s",!1):_>=1e6?kr(r,0,_/1e6|0,_%1e6|0,6,"ms",!1):_>=1e3?kr(r,0,_/1e3|0,_%1e3|0,3,"us",!1):r.k8(_).l8("ns")}e&&w>1&&(r.m8(1,40).k7(41),$o()),n=r.toString()}return n}function kr(t,n,i,e,r,s,o){if(t.k8(i),0!==e){t.k7(46);var u,a=sr(e.toString(),r,48);t:{var h=u_(a)-1|0;if(0<=h)do{var _=h;if(h=h+-1|0,!p_(new qh(s_(a,_)),new qh(48))){u=_;break t}}while(0<=h);u=-1}var l=u+1|0;!o&&l<3?t.n8(a,0,l):t.n8(a,0,St((l+2|0)/3|0,3))}t.l8(s)}function jr(t){lr(),this.i8_1=t}function xr(t){return or(t.q8(1).o7(new I_(1,0)))}function zr(t,n){var i=vh(new I_(-387905,1073741823),wh(),n);return i.l7().w(t)<=0&&t.w(i)<=0?Or(vh(t,n,wh())):xr(_n(ch(t,n,dh()),new I_(1,-1073741824),new I_(-1,1073741823)))}function Er(t,n){var i=fh(t,n,wh());if(Uu(i))throw nf(d_("Duration value cannot be NaN."));var e=Fu(i),r=new I_(387905,-1073741824);return e.w(new I_(-387905,1073741823))<=0&&r.w(e)<=0?Or(e):Cr(Fu(fh(t,n,dh())))}function Cr(t){var n=new I_(1108857478,-1074);return t.w(new I_(-1108857478,1073))<=0&&n.w(t)<=0?Or(qr(t)):xr(_n(t,new I_(1,-1073741824),new I_(-1,1073741823)))}function Sr(t){return t.m7(al(1e6))}function qr(t){return t.n7(al(1e6))}function Or(t){return or(t.q8(1))}function Ir(t){var n,i,e=t.length,r=0;if(e>0&&He("+-",s_(t,0))&&(r=r+1|0),(e-r|0)>16){var s;t:{var o=hl(r,Le(t));if(pl(o,Ih)&&o.m())s=!0;else{var u=o.y_1,a=o.z_1;if(u<=a)do{var h=u;u=u+1|0;var _=s_(t,h);if(!(48<=_&&_<=57)){s=!1;break t}}while(h!==a);s=!0}}n=s}else n=!1;return n?(p_(new qh(s_(t,0)),new qh(45))?(O_(),i=new I_(0,-2147483648)):(O_(),i=new I_(-1,2147483647)),i):Ka(t,"+")?Ia(bn(t,1)):Ia(t)}function Ar(t,n){var i;if(n){var e,r=t;if(p_(new qh(r),new qh(72)))e=gh();else if(p_(new qh(r),new qh(77)))e=mh();else{if(!p_(new qh(r),new qh(83)))throw nf("Invalid duration ISO time unit: "+new qh(t));e=ph()}i=e}else{if(!p_(new qh(t),new qh(68)))throw nf("Invalid or unsupported duration ISO non-time unit: "+new qh(t));i=$h()}return i}function Tr(t){var n;switch(t){case"ns":n=wh();break;case"us":_h(),n=Z;break;case"ms":n=dh();break;case"s":n=ph();break;case"m":n=mh();break;case"h":n=gh();break;case"d":n=$h();break;default:throw nf("Unknown duration unit short name: "+t)}return n}function Dr(){return Pr(),$}function Mr(){}function Nr(t){this.s8_1=t}function Rr(t,n){Mr.call(this),this.t8_1=yl(t,2)?t:z_(),this.u8_1=n,this.v8_1=pl(this,Gi)?this:z_(),this.w8_1=Dr()}function Pr(){var t;y||(y=!0,Jr(),t=he(),$=t)}function Lr(){if(j)return $o();j=!0,new Fr("SYNCHRONIZED",0),b=new Fr("PUBLICATION",1),k=new Fr("NONE",2)}function Fr(t,n){Uh.call(this,t,n)}function Ur(t){this.a9_1=t,this.b9_1=Vr()}function Hr(){x=this}function Vr(){return null==x&&new Hr,x}function Br(t){return t}function Yr(t){return t}function Wr(t){return t instanceof Xr}function Gr(t){return t instanceof Xr?t.d9_1:null}function Kr(){z=this}function Jr(){return null==z&&new Kr,z}function Xr(t){this.d9_1=t}function Zr(t){Jr(),this.e9_1=t}function Qr(t){return new Xr(t)}function ts(t){if(t instanceof Xr)throw t.d9_1}function ns(t){zf(t=t===jt?"An operation is not implemented.":t,this),$_(this,ns)}function is(t,n){this.b4_1=t,this.c4_1=n}function es(t,n){return new is(t,n)}function rs(t,n,i){this.f9_1=t,this.g9_1=n,this.h9_1=i}function ss(t){return t}function os(t){return t}function us(){E=this,this.i9_1=0,this.j9_1=-1,this.k9_1=1,this.l9_1=8}function as(){return null==E&&new us,E}function hs(t,n){return f_(255&t,255&n)}function _s(t){as(),this.m9_1=t}function ls(t){return t}function fs(t){return t}function cs(t){return t.length}function vs(t){this.o9_1=t,this.p9_1=0}function ws(t,n){return($l(new _s(n))?new _s(n):z_())instanceof _s&&Vt(t,n)}function ds(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof _s&&Vt(t,s.m9_1))){i=!1;break t}}i=!0}}return i}function ps(t){this.r9_1=t}function ms(t){return t}function gs(t){return t}function $s(){C=this,this.u9_1=0,this.v9_1=-1,this.w9_1=4,this.x9_1=32}function ys(){return null==C&&new $s,C}function bs(t,n){return lo(t,n)}function ks(t){ys(),this.y9_1=t}function js(t){return t}function xs(t){return t}function zs(t){return t.length}function Es(t){this.ba_1=t,this.ca_1=0}function Cs(t,n){return($l(new ks(n))?new ks(n):z_())instanceof ks&&Ut(t,n)}function Ss(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof ks&&Ut(t,s.y9_1))){i=!1;break t}}i=!0}}return i}function qs(t){this.ea_1=t}function Os(){S=this;ys();ys(),this.ha_1=new Is(-1,0)}function Is(t,n){null==S&&new Os,Ts.call(this,t,n,1)}function As(){q=this}function Ts(t,n,i){if(null==q&&new As,0===i)throw nf("Step must be non-zero.");if(i===zo().MIN_VALUE)throw nf("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.la_1=t,this.ma_1=function(t,n,i){var e;if(i>0){var r;if(lo(t,n)>=0)r=n;else r=n-Js(n,t,i)|0;e=r}else{if(!(i<0))throw nf("Step is zero.");var s;if(lo(t,n)<=0)s=n;else s=n+Js(t,n,0|-i)|0;e=s}return e}(t,n,i),this.na_1=i}function Ds(t,n,i){this.oa_1=n;var e;e=i>0?lo(t,n)<=0:lo(t,n)>=0,this.pa_1=e;var r;r=i,this.qa_1=r,this.ra_1=this.pa_1?t:this.oa_1}function Ms(t){return t}function Ns(t){return t}function Rs(){O=this,this.sa_1=new I_(0,0),this.ta_1=new I_(-1,-1),this.ua_1=8,this.va_1=64}function Ps(){return null==O&&new Rs,O}function Ls(t,n){return co(t,n)}function Fs(t){return function(t,n){if(t.w(new I_(0,0))>=0)return Wf(t,n);var i,e=t.qb(1).m7(al(n)).q8(1);i=e.n7(al(n));var r=t.p7(i);return r.w(al(n))>=0&&(r=r.p7(al(n)),e=e.o7(new I_(1,0))),Wf(e,n)+Wf(r,n)}(t,10)}function Us(t){Ps(),this.wa_1=t}function Hs(t){return t}function Vs(t){return t}function Bs(t){return t.length}function Ys(t){this.ya_1=t,this.za_1=0}function Ws(t,n){return($l(new Us(n))?new Us(n):z_())instanceof Us&&Ft(t,n)}function Gs(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof Us&&Ft(t,s.wa_1))){i=!1;break t}}i=!0}}return i}function Ks(t){this.bb_1=t}function Js(t,n,i){var e,r=fo(t,i),s=fo(n,i);return lo(r,s)>=0?e=r-s|0:e=(r-s|0)+i|0,e}function Xs(t){return t}function Zs(t){return t}function Qs(){I=this,this.eb_1=0,this.fb_1=-1,this.gb_1=2,this.hb_1=16}function to(){return null==I&&new Qs,I}function no(t,n){return f_(65535&t,65535&n)}function io(t){to(),this.ib_1=t}function eo(t){return t}function ro(t){return t}function so(t){return t.length}function oo(t){this.kb_1=t,this.lb_1=0}function uo(t,n){return($l(new io(n))?new io(n):z_())instanceof io&&Ht(t,n)}function ao(t,n){var i;t:{var e=pl(n,Ih)?n:z_();if(pl(e,Ih)&&e.m())i=!0;else{for(var r=e.d();r.e();){var s=r.f();if(!(s instanceof io&&Ht(t,s.ib_1))){i=!1;break t}}i=!0}}return i}function ho(t){this.nb_1=t}function _o(t,n){Oa(n);var i=t.length;if(0===i)return null;ys();var e,r=s_(t,0);if(jh(r,48)<0){if(1===i||!p_(new qh(r),new qh(43)))return null;e=1}else e=0;var s,o,u,a=119304647,h=a,_=n,l=0,f=e;if(f0){if(h!==a)return null;if(lo(l,(s=_,o=void 0,u=void 0,u=al(-1).z9(new I_(-1,0)),o=al(s).z9(new I_(-1,0)),h=u.m7(o).c8()))>0)return null}var w=l=St(l,_);if(lo(l=l+v|0,w)<0)return null}while(f=0)return i.m7(e);var r=i.qb(1).m7(e).q8(1),s=co(i.p7(r.n7(e)),e)>=0?1:0;return r.o7(al(s))}function wo(){}function po(){}function mo(){}function go(){A=this}function $o(){return null==A&&new go,A}function yo(){T=this,this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1,this.SIZE_BITS=8}function bo(){return null==T&&new yo,T}function ko(){D=this,this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYTES=2,this.SIZE_BITS=16}function jo(){return null==D&&new ko,D}function xo(){M=this,this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function zo(){return null==M&&new xo,M}function Eo(){N=this,this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Co(){return null==N&&new Eo,N}function So(){R=this,this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e292,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=8,this.SIZE_BITS=64}function qo(){return null==R&&new So,R}function Oo(){P=this}function Io(){L=this}function Ao(t){for(var n=[],i=t.d();i.e();)n.push(i.f());return n}function To(t){return 0===(n=[t]).length?Qo():nu(new ei(n,!0));var n}function Do(t){return Lt(n=[t],du(n.length));var n}function Mo(t){return t}function No(t){return t<0&&function(){throw Nf("Index overflow has happened.")}(),t}function Ro(t,n){!function(t,n){if(t.g()<=1)return $o();var i=Lo(t);ru(i,n);var e=0,r=i.length;if(e=a)return!1}while(r=0))throw nf(d_("Negative initial capacity: "+t));if(!(n>=0))throw nf(d_("Non-positive load factor: "+n));return i}function cu(t){return function(t,n){return fu(t,0,n),n}(t,b_(y_(vu)))}function vu(){this.ld_1=null}function wu(t,n,i){return Zo.call(i),mu.call(i),i.od_1=function(t,n){return fu(t,n,b_(y_(vu)))}(t,n),i}function du(t){return function(t,n){return wu(t,0,n),n}(t,b_(y_(mu)))}function pu(t,n){return Zo.call(n),mu.call(n),n.od_1=t,n}function mu(){}function gu(t,n){var i=yu(t,t.xd_1.cd(n));if(null==i)return null;var e=i;if(null!=e&&gl(e))return $u(e,t,n);var r=e;return t.xd_1.bd(r.r(),n)?r:null}function $u(t,n,i){var e;t:{for(var r=t,s=0,o=r.length;snew I_(-1,2147483647).ve()?(O_(),n=new I_(-1,2147483647)):(O_(),t1?t:s_(n,0)}function qa(t){return function(t){var n;return 9<=(n=zh(t))&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(t)}function Oa(t){if(!(2<=t&&t<=36))throw nf("radix "+t+" was not in valid range 2..36");return t}function Ia(t){var n,i=Te(t);return null==i?Ne(t):n=i,n}function Aa(t){var n=+t;return(Uu(n)&&!Da(t)||0===n&&Ga(t))&&Ne(t),n}function Ta(t,n){var i,e,r,s=jh(t,48)>=0&&jh(t,57)<=0?xh(t,48):jh(t,65)>=0&&jh(t,90)<=0?xh(t,65)+10|0:jh(t,97)>=0&&jh(t,122)<=0?xh(t,97)+10|0:jh(t,128)<0?-1:jh(t,65313)>=0&&jh(t,65338)<=0?xh(t,65313)+10|0:jh(t,65345)>=0&&jh(t,65370)<=0?xh(t,65345)+10|0:(i=zh(t),e=Ll(Ul().aj_1,i),(r=i-Ul().aj_1[e]|0)<10?r:-1);return s>=n?-1:s}function Da(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":return!0;default:return!1}}function Ma(){W=this,this.pg_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.qg_1=new RegExp("[\\\\$]","g"),this.rg_1=new RegExp("\\$","g")}function Na(){return null==W&&new Ma,W}function Ra(t){return t.f()}function Pa(t,n){Na(),this.ug_1=t,this.vg_1=Kt(n),this.wg_1=new RegExp(t,Wt(n,"","gu",jt,jt,jt,Ua)),this.xg_1=null,this.yg_1=null}function La(t){this.eh_1=t}function Fa(t,n,i,e){t.lastIndex=i;var r=t.exec(n);return null==r?null:new Va(hl(r.index,t.lastIndex-1|0),r,e,n)}function Ua(t){return t.hh_1}function Ha(t,n){this.ih_1=t,this.jh_1=n,xn.call(this)}function Va(t,n,i,e){this.nh_1=t,this.oh_1=n,this.ph_1=i,this.qh_1=e,this.kh_1=t,this.lh_1=new Ha(n,this),this.mh_1=null}function Ba(t){this.rh_1=t}function Ya(t,n){return Wa(),function(t,n,i){if(i=i!==jt&&i,Wa(),i){var e=t.length,r=n.length,s=Math.min(e,r);if(0===s)return e-r|0;var o=0;if(o=0&&i<=t.length&&n<=i))throw nf(d_("Failed requirement."));for(var r=n,s=Ea();r=0)s.k7(ul(u));else if(u>>5==-2){var a=nh(t,u,r,i,e);a<=0?(s.k7(65533),r=r+(0|-a)|0):(s.k7(ul(a)),r=r+1|0)}else if(u>>4==-2){var h=ih(t,u,r,i,e);h<=0?(s.k7(65533),r=r+(0|-h)|0):(s.k7(ul(h)),r=r+2|0)}else if(u>>3==-2){var _=eh(t,u,r,i,e);if(_<=0)s.k7(65533),r=r+(0|-_)|0;else{var l=(_-65536|0)>>10|55296,f=1023&_|56320;s.k7(ul(l)),s.k7(ul(f)),r=r+3|0}}else rh(0,r,e),s.k7(65533)}return s.toString()}function th(t,n,i,e,r){return sh(),!(55296<=n&&n<=56319)||i>=e?rh(0,i,r):56320<=(s=zh(s_(t,i)))&&s<=57343?65536+((1023&n)<<10)|0|1023&s:rh(0,i,r);var s}function nh(t,n,i,e,r){if(sh(),0==(30&n)||i>=e)return rh(0,i,r);var s=t[i];return 128!=(192&s)?rh(0,i,r):n<<6^s^3968}function ih(t,n,i,e,r){if(sh(),i>=e)return rh(0,i,r);var s=t[i];if(0==(15&n)){if(160!=(224&s))return rh(0,i,r)}else if(13==(15&n)){if(128!=(224&s))return rh(0,i,r)}else if(128!=(192&s))return rh(0,i,r);if((i+1|0)===e)return rh(1,i,r);var o=t[i+1|0];return 128!=(192&o)?rh(1,i,r):n<<12^s<<6^o^-123008}function eh(t,n,i,e,r){sh(),i>=e&&rh(0,i,r);var s=t[i];if(0==(15&n)){if((240&s)<=128)return rh(0,i,r)}else if(4==(15&n)){if(128!=(240&s))return rh(0,i,r)}else{if((15&n)>4)return rh(0,i,r);if(128!=(192&s))return rh(0,i,r)}if((i+1|0)===e)return rh(1,i,r);var o=t[i+1|0];if(128!=(192&o))return rh(1,i,r);if((i+2|0)===e)return rh(2,i,r);var u=t[i+2|0];return 128!=(192&u)?rh(2,i,r):n<<18^s<<12^o<<6^u^3678080}function rh(t,n,i){if(sh(),i)throw new ja("Malformed sequence starting at "+(n-1|0));return 0|-t}function sh(){if(J);else{J=!0;var t=new Int8Array([-17,-65,-67]);K=t}}function oh(t){return(new hh).xh(t)}function uh(t,n,i,e){if(!ah(t,n,i,e))return $o();for(var r=t.cause;null!=r;){if(!ah(r,n,i,"Caused by: "))return $o();r=r.cause}}function ah(t,n,i,e){n.th_1.l8(i).l8(e);var r=t.toString();if(function(t,n){var i;t:{for(var e=t.uh_1,r=0,s=e.length;r0&&p_(new qh(s_(n,Le(n)-(s-1|0)|0)),new qh(32));)s=s-1|0;return $n(n,s)+"... and "+(e-1|0)+" more common stack frames skipped"}(n,o,a),u_(i)>0){var h;if(0===a)h=0;else{for(var _=0,l=r,f=0,c=l.length;f=w&&n.th_1.l8(i),n.th_1.l8(m).l8("\n")}}else n.th_1.l8(o).l8("\n")}else n.th_1.l8(r).l8("\n");var $=function(t){var n=t._suppressed,i=null==n?null:n;return null==i?Kn():i}(t);if(!$.m())for(var y=i+" ",b=$.d();b.e();)uh(b.f(),n,y,"Suppressed: ");return!0}function hh(){var t;this.th_1=Ea(),t=[],this.uh_1=t,this.vh_1="",this.wh_1=0}function _h(){if(rt)return $o();rt=!0,X=new lh("NANOSECONDS",0,1),Z=new lh("MICROSECONDS",1,1e3),Q=new lh("MILLISECONDS",2,1e6),tt=new lh("SECONDS",3,1e9),nt=new lh("MINUTES",4,6e10),it=new lh("HOURS",5,36e11),et=new lh("DAYS",6,864e11)}function lh(t,n,i){Uh.call(this,t,n),this.ai_1=i}function fh(t,n,i){var e=f_(n.ai_1,i.ai_1);return e>0?t*(n.ai_1/i.ai_1):e<0?t/(i.ai_1/n.ai_1):t}function ch(t,n,i){var e,r=f_(n.ai_1,i.ai_1);if(r>0){var s,o=ol(n.ai_1/i.ai_1),u=t.n7(o);u.m7(o).equals(t)?s=u:t.w(new I_(0,0))>0?(O_(),s=new I_(-1,2147483647)):(O_(),s=new I_(0,-2147483648)),e=s}else e=r<0?t.m7(ol(i.ai_1/n.ai_1)):t;return e}function vh(t,n,i){var e=f_(n.ai_1,i.ai_1);return e>0?t.n7(ol(n.ai_1/i.ai_1)):e<0?t.m7(ol(i.ai_1/n.ai_1)):t}function wh(){return _h(),X}function dh(){return _h(),Q}function ph(){return _h(),tt}function mh(){return _h(),nt}function gh(){return _h(),it}function $h(){return _h(),et}function yh(t){this.bi_1=t}function bh(t){return t}function kh(t){return 65535&t}function jh(t,n){return t-n|0}function xh(t,n){return t-n|0}function zh(t){return t}function Eh(t){return String.fromCharCode(t)}function Ch(){st=this,this.di_1=0,this.ei_1=65535,this.fi_1=55296,this.gi_1=56319,this.hi_1=56320,this.ii_1=57343,this.ji_1=55296,this.ki_1=57343,this.li_1=2,this.mi_1=16}function Sh(){return null==st&&new Ch,st}function qh(t){Sh(),this.j7_1=t}function Oh(){}function Ih(){}function Ah(){}function Th(){}function Dh(){}function Mh(){}function Nh(){}function Rh(){}function Ph(){}function Lh(){}function Fh(){ot=this}function Uh(t,n){null==ot&&new Fh,this.k6_1=t,this.l6_1=n}function Hh(t){var n=null==t?null:d_(t);return null==n?"null":n}function Vh(t,n){var i=null==t?null:d_(t),e=null==i?"null":i,r=null==n?null:d_(n);return e+(null==r?"null":r)}function Bh(t){for(var n=1,i=[],e=t,r=0,s=e.length;r>5)|0),w=1<<(31&f),c[v=f>>5]=c[v]|w,c);null!=l&&(i.push(l),u=Math.max(u,l.length)),u>n&&(n=u)}var f,c,v,w;return function(t,n){for(var i=0,e=t,r=new Int32Array(e);i65535),e)throw nf("Invalid Char code: "+r);i=ul(r)}else i=t.sb(n);return i}function o_(t){return"string"==typeof t}function u_(t){return o_(t)?t.length:t.rb()}function a_(t,n,i){return o_(t)?t.substring(n,i):t.tb(n,i)}function h_(t,n){var i=t,e=n;if(i===e)return!0;if(null==i||null==e||!vl(e)||i.length!=e.length)return!1;var r=0,s=i.length;if(rn)i=1;else if(t===n){var e;if(0!==t)e=0;else{var r=1/t;e=r===1/n?0:r<0?-1:1}i=e}else i=t!=t?n!=n?0:1:-1;return i}function v_(t,n){return tn?1:0}function w_(t){if(!("kotlinHashCodeValue$"in t)){var n=0|4294967296*Math.random(),i=new Object;i.value=n,i.enumerable=!1,Object.defineProperty(t,"kotlinHashCodeValue$",i)}return t.kotlinHashCodeValue$}function d_(t){return null==t?"null":vl(t)?"[...]":t.toString()}function p_(t,n){return null==t?null==n:null!=n&&("object"==typeof t&&"function"==typeof t.equals?t.equals(n):t!=t?n!=n:"number"==typeof t&&"number"==typeof n?t===n&&(0!==t||1/t==1/n):t===n)}function m_(t){if(null==t)return 0;var n;switch(typeof t){case"object":n="function"==typeof t.hashCode?t.hashCode():w_(t);break;case"function":n=w_(t);break;case"number":n=e_(t);break;case"boolean":n=t?1:0;break;default:n=g_(String(t))}return n}function g_(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=t.charCodeAt(r);n=St(n,31)+s|0}while(r!==e);return n}function $_(t,n){null!=Error.captureStackTrace?Error.captureStackTrace(t,n):t.stack=(new Error).stack}function y_(t){return t.prototype}function b_(t){return Object.create(t)}function k_(t,n,i){Error.call(t),function(t,n,i){if(!j_(t,"message")){var e;if(null==n){var r;if(null!==n){var s=null==i?null:i.toString();r=null==s?jt:s}else r=jt;e=r}else e=n;t.message=e}j_(t,"cause")||(t.cause=i),t.name=Object.getPrototypeOf(t).constructor.name}(t,n,i)}function j_(t,n){return Object.getPrototypeOf(t).hasOwnProperty(n)}function x_(t){var n;return null==t?function(){throw Pf()}():n=t,n}function z_(){throw Hf()}function E_(t){throw Bf("lateinit property "+t+" has not been initialized")}function C_(t,n){for(var i=t.length,e=n.length,r=0,s=n;rr)for(e.length=n;r>>16|0,e=65535&t.v_1,r=t.u_1>>>16|0,s=65535&t.u_1,o=n.v_1>>>16|0,u=65535&n.v_1,a=n.u_1>>>16|0,h=0,_=0,l=0,f=0;return h=(h=h+((_=(_=_+((l=(l=l+((f=f+(s+(65535&n.u_1)|0)|0)>>>16|0)|0)+(r+a|0)|0)>>>16|0)|0)+(e+u|0)|0)>>>16|0)|0)+(i+o|0)|0,new I_((l&=65535)<<16|(f&=65535),(h&=65535)<<16|(_&=65535))}function L_(t,n){return il(),P_(t,n.l7())}function F_(t,n){if(il(),K_(t))return A_();if(K_(n))return A_();if(B_(t,M_()))return J_(n)?M_():A_();if(B_(n,M_()))return J_(t)?M_():A_();if(G_(t))return G_(n)?F_(X_(t),X_(n)):X_(F_(X_(t),n));if(G_(n))return X_(F_(t,X_(n)));if(Z_(t,N_())&&Z_(n,N_()))return Q_(V_(t)*V_(n));var i=t.v_1>>>16|0,e=65535&t.v_1,r=t.u_1>>>16|0,s=65535&t.u_1,o=n.v_1>>>16|0,u=65535&n.v_1,a=n.u_1>>>16|0,h=65535&n.u_1,_=0,l=0,f=0,c=0;return f=f+((c=c+St(s,h)|0)>>>16|0)|0,c&=65535,l=(l=l+((f=f+St(r,h)|0)>>>16|0)|0)+((f=(f&=65535)+St(s,a)|0)>>>16|0)|0,f&=65535,_=(_=(_=_+((l=l+St(e,h)|0)>>>16|0)|0)+((l=(l&=65535)+St(r,a)|0)>>>16|0)|0)+((l=(l&=65535)+St(s,u)|0)>>>16|0)|0,l&=65535,_=_+(((St(i,h)+St(e,a)|0)+St(r,u)|0)+St(s,o)|0)|0,new I_(f<<16|c,(_&=65535)<<16|l)}function U_(t,n){il();var i=63&n;return 0===i?t:i<32?new I_(t.u_1<>>(32-i|0)|0):new I_(0,t.u_1<<(i-32|0))}function H_(t,n){il();var i=63&n;return 0===i?t:i<32?new I_(t.u_1>>>i|0|t.v_1<<(32-i|0),t.v_1>>i):new I_(t.v_1>>(i-32|0),t.v_1>=0?0:-1)}function V_(t){return il(),4294967296*t.v_1+function(t){return il(),t.u_1>=0?t.u_1:4294967296+t.u_1}(t)}function B_(t,n){return il(),t.v_1===n.v_1&&t.u_1===n.u_1}function Y_(t,n){if(il(),n<2||36=0x8000000000000000)return il(),pt;if(t<0)return X_(Q_(-t));var n=4294967296;return new I_(0|t%n,0|t/n)}function tl(t,n){return il(),R_(t,n)>0}function nl(t,n){return il(),R_(t,n)>=0}function il(){$t||($t=!0,vt=W_(0),wt=W_(1),dt=W_(-1),pt=new I_(-1,2147483647),mt=new I_(0,-2147483648),gt=W_(16777216))}function el(t){return t<<24>>24}function rl(t){return t instanceof I_?t.c8():function(t){return t>2147483647?2147483647:t<-2147483648?-2147483648:0|t}(t)}function sl(t){return t<<16>>16}function ol(t){return t instanceof I_?t:Q_(t)}function ul(t){return kh(sl(rl(t)))}function al(t){return W_(t)}function hl(t,n){return new de(t,n)}function _l(){return ll(),fl(jt,jt,jt,jt)}function ll(){if(bt);else{bt=!0;var t,n=[_l(),_l()],i=[_l(),_l()];t=[_l(),_l()],yt=[n,i,t]}}function fl(t,n,i,e){return cl("class",t,n,i,e,null)}function cl(t,n,i,e,r,s){return{kind:t,simpleName:n,associatedObjectKey:i,associatedObjects:e,suspendArity:r,$kClass$:jt,iid:s}}function vl(t){return!!wl(t)||qt(t)}function wl(t){return Array.isArray(t)}function dl(t,n,i,e,r,s,o,u){null!=e&&(t.prototype=Object.create(e.prototype),t.prototype.constructor=t);var a=i(n,s,o,null==u?[]:u);t.$metadata$=a,null!=r&&((null!=a.iid?t:t.prototype).$imask$=Bh(r))}function pl(t,n){return ml(t,n.$metadata$.iid)}function ml(t,n){var i;return null!=(i=t.$imask$)&&function(t,n){var i=n>>5;if(i>t.length)return!1;var e=1<<(31&n);return!(0==(t[i]&e))}(i,n)}function gl(t){return!!wl(t)&&!t.$type$}function $l(t){var n;switch(typeof t){case"string":case"number":case"boolean":case"function":n=!0;break;default:n=t instanceof Object}return n}function yl(t,n){if("function"==typeof t)return t.$arity===n;if("object"==typeof t&&"$metadata$"in t.constructor){var i=t.constructor.$metadata$.suspendArity;if(null!=i){var e=!1,r=Wh(i);t:for(;r.e();)if(n===r.f()){e=!0;break t}return e}return null!=null&&null}return!1}function bl(t){return"number"==typeof t||t instanceof I_}function kl(t){return"string"==typeof t||pl(t,wo)}function jl(t){return!!wl(t)&&"BooleanArray"===t.$type$}function xl(t){return t instanceof Int8Array}function zl(t){return t instanceof Int16Array}function El(t){return!!(t instanceof Uint16Array)&&"CharArray"===t.$type$}function Cl(t){return t instanceof Int32Array}function Sl(t){return t instanceof Float32Array}function ql(t){return!!wl(t)&&"LongArray"===t.$type$}function Ol(t){return t instanceof Float64Array}function Il(t,n,i,e){return cl("interface",t,n,i,e,function(){null==kt&&(kt=0);var t=Al();return kt=t+1|0,Al()}())}function Al(){if(null!=kt)return kt;E_("iid")}function Tl(t,n,i,e){return cl("object",t,n,i,e,null)}function Dl(t,n){if(n===Object)return $l(t);if(null==t||null==n||"object"!=typeof t&&"function"!=typeof t)return!1;if("function"==typeof n&&t instanceof n)return!0;var i=function(t){return Object.getPrototypeOf(t)}(n),e=null==i?null:i.constructor;if(null!=e&&"$metadata$"in e&&"object"===e.$metadata$.kind)return t===n;var r,s=n.$metadata$;return null==s?t instanceof n:"interface"===s.kind&&null!=(r=s.iid)&&ml(t,r)}function Ml(t){return new eu(t)}function Nl(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Int8Array(n))}function Rl(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),t.fill(n,i,e)}function Pl(t,n,i){for(var e=new Int32Array(i),r=0,s=0,o=0,u=t,a=0,h=u.length;a(s=t[r=(i+e|0)/2|0]))i=r+1|0;else{if(n===s)return r;e=r-1|0}return r-(n=n)throw uf("index: "+t+", size: "+n)},y_(En).m1=function(t,n){if(t<0||t>n)throw uf("index: "+t+", size: "+n)},y_(En).n1=function(t,n,i){if(t<0||n>i)throw uf("fromIndex: "+t+", toIndex: "+n+", size: "+i);if(t>n)throw nf("fromIndex: "+t+" > toIndex: "+n)},y_(En).o1=function(t,n,i){if(t<0||n>i)throw uf("startIndex: "+t+", endIndex: "+n+", size: "+i);if(t>n)throw nf("startIndex: "+t+" > endIndex: "+n)},y_(En).p1=function(t){for(var n=1,i=t.d();i.e();){var e=i.f(),r=St(31,n),s=null==e?null:m_(e);n=r+(null==s?0:s)|0}return n},y_(En).q1=function(t,n){if(t.g()!==n.g())return!1;for(var i=n.d(),e=t.d();e.e();)if(!p_(e.f(),i.f()))return!1;return!0},y_(Sn).d=function(){return new zn(this)},y_(Sn).o=function(t){var n;t:{for(var i=0,e=this.d();e.e();){if(p_(e.f(),t)){n=i;break t}i=i+1|0}n=-1}return n},y_(Sn).equals=function(t){return t===this||!(null==t||!pl(t,Oh))&&Cn().q1(this,t)},y_(Sn).hashCode=function(){return Cn().p1(this)},y_(qn).e=function(){return this.r1_1.e()},y_(qn).f=function(){return this.r1_1.f().r()},y_(On).e=function(){return this.s1_1.e()},y_(On).f=function(){return this.s1_1.f().s()},y_(Tn).t1=function(t){var n=t.r(),i=null==n?null:m_(n),e=null==i?0:i,r=t.s(),s=null==r?null:m_(r);return e^(null==s?0:s)},y_(Tn).u1=function(t){return Hh(t.r())+"="+Hh(t.s())},y_(Tn).v1=function(t,n){return!(null==n||!pl(n,Dh))&&!!p_(t.r(),n.r())&&p_(t.s(),n.s())},y_(Mn).x1=function(t){return this.w1_1.a2(t)},y_(Mn).n=function(t){return!(null!=t&&!$l(t))&&this.x1(null==t||$l(t)?t:z_())},y_(Mn).d=function(){return new qn(this.w1_1.q().d())},y_(Mn).g=function(){return this.w1_1.g()},y_(Nn).d2=function(t){return this.c2_1.e2(t)},y_(Nn).n=function(t){return!(null!=t&&!$l(t))&&this.d2(null==t||$l(t)?t:z_())},y_(Nn).d=function(){return new On(this.c2_1.q().d())},y_(Nn).g=function(){return this.c2_1.g()},y_(Rn).a2=function(t){return!(null==An(this,t))},y_(Rn).e2=function(t){var n;t:{var i=this.q();if(pl(i,Ih)&&i.m())n=!1;else{for(var e=i.d();e.e();)if(p_(e.f().s(),t)){n=!0;break t}n=!1}}return n},y_(Rn).f2=function(t){if(null==t||!pl(t,Dh))return!1;var n=t.r(),i=t.s(),e=(pl(this,Mh)?this:z_()).g2(n);return!(!p_(i,e)||null==e&&!(pl(this,Mh)?this:z_()).a2(n))},y_(Rn).equals=function(t){if(t===this)return!0;if(null==t||!pl(t,Mh))return!1;if(this.g()!==t.g())return!1;var n;t:{var i=t.q();if(pl(i,Ih)&&i.m())n=!0;else{for(var e=i.d();e.e();){var r=e.f();if(!this.f2(r)){n=!1;break t}}n=!0}}return n},y_(Rn).g2=function(t){var n=An(this,t);return null==n?null:n.s()},y_(Rn).hashCode=function(){return m_(this.q())},y_(Rn).m=function(){return 0===this.g()},y_(Rn).g=function(){return this.q().g()},y_(Rn).h2=function(){return null==this.y1_1&&(this.y1_1=new Mn(this)),x_(this.y1_1)},y_(Rn).toString=function(){return Wt(this.q(),", ","{","}",jt,jt,(t=this,function(n){return t.b2(n)}));var t},y_(Rn).b2=function(t){return In(this,t.r())+"="+In(this,t.s())},y_(Rn).i2=function(){return null==this.z1_1&&(this.z1_1=new Nn(this)),x_(this.z1_1)},y_(Pn).j2=function(t){for(var n=0,i=t.d();i.e();){var e=i.f(),r=n,s=null==e?null:m_(e);n=r+(null==s?0:s)|0}return n},y_(Pn).k2=function(t,n){return t.g()===n.g()&&t.i1(n)},y_(Fn).equals=function(t){return t===this||!(null==t||!pl(t,Th))&&Ln().k2(this,t)},y_(Fn).hashCode=function(){return Ln().j2(this)},y_(Yn).s2=function(t,n){var i=t+(t>>1)|0;return(i-n|0)<0&&(i=n),(i-2147483639|0)>0&&(i=n>2147483639?zo().MAX_VALUE:2147483639),i},y_(Gn).g=function(){return this.o2_1},y_(Gn).m=function(){return 0===this.o2_1},y_(Gn).t2=function(){if(this.m())throw jf("ArrayDeque is empty.");var t=this.m2_1,n=this.n2_1[t];return null==n||$l(n)?n:z_()},y_(Gn).u2=function(){var t;if(this.m())t=null;else{var n=this.m2_1,i=this.n2_1[n];t=null==i||$l(i)?i:z_()}return t},y_(Gn).v2=function(t){Un(this,this.o2_1+1|0),this.m2_1=Bn(this,this.m2_1),this.n2_1[this.m2_1]=t;this.o2_1=this.o2_1+1|0},y_(Gn).w2=function(t){Un(this,this.o2_1+1|0);var n=this.n2_1,i=this.o2_1;n[Hn(this,this.m2_1+i|0)]=t;this.o2_1=this.o2_1+1|0},y_(Gn).x2=function(){if(this.m())throw jf("ArrayDeque is empty.");var t=this.m2_1,n=this.n2_1[t],i=null==n||$l(n)?n:z_();this.n2_1[this.m2_1]=null,this.m2_1=Vn(this,this.m2_1);return this.o2_1=this.o2_1-1|0,i},y_(Gn).y2=function(){if(this.m())throw jf("ArrayDeque is empty.");var t=Jn(this),n=Hn(this,this.m2_1+t|0),i=this.n2_1[n],e=null==i||$l(i)?i:z_();this.n2_1[n]=null;return this.o2_1=this.o2_1-1|0,e},y_(Gn).a=function(t){return this.w2(t),!0},y_(Gn).z2=function(t,n){if(Cn().m1(t,this.o2_1),t===this.o2_1)return this.w2(n),$o();if(0===t)return this.v2(n),$o();Un(this,this.o2_1+1|0);var i=Hn(this,this.m2_1+t|0);if(t<(this.o2_1+1|0)>>1){var e=Bn(this,i),r=Bn(this,this.m2_1);if(e>=this.m2_1)this.n2_1[r]=this.n2_1[this.m2_1],Po(this.n2_1,this.n2_1,this.m2_1,this.m2_1+1|0,e+1|0);else Po(this.n2_1,this.n2_1,this.m2_1-1|0,this.m2_1,this.n2_1.length),this.n2_1[this.n2_1.length-1|0]=this.n2_1[0],Po(this.n2_1,this.n2_1,0,1,e+1|0);this.n2_1[e]=n,this.m2_1=r}else{var s=this.o2_1,o=Hn(this,this.m2_1+s|0);if(i=i){var s=this.m2_1,o=this.n2_1.length;if(s>1){if(n>=this.m2_1)Po(this.n2_1,this.n2_1,this.m2_1+1|0,this.m2_1,n);else Po(this.n2_1,this.n2_1,1,0,n),this.n2_1[0]=this.n2_1[this.n2_1.length-1|0],Po(this.n2_1,this.n2_1,this.m2_1+1|0,this.m2_1,this.n2_1.length-1|0);this.n2_1[this.m2_1]=null,this.m2_1=Vn(this,this.m2_1)}else{var r=Jn(this),s=Hn(this,this.m2_1+r|0);if(n<=s)Po(this.n2_1,this.n2_1,n,n+1|0,s+1|0);else Po(this.n2_1,this.n2_1,n,n+1|0,this.n2_1.length),this.n2_1[this.n2_1.length-1|0]=this.n2_1[0],Po(this.n2_1,this.n2_1,0,1,s+1|0);this.n2_1[s]=null}return this.o2_1=this.o2_1-1|0,e},y_(Gn).d3=function(){var t=this.o2_1,n=Hn(this,this.m2_1+t|0);this.m2_1=this.o2_1?t:function(t,n){return Yh(Array(n),null)}(0,this.o2_1),i=gl(n)?n:z_(),e=this.o2_1,r=Hn(this,this.m2_1+e|0);return this.m2_1this.o2_1&&(i[this.o2_1]=null),gl(i)?i:z_()},y_(Gn).f3=function(){var t,n=this.o2_1;return t=Yh(Array(n),null),this.e3(t)},y_(Gn).toArray=function(){return this.f3()},y_(Qn).e=function(){return!1},y_(Qn).f=function(){throw bf()},y_(ni).equals=function(t){return!(null==t||!pl(t,Oh))&&t.m()},y_(ni).hashCode=function(){return 1},y_(ni).toString=function(){return"[]"},y_(ni).g=function(){return 0},y_(ni).m=function(){return!0},y_(ni).l3=function(t){return!1},y_(ni).n=function(t){return!1},y_(ni).m3=function(t){return t.m()},y_(ni).i1=function(t){return this.m3(t)},y_(ni).h=function(t){throw uf("Empty list doesn't contain element at index "+t+".")},y_(ni).n3=function(t){return-1},y_(ni).o=function(t){return-1},y_(ni).d=function(){return ti()},y_(ei).g=function(){return this.o3_1.length},y_(ei).m=function(){return 0===this.o3_1.length},y_(ei).q3=function(t){return Mt(this.o3_1,t)},y_(ei).n=function(t){return!(null!=t&&!$l(t))&&this.q3(null==t||$l(t)?t:z_())},y_(ei).r3=function(t){var n;t:if(pl(t,Ih)&&t.m())n=!0;else{for(var i=t.d();i.e();){var e=i.f();if(!this.q3(e)){n=!1;break t}}n=!0}return n},y_(ei).i1=function(t){return this.r3(t)},y_(ei).d=function(){return Wh(this.o3_1)},y_(si).toString=function(){return"IndexedValue(index="+this.s3_1+", value="+this.t3_1+")"},y_(si).hashCode=function(){var t=this.s3_1;return St(t,31)+(null==this.t3_1?0:m_(this.t3_1))|0},y_(si).equals=function(t){if(this===t)return!0;if(!(t instanceof si))return!1;var n=t instanceof si?t:z_();return this.s3_1===n.s3_1&&!!p_(this.t3_1,n.t3_1)},y_(ui).d=function(){return new ai(this.u3_1())},y_(ai).e=function(){return this.v3_1.e()},y_(ai).f=function(){var t=this.w3_1;return this.w3_1=t+1|0,new si(No(t),this.v3_1.f())},y_(li).equals=function(t){return!(null==t||!pl(t,Mh))&&t.m()},y_(li).hashCode=function(){return 0},y_(li).toString=function(){return"{}"},y_(li).g=function(){return 0},y_(li).m=function(){return!0},y_(li).z3=function(t){return!1},y_(li).a2=function(t){return!(null!=t&&!$l(t))&&this.z3(null==t||$l(t)?t:z_())},y_(li).a4=function(t){return null},y_(li).g2=function(t){return null==t||$l(t)?this.a4(null==t||$l(t)?t:z_()):null},y_(li).q=function(){return Wi()},y_(li).h2=function(){return Wi()},y_(li).i2=function(){return ii()},y_(di).f=function(){return this.h4()},y_(pi).i4=function(){return this.j4()},y_(pi).f=function(){return new qh(this.i4())},y_(yi).e=function(){for(;;){switch(this.l4_1){case 0:break;case 1:if(x_(this.n4_1).e())return this.l4_1=2,!0;this.n4_1=null;break;case 4:return!1;case 3:case 2:return!0;default:throw $i(this)}this.l4_1=5;var t,n=x_(this.o4_1);this.o4_1=null,Jr(),t=$o(),n.p4(t),$o()}},y_(yi).f=function(){switch(this.l4_1){case 0:case 1:return function(t){if(t.e())return t.f();throw bf()}(this);case 2:return this.l4_1=1,x_(this.n4_1).f();case 3:this.l4_1=0;var t=this.m4_1,n=null==t||$l(t)?t:z_();return this.m4_1=null,n;default:throw $i(this)}},y_(yi).k4=function(t,n){this.m4_1=t,this.l4_1=3;var i=n;return this.o4_1=i,he()},y_(yi).q4=function(t){ts(t);null==t||$l(t)||z_(),this.l4_1=4},y_(yi).p4=function(t){return this.q4(t)},y_(yi).r4=function(){return ie()},y_(bi).d=function(){return function(t){var n=new yi;return n.o4_1=Xl(t,n,n),n}(this.s4_1)},y_(ki).f=function(){return this.u4_1.w4_1(this.t4_1.f())},y_(ki).e=function(){return this.t4_1.e()},y_(ji).d=function(){return new ki(this)},y_(ji).x4=function(t){return new Si(this.v4_1,this.w4_1,t)},y_(Ci).f=function(){if(!Ei(this))throw bf();return x_(this.z4_1).f()},y_(Ci).e=function(){return Ei(this)},y_(Si).d=function(){return new Ci(this)},y_(Oi).f=function(){if(-1===this.f5_1&&qi(this),0===this.f5_1)throw bf();var t=this.g5_1;return this.g5_1=null,this.f5_1=-1,null==t||$l(t)?t:z_()},y_(Oi).e=function(){return-1===this.f5_1&&qi(this),1===this.f5_1},y_(Ii).d=function(){return new Oi(this)},y_(Di).f=function(){if(0===this.l5_1)throw bf();var t=this.l5_1;return this.l5_1=t-1|0,this.m5_1.f()},y_(Di).e=function(){return this.l5_1>0&&this.m5_1.e()},y_(Mi).b1=function(t){return t>=this.o5_1?this:new Mi(this.n5_1,t)},y_(Mi).d=function(){return new Di(this)},y_(Ri).f=function(){if(this.q5_1<0&&Ni(this),0===this.q5_1)throw bf();var t=this.p5_1,n=$l(t)?t:z_();return this.q5_1=-1,n},y_(Ri).e=function(){return this.q5_1<0&&Ni(this),1===this.q5_1},y_(Pi).d=function(){return new Ri(this)},y_(Li).d=function(){return ti()},y_(Li).b1=function(t){return Fi()},y_(Ui).d=function(){return this.u5_1},y_(Yi).equals=function(t){return!(null==t||!pl(t,Th))&&t.m()},y_(Yi).hashCode=function(){return 0},y_(Yi).toString=function(){return"[]"},y_(Yi).g=function(){return 0},y_(Yi).m=function(){return!0},y_(Yi).l3=function(t){return!1},y_(Yi).n=function(t){return!1},y_(Yi).m3=function(t){return t.m()},y_(Yi).i1=function(t){return this.m3(t)},y_(Yi).d=function(){return ti()},y_(ne).y5=function(t){return null},y_(ne).e6=function(t,n){return t},y_(ne).f6=function(t){return t},y_(ne).d6=function(t){return this},y_(ne).hashCode=function(){return 0},y_(ne).toString=function(){return"EmptyCoroutineContext"},y_(oe).y5=function(t){for(var n=this;;){var i=n.i6_1.y5(t);if(null!=i)return i;var e=n.h6_1;if(!(e instanceof oe))return e.y5(t);n=e}},y_(oe).e6=function(t,n){return n(this.h6_1.e6(t,n),this.i6_1)},y_(oe).d6=function(t){if(null!=this.i6_1.y5(t))return this.h6_1;var n=this.h6_1.d6(t);return n===this.h6_1?this:n===ie()?this.i6_1:new oe(n,this.i6_1)},y_(oe).equals=function(t){return this===t||!!(t instanceof oe&&ee(t)===ee(this))&&function(t,n){for(var i=n;;){if(!re(t,i.i6_1))return!1;var e=i.h6_1;if(!(e instanceof oe))return re(t,pl(e,Zi)?e:z_());i=e}}(t,this)},y_(oe).hashCode=function(){return m_(this.h6_1)+m_(this.i6_1)|0},y_(oe).toString=function(){return"["+this.e6("",se)+"]"},y_(ue).b6=function(t){return this.z5_1(t)},y_(ue).c6=function(t){return t===this||this.a6_1===t},y_(ae).r=function(){return this.j6_1},y_(de).n6=function(){return this.y_1},y_(de).o6=function(){return this.z_1},y_(de).m=function(){return this.y_1>this.z_1},y_(de).equals=function(t){return t instanceof de&&(!(!this.m()||!t.m())||this.y_1===t.y_1&&this.z_1===t.z_1)},y_(de).hashCode=function(){return this.m()?-1:St(31,this.y_1)+this.z_1|0},y_(de).toString=function(){return this.y_1+".."+this.z_1},y_(me).m=function(){return jh(this.t6_1,this.u6_1)>0},y_(me).equals=function(t){return t instanceof me&&(!(!this.m()||!t.m())||!!p_(new qh(this.t6_1),new qh(t.t6_1))&&p_(new qh(this.u6_1),new qh(t.u6_1)))},y_(me).hashCode=function(){var t,n;return this.m()?t=-1:(n=this.t6_1,t=St(31,n)+this.u6_1|0),t},y_(me).toString=function(){return new qh(this.t6_1)+".."+new qh(this.u6_1)},y_(ge).e=function(){return this.y6_1},y_(ge).h4=function(){var t=this.z6_1;if(t===this.x6_1){if(!this.y6_1)throw bf();this.y6_1=!1}else{this.z6_1=this.z6_1+this.w6_1|0}return t},y_($e).e=function(){return this.c7_1},y_($e).j4=function(){var t=this.d7_1;if(t===this.b7_1){if(!this.c7_1)throw bf();this.c7_1=!1}else{this.d7_1=this.d7_1+this.a7_1|0}return ul(t)},y_(ye).x=function(t,n,i){return new ke(t,n,i)},y_(ke).d=function(){return new ge(this.y_1,this.z_1,this.a1_1)},y_(ke).m=function(){return this.a1_1>0?this.y_1>this.z_1:this.y_10?this.y_1+".."+this.z_1+" step "+this.a1_1:this.y_1+" downTo "+this.z_1+" step "+(0|-this.a1_1)},y_(xe).d=function(){return new $e(this.t6_1,this.u6_1,this.v6_1)},y_(xe).m=function(){return this.v6_1>0?jh(this.t6_1,this.u6_1)>0:jh(this.t6_1,this.u6_1)<0},y_(xe).equals=function(t){return t instanceof xe&&(!(!this.m()||!t.m())||!(!p_(new qh(this.t6_1),new qh(t.t6_1))||!p_(new qh(this.u6_1),new qh(t.u6_1)))&&this.v6_1===t.v6_1)},y_(xe).hashCode=function(){var t;if(this.m())t=-1;else{var n;n=this.t6_1;var i,e=St(31,n);i=this.u6_1,t=St(31,e+i|0)+this.v6_1|0}return t},y_(xe).toString=function(){return this.v6_1>0?new qh(this.t6_1)+".."+new qh(this.u6_1)+" step "+this.v6_1:new qh(this.t6_1)+" downTo "+new qh(this.u6_1)+" step "+(0|-this.v6_1)},y_(Ee).n6=function(){return this.f7_1},y_(Ee).o6=function(){return this.g7_1},y_(Ee).h7=function(t,n){return t<=n},y_(Ee).e7=function(t,n){var i="number"==typeof t?t:z_();return this.h7(i,"number"==typeof n?n:z_())},y_(Ee).i7=function(t){return t>=this.f7_1&&t<=this.g7_1},y_(Ee).q3=function(t){return this.i7("number"==typeof t?t:z_())},y_(Ee).m=function(){return!(this.f7_1<=this.g7_1)},y_(Ee).equals=function(t){return t instanceof Ee&&(!(!this.m()||!t.m())||this.f7_1===t.f7_1&&this.g7_1===t.g7_1)},y_(Ee).hashCode=function(){return this.m()?-1:St(31,e_(this.f7_1))+e_(this.g7_1)|0},y_(Ee).toString=function(){return this.f7_1+".."+this.g7_1},y_(tr).f=function(){if(-1===this.q7_1&&Qe(this),0===this.q7_1)throw bf();var t=this.t7_1,n=t instanceof de?t:z_();return this.t7_1=null,this.q7_1=-1,n},y_(tr).e=function(){return-1===this.q7_1&&Qe(this),1===this.q7_1},y_(nr).d=function(){return new tr(this)},y_(_r).g8=function(t){var n;try{n=function(t,n){var i=t.length;if(0===i)throw nf("The string is empty");var e=0,r=lr().d8_1,s="Infinity",o=s_(t,e);(p_(new qh(o),new qh(43))||p_(new qh(o),new qh(45)))&&(e=e+1|0);var u=e>0,a=!!u&&Be(t,45);if(i<=e)throw nf("No components");if(p_(new qh(s_(t,e)),new qh(80))){if((e=e+1|0)===i)throw Ql();for(var h=!1,_=null;e=0&&p<=Le(t)))throw nf("Missing unit for value "+d);e=e+1|0;var m=Ar(s_(t,p),h);if(null!=_&&_.m6(m)<=0)throw nf("Unexpected order of duration components");_=m;var g=Fe(d,46);m.equals(ph())&&g>0?(r=cr(r,zr(Ir(d.substring(0,g)),m)),r=cr(r,Er(Aa(d.substring(g)),m))):r=cr(r,zr(Ir(d),m))}}else{if(n)throw Ql();var $=i-e|0;if(Ja(t,e,s,0,Math.max($,8),!0))r=lr().e8_1;else{var y=null,b=!1,k=!u;if(u&&p_(new qh(s_(t,e)),new qh(40))&&p_(new qh(gn(t)),new qh(41))&&(k=!0,(e=e+1|0)==(i=i-1|0)))throw nf("No components");for(;e0){if(r=cr(r,zr(Ia(q.substring(0,R)),N)),r=cr(r,Er(Aa(q.substring(R)),N)),e0},y_(Is).equals=function(t){return t instanceof Is&&(!(!this.m()||!t.m())||this.la_1===t.la_1&&this.ma_1===t.ma_1)},y_(Is).hashCode=function(){var t,n;return this.m()?t=-1:(n=this.la_1,t=St(31,n)+this.ma_1|0),t},y_(Is).toString=function(){return new ks(this.la_1)+".."+new ks(this.ma_1)},y_(Ts).d=function(){return new Ds(this.la_1,this.ma_1,this.na_1)},y_(Ts).m=function(){var t;this.na_1>0?t=lo(this.la_1,this.ma_1)>0:t=lo(this.la_1,this.ma_1)<0;return t},y_(Ts).equals=function(t){return t instanceof Ts&&(!(!this.m()||!t.m())||this.la_1===t.la_1&&this.ma_1===t.ma_1&&this.na_1===t.na_1)},y_(Ts).hashCode=function(){var t;if(this.m())t=-1;else{var n;n=this.la_1;var i,e=St(31,n);i=this.ma_1,t=St(31,e+i|0)+this.na_1|0}return t},y_(Ts).toString=function(){return this.na_1>0?new ks(this.la_1)+".."+new ks(this.ma_1)+" step "+this.na_1:new ks(this.la_1)+" downTo "+new ks(this.ma_1)+" step "+(0|-this.na_1)},y_(Ds).e=function(){return this.pa_1},y_(Ds).da=function(){var t=this.ra_1;if(t===this.oa_1){if(!this.pa_1)throw bf();this.pa_1=!1}else{var n,i=this;n=this.ra_1+this.qa_1|0,i.ra_1=n}return t},y_(Ds).f=function(){return new ks(this.da())},y_(Us).xa=function(t){return Ls(this.wa_1,t)},y_(Us).p8=function(t){return function(t,n){return Ls(t.wa_1,n instanceof Us?n.wa_1:z_())}(this,t)},y_(Us).toString=function(){return Fs(this.wa_1)},y_(Us).hashCode=function(){return this.wa_1.hashCode()},y_(Us).equals=function(t){return function(t,n){if(!(n instanceof Us))return!1;var i=n instanceof Us?n.wa_1:z_();return!!t.equals(i)}(this.wa_1,t)},y_(Ys).e=function(){return this.za_1=0},y_(Vo).o=function(t){var n=0,i=Jn(this);if(n<=i)do{var e=n;if(n=n+1|0,p_(this.h(e),t))return e}while(e!==i);return-1},y_(Vo).h3=function(t){return new Ho(this,t)},y_(Vo).i3=function(t,n){var i=this.h3(t),e=n-t|0,r=0;if(r"),r=this.jf_1?"?":"";return Vh(i,e)+r},y_(ga).nf=function(){return this.anyClass},y_(ga).of=function(){return this.numberClass},y_(ga).pf=function(){return this.nothingClass},y_(ga).qf=function(){return this.booleanClass},y_(ga).rf=function(){return this.byteClass},y_(ga).sf=function(){return this.shortClass},y_(ga).tf=function(){return this.intClass},y_(ga).uf=function(){return this.floatClass},y_(ga).vf=function(){return this.doubleClass},y_(ga).wf=function(){return this.arrayClass},y_(ga).xf=function(){return this.stringClass},y_(ga).yf=function(){return this.throwableClass},y_(ga).zf=function(){return this.booleanArrayClass},y_(ga).ag=function(){return this.charArrayClass},y_(ga).bg=function(){return this.byteArrayClass},y_(ga).cg=function(){return this.shortArrayClass},y_(ga).dg=function(){return this.intArrayClass},y_(ga).eg=function(){return this.longArrayClass},y_(ga).fg=function(){return this.floatArrayClass},y_(ga).gg=function(){return this.doubleArrayClass},y_(ga).functionClass=function(t){var n,i,e=Qu()[t];if(null==e){var r=new Yu(Function,"Function"+t,(i=t,function(t){return"function"==typeof t&&t.length===i}));Qu()[t]=r,n=r}else n=e;return n},y_(ka).d=function(){var t=this.hg_1;if(null==t)throw _f("This sequence can be consumed only once.");var n=t;return this.hg_1=null,n.d()},y_(Ca).rb=function(){return this.a8_1.length},y_(Ca).sb=function(t){var n=this.a8_1;if(!(t>=0&&t<=Le(n)))throw uf("index: "+t+", length: "+this.rb()+"}");return s_(n,t)},y_(Ca).tb=function(t,n){return this.a8_1.substring(t,n)},y_(Ca).k7=function(t){return this.a8_1=this.a8_1+new qh(t),this},y_(Ca).b=function(t){return this.a8_1=this.a8_1+Hh(t),this},y_(Ca).ig=function(t,n,i){var e=t;return this.n8(null==e?"null":e,n,i)},y_(Ca).k8=function(t){return this.a8_1=this.a8_1+Hh(t),this},y_(Ca).l8=function(t){var n=this,i=this.a8_1,e=t;return n.a8_1=i+(null==e?"null":e),this},y_(Ca).m8=function(t,n){Cn().m1(t,this.rb());var i,e=this.a8_1.substring(0,t)+new qh(n);return i=this.a8_1.substring(t),this.a8_1=e+i,this},y_(Ca).jg=function(t,n){Cn().m1(t,this.rb());var i,e=null==n?"null":n,r=this.a8_1.substring(0,t)+e;return i=this.a8_1.substring(t),this.a8_1=r+i,this},y_(Ca).kg=function(t){if(t<0)throw nf("Negative new length: "+t+".");if(t<=this.rb()){var n;n=this.a8_1.substring(0,t),this.a8_1=n}else{var i=this.rb();if(iu_(t))throw uf("Start index out of bounds: "+n+", input length: "+u_(t));return Fa(this.wg_1,d_(t),n,this.wg_1)},y_(Pa).ah=function(t,n){if(n<0||n>u_(t))throw uf("Start index out of bounds: "+n+", input length: "+u_(t));return i=this,e=t,r=n,new Pi((function(){return i.zg(e,r)}),Ra);var i,e,r},y_(Pa).bh=function(t,n,i){return n=n===jt?0:n,i===jt?this.ah(t,n):i.ah.call(this,t,n)},y_(Pa).ch=function(t,n){Xe(n);for(var i=this.bh(t),e=0===n?i:function(t,n){if(!(n>=0))throw nf(d_("Requested element count "+n+" is less than zero."));return 0===n?Ai():pl(t,Ti)?t.b1(n):new Mi(t,n)}(i,n-1|0),r=Qo(),s=0,o=e.d();o.e();){var u=o.f();r.a(d_(a_(t,s,u.dh().n6()))),s=u.dh().o6()+1|0}return r.a(d_(a_(t,s,u_(t)))),r},y_(Pa).toString=function(){return this.wg_1.toString()},y_(La).toString=function(){return"MatchGroup(value="+this.eh_1+")"},y_(La).hashCode=function(){return g_(this.eh_1)},y_(La).equals=function(t){if(this===t)return!0;if(!(t instanceof La))return!1;var n=t instanceof La?t:z_();return this.eh_1===n.eh_1},y_(Ha).g=function(){return this.ih_1.length},y_(Ha).d=function(){return wn(Xt(Xn(this)),(t=this,function(n){return t.h(n)})).d();var t},y_(Ha).h=function(t){var n;return null==(n=this.ih_1[t])?null:new La(n)},y_(Va).dh=function(){return this.kh_1},y_(Va).f=function(){return Fa(this.ph_1,this.qh_1,this.nh_1.m()?(t=this,(n=this.nh_1.n6())>>i|0|t.v_1<<(32-i|0),t.v_1>>>i|0):new I_(32===i?t.v_1:t.v_1>>>(i-32|0)|0,0)}(this,t)},y_(I_).z9=function(t){return new I_(this.u_1&t.u_1,this.v_1&t.v_1)},y_(I_).xi=function(t){return new I_(this.u_1|t.u_1,this.v_1|t.v_1)},y_(I_).h8=function(t){return new I_(this.u_1^t.u_1,this.v_1^t.v_1)},y_(I_).wi=function(){return new I_(~this.u_1,~this.v_1)},y_(I_).yi=function(){return el(this.u_1)},y_(I_).zi=function(){return sl(this.u_1)},y_(I_).c8=function(){return this.u_1},y_(I_).ve=function(){return V_(this)},y_(I_).valueOf=function(){return this.ve()},y_(I_).equals=function(t){return t instanceof I_&&B_(this,t)},y_(I_).hashCode=function(){return t=this,il(),t.u_1^t.v_1;var t},y_(I_).toString=function(){return Y_(this,10)},y_(Gl).r4=function(){return x_(this.mj_1)},y_(Gl).oj=function(){var t,n=this.nj_1;if(null==n){var i=this.r4().y5(Ji()),e=null==i?null:i.w5(this),r=null==e?this:e;this.nj_1=r,t=r}else t=n;return t},y_(Gl).pj=function(t){var n,i=this;if(Wr(t))n=null;else{var e=t;n=null==e||$l(e)?e:z_()}for(var r=n,s=Gr(t);;){var o=i;null==s?o.jj_1=r:(o.hj_1=o.ij_1,o.kj_1=s);try{var u=o.qj();if(u===he())return $o();r=u,s=null}catch(t){r=null,s=t}Wl(o);var a=x_(o.gj_1);if(!(a instanceof Gl)){if(null!=s){var h,_=x_(s);Jr(),h=Qr(_),a.p4(h),$o()}else{var l,f=r;Jr(),l=f,a.p4(l),$o()}return $o()}i=a,$o()}},y_(Gl).p4=function(t){return this.pj(t)},y_(Kl).r4=function(){throw _f("This continuation is already complete")},y_(Kl).pj=function(t){throw _f("This continuation is already complete")},y_(Kl).p4=function(t){return this.pj(t)},y_(Kl).toString=function(){return"This continuation is already complete"},y_(Zl).qj=function(){if(null!=this.kj_1)throw this.kj_1;var t;return"function"==typeof(t=this.ak_1)?t(this.bk_1,this.zj_1):this.ak_1.ck(this.bk_1,this.zj_1)},y_(oe).f6=It,y_(ae).y5=At,y_(ae).e6=Tt,y_(ae).d6=Dt,y_(ae).f6=It,y_(ku).ae=function(){var t=Object.create(null);return t.foo=1,delete t.foo,$o(),t},n=3.141592653589793,F=null,t.$_$=t.$_$||{},t.$_$.a=function(t,n,i){return new Zu(t,Ml(n),i)},t.$_$.b=function(t,n){if(t instanceof Bu&&n instanceof Bu){var i,e=n.xe().$metadata$,r=null==e?null:e.associatedObjectKey;if(null==(i=null==r?null:r))return null;var s=i,o=t.xe().$metadata$,u=null==o?null:o.associatedObjects;if(null==u)return null;var a=u[s];return null==a?null:a()}return null},t.$_$.c=function(t){var n;switch(typeof t){case"string":n=$a().stringClass;break;case"number":n=(0|t)===t?$a().intClass:$a().doubleClass;break;case"boolean":n=$a().booleanClass;break;case"function":var i;i=t,n=$a().functionClass(i.length);break;default:var e;if(jl(t))e=$a().booleanArrayClass;else if(El(t))e=$a().charArrayClass;else if(xl(t))e=$a().byteArrayClass;else if(zl(t))e=$a().shortArrayClass;else if(Cl(t))e=$a().intArrayClass;else if(ql(t))e=$a().longArrayClass;else if(Sl(t))e=$a().floatArrayClass;else if(Ol(t))e=$a().doubleArrayClass;else if(pl(t,Vu))e=ya(Vu);else if(gl(t))e=$a().arrayClass;else{var r=Object.getPrototypeOf(t).constructor;e=r===Object?$a().anyClass:r===Error?$a().throwableClass:ba(r)}n=e}return n},t.$_$.d=ya,t.$_$.e=function(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0,n=n+t[r].length|0}while(r!==e);var s=t[0],o=new s.constructor(n);if(null!=s.$type$){var u=s.$type$;o.$type$=u}n=0;var a=0,h=t.length-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=t[_],f=0,c=l.length-1|0;if(f<=c)do{var v=f;f=f+1|0;var w=n;n=w+1|0,o[w]=l[v]}while(v!==c)}while(_!==h);return o},t.$_$.f=wh,t.$_$.g=ph,t.$_$.h=function(){return Lr(),k},t.$_$.i=function(){return Lr(),b},t.$_$.j=function(){return t=b_(y_(Gn)),Vo.call(t),Gn.call(t),t.n2_1=Wn().p2_1,t;var t},t.$_$.k=tu,t.$_$.l=Qo,t.$_$.m=nu,t.$_$.n=cu,t.$_$.o=lu,t.$_$.p=function(t){return function(t,n){return _u(n),n.zc(t),n}(t,b_(y_(vu)))},t.$_$.q=du,t.$_$.r=function(){return t=b_(y_(mu)),Zo.call(t),mu.call(t),t.od_1=lu(),t;var t},t.$_$.s=function(t){return function(t,n){return Zo.call(n),mu.call(n),n.od_1=cu(t.g()),n.l(t),n}(t,b_(y_(mu)))},t.$_$.t=Ou,t.$_$.u=Su,t.$_$.v=function(t){return function(t,n){return _u(n),Iu.call(n),n.me_1=lu(),n.zc(t),n}(t,b_(y_(Iu)))},t.$_$.w=Au,t.$_$.x=Tu,t.$_$.y=Ru,t.$_$.z=function t(n){var i=Ru(n,b_(y_(Lu)));return $_(i,t),i},t.$_$.a1=Pu,t.$_$.b1=function t(n,i){var e=Pu(n,i,b_(y_(Lu)));return $_(e,t),e},t.$_$.c1=function(t){return function(t,n){return Pa.call(n,t,Bi()),n}(t,b_(y_(Pa)))},t.$_$.d1=xa,t.$_$.e1=Ea,t.$_$.f1=Nf,t.$_$.g1=function t(n){var i=function(t,n){return Ef(null==t?null:d_(t),t instanceof Error?t:null,n),Tf.call(n),n}(n,b_(y_(Tf)));return $_(i,t),i},t.$_$.h1=Af,t.$_$.i1=function t(n){var i=zf(n,b_(y_(Cf)));return $_(i,t),i},t.$_$.j1=Ef,t.$_$.k1=function t(n,i){var e=Ef(n,i,b_(y_(Cf)));return $_(e,t),e},t.$_$.l1=cf,t.$_$.m1=wf,t.$_$.n1=sf,t.$_$.o1=function t(n){var i=sf(n,b_(y_(of)));return $_(i,t),i},t.$_$.p1=Ql,t.$_$.q1=tf,t.$_$.r1=nf,t.$_$.s1=ef,t.$_$.t1=function(t){return pf(t),ff.call(t),t},t.$_$.u1=hf,t.$_$.v1=_f,t.$_$.w1=lf,t.$_$.x1=function t(n,i){var e=lf(n,i,b_(y_(ff)));return $_(e,t),e},t.$_$.y1=function t(){var n,i=(pf(n=b_(y_(af))),af.call(n),n);return $_(i,t),i},t.$_$.z1=uf,t.$_$.a2=bf,t.$_$.b2=kf,t.$_$.c2=jf,t.$_$.d2=$f,t.$_$.e2=function t(){var n=pf(b_(y_(yf)));return $_(n,t),n},t.$_$.f2=gf,t.$_$.g2=function t(n,i){var e=gf(n,i,b_(y_(yf)));return $_(e,t),e},t.$_$.h2=Sf,t.$_$.i2=qf,t.$_$.j2=Of,t.$_$.k2=pr,t.$_$.l2=cr,t.$_$.m2=bh,t.$_$.n2=kh,t.$_$.o2=jh,t.$_$.p2=xh,t.$_$.q2=function(t,n){return ul(t-n|0)},t.$_$.r2=function(t,n){return ul(t+n|0)},t.$_$.s2=function(t,n){return new me(t,n)},t.$_$.t2=zh,t.$_$.u2=Eh,t.$_$.v2=Br,t.$_$.w2=Gr,t.$_$.x2=Wr,t.$_$.y2=Yr,t.$_$.z2=ss,t.$_$.a3=os,t.$_$.b3=ls,t.$_$.c3=function(t){return new Int8Array(t)},t.$_$.d3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.e3=cs,t.$_$.f3=fs,t.$_$.g3=ms,t.$_$.h3=bs,t.$_$.i3=gs,t.$_$.j3=function(t){return new Int32Array(t)},t.$_$.k3=js,t.$_$.l3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.m3=zs,t.$_$.n3=xs,t.$_$.o3=Ms,t.$_$.p3=Ns,t.$_$.q3=function(t){return Jh(t)},t.$_$.r3=Hs,t.$_$.s3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.t3=Bs,t.$_$.u3=Vs,t.$_$.v3=Xs,t.$_$.w3=Zs,t.$_$.x3=function(t){return new Int16Array(t)},t.$_$.y3=eo,t.$_$.z3=function(t,n,i){var e;e=i,t[n]=e},t.$_$.a4=so,t.$_$.b4=ro,t.$_$.c4=Ji,t.$_$.d4=ie,t.$_$.e4=function(){return null==L&&new Io,L},t.$_$.f4=bo,t.$_$.g4=qo,t.$_$.h4=Co,t.$_$.i4=zo,t.$_$.j4=jo,t.$_$.k4=function(){return null==P&&new Oo,P},t.$_$.l4=$a,t.$_$.m4=lr,t.$_$.n4=Sh,t.$_$.o4=O_,t.$_$.p4=Jr,t.$_$.q4=as,t.$_$.r4=ys,t.$_$.s4=Ps,t.$_$.t4=to,t.$_$.u4=$o,t.$_$.v4=Sn,t.$_$.w4=eu,t.$_$.x4=Ih,t.$_$.y4=vu,t.$_$.z4=mu,t.$_$.a5=Iu,t.$_$.b5=Nu,t.$_$.c5=Oh,t.$_$.d5=Dh,t.$_$.e5=Mh,t.$_$.f5=Ph,t.$_$.g5=Nh,t.$_$.h5=Rh,t.$_$.i5=Ah,t.$_$.j5=Th,t.$_$.k5=vi,t.$_$.l5=Po,t.$_$.m5=Ml,t.$_$.n5=function(t){return Xt(t.q())},t.$_$.o5=Xt,t.$_$.p5=function(t){return t<0&&function(){throw Nf("Count overflow has happened.")}(),t},t.$_$.q5=oi,t.$_$.r5=Mt,t.$_$.s5=function(t,n){return h_(t,n)},t.$_$.t5=function(t,n){return h_(t,n)},t.$_$.u5=function(t){return __(t)},t.$_$.v5=function(t){return __(t)},t.$_$.w5=function(t){return __(t)},t.$_$.x5=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Int16Array(n))},t.$_$.y5=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));var i=S_(t,n,new I_(0,0));return i.$type$="LongArray",i},t.$_$.z5=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));var i=S_(t,n,!1);return i.$type$="BooleanArray",i},t.$_$.a6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));var i=C_(t,Kh(n));return i.$type$="CharArray",i},t.$_$.b6=Nl,t.$_$.c6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Float64Array(n))},t.$_$.d6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Float32Array(n))},t.$_$.e6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return S_(t,n,null)},t.$_$.f6=function(t,n){if(!(n>=0))throw nf(d_("Invalid new array size: "+n+"."));return C_(t,new Int32Array(n))},t.$_$.g6=Lo,t.$_$.h6=function(t,n){if(!(n>=0))throw nf(d_("Requested element count "+n+" is less than zero."));return function(t,n){if(!(n>=0))throw nf(d_("Requested element count "+n+" is less than zero."));if(0===n)return Kn();if(pl(t,Ih)){if(n>=t.g())return Zt(t);if(1===n)return To(tn(t))}var i=0,e=tu(n),r=t.d();t:for(;r.e();){var s=r.f();if(e.a(s),(i=i+1|0)===n)break t}return Zn(e)}(t,fn(t.g()-n|0,0))},t.$_$.i6=Kn,t.$_$.j6=_i,t.$_$.k6=Bi,t.$_$.l6=function(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),t.fill(n,i,e)},t.$_$.m6=function(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),t.fill(n,i,e)},t.$_$.n6=Rl,t.$_$.o6=function(t){return t.m()?null:t.h(0)},t.$_$.p6=rn,t.$_$.q6=tn,t.$_$.r6=function(t,n){return function(t,n){if(pl(t,hi))return t.x3(n);var i=t.g2(n);if(null==i&&!t.a2(n))throw jf("Key "+n+" is missing in the map.");return null==i||$l(i)?i:z_()}(t,n)},t.$_$.s6=function(t){return new de(0,function(t){return t.length-1|0}(t))},t.$_$.t6=function(t){return new de(0,Pt(t))},t.$_$.u6=Xn,t.$_$.v6=Wt,t.$_$.w6=Bt,t.$_$.x6=Gt,t.$_$.y6=function(t){return t.length-1|0},t.$_$.z6=Jn,t.$_$.a7=Pt,t.$_$.b7=function(t){return t.m()?null:t.h(t.g()-1|0)},t.$_$.c7=function(t){if(t.m())throw jf("List is empty.");return t.h(Jn(t))},t.$_$.d7=To,t.$_$.e7=function(t){return t.length>0?Ml(t):Kn()},t.$_$.f7=Mo,t.$_$.g7=function(t){return t.length>0?(n=t,ci(i=Ou(t.length),n),i):_i();var n,i},t.$_$.h7=ri,t.$_$.i7=function(t,n){var i=function(t){return pl(t,Ih)?t.g():null}(n),e=null==i?null:t.g()+i|0,r=Mu(null==e?St(t.g(),2):e);return r.l(t),vi(r,n),r},t.$_$.j7=function(t,n){if(pl(t,Ih))return Jt(t,n);var i=Qo();return vi(i,t),vi(i,n),i},t.$_$.k7=Jt,t.$_$.l7=function(t,n){var i=tu(t.g()+1|0);return i.l(t),i.a(n),i},t.$_$.m7=wi,t.$_$.n7=function(t){if(t.m())throw jf("List is empty.");return t.c3(Jn(t))},t.$_$.o7=function(t){for(var n=t,i=0,e=n.length;i0?function(t){switch(t.length){case 0:return Bi();case 1:return Do(t[0]);default:return Lt(t,Mu(t.length))}}(t):Bi()},t.$_$.s7=function(t){return 1===t.g()?t.h(0):null},t.$_$.t7=Ro,t.$_$.u7=function(t,n,i,e){i=i===jt?0:i,e=e===jt?t.length:e,Cn().n1(i,e,t.length),function(t,n,i,e){n<(i-1|0)&&su(t,n,i-1|0,e)}(t,i,e,n)},t.$_$.v7=function(t,n){if(pl(t,Ih)){if(t.g()<=1)return Zt(t);var i=Lo(t),e=gl(i)?i:z_();return function(t,n){t.length>1&&ru(t,n)}(e,n),Ml(e)}var r=en(t);return Ro(r,n),r},t.$_$.w7=function(t){for(var n=Gh(t.g()),i=0,e=t.d();e.e();){var r=e.f(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.x7=function(t){return nn(t,du(oi(t,12)))},t.$_$.y7=function(t){for(var n=new Int32Array(t.g()),i=0,e=t.d();e.e();){var r=e.f(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.z7=function(t){if(0===t.g())return Kn();var n=t.q().d();if(!n.e())return Kn();var i=n.f();if(!n.e())return To(new is(i.r(),i.s()));var e,r=tu(t.g());e=new is(i.r(),i.s()),r.a(e);do{var s,o=n.f();s=new is(o.r(),o.s()),r.a(s)}while(n.e());return r},t.$_$.a8=Zt,t.$_$.b8=function(t){switch(t.length){case 0:return Kn();case 1:return To(t[0]);default:return function(t){return nu(function(t){return new ei(t,!1)}(t))}(t)}},t.$_$.c8=function(t){if(pl(t,Ih)){var n;switch(t.g()){case 0:n=_i();break;case 1:i=pl(t,Oh)?t.h(0):t.d().f(),ci(r=cu((e=[i]).length),e),n=r;break;default:n=fi(t,Ou(t.g()))}return n}var i,e,r;return function(t){var n;n=0===t.g()?_i():t;return n}(fi(t,Su()))},t.$_$.d8=Qt,t.$_$.e8=function(t){return pl(t,Ih)?Tu(t):nn(t,Au())},t.$_$.f8=Kt,t.$_$.g8=function(t){for(var n=new Int16Array(t.g()),i=0,e=t.d();e.e();){var r=e.f(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.h8=function(t){return[].slice.call(t)},t.$_$.i8=function(t){return new ui((n=t,function(){return Wh(n)}));var n},t.$_$.j8=function(t,n){return t===n?0:null==t?-1:null==n?1:f_(null!=t&&("string"===(e=typeof(i=t))||"boolean"===e||bl(i)||pl(i,po))?t:z_(),n);var i,e},t.$_$.k8=Lu,t.$_$.l8=he,t.$_$.m8=Xl,t.$_$.n8=Jl,t.$_$.o8=ae,t.$_$.p8=ue,t.$_$.q8=function(t){if(t instanceof ue){var n;if(t.c6(this.r())){var i=t.b6(this);n=null!=i&&pl(i,Zi)?i:null}else n=null;return n}return Ji()===t?pl(this,Zi)?this:z_():null},t.$_$.r8=function(t){return t instanceof ue?t.c6(this.r())&&null!=t.b6(this)?ie():this:Ji()===t?ie():this},t.$_$.s8=Xi,t.$_$.t8=Gi,t.$_$.u8=Tt,t.$_$.v8=At,t.$_$.w8=Dt,t.$_$.x8=Zi,t.$_$.y8=It,t.$_$.z8=Gl,t.$_$.a9=function(t,n,i){var e,r=Jl(Xl(t,n,i));Jr(),e=$o(),r.p4(e),$o()},t.$_$.b9=le,t.$_$.c9=function(t){return Object.prototype.toString.call(t)},t.$_$.d9=Wh,t.$_$.e9=Gh,t.$_$.f9=$_,t.$_$.g9=Xh,t.$_$.h9=Kh,t.$_$.i9=s_,t.$_$.j9=u_,t.$_$.k9=a_,t.$_$.l9=fl,t.$_$.m9=f_,t.$_$.n9=function(t,n,i,e){return Object.defineProperty(t,n,{configurable:!0,get:i,set:e})},t.$_$.o9=p_,t.$_$.p9=k_,t.$_$.q9=Yh,t.$_$.r9=e_,t.$_$.s9=function(t,n,i,e,r){return ll(),e.get=e,e.set=r,e.callableName=t,s=e,o=function(t,n){return ll(),(ll(),yt)[t][null==n?0:1]}(n,r),u=function(t,n){ll();var i=t.$imask$;return null==i?Bh([n]):i}(e,i),ll(),s.$metadata$=o,s.constructor=s,s.$imask$=u,s;var s,o,u},t.$_$.t9=g_,t.$_$.u9=m_,t.$_$.v9=Il,t.$_$.w9=gl,t.$_$.x9=jl,t.$_$.y9=xl,t.$_$.z9=El,t.$_$.aa=kl,t.$_$.ba=Ol,t.$_$.ca=Sl,t.$_$.da=Cl,t.$_$.ea=pl,t.$_$.fa=ql,t.$_$.ga=bl,t.$_$.ha=$l,t.$_$.ia=zl,t.$_$.ja=yl,t.$_$.ka=function(t){return(t instanceof Bu?t:z_()).xe()},t.$_$.la=Jh,t.$_$.ma=ul,t.$_$.na=function(t){return+t},t.$_$.oa=rl,t.$_$.pa=ol,t.$_$.qa=function(t){return sl(rl(t))},t.$_$.ra=b_,t.$_$.sa=Tl,t.$_$.ta=y_,t.$_$.ua=dl,t.$_$.va=el,t.$_$.wa=al,t.$_$.xa=sl,t.$_$.ya=d_,t.$_$.za=function(){return n},t.$_$.ab=function(t){return t<0?0|-t:t},t.$_$.bb=function(t){if(Uu(t))throw nf("Cannot round NaN value.");return t>zo().MAX_VALUE?zo().MAX_VALUE:tn?n:t},t.$_$.ib=function(t,n){return t>n?n:t},t.$_$.jb=function(t,n){return t.w(n)>0?n:t},t.$_$.kb=cn,t.$_$.lb=function(t,n,i){if(n>i)throw nf("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t},t.$_$.mb=vn,t.$_$.nb=_n,t.$_$.ob=ln,t.$_$.pb=function(t,n){return new Ee(t,n)},t.$_$.qb=function(t){return be().x(t.z_1,t.y_1,0|-t.a1_1)},t.$_$.rb=function(t,n){return function(t,n){if(!t)throw nf("Step must be positive, was: "+d_(n)+".")}(n>0,n),be().x(t.y_1,t.z_1,t.a1_1>0?n:0|-n)},t.$_$.sb=hn,t.$_$.tb=Vu,t.$_$.ub=Xu,t.$_$.vb=Ce,t.$_$.wb=gi,t.$_$.xb=mi,t.$_$.yb=function(t){return function(t){return t instanceof ka?t:new ka(t)}(new Ui(t))},t.$_$.zb=function(t,n){return new Ii(t,!0,n)},t.$_$.ac=function(t,n){return new Si(t,n,((i=function(t){return t.d()}).callableName="iterator",i));var i},t.$_$.bc=function(t,n){return new Si(t,n,((i=function(t){return t.d()}).callableName="iterator",i));var i},t.$_$.cc=wn,t.$_$.dc=function(t,n){return xi(zi([t,n]))},t.$_$.ec=function(t,n){return xi(zi([t,Xt(n)]))},t.$_$.fc=zi,t.$_$.gc=function(t){return new bi(t)},t.$_$.hc=dn,t.$_$.ic=Ca,t.$_$.jc=function(t){Wa();for(var n="",i=t,e=0,r=i.length;e=0:ir(t,n,0,u_(t),i)>=0},t.$_$.lc=He,t.$_$.mc=function(t){return Wa(),Qa(t,0,t.length,!1)},t.$_$.nc=function(t,n,i,e){return n=n===jt?0:n,i=i===jt?t.length:i,e=e!==jt&&e,Wa(),Cn().o1(n,i,t.length),Qa(t,n,i,e)},t.$_$.oc=$n,t.$_$.pc=function(t){return Wa(),function(t,n,i,e){if(sh(),!(n>=0&&i<=t.length&&n<=i))throw nf(d_("Failed requirement."));for(var r=new Int8Array(St(i-n|0,3)),s=0,o=n;o>6|192);var l=s;s=l+1|0,r[l]=el(63&a|128)}else if(a<55296||a>=57344){var f=s;s=f+1|0,r[f]=el(a>>12|224);var c=s;s=c+1|0,r[c]=el(a>>6&63|128);var v=s;s=v+1|0,r[v]=el(63&a|128)}else{var w=th(t,a,o,i,e);if(w<=0){var d=s;s=d+1|0,r[d]=Za()[0];var p=s;s=p+1|0,r[p]=Za()[1];var m=s;s=m+1|0,r[m]=Za()[2]}else{var g=s;s=g+1|0,r[g]=el(w>>18|240);var $=s;s=$+1|0,r[$]=el(w>>12&63|128);var y=s;s=y+1|0,r[y]=el(w>>6&63|128);var b=s;s=b+1|0,r[b]=el(63&w|128),o=o+1|0}}}return r.length===s?r:Nl(r,s)}(t,0,t.length,!1)},t.$_$.qc=function(t,n,i){return i=i!==jt&&i,u_(t)>0&&qe(s_(t,Le(t)),n,i)},t.$_$.rc=function(t,n,i){if(null==t)return null==n;if(null==n)return!1;if(!(i=i!==jt&&i))return t==n;if(t.length!==n.length)return!1;var e=0,r=t.length;if(er)return 0;var o=3&s;if(0===o){var u=2,a=e,h=0;if(h<=1)do{if(h=h+1|0,(a=a+(s>>u&127)|0)>n)return 3;if((a=a+(s>>(u=u+7|0)&127)|0)>n)return 0;u=u+7|0}while(h<=1);return 3}if(s<=7)return o;var _=n-e|0;return s>>St(2,s<=31?_%2|0:_)&3}(t)||function(t){var n=Ll(Yl().ej_1,t);return n>=0&&t<(Yl().ej_1[n]+Yl().fj_1[n]|0)}(zh(t))}(t)},t.$_$.ad=function(t){return Sh(),Sh(),t<=57343&&55296<=t},t.$_$.bd=qa,t.$_$.cd=Le,t.$_$.dd=Ve,t.$_$.ed=er,t.$_$.fd=gn,t.$_$.gd=function(t,n,i,e){e=e!==jt&&e;var r=new RegExp(Na().sg(n),e?"gui":"gu"),s=Na().tg(i);return t.replace(r,s)},t.$_$.hd=function(t,n,i,e){e=e!==jt&&e;var r=new RegExp(Na().sg(Eh(n)),e?"gui":"gu"),s=Eh(i);return t.replace(r,s)},t.$_$.id=function(t){var n;switch(u_(t)){case 0:throw jf("Char sequence is empty.");case 1:n=s_(t,0);break;default:throw nf("Char sequence has more than one element.")}return n},t.$_$.jd=function(t,n){return n.m()?"":function(t,n){var i=n.n6(),e=n.o6()+1|0;return t.substring(i,e)}(t,n)},t.$_$.kd=function(t,n,i,e){if(i=i!==jt&&i,e=e===jt?0:e,1===n.length)return We(t,Eh(n[0]),i,e);for(var r=pn(function(t,n,i,e,r){return i=i===jt?0:i,e=e!==jt&&e,Xe(r=r===jt?0:r),new nr(t,i,r,(s=n,o=e,function(t,n){var i=Ye(t,s,n,o);return i<0?null:es(i,1)}));var s,o}(t,n,jt,i,e)),s=tu(oi(r,10)),o=r.d();o.e();){var u;u=Ge(t,o.f()),s.a(u)}return s},t.$_$.ld=function(t,n,i,e){if(i=i!==jt&&i,e=e===jt?0:e,1===n.length){var r=n[0];if(0!==u_(r))return We(t,r,i,e)}for(var s=pn(Ke(t,n,jt,i,e)),o=tu(oi(s,10)),u=s.d();u.e();){var a;a=Ge(t,u.f()),o.a(a)}return o},t.$_$.md=Ka,t.$_$.nd=Be,t.$_$.od=function(t,n,i){i=i===jt?t:i;var e,r=Ve(t,n);if(-1===r)e=i;else{var s=r+1|0,o=t.length;e=t.substring(s,o)}return e},t.$_$.pd=function(t,n,i){i=i===jt?t:i;var e=Ve(t,n);return-1===e?i:t.substring(0,e)},t.$_$.qd=function(t,n){if(!(n>=0))throw nf(d_("Requested character count "+n+" is less than zero."));var i=t.length,e=i-cn(n,i)|0;return t.substring(e)},t.$_$.rd=yn,t.$_$.sd=function(t){return an(t)},t.$_$.td=function(t){return null!=t&&"true"===t.toLowerCase()},t.$_$.ud=function(t){var n,i=Re(t);return null==i?Ne(t):n=i,n},t.$_$.vd=function(t){var n=+t;return Uu(n)&&!Da(t)||0===n&&Ga(t)?null:n},t.$_$.wd=Aa,t.$_$.xd=De,t.$_$.yd=function(t){var n,i=De(t);return null==i?Ne(t):n=i,n},t.$_$.zd=Te,t.$_$.ae=Ia,t.$_$.be=function(t){var n,i=Pe(t);return null==i?Ne(t):n=i,n},t.$_$.ce=function(t,n){return Wf(al(t).z9(new I_(-1,0)),n)},t.$_$.de=Wf,t.$_$.ee=function(t){var n,i=function(t){return function(t,n){var i=_o(t,n);if(null==(null==i?null:new ks(i)))return null;var e=i;as();var r=255;return lo(e,r)>0?null:el(e)}(t,10)}(t);return null==(null==i?null:new _s(i))?Ne(t):n=i,n},t.$_$.fe=function(t){var n,i=function(t){return _o(t,10)}(t);return null==(null==i?null:new ks(i))?Ne(t):n=i,n},t.$_$.ge=function(t){var n,i=function(t){return function(t,n){Oa(n);var i=t.length;if(0===i)return null;Ps();var e,r=new I_(-1,-1),s=s_(t,0);if(jh(s,48)<0){if(1===i||!p_(new qh(s),new qh(43)))return null;e=1}else e=0;var o=new I_(477218588,119304647),u=o,a=al(n),h=new I_(0,0),_=e;if(_0){if(!p_(u,o))return null;if(co(h,u=vo(r,a))>0)return null}var c=h=h.n7(a),v=h,w=al(f).z9(new I_(-1,0));if(co(h=v.o7(w),c)<0)return null}while(_0?null:sl(e)}(t,10)}(t);return null==(null==i?null:new io(i))?Ne(t):n=i,n},t.$_$.ie=function(t){return function(t,n){n=n===jt?"":n;for(var i=rr(t),e=Qo(),r=i.d();r.e();){var s=r.f();!Ga(s)&&e.a(s)}for(var o=e,u=tu(oi(o,10)),a=o.d();a.e();){var h=a.f();u.a(Ie(h))}for(var _=function(t){var n=t.d();if(!n.e())return null;for(var i=n.f();n.e();){var e=n.f();f_(i,e)>0&&(i=e)}return i}(u),l=null==_?0:_,f=t.length+St(n.length,i.g())|0,c=Oe(n),v=Jn(i),w=Qo(),d=0,p=i.d();p.e();){var m=p.f(),g=d;d=g+1|0;var $,y,b=No(g),k=0!==b&&b!==v||!Ga(m)?null==(y=null==($=bn(m,l))?null:c($))?m:y:null;null==k||(w.a(k),$o())}return Gt(w,xa(f),"\n").toString()}(t,"")},t.$_$.je=function(t,n){return function(t,n,i){if(n=n===jt?"":n,Ga(i=i===jt?"|":i))throw nf(d_("marginPrefix must be non-blank string."));for(var e=rr(t),r=t.length+St(n.length,e.g())|0,s=Oe(n),o=Jn(e),u=Qo(),a=0,h=e.d();h.e();){var _=h.f(),l=a;a=l+1|0;var f,c=No(l);if(0!==c&&c!==o||!Ga(_)){var v,w;t:{var d=0,p=u_(_)-1|0;if(d<=p)do{var m=d;if(d=d+1|0,!qa(s_(_,m))){w=m;break t}}while(d<=p);w=-1}var g,$,y=w;if(-1===y)g=null;else if(Xa(_,i,y)){var b=y+i.length|0;g=_.substring(b)}else g=null;f=null==($=null==(v=g)?null:s(v))?_:$}else f=null;var k=f;null==k||(u.a(k),$o())}return Gt(u,xa(r),"\n").toString()}(t,"",n=n===jt?"|":n)},t.$_$.ke=function(t){var n;t:{var i=0,e=u_(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!qa(s_(t,r))){n=a_(t,r,u_(t));break t}}while(i<=e);n=""}return n},t.$_$.le=function(t){var n=0,i=u_(t)-1|0,e=!1;t:for(;n<=i;){var r=qa(s_(t,e?i:n));if(e){if(!r)break t;i=i-1|0}else r?n=n+1|0:e=!0}return a_(t,n,i+1|0)},t.$_$.me=jr,t.$_$.ne=Er,t.$_$.oe=function(t,n){return n.m6(ph())<=0?Or(vh(al(t),n,wh())):zr(al(t),n)},t.$_$.pe=Rf,t.$_$.qe=qh,t.$_$.re=po,t.$_$.se=Nr,t.$_$.te=Mr,t.$_$.ue=Uh,t.$_$.ve=Cf,t.$_$.we=df,t.$_$.xe=of,t.$_$.ye=ff,t.$_$.ze=af,t.$_$.af=I_,t.$_$.bf=xf,t.$_$.cf=ns,t.$_$.df=Mf,t.$_$.ef=is,t.$_$.ff=Zr,t.$_$.gf=yf,t.$_$.hf=z_,t.$_$.if=rs,t.$_$.jf=ps,t.$_$.kf=_s,t.$_$.lf=qs,t.$_$.mf=ks,t.$_$.nf=Ks,t.$_$.of=Us,t.$_$.pf=ho,t.$_$.qf=io,t.$_$.rf=go,t.$_$.sf=If,t.$_$.tf=function(t,n){if(t!==n){var i=t._suppressed;null==i?t._suppressed=ri([n]):i.a(n)}},t.$_$.uf=function(t){return t},t.$_$.vf=function(t){var n,i=t.u_1;return 0===i?(zo(),n=32+Hu(t.v_1)|0):n=Hu(i),n},t.$_$.wf=Qr,t.$_$.xf=x_,t.$_$.yf=function(t,n){return Pr(),new Rr(t.s8_1,n).x8()},t.$_$.zf=function(t){return!function(t){var n;return qo(),t===1/0?n=!0:(qo(),n=t===-1/0),n}(t)&&!Uu(t)},t.$_$.ag=function(t){return!function(t){var n;return Co(),t===1/0?n=!0:(Co(),n=t===-1/0),n}(t)&&!function(t){return!(t==t)}(t)},t.$_$.bg=Uu,t.$_$.cg=function(t,n){return new Ur(n)},t.$_$.dg=function(t){return new Ur(t)},t.$_$.eg=function(){throw Ff()},t.$_$.fg=Vh,t.$_$.gg=function(t){console.error(oh(t))},t.$_$.hg=oh,t.$_$.ig=function(){throw kn()},t.$_$.jg=E_,t.$_$.kg=Hh,t.$_$.lg=es,t.$_$.mg=lo,t.$_$.ng=jt,t.$_$.og=function(t){return new yh(t)},t})?i.apply(n,[n]):i)||(t.exports=e)},645:function(t,n,i){var e,r,s;r=[n,i(744)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt=Math.imul,ft=n.$_$.ta,ct=n.$_$.v9,vt=n.$_$.ng,wt=n.$_$.ua,dt=n.$_$.k4,pt=n.$_$.u4,mt=n.$_$.i6,gt=n.$_$.i,$t=n.$_$.cg,yt=n.$_$.l9,bt=n.$_$.ub,kt=n.$_$.s9,jt=n.$_$.q1,xt=n.$_$.ra,zt=n.$_$.f9,Et=n.$_$.s1,Ct=n.$_$.xe,St=n.$_$.q5,qt=n.$_$.k,Ot=n.$_$.hf,It=n.$_$.tb,At=n.$_$.ea,Tt=n.$_$.if,Dt=n.$_$.d,Mt=n.$_$.ef,Nt=n.$_$.d5,Rt=n.$_$.a5,Pt=n.$_$.h5,Lt=n.$_$.e5,Ft=n.$_$.y4,Ut=n.$_$.b5,Ht=n.$_$.i5,Vt=n.$_$.j5,Bt=n.$_$.z4,Yt=n.$_$.w4,Wt=n.$_$.f5,Gt=n.$_$.c5,Kt=n.$_$.x4,Jt=n.$_$.g6,Xt=n.$_$.ya,Zt=n.$_$.r1,Qt=n.$_$.w2,tn=n.$_$.y2,nn=n.$_$.ha,en=n.$_$.x2,rn=n.$_$.ff,sn=n.$_$.xf,on=n.$_$.o9,un=n.$_$.t9,an=n.$_$.wc,hn=n.$_$.b8,_n=n.$_$.l,ln=n.$_$.r,fn=n.$_$.x7,cn=n.$_$.w7,vn=n.$_$.i8,wn=n.$_$.lg,dn=n.$_$.c8,pn=n.$_$.dg,mn=n.$_$.s5,gn=n.$_$.sb,$n=n.$_$.v6,yn=n.$_$.sa,bn=n.$_$.c,kn=n.$_$.af,jn=n.$_$.qe,xn=n.$_$.m4,zn=n.$_$.me,En=n.$_$.xd,Cn=n.$_$.u9,Sn=n.$_$.v1,qn=n.$_$.m,On=n.$_$.s,In=n.$_$.w,An=n.$_$.x,Tn=n.$_$.o,Dn=n.$_$.p,Mn=n.$_$.u,Nn=n.$_$.v,Rn=n.$_$.m5,Pn=n.$_$.w9,Ln=n.$_$.rb,Fn=n.$_$.r6,Un=n.$_$.la,Hn=n.$_$.o4,Vn=n.$_$.y6,Bn=n.$_$.vf,Yn=n.$_$.q,Wn=n.$_$.vb,Gn=n.$_$.d9,Kn=n.$_$.q9,Jn=n.$_$.e9,Xn=n.$_$.j6,Zn=n.$_$.u5,Qn=n.$_$.n4,ti=n.$_$.z9,ni=n.$_$.h9,ii=n.$_$.g4,ei=n.$_$.ba,ri=n.$_$.h4,si=n.$_$.ca,oi=n.$_$.fa,ui=n.$_$.s4,ai=n.$_$.nf,hi=n.$_$.q3,_i=n.$_$.o3,li=n.$_$.i4,fi=n.$_$.da,ci=n.$_$.r4,vi=n.$_$.lf,wi=n.$_$.j3,di=n.$_$.g3,pi=n.$_$.j4,mi=n.$_$.ia,gi=n.$_$.t4,$i=n.$_$.pf,yi=n.$_$.x3,bi=n.$_$.v3,ki=n.$_$.f4,ji=n.$_$.y9,xi=n.$_$.q4,zi=n.$_$.jf,Ei=n.$_$.c3,Ci=n.$_$.z2,Si=n.$_$.e4,qi=n.$_$.x9,Oi=n.$_$.fb,Ii=n.$_$.a6,Ai=n.$_$.c6,Ti=n.$_$.d6,Di=n.$_$.y5,Mi=n.$_$.t3,Ni=n.$_$.u3,Ri=n.$_$.r3,Pi=n.$_$.s3,Li=n.$_$.f6,Fi=n.$_$.m3,Ui=n.$_$.n3,Hi=n.$_$.k3,Vi=n.$_$.l3,Bi=n.$_$.x5,Yi=n.$_$.a4,Wi=n.$_$.b4,Gi=n.$_$.y3,Ki=n.$_$.z3,Ji=n.$_$.b6,Xi=n.$_$.e3,Zi=n.$_$.f3,Qi=n.$_$.b3,te=n.$_$.d3,ne=n.$_$.z5,ie=n.$_$.ie,ee=n.$_$.rc,re=n.$_$.j9,se=n.$_$.i9,oe=n.$_$.u2,ue=n.$_$.sd,ae=n.$_$.zc,he=n.$_$.l4,_e=n.$_$.of,le=n.$_$.mf,fe=n.$_$.qf,ce=n.$_$.kf,ve=n.$_$.rf,we=n.$_$.g7,de=n.$_$.b7,pe=n.$_$.z6,me=n.$_$.n5,ge=n.$_$.ka,$e=n.$_$.b,ye=n.$_$.t6,be=n.$_$.z1,ke=n.$_$.s6,je=n.$_$.p4,xe=n.$_$.v2,ze=n.$_$.wf;function Ee(){return!1}function Ce(){return!1}function Se(){return mt()}function qe(t){return t.j32(this)}function Oe(){return!1}function Ie(t){return-1}function Ae(t,n,i,e,r){return e=e===vt?null:e,r===vt?this.v35(t,n,i,e):r.v35.call(this,t,n,i,e)}function Te(){return po()}function De(){}function Me(){}function Ne(t){return function(){return n=Rr("kotlinx.serialization.Polymorphic",Zr(),[],function(t){return function(n){return n.s32("type",sr(dt()).i32()),n.s32("value",Rr("kotlinx.serialization.Polymorphic<"+t.t32_1.ye()+">",Gr(),[])),n.m32_1=t.u32_1,pt()}}(t)),i=t.t32_1,new Ar(n,i);var n,i}}function Re(t){xs.call(this),this.t32_1=t,this.u32_1=mt();var n=gt();this.v32_1=$t(n,Ne(this))}function Pe(t,n,i){var e,r=t.x32(n,i);return null==r?function(t,n){var i="in the scope of '"+n.ye()+"'";throw Fe(null==t?"Class discriminator was missing and no default polymorphic serializers were registered "+i:"Class '"+t+"' is not registered for polymorphic serialization "+i+".\nTo be registered automatically, class '"+t+"' has to be '@Serializable', and the base class '"+n.ye()+"' has to be sealed and '@Serializable'.\nAlternatively, register the serializer for '"+t+"' explicitly in a corresponding SerializersModule.")}(i,t.w32()):e=r,e}function Le(t,n){return jt(t,n),He.call(n),n}function Fe(t){var n=Le(t,xt(ft(He)));return zt(n,Fe),n}function Ue(t,n,i){return Et(t,n,i),He.call(i),i}function He(){zt(this,He)}function Ve(t){Le(t,this),zt(this,Ve)}function Be(t,n){var i=function(t,n,i){return Ye.call(i,t,1===t.g()?"Field '"+t.h(0)+"' is required for type with serial name '"+n+"', but it was missing":"Fields "+t+" are required for type with serial name '"+n+"', but they were missing",null),i}(t,n,xt(ft(Ye)));return zt(i,Be),i}function Ye(t,n,i){Ue(n,i,this),zt(this,Ye),this.y32_1=t}function We(t){var n=function(t){var n,i=Ru(t,[]);if(null==i){var e=ge(t).Companion,r=null==e?null:e.serializer();n=null!=r&&At(r,De)?r:null}else n=i;return n}(t);return null==n?function(t){hu();var n=Vo().g2(t);return null==n||At(n,De)?n:Ot()}(t):n}function Ge(t,n,i){var e;if(i){for(var r=qt(St(n,10)),s=n.d();s.e();){var o;o=Je(t,s.f()),r.a(o)}e=r}else{for(var u=qt(St(n,10)),a=n.d();a.e();){var h,_=Xe(t,a.f());if(null==_)return null;h=_,u.a(h)}e=u}return e}function Ke(t,n,i){var e=function(t,n,i){var e,r=t;if(r.equals(Dt(Kt))||r.equals(Dt(Gt))||r.equals(Dt(Wt))||r.equals(Dt(Yt)))e=new Rs(n.h(0));else if(r.equals(Dt(Bt)))e=new Ps(n.h(0));else if(r.equals(Dt(Vt))||r.equals(Dt(Ht))||r.equals(Dt(Ut)))e=new Ls(n.h(0));else if(r.equals(Dt(Ft)))e=new Fs(n.h(0),n.h(1));else if(r.equals(Dt(Lt))||r.equals(Dt(Pt))||r.equals(Dt(Rt)))e=new Us(n.h(0),n.h(1));else if(r.equals(Dt(Nt)))f=n.h(0),c=n.h(1),e=new wu(f,c);else if(r.equals(Dt(Mt)))e=function(t,n){return new du(t,n)}(n.h(0),n.h(1));else if(r.equals(Dt(Tt)))h=n.h(0),_=n.h(1),l=n.h(2),e=new pu(h,_,l);else{var s;if(t.equals(he().wf())){var o=i();u=null!=o&&At(o,It)?o:Ot(),a=n.h(0),s=new Hs(u,a)}else s=null;e=s}var u,a;var h,_,l;var f,c;return e}(t,n,i);return null==e?function(t,n){return Ru(t,Jt(n).slice())}(t,n):e}function Je(t,n){var i,e=Ze(t,n,!0);return null==e?function(t){throw Fe(function(t){lo();var n=t.ye();return i=null==n?"":n,lo(),"Serializer for class '"+i+"' is not found.\nPlease ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.\n";var i}(t)+"\nOn Kotlin/JS explicitly declared serializer should be used for interfaces and enums without @Serializable annotation")}(ho(n)):i=e,i}function Xe(t,n){return Ze(t,n,!1)}function Ze(t,n,o){for(var u=ho(n),a=n.mf(),h=n.lf(),_=qt(St(h,10)),l=h.d();l.e();){var f,c=l.f().a33_1;if(null==c)throw Zt(Xt("Star projections in type arguments are not allowed, but had "+n));f=c,_.a(f)}var v,w,d,p=_;if(p.m())v=function(t,n){var r;if(er(),n)r=(er(),e).d33(t);else{var s=(er(),i).d33(t);r=null==s?null:null!=s&&At(s,De)?s:Ot()}return r}(u,a);else{var m,g=function(t,n,i){var e;if(er(),i)e=(er(),s).e33(t,n);else{var o=(er(),r).e33(t,n);e=new rn(o)instanceof rn?o:Ot()}return e}(u,p,a);if(o){var $;if(en(g))$=null;else{var y=tn(g);$=null==y||nn(y)?y:Ot()}m=$}else{if(null!=Qt(g))return null;var b=tn(g);m=null==b||nn(b)?b:Ot()}v=m}if(null!=v)return v;if(p.m())w=t.c33(u);else{var k=Ge(t,p,o);if(null==k)return null;var j=k,x=Ke(u,j,(d=p,function(){return d.h(0).kf()}));w=null==x?t.b33(u,j):x}var z,E=w;return null==(z=null==E?null:null!=E&&At(E,De)?E:Ot())?null:function(t,n){return n?rr(t):At(t,De)?t:Ot()}(z,a)}function Qe(t){return er(),We(t)}function tr(t){er();var n=We(t),i=null==n?null:rr(n);return null==i?null:null!=i&&At(i,De)?i:Ot()}function nr(t,n){return er(),Ke(t,sn(Ge(qu(),n,!0)),(i=n,function(){return i.h(0).kf()}));var i}function ir(t,n){er();var i,e=Ke(t,sn(Ge(qu(),n,!0)),(i=n,function(){return i.h(0).kf()})),r=null==e?null:rr(e);return null==r?null:null!=r&&At(r,De)?r:Ot()}function er(){o||(o=!0,i=Mu(Qe),e=Mu(tr),r=Nu(nr),s=Nu(ir))}function rr(t){return t.i32().f33()?At(t,De)?t:Ot():new ro(t)}function sr(t){return Yo()}function or(t){return null==W&&new Wo,W}function ur(){return null==A&&new $o,A}function ar(t){return Ko()}function hr(){return null==T&&new yo,T}function _r(t){return Xo()}function lr(){return null==D&&new bo,D}function fr(t){return null==J&&new Zo,J}function cr(){return null==M&&new ko,M}function vr(t){return null==st&&new gu,st}function wr(){return null==N&&new jo,N}function dr(t){return tu()}function pr(){return null==R&&new xo,R}function mr(t){return null==ot&&new $u,ot}function gr(){return null==P&&new zo,P}function $r(t){return null==Z&&new nu,Z}function yr(){return null==L&&new Eo,L}function br(t){return null==ut&&new yu,ut}function kr(){return null==F&&new Co,F}function jr(t){return null==Q&&new iu,Q}function xr(){return null==U&&new So,U}function zr(t){return null==at&&new bu,at}function Er(){return null==H&&new qo,H}function Cr(t){return ru()}function Sr(){return null==V&&new Oo,V}function qr(t){return null==nt&&new su,nt}function Or(){return null==x&&new zs,x}function Ir(t){return null==z&&new Es,z}function Ar(t,n){this.g33_1=t,this.h33_1=n,this.i33_1=this.g33_1.j33()+"<"+this.h33_1.ye()+">"}function Tr(t){var n=t;return n instanceof Ar?t.h33_1:n instanceof so?Tr(t.t33_1):null}function Dr(){}function Mr(t){this.c34_1=t,this.b34_1=t.l33()}function Nr(t){this.d34_1=t}function Rr(t,n,i,e){if(e=e===vt?Vr:e,an(t))throw Zt(Xt("Blank serial names are prohibited"));if(on(n,fs()))throw Zt(Xt("For StructureKind.CLASS please use 'buildClassSerialDescriptor' instead"));var r=new Pr(t);return e(r),new Ur(t,n,r.n32_1.g(),hn(i),r)}function Pr(t){this.k32_1=t,this.l32_1=!1,this.m32_1=mt(),this.n32_1=_n(),this.o32_1=ln(),this.p32_1=_n(),this.q32_1=_n(),this.r32_1=_n()}function Lr(t,n,i){if(i=i===vt?Br:i,an(t))throw Zt(Xt("Blank serial names are prohibited"));var e=new Pr(t);return i(e),new Ur(t,fs(),e.n32_1.g(),hn(n),e)}function Fr(t){return kt("_hashCode",1,bt,(function(t){return Fr(t)}),null),t.q34_1.s()}function Ur(t,n,i,e,r){this.f34_1=t,this.g34_1=n,this.h34_1=i,this.i34_1=r.m32_1,this.j34_1=fn(r.n32_1);var s,o=r.n32_1;s=Jt(o),this.k34_1=s,this.l34_1=_o(r.p32_1);var u,a,h=r.q32_1;u=Jt(h),this.m34_1=u,this.n34_1=cn(r.r32_1);for(var _,l=vn(this.k34_1),f=qt(St(l,10)),c=l.d();c.e();){var v,w=c.f();v=wn(w.t3_1,w.s3_1),f.a(v)}_=f,this.o34_1=dn(_),this.p34_1=_o(e),this.q34_1=pn((a=this,function(){return wo(a,a.p34_1)}))}function Hr(t,n){this.s34_1=t,this.t34_1=n}function Vr(t){return pt()}function Br(t){return pt()}function Yr(){u=this,Kr.call(this)}function Wr(){a=this,Kr.call(this)}function Gr(){return null==a&&new Wr,a}function Kr(){}function Jr(){h=this,Qr.call(this)}function Xr(){_=this,Qr.call(this)}function Zr(){return null==_&&new Xr,_}function Qr(){Kr.call(this)}function ts(){l=this,_s.call(this)}function ns(){f=this,_s.call(this)}function is(){c=this,_s.call(this)}function es(){v=this,_s.call(this)}function rs(){w=this,_s.call(this)}function ss(){d=this,_s.call(this)}function os(){p=this,_s.call(this)}function us(){m=this,_s.call(this)}function as(){g=this,_s.call(this)}function hs(){return null==g&&new as,g}function _s(){Kr.call(this)}function ls(){$=this,gs.call(this)}function fs(){return null==$&&new ls,$}function cs(){y=this,gs.call(this)}function vs(){return null==y&&new cs,y}function ws(){b=this,gs.call(this)}function ds(){return null==b&&new ws,b}function ps(){k=this,gs.call(this)}function ms(){return null==k&&new ps,k}function gs(){Kr.call(this)}function $s(){}function ys(){}function bs(){j=this,this.c36_1=-1,this.d36_1=-3}function ks(){return null==j&&new bs,j}function js(){}function xs(){}function zs(){x=this,this.f36_1=(null==C&&new eo,C)}function Es(){z=this,this.g36_1=new uu("kotlin.time.Duration",hs())}function Cs(){}function Ss(t){Ms.call(this,t)}function qs(t){Ms.call(this,t)}function Os(t){Ms.call(this,t)}function Is(t,n){Ns.call(this,"kotlin.collections.HashMap",t,n)}function As(t,n){Ns.call(this,"kotlin.collections.LinkedHashMap",t,n)}function Ts(t){Ms.call(this,t)}function Ds(t){Ms.call(this,t),this.y36_1=t.j33()+"Array"}function Ms(t){this.k36_1=t,this.l36_1=1}function Ns(t,n,i){this.q36_1=t,this.r36_1=n,this.s36_1=i,this.t36_1=2}function Rs(t){Vs.call(this,t),this.a37_1=new Ss(t.i32())}function Ps(t){Vs.call(this,t),this.s37_1=new qs(t.i32())}function Ls(t){Vs.call(this,t),this.z37_1=new Os(t.i32())}function Fs(t,n){Bs.call(this,t,n),this.g38_1=new Is(t.i32(),n.i32())}function Us(t,n){Bs.call(this,t,n),this.p38_1=new As(t.i32(),n.i32())}function Hs(t,n){Ys.call(this,n),this.u38_1=t,this.v38_1=new Ts(n.i32())}function Vs(t){Ys.call(this,t)}function Bs(t,n){Ws.call(this),this.l38_1=t,this.m38_1=n}function Ys(t){Ws.call(this),this.m37_1=t}function Ws(){}function Gs(t){Ys.call(this,t),this.c39_1=new Ds(t.i32())}function Ks(){}function Js(){E=this,this.g39_1=Un(0)}function Xs(){return null==E&&new Js,E}function Zs(t,n){Xs(),this.h39_1=t,this.i39_1=n;var i=this.h39_1.l33();if(Hn(),i<=64){var e;Hn(),e=64===i?new kn(0,0):new kn(-1,-1).q8(i),this.j39_1=e,this.k39_1=Xs().g39_1}else this.j39_1=new kn(0,0),this.k39_1=function(t,n){var i=(n-1|0)>>>6|0;Hn();var e=63&n,r=Un(i);return 0!==e&&(r[Vn(r)]=new kn(-1,-1).q8(n)),r}(0,i)}function Qs(t,n){return new to(t,new no(n))}function to(t,n){vo.call(this,t,n,1),this.z39_1=!0}function no(t){this.q3a_1=t}function io(t){throw Sn("Descriptor for type `kotlin.Nothing` does not have elements")}function eo(){C=this,this.t3a_1=ms(),this.u3a_1="kotlin.Nothing"}function ro(t){this.v3a_1=t,this.w3a_1=new so(this.v3a_1.i32())}function so(t){this.t33_1=t,this.u33_1=this.t33_1.j33()+"?",this.v33_1=ao(this.t33_1)}function oo(t,n){return function(){var i=ms();return Rr(t,i,[],function(t){return function(n){return n.m32_1=t.y3a_1,pt()}}(n))}}function uo(t,n){this.x3a_1=n,this.y3a_1=mt();var i=gt();this.z3a_1=$t(i,oo(t,this))}function ao(t){if(lo(),At(t,Cs))return t.r34();var n=Yn(t.l33()),i=0,e=t.l33();if(i0){var i,e=se(t,0);i=ae(e)?ue(e):oe(e),n=Xt(i)+t.substring(1)}else n=t;return n}function hu(){it||(it=!0,B=we([wn(he().xf(),sr(dt())),wn(Dt(jn),or(Qn())),wn(he().ag(),ur()),wn(he().vf(),ar(ii())),wn(he().gg(),hr()),wn(he().uf(),_r(ri())),wn(he().fg(),lr()),wn(Dt(kn),fr(Hn())),wn(he().eg(),cr()),wn(Dt(_e),vr(ui())),wn(Dt(ai),wr()),wn(he().tf(),dr(li())),wn(he().dg(),pr()),wn(Dt(le),mr(ci())),wn(Dt(vi),gr()),wn(he().sf(),$r(pi())),wn(he().cg(),yr()),wn(Dt(fe),br(gi())),wn(Dt($i),kr()),wn(he().rf(),jr(ki())),wn(he().bg(),xr()),wn(Dt(ce),zr(xi())),wn(Dt(zi),Er()),wn(he().qf(),Cr(Si())),wn(he().zf(),Sr()),wn(Dt(ve),qr(pt())),wn(he().pf(),Or()),wn(Dt(zn),Ir(xn()))]))}function _u(){fu.call(this)}function lu(t,n,i){t.y3f(n);var e=i();return t.j3f_1||t.z3f(),t.j3f_1=!1,e}function fu(){var t;t=_n(),this.i3f_1=t,this.j3f_1=!1}function cu(){return rt||(rt=!0,et=new Object),et}function vu(t,n){this.a3g_1=t,this.b3g_1=n}function wu(t,n){mu.call(this,t,n);var i,e,r=ds();this.e3g_1=Rr("kotlin.collections.Map.Entry",r,[],(i=t,e=n,function(t){return t.s32("key",i.i32()),t.s32("value",e.i32()),pt()}))}function du(t,n){var i,e;mu.call(this,t,n),this.k3g_1=Lr("kotlin.Pair",[],(i=t,e=n,function(t){return t.s32("first",i.i32()),t.s32("second",e.i32()),pt()}))}function pu(t,n,i){var e;this.l3g_1=t,this.m3g_1=n,this.n3g_1=i,this.o3g_1=Lr("kotlin.Triple",[],(e=this,function(t){return t.s32("first",e.l3g_1.i32()),t.s32("second",e.m3g_1.i32()),t.s32("third",e.n3g_1.i32()),pt()}))}function mu(t,n){this.g3g_1=t,this.h3g_1=n}function gu(){st=this,this.p3g_1=Qs("kotlin.ULong",fr(Hn()))}function $u(){ot=this,this.r3g_1=Qs("kotlin.UInt",dr(li()))}function yu(){ut=this,this.t3g_1=Qs("kotlin.UShort",$r(pi()))}function bu(){at=this,this.v3g_1=Qs("kotlin.UByte",jr(ki()))}function ku(){return Su(),ht}function ju(){}function xu(t,n,i,e,r){ju.call(this),this.w33_1=t,this.x33_1=n,this.y33_1=i,this.z33_1=e,this.a34_1=r}function zu(t){Cu.call(this),this.b3h_1=t}function Eu(t){Cu.call(this),this.z3g_1=t}function Cu(){}function Su(){_t||(_t=!0,ht=new xu(Xn(),Xn(),Xn(),Xn(),Xn()))}function qu(){return ku()}function Ou(){var t;t=Tn(),this.g3h_1=t;var n;n=Tn(),this.h3h_1=n;var i;i=Tn(),this.i3h_1=i;var e;e=Tn(),this.j3h_1=e;var r;r=Tn(),this.k3h_1=r}function Iu(t,n){var i=function(t,n,i){return Au.call(i,"Serializer for "+n+" already registered in the scope of "+t),i}(t,n,xt(ft(Au)));return zt(i,Iu),i}function Au(t){jt(t,this),zt(this,Au)}function Tu(){}function Du(t){this.s3h_1=t}function Mu(t){return new Fu(t)}function Nu(t){return new Uu(t)}function Ru(t,n){var i;try{var e,r=$e(t,Dt(Du));if(null!=r&&At(r,De))e=null!=r&&At(r,De)?r:Ot();else if(null!=r&&At(r,mo)){var s=r.a3b(n.slice());e=At(s,De)?s:Ot()}else e=function(t){var n=ge(t).$metadata$;return"interface"==(null==n?null:n.kind)}(t)?new Re(t):null;i=e}catch(t){i=null}return i}function Pu(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw be("Index "+n+" out of bounds "+ye(t));return t[n]}function Lu(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw be("Index "+n+" out of bounds "+ke(t));return t[n]}function Fu(t){this.t3h_1=t}function Uu(t){this.u3h_1=t}return wt(Me,"DeserializationStrategy",ct),wt(De,"KSerializer",ct,vt,[Me]),wt(xs,"AbstractPolymorphicSerializer",yt,vt,[De]),wt(Re,"PolymorphicSerializer",yt,xs),wt(He,"SerializationException",yt,Ct),wt(Ve,"UnknownFieldException",yt,He),wt(Ye,"MissingFieldException",yt,He),wt(Dr,"SerialDescriptor",ct),wt(Ar,"ContextDescriptor",yt,vt,[Dr]),wt(Mr,vt,yt),wt(Nr,vt,yt),wt(Pr,"ClassSerialDescriptorBuilder",yt),wt(Cs,"CachedNames",ct),wt(Ur,"SerialDescriptorImpl",yt,vt,[Dr,Cs]),wt(Hr,"WrappedSerialDescriptor",yt,vt,[Dr]),wt(Kr,"SerialKind",yt),wt(Yr,"ENUM",yn,Kr),wt(Wr,"CONTEXTUAL",yn,Kr),wt(Qr,"PolymorphicKind",yt,Kr),wt(Jr,"SEALED",yn,Qr),wt(Xr,"OPEN",yn,Qr),wt(_s,"PrimitiveKind",yt,Kr),wt(ts,"BOOLEAN",yn,_s),wt(ns,"BYTE",yn,_s),wt(is,"CHAR",yn,_s),wt(es,"SHORT",yn,_s),wt(rs,"INT",yn,_s),wt(ss,"LONG",yn,_s),wt(os,"FLOAT",yn,_s),wt(us,"DOUBLE",yn,_s),wt(as,"STRING",yn,_s),wt(gs,"StructureKind",yt,Kr),wt(ls,"CLASS",yn,gs),wt(cs,"LIST",yn,gs),wt(ws,"MAP",yn,gs),wt(ps,"OBJECT",yn,gs),wt(ys,"Decoder",ct),wt(js,"CompositeDecoder",ct),wt($s,"AbstractDecoder",yt,vt,[ys,js]),wt(bs,"Companion",yn),wt(zs,"NothingSerializer",yn,vt,[De]),wt(Es,"DurationSerializer",yn,vt,[De]),wt(Ms,"ListLikeDescriptor",yt,vt,[Dr]),wt(Ss,"ArrayListClassDesc",yt,Ms),wt(qs,"HashSetClassDesc",yt,Ms),wt(Os,"LinkedHashSetClassDesc",yt,Ms),wt(Ns,"MapLikeDescriptor",yt,vt,[Dr]),wt(Is,"HashMapClassDesc",yt,Ns),wt(As,"LinkedHashMapClassDesc",yt,Ns),wt(Ts,"ArrayClassDesc",yt,Ms),wt(Ds,"PrimitiveArrayDescriptor",yt,Ms),wt(Ws,"AbstractCollectionSerializer",yt,vt,[De]),wt(Ys,"CollectionLikeSerializer",yt,Ws),wt(Vs,"CollectionSerializer",yt,Ys),wt(Rs,"ArrayListSerializer",yt,Vs),wt(Ps,"HashSetSerializer",yt,Vs),wt(Ls,"LinkedHashSetSerializer",yt,Vs),wt(Bs,"MapLikeSerializer",yt,Ws),wt(Fs,"HashMapSerializer",yt,Bs),wt(Us,"LinkedHashMapSerializer",yt,Bs),wt(Hs,"ReferenceArraySerializer",yt,Ys),wt(Gs,"PrimitiveArraySerializer",yt,Ys),wt(Ks,"PrimitiveArrayBuilder",yt),wt(Js,"Companion",yn),wt(Zs,"ElementMarker",yt),wt(vo,"PluginGeneratedSerialDescriptor",yt,vt,[Dr,Cs]),wt(to,"InlineClassDescriptor",yt,vo),wt(go,"GeneratedSerializer",ct,vt,[De]),wt(no,vt,yt,vt,[go]),wt(eo,"NothingSerialDescriptor",yn,vt,[Dr]),wt(ro,"NullableSerializer",yt,vt,[De]),wt(so,"SerialDescriptorForNullable",yt,vt,[Dr,Cs]),wt(uo,"ObjectSerializer",yt,vt,[De]),wt(mo,"SerializerFactory",ct),wt($o,"CharArraySerializer",yn,Gs,[De,Gs]),wt(yo,"DoubleArraySerializer",yn,Gs,[De,Gs]),wt(bo,"FloatArraySerializer",yn,Gs,[De,Gs]),wt(ko,"LongArraySerializer",yn,Gs,[De,Gs]),wt(jo,"ULongArraySerializer",yn,Gs,[De,Gs]),wt(xo,"IntArraySerializer",yn,Gs,[De,Gs]),wt(zo,"UIntArraySerializer",yn,Gs,[De,Gs]),wt(Eo,"ShortArraySerializer",yn,Gs,[De,Gs]),wt(Co,"UShortArraySerializer",yn,Gs,[De,Gs]),wt(So,"ByteArraySerializer",yn,Gs,[De,Gs]),wt(qo,"UByteArraySerializer",yn,Gs,[De,Gs]),wt(Oo,"BooleanArraySerializer",yn,Gs,[De,Gs]),wt(Io,"CharArrayBuilder",yt,Ks),wt(Ao,"DoubleArrayBuilder",yt,Ks),wt(To,"FloatArrayBuilder",yt,Ks),wt(Do,"LongArrayBuilder",yt,Ks),wt(Mo,"ULongArrayBuilder",yt,Ks),wt(No,"IntArrayBuilder",yt,Ks),wt(Ro,"UIntArrayBuilder",yt,Ks),wt(Po,"ShortArrayBuilder",yt,Ks),wt(Lo,"UShortArrayBuilder",yt,Ks),wt(Fo,"ByteArrayBuilder",yt,Ks),wt(Uo,"UByteArrayBuilder",yt,Ks),wt(Ho,"BooleanArrayBuilder",yt,Ks),wt(Bo,"StringSerializer",yn,vt,[De]),wt(Wo,"CharSerializer",yn,vt,[De]),wt(Go,"DoubleSerializer",yn,vt,[De]),wt(Jo,"FloatSerializer",yn,vt,[De]),wt(Zo,"LongSerializer",yn,vt,[De]),wt(Qo,"IntSerializer",yn,vt,[De]),wt(nu,"ShortSerializer",yn,vt,[De]),wt(iu,"ByteSerializer",yn,vt,[De]),wt(eu,"BooleanSerializer",yn,vt,[De]),wt(su,"UnitSerializer",yn,vt,[De]),wt(uu,"PrimitiveSerialDescriptor",yt,vt,[Dr]),wt(fu,"TaggedDecoder",yt,vt,[ys,js]),wt(_u,"NamedValueDecoder",yt,fu),wt(vu,"MapEntry",yt,vt,[Nt]),wt(mu,"KeyValueSerializer",yt,vt,[De]),wt(wu,"MapEntrySerializer",yt,mu),wt(du,"PairSerializer",yt,mu),wt(pu,"TripleSerializer",yt,vt,[De]),wt(gu,"ULongSerializer",yn,vt,[De]),wt($u,"UIntSerializer",yn,vt,[De]),wt(yu,"UShortSerializer",yn,vt,[De]),wt(bu,"UByteSerializer",yn,vt,[De]),wt(ju,"SerializersModule",yt),wt(xu,"SerialModuleImpl",yt,ju),wt(Cu,"ContextualProvider",yt),wt(zu,"Argless",yt,Cu),wt(Eu,"WithTypeArguments",yt,Cu),wt(Tu,"SerializersModuleCollector",ct),wt(Ou,"SerializersModuleBuilder",yt,vt,[Tu]),wt(Au,"SerializerAlreadyRegisteredException",yt,Ct),wt(Du,"SerializableWith",yt,vt,vt,0),wt(Fu,vt,yt),wt(Uu,vt,yt),ft(Re).w32=function(){return this.t32_1},ft(Re).i32=function(){return kt("descriptor",1,bt,(function(t){return t.i32()}),null),this.v32_1.s()},ft(Re).toString=function(){return"kotlinx.serialization.PolymorphicSerializer(baseClass: "+this.t32_1+")"},ft(Ar).k33=function(){return this.g33_1.k33()},ft(Ar).l33=function(){return this.g33_1.l33()},ft(Ar).m33=function(){return this.g33_1.m33()},ft(Ar).f33=function(){return this.g33_1.f33()},ft(Ar).n33=function(){return this.g33_1.n33()},ft(Ar).o33=function(t){return this.g33_1.o33(t)},ft(Ar).p33=function(t){return this.g33_1.p33(t)},ft(Ar).q33=function(t){return this.g33_1.q33(t)},ft(Ar).r33=function(t){return this.g33_1.r33(t)},ft(Ar).s33=function(t){return this.g33_1.s33(t)},ft(Ar).j33=function(){return this.i33_1},ft(Ar).equals=function(t){var n=t instanceof Ar?t:null;if(null==n)return!1;var i=n;return!!on(this.g33_1,i.g33_1)&&i.h33_1.equals(this.h33_1)},ft(Ar).hashCode=function(){var t=this.h33_1.hashCode();return lt(31,t)+un(this.i33_1)|0},ft(Ar).toString=function(){return"ContextDescriptor(kClass: "+this.h33_1+", original: "+this.g33_1+")"},ft(Mr).e=function(){return this.b34_1>0},ft(Mr).f=function(){var t=this.c34_1.l33(),n=this.b34_1;return this.b34_1=n-1|0,this.c34_1.p33(t-n|0)},ft(Nr).d=function(){return new Mr(this.d34_1)},ft(Pr).e34=function(t,n,i,e){var r;if(!this.o32_1.a(t))throw r="Element with name '"+t+"' is already registered in "+this.k32_1,Zt(Xt(r));this.n32_1.a(t),this.p32_1.a(n),this.q32_1.a(i),this.r32_1.a(e)},ft(Pr).s32=function(t,n,i,e,r){var s;return i=i===vt?mt():i,e=e!==vt&&e,r===vt?(this.e34(t,n,i,e),s=pt()):s=r.e34.call(this,t,n,i,e),s},ft(Ur).j33=function(){return this.f34_1},ft(Ur).n33=function(){return this.g34_1},ft(Ur).l33=function(){return this.h34_1},ft(Ur).k33=function(){return this.i34_1},ft(Ur).r34=function(){return this.j34_1},ft(Ur).r33=function(t){return Pu(this.k34_1,t)},ft(Ur).q33=function(t){var n,i=this.o34_1.g2(t);return null==i?(ks(),n=-3):n=i,n},ft(Ur).o33=function(t){return Pu(this.m34_1,t)},ft(Ur).p33=function(t){return Pu(this.l34_1,t)},ft(Ur).s33=function(t){return Lu(this.n34_1,t)},ft(Ur).equals=function(t){var n;t:if(this!==t)if(t instanceof Ur)if(this.j33()===t.j33()){var i=t;if(mn(this.p34_1,i.p34_1))if(this.l33()===t.l33()){var e=0,r=this.l33();if(e=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return!1},ft(Ms).o33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return mt()},ft(Ms).p33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return this.k36_1},ft(Ms).equals=function(t){return this===t||t instanceof Ms&&!(!on(this.k36_1,t.k36_1)||this.j33()!==t.j33())},ft(Ms).hashCode=function(){return lt(Cn(this.k36_1),31)+un(this.j33())|0},ft(Ms).toString=function(){return this.j33()+"("+this.k36_1+")"},ft(Ns).j33=function(){return this.q36_1},ft(Ns).n33=function(){return ds()},ft(Ns).l33=function(){return this.t36_1},ft(Ns).r33=function(t){return t.toString()},ft(Ns).q33=function(t){var n=En(t);if(null==n)throw Zt(t+" is not a valid map index");return n},ft(Ns).s33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return!1},ft(Ns).o33=function(t){var n;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));return mt()},ft(Ns).p33=function(t){var n,i;if(!(t>=0))throw n="Illegal index "+t+", "+this.j33()+" expects only non-negative indices",Zt(Xt(n));switch(t%2|0){case 0:i=this.r36_1;break;case 1:i=this.s36_1;break;default:throw Sn("Unreached")}return i},ft(Ns).equals=function(t){return this===t||t instanceof Ns&&this.j33()===t.j33()&&!!on(this.r36_1,t.r36_1)&&!!on(this.s36_1,t.s36_1)},ft(Ns).hashCode=function(){var t=un(this.j33());return t=lt(31,t)+Cn(this.r36_1)|0,lt(31,t)+Cn(this.s36_1)|0},ft(Ns).toString=function(){return this.j33()+"("+this.r36_1+", "+this.s36_1+")"},ft(Rs).i32=function(){return this.a37_1},ft(Rs).b37=function(){return _n()},ft(Rs).c37=function(t){return t.g()},ft(Rs).d37=function(t){return this.c37(t instanceof Yt?t:Ot())},ft(Rs).e37=function(t){return t},ft(Rs).f37=function(t){return this.e37(t instanceof Yt?t:Ot())},ft(Rs).g37=function(t){var n=t instanceof Yt?t:null;return null==n?qn(t):n},ft(Rs).h37=function(t){return this.g37(null!=t&&At(t,Gt)?t:Ot())},ft(Rs).i37=function(t,n){return t.ad(n)},ft(Rs).j37=function(t,n){return this.i37(t instanceof Yt?t:Ot(),n)},ft(Rs).k37=function(t,n,i){t.z2(n,i)},ft(Rs).l37=function(t,n,i){var e=t instanceof Yt?t:Ot();return this.k37(e,n,null==i||nn(i)?i:Ot())},ft(Ps).i32=function(){return this.s37_1},ft(Ps).b37=function(){return ln()},ft(Ps).t37=function(t){return t.g()},ft(Ps).d37=function(t){return this.t37(t instanceof Bt?t:Ot())},ft(Ps).u37=function(t){return t},ft(Ps).f37=function(t){return this.u37(t instanceof Bt?t:Ot())},ft(Ps).v37=function(t){var n=t instanceof Bt?t:null;return null==n?On(t):n},ft(Ps).h37=function(t){return this.v37(null!=t&&At(t,Vt)?t:Ot())},ft(Ps).w37=function(t,n){},ft(Ps).j37=function(t,n){return this.w37(t instanceof Bt?t:Ot(),n)},ft(Ps).x37=function(t,n,i){t.a(i)},ft(Ps).l37=function(t,n,i){var e=t instanceof Bt?t:Ot();return this.x37(e,n,null==i||nn(i)?i:Ot())},ft(Ls).i32=function(){return this.z37_1},ft(Ls).b37=function(){return In()},ft(Ls).a38=function(t){return t.g()},ft(Ls).d37=function(t){return this.a38(t instanceof Ut?t:Ot())},ft(Ls).b38=function(t){return t},ft(Ls).f37=function(t){return this.b38(t instanceof Ut?t:Ot())},ft(Ls).v37=function(t){var n=t instanceof Ut?t:null;return null==n?An(t):n},ft(Ls).h37=function(t){return this.v37(null!=t&&At(t,Vt)?t:Ot())},ft(Ls).c38=function(t,n){},ft(Ls).j37=function(t,n){return this.c38(t instanceof Ut?t:Ot(),n)},ft(Ls).d38=function(t,n,i){t.a(i)},ft(Ls).l37=function(t,n,i){var e=t instanceof Ut?t:Ot();return this.d38(e,n,null==i||nn(i)?i:Ot())},ft(Fs).i32=function(){return this.g38_1},ft(Fs).b37=function(){return Tn()},ft(Fs).h38=function(t){return lt(t.g(),2)},ft(Fs).d37=function(t){return this.h38(t instanceof Ft?t:Ot())},ft(Fs).i38=function(t){return t},ft(Fs).f37=function(t){return this.i38(t instanceof Ft?t:Ot())},ft(Fs).j38=function(t){var n=t instanceof Ft?t:null;return null==n?Dn(t):n},ft(Fs).h37=function(t){return this.j38(null!=t&&At(t,Lt)?t:Ot())},ft(Fs).k38=function(t,n){},ft(Fs).j37=function(t,n){return this.k38(t instanceof Ft?t:Ot(),n)},ft(Us).i32=function(){return this.p38_1},ft(Us).b37=function(){return Mn()},ft(Us).q38=function(t){return lt(t.g(),2)},ft(Us).d37=function(t){return this.q38(t instanceof Rt?t:Ot())},ft(Us).r38=function(t){return t},ft(Us).f37=function(t){return this.r38(t instanceof Rt?t:Ot())},ft(Us).j38=function(t){var n=t instanceof Rt?t:null;return null==n?Nn(t):n},ft(Us).h37=function(t){return this.j38(null!=t&&At(t,Lt)?t:Ot())},ft(Us).s38=function(t,n){},ft(Us).j37=function(t,n){return this.s38(t instanceof Rt?t:Ot(),n)},ft(Hs).i32=function(){return this.v38_1},ft(Hs).b37=function(){return _n()},ft(Hs).w38=function(t){return t.g()},ft(Hs).d37=function(t){return this.w38(t instanceof Yt?t:Ot())},ft(Hs).x38=function(t){return function(t,n){return Jt(t)}(t,this.u38_1)},ft(Hs).f37=function(t){return this.x38(t instanceof Yt?t:Ot())},ft(Hs).y38=function(t){return qn(Rn(t))},ft(Hs).h37=function(t){return this.y38(null!=t&&Pn(t)?t:Ot())},ft(Hs).z38=function(t,n){return t.ad(n)},ft(Hs).j37=function(t,n){return this.z38(t instanceof Yt?t:Ot(),n)},ft(Hs).a39=function(t,n,i){t.z2(n,i)},ft(Hs).l37=function(t,n,i){var e=t instanceof Yt?t:Ot();return this.a39(e,n,null==i||nn(i)?i:Ot())},ft(Bs).n37=function(t,n,i,e){if(!(e>=0))throw Zt(Xt("Size must be known in advance when using READ_ALL"));var r=Ln(gn(0,lt(e,2)),2),s=r.y_1,o=r.z_1,u=r.a1_1;if(u>0&&s<=o||u<0&&o<=s)do{var a=s;s=s+u|0,this.o37(t,i+a|0,n,!1)}while(a!==o)},ft(Bs).o37=function(t,n,i,e){var r,s=t.w35(this.i32(),n,this.l38_1);if(e){var o=t.a36(this.i32());if(o!==(n+1|0))throw Zt(Xt("Value must follow key in a map, index for key: "+n+", returned index for value: "+o));r=o}else r=n+1|0;var u=r,a=!i.a2(s)||this.m38_1.i32().n33()instanceof _s?t.w35(this.i32(),u,this.m38_1):t.v35(this.i32(),u,this.m38_1,Fn(i,s));i.f4(s,a)},ft(Ys).n37=function(t,n,i,e){if(!(e>=0))throw Zt(Xt("Size must be known in advance when using READ_ALL"));var r=0;if(r>>6|0)-1|0;Hn();var e=63&n;t.k39_1[i]=t.k39_1[i].xi(new kn(1,0).q8(e))}(this,t)},ft(Zs).m39=function(){for(var t=this.h39_1.l33();!this.j39_1.equals(new kn(-1,-1));){var n=Bn(this.j39_1.wi());if(this.j39_1=this.j39_1.xi(new kn(1,0).q8(n)),this.i39_1(this.h39_1,n))return n}return Hn(),t>64?function(t){var n=0,i=t.k39_1.length-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=e+1|0;Hn();for(var s=lt(r,64),o=t.k39_1[e];!o.equals(new kn(-1,-1));){var u=Bn(o.wi());o=o.xi(new kn(1,0).q8(u));var a=s+u|0;if(t.i39_1(t.h39_1,a))return t.k39_1[e]=o,a}t.k39_1[e]=o}while(n<=i);return ks(),-1}(this):(ks(),-1)},ft(to).m33=function(){return this.z39_1},ft(to).hashCode=function(){return lt(ft(vo).hashCode.call(this),31)},ft(to).equals=function(t){var n;t:if(this!==t)if(t instanceof to)if(this.j33()===t.j33()){var i=t;if(i.z39_1&&mn(this.m3a(),i.m3a()))if(this.l33()===t.l33()){var e=0,r=this.l33();if(e>>1|0}while(s<32);throw Be(e,i.j33())},t.$_$.k2=ku,t.$_$.l2=qu,t.$_$.m2=Ou,t.$_$.n2=function(t,n){Su();var i=new Ou;return i.l3h(t),i.l3h(n),i.f1c()},t.$_$.o2=Me,t.$_$.p2=De,t.$_$.q2=Ye,t.$_$.r2=He,t.$_$.s2=We,t.$_$.t2=function(t){return Je(qu(),t)},t.$_$.u2=Je,t})?e.apply(n,r):e)||(t.exports=s)},730:function(t,n,i){var e,r,s;r=[n,i(645),i(744)],void 0===(s="function"==typeof(e=function(t,n,i){"use strict";var e,r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T,D,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,J,X,Z,Q,tt=Math.imul,nt=n.$_$.l2,it=i.$_$.ta,et=i.$_$.sa,rt=i.$_$.ng,st=i.$_$.ua,ot=i.$_$.l9,ut=n.$_$.w1,at=n.$_$.u1,ht=i.$_$.v9,_t=i.$_$.hf,lt=i.$_$.o9,ft=i.$_$.u9,ct=i.$_$.v6,vt=i.$_$.c5,wt=i.$_$.u4,dt=i.$_$.e1,pt=i.$_$.m2,mt=i.$_$.e5,gt=i.$_$.ya,$t=i.$_$.r1,yt=i.$_$.c,bt=i.$_$.t9,kt=i.$_$.i,jt=i.$_$.cg,xt=n.$_$.h2,zt=i.$_$.yd,Et=i.$_$.ae,Ct=i.$_$.wd,St=i.$_$.k4,qt=n.$_$.x,Ot=n.$_$.d2,It=n.$_$.g,At=n.$_$.n1,Tt=n.$_$.p2,Dt=n.$_$.u,Mt=n.$_$.j1,Nt=n.$_$.v,Rt=n.$_$.h,Pt=n.$_$.j,Lt=n.$_$.e1,Ft=i.$_$.ea,Ut=i.$_$.v1,Ht=i.$_$.dg,Vt=n.$_$.h1,Bt=n.$_$.g1,Yt=n.$_$.f1,Wt=i.$_$.ub,Gt=i.$_$.s9,Kt=n.$_$.a2,Jt=i.$_$.f9,Xt=n.$_$.r2,Zt=n.$_$.b,Qt=i.$_$.j9,tn=i.$_$.k9,nn=i.$_$.fb,en=i.$_$.kb,rn=n.$_$.o,sn=n.$_$.k,on=i.$_$.u,un=i.$_$.l,an=i.$_$.s7,hn=i.$_$.d9,_n=i.$_$.j6,ln=i.$_$.r6,fn=i.$_$.e6,cn=i.$_$.f6,vn=i.$_$.q9,wn=n.$_$.l,dn=i.$_$.se,pn=i.$_$.yf,mn=i.$_$.z8,gn=i.$_$.te,$n=i.$_$.rf,yn=i.$_$.l8,bn=n.$_$.y1,kn=i.$_$.d,jn=n.$_$.o2,xn=i.$_$.ha,zn=n.$_$.r1,En=i.$_$.xf,Cn=i.$_$.kc,Sn=i.$_$.fg,qn=n.$_$.q2,On=n.$_$.a,In=i.$_$.wa,An=i.$_$.xe,Tn=i.$_$.ag,Dn=i.$_$.zf,Mn=i.$_$.i9,Nn=n.$_$.t1,Rn=n.$_$.s1,Pn=i.$_$.fe,Ln=i.$_$.i3,Fn=i.$_$.ge,Un=i.$_$.p3,Hn=i.$_$.ee,Vn=i.$_$.a3,Bn=i.$_$.he,Yn=i.$_$.w3,Wn=n.$_$.v1,Gn=i.$_$.r4,Kn=n.$_$.z,Jn=i.$_$.s4,Xn=n.$_$.b1,Zn=i.$_$.q4,Qn=n.$_$.a1,ti=i.$_$.t4,ni=n.$_$.y,ii=i.$_$.r7,ei=i.$_$.ma,ri=i.$_$.t2,si=i.$_$.rc,oi=i.$_$.qe,ui=i.$_$.va,ai=n.$_$.f2,hi=n.$_$.c1,_i=n.$_$.d1,li=n.$_$.m,fi=i.$_$.p1,ci=i.$_$.f4,vi=i.$_$.j4,wi=i.$_$.xa,di=i.$_$.id,pi=n.$_$.i2,mi=i.$_$.k6,gi=i.$_$.i7,$i=i.$_$.a8,yi=i.$_$.ue,bi=n.$_$.p1,ki=n.$_$.i,ji=i.$_$.u2,xi=i.$_$.c7,zi=i.$_$.n7,Ei=i.$_$.ed,Ci=i.$_$.af,Si=i.$_$.p2,qi=i.$_$.o4,Oi=i.$_$.h9,Ii=i.$_$.vc,Ai=i.$_$.n;function Ti(){e=this,Mi.call(this,new Pi,nt())}function Di(){return null==e&&new Ti,e}function Mi(t,n){Di(),this.p3j_1=t,this.q3j_1=n,this.r3j_1=new sr}function Ni(){}function Ri(){}function Pi(t,n,i,e,r,s,o,u,a,h,_,l,f){t=t!==rt&&t,n=n!==rt&&n,i=i!==rt&&i,e=e!==rt&&e,r=r!==rt&&r,s=s===rt||s,o=o===rt?" ":o,u=u!==rt&&u,a=a!==rt&&a,h=h===rt?"type":h,_=_!==rt&&_,l=l===rt||l,f=f===rt?null:f,this.g3k_1=t,this.h3k_1=n,this.i3k_1=i,this.j3k_1=e,this.k3k_1=r,this.l3k_1=s,this.m3k_1=o,this.n3k_1=u,this.o3k_1=a,this.p3k_1=h,this.q3k_1=_,this.r3k_1=l,this.s3k_1=f}function Li(){}function Fi(){r=this}function Ui(){null==r&&new Fi}function Hi(){s=this}function Vi(t){null==s&&new Hi,Ui.call(this),this.v3k_1=t}function Bi(){o=this}function Yi(t){var n=t.r(),i=t.s(),e=dt();return dr(e,n),e.k7(pt(58)),e.k8(i),e.toString()}function Wi(t){null==o&&new Bi,Ui.call(this),this.z3k_1=t}function Gi(){u=this}function Ki(){null==u&&new Gi,Ui.call(this)}function Ji(t,n,i){if(i=i===rt?null:i,Ki.call(this),this.a3l_1=n,this.b3l_1=i,this.c3l_1=gt(t),null!=this.b3l_1&&!this.b3l_1.m33())throw $t(gt("Failed requirement."))}function Xi(){return ye()}function Zi(){a=this,Ki.call(this),this.d3l_1="null";var t=kt();this.e3l_1=jt(t,Xi)}function Qi(){return null==a&&new Zi,a}function te(t){return ee(),function(t){return pr(),!!si(t,"true",!0)||!si(t,"false",!0)&&null}(t.n29())}function ne(t){return ee(),zt(t.n29())}function ie(t){ee();var n,i=t instanceof Ki?t:null;return null==i?function(t,n){throw ee(),$t("Element "+yt(t)+" is not a "+n)}(t,"JsonPrimitive"):n=i,n}function ee(){h||(h=!0,Ot("kotlinx.serialization.json.JsonUnquotedLiteral",qt(St())))}function re(t){return t.s32("JsonPrimitive",be(se)),t.s32("JsonNull",be(oe)),t.s32("JsonLiteral",be(ue)),t.s32("JsonObject",be(ae)),t.s32("JsonArray",be(he)),wt()}function se(){return ge().g3l_1}function oe(){return ye().h3l_1}function ue(){return(null==p&&new ke,p).i3l_1}function ae(){return pe().j3l_1}function he(){return ve().k3l_1}function _e(){_=this;var t=It();this.l3l_1=At("kotlinx.serialization.json.JsonElement",t,[],re)}function le(){return null==_&&new _e,_}function fe(){l=this,this.m3l_1=Dt(le()).i32(),this.n3l_1="kotlinx.serialization.json.JsonArray"}function ce(){f=this,this.k3l_1=(null==l&&new fe,l)}function ve(){return null==f&&new ce,f}function we(){c=this,this.o3l_1=Nt(qt(St()),le()).i32(),this.p3l_1="kotlinx.serialization.json.JsonObject"}function de(){v=this,this.j3l_1=(null==c&&new we,c)}function pe(){return null==v&&new de,v}function me(){w=this,this.g3l_1=At("kotlinx.serialization.json.JsonPrimitive",Rt(),[])}function ge(){return null==w&&new me,w}function $e(){d=this,this.h3l_1=At("kotlinx.serialization.json.JsonNull",Pt(),[])}function ye(){return null==d&&new $e,d}function be(t){return new Ee(t)}function ke(){p=this,this.i3l_1=Lt("kotlinx.serialization.json.JsonLiteral",Rt())}function je(t){var n=Ft(t,Li)?t:null;if(null==n)throw Ut("This serializer can be used only with Json format.Expected Decoder to be JsonDecoder, got "+yt(t));return n}function xe(t){je(t)}function ze(t){return Gt("original",1,Wt,(function(t){return ze(t)}),null),t.q3l_1.s()}function Ee(t){this.q3l_1=Ht(t)}function Ce(t){var n,i;this.r3l_1=new Kt(t,(n=this,i=function(t,i){return r=t,s=i,(e=n).s3l_1=!r.s33(s)&&r.p33(s).f33(),e.s3l_1;var e,r,s},i.callableName="readIfAbsent",i)),this.s3l_1=!1}function Se(t,n){t.t3l("Unexpected special floating-point value "+gt(n)+". By default, non-finite floating point values are prohibited because they do not conform JSON specification",rt,fs())}function qe(t){Ne.call(this,t),Jt(this,qe)}function Oe(t){return new qe("Value of type '"+t.j33()+"' can't be used in JSON as a key in the map. It should have either primitive or enum kind, but its kind is '"+t.n33()+"'.\n"+Q)}function Ie(t){Ne.call(this,t),Jt(this,Ie)}function Ae(t,n,i){return De(t,n+"\nJSON input: "+Re(i,t))}function Te(t,n,i){return De(-1,function(t,n,i){return"Unexpected special floating-point value "+gt(t)+" with key "+n+". By default, non-finite floating point values are prohibited because they do not conform JSON specification. "+fs()+"\nCurrent output: "+Re(i)}(t,n,i))}function De(t,n){return new Ie(t>=0?"Unexpected JSON token at offset "+t+": "+n:n)}function Me(t,n){return De(-1,"Encountered an unknown key '"+t+"'.\n"+J+"\nCurrent input: "+Re(n))}function Ne(t){Zt(t,this),Jt(this,Ne)}function Re(t,n){if(n=n===rt?-1:n,Qt(t)<200)return t;if(-1===n){var i=Qt(t)-60|0;if(i<=0)return t;var e=Qt(t);return"....."+gt(tn(t,i,e))}var r=n-30|0,s=n+30|0,o=r<=0?"":".....",u=s>=Qt(t)?"":".....",a=nn(r,0),h=en(s,Qt(t));return o+gt(tn(t,a,h))+u}function Pe(){return Be(),m}function Le(t,n,i){if(Be(),null!=Fe(t,n))return He(n,t,i);var e=t.q33(i);return rn(),-3!==e?e:n.p3j_1.r3k_1?He(n,t,i):e}function Fe(t,n){return Be(),lt(t.n33(),sn())?n.p3j_1.s3k_1:null}function Ue(t,n){Be();var i,e,r=vs(t),s=Pe();return r.v3l(n,s,(i=n,e=t,function(){return function(t,n){Be();var i=on(),e=Fe(t,n),r=0,s=t.l33();if(r>12),r=wr(i>>8),s=wr(i>>4),o=wr(i);t[i]="\\u"+new oi(e)+new oi(r)+new oi(s)+new oi(o)}while(n<=31);t[34]='\\"',t[92]="\\\\",t[9]="\\t",t[8]="\\b",t[10]="\\n",t[13]="\\r",t[12]="\\f",k=t;var u=new Int8Array(93),a=0;if(a<=31)do{var h=a;a=a+1|0,u[h]=1}while(a<=31);34,u[34]=ui(34),92,u[92]=ui(92),116,u[9]=ui(116),98,u[8]=ui(98),110,u[10]=ui(110),114,u[13]=ui(114),102,u[12]=ui(102)}}function mr(t){var n=t.k3f(),i=null==n?null:t.v3o(n);return null==i?t.s():i}function gr(t,n){throw Ae(-1,"Failed to parse '"+n+"'",gt(mr(t)))}function $r(t,n,i){var e=t instanceof Ji?t:null;if(null==e)throw De(-1,"Unexpected 'null' when "+i+" was expected");return e}function yr(t,n){ai.call(this),this.s3o_1=t,this.t3o_1=n,this.u3o_1=this.t3k().p3j_1}function br(t,n,i,e){var r,s;t:{var o=t.t3k(),u=n.p33(i);if(!u.f33()&&t.v3o(e)instanceof Zi)r=!0;else{if(lt(u.n33(),Pt())){if(u.f33()&&t.v3o(e)instanceof Zi){r=!1;break t}var a=t.v3o(e),h=a instanceof Ki?a:null,_=null==h?null:(s=h,ee(),s instanceof Zi?null:s.n29());if(null==_){r=!1;break t}var l=Le(u,o,_);if(rn(),-3===l){wt(),r=!0;break t}}r=!1}}return r}function kr(t,n,i){return t.r3p_1=!t.t3k().p3j_1.l3k_1&&!n.s33(i)&&n.p33(i).f33(),t.r3p_1}function jr(t,n,i,e){i=i===rt?null:i,e=e===rt?null:e,yr.call(this,t,n),this.n3p_1=n,this.o3p_1=i,this.p3p_1=e,this.q3p_1=0,this.r3p_1=!1}function xr(t,n){yr.call(this,t,n),this.x3p_1=n,this.y3p_1=this.x3p_1.g(),this.z3p_1=-1}function zr(t,n){yr.call(this,t,n),this.f3q_1=n,this.y3f(Cr())}function Er(t,n){jr.call(this,t,n),this.q3q_1=n,this.r3q_1=$i(this.q3q_1.h2()),this.s3q_1=tt(this.r3q_1.g(),2),this.t3q_1=-1}function Cr(){return x}function Sr(){if(q)return wt();q=!0,z=new qr("OBJ",0,Xr(),Zr()),E=new qr("LIST",1,Qr(),ts()),C=new qr("MAP",2,Xr(),Zr()),S=new qr("POLY_OBJ",3,Qr(),ts())}function qr(t,n,i,e){yi.call(this,t,n),this.i3o_1=i,this.j3o_1=e}function Or(t,n){var i,e=n.n33();if(e instanceof hi)Sr(),i=S;else if(lt(e,wn()))i=Tr();else if(lt(e,li())){var r,s=Ir(n.p33(0),t.y35()),o=s.n33();if(o instanceof _i||lt(o,Pt()))r=Dr();else{if(!t.p3j_1.j3k_1)throw Oe(s);r=Tr()}i=r}else i=Ar();return i}function Ir(t,n){var i;if(lt(t.n33(),ki())){var e=bi(n,t),r=null==e?null:Ir(e,n);i=null==r?t:r}else i=t.m33()?Ir(t.p33(0),n):t;return i}function Ar(){return Sr(),z}function Tr(){return Sr(),E}function Dr(){return Sr(),C}function Mr(t,n,i){return t.u3q(n,i),function(t,n){var i=n;-1===(i=t.w3q(i))&&t.t3l("Expected escape sequence to continue, got EOF");var e=t.v3q(),r=i;i=r+1|0;var s=Mn(e,r);if(lt(new oi(s),new oi(pt(117))))return Pr(t,t.v3q(),i);var o=function(t){return t<117?ls().d3r_1[t]:pt(0)}(ri(s));return lt(new oi(o),new oi(pt(0)))&&t.t3l("Invalid escaped char '"+new oi(s)+"'"),t.e3k_1.k7(o),i}(t,i+1|0)}function Nr(t,n,i){t.u3q(n,i);var e=t.e3k_1.toString();return t.e3k_1.kg(0),e}function Rr(t){var n=En(t.d3k_1);return t.d3k_1=null,n}function Pr(t,n,i){return(i+4|0)>=Qt(n)?(t.b3k_1=i,t.x3q(),(t.b3k_1+4|0)>=Qt(n)&&t.t3l("Unexpected EOF during unicode escape"),Pr(t,n,t.b3k_1)):(t.e3k_1.k7(ei((((Lr(t,n,i)<<12)+(Lr(t,n,i+1|0)<<8)|0)+(Lr(t,n,i+2|0)<<4)|0)+Lr(t,n,i+3|0)|0)),i+4|0)}function Lr(t,n,i){var e,r=Mn(n,i);return pt(48)<=r&&r<=pt(57)?e=ri(r)-48|0:pt(97)<=r&&r<=pt(102)?e=10+(ri(r)-97|0)|0:pt(65)<=r&&r<=pt(70)?e=10+(ri(r)-65|0)|0:t.t3l("Invalid toHexChar char '"+new oi(r)+"' in unicode escape"),e}function Fr(t,n){var i=t.w3q(n);(i>=Qt(t.v3q())||-1===i)&&t.t3l("EOF");var e=t.v3q(),r=i;i=r+1|0;var s,o=Mn(e,r),u=32|ri(o);return 116===u?(Ur(t,"rue",i),s=!0):102===u?(Ur(t,"alse",i),s=!1):t.t3l("Expected valid boolean literal prefix, but had '"+t.o3m()+"'"),s}function Ur(t,n,i){(Qt(t.v3q())-i|0)=0&&(t.l8("."),t.l8(r.r33(s)))}else r!==We()&&(t.l8("["),t.l8("'"),t.k8(r),t.l8("'"),t.l8("]"))}while(i=0&<(new oi(t),new oi(pt(34)))&&"null"===this.o3m()&&this.b3r("Expected string literal but 'null' literal was found",this.b3k_1-4|0,"Use 'coerceInputValues = true' in 'Json {}` builder to coerce nulls to default values."),this.z3q(Vr(t))},it(Hr).z3q=function(t){var n=1===t?"quotation mark '\"'":4===t?"comma ','":5===t?"colon ':'":6===t?"start of the object '{'":7===t?"end of the object '}'":8===t?"start of the array '['":9===t?"end of the array ']'":"valid token",i=this.b3k_1===Qt(this.v3q())||this.b3k_1<=0?"EOF":ji(Mn(this.v3q(),this.b3k_1-1|0));this.t3l("Expected "+n+", but had '"+i+"' instead",this.b3k_1-1|0)},it(Hr).l3m=function(){for(var t=this.v3q(),n=this.b3k_1;-1!==(n=this.w3q(n));){var i=Mn(t,n);if(!(lt(new oi(i),new oi(pt(32)))||lt(new oi(i),new oi(pt(10)))||lt(new oi(i),new oi(pt(13)))||lt(new oi(i),new oi(pt(9)))))return this.b3k_1=n,Vr(i);n=n+1|0}return this.b3k_1=n,10},it(Hr).z3n=function(t){var n=this.c3r();n=this.w3q(n);var i=Qt(this.v3q())-n|0;if(i<4||-1===n)return!1;var e=0;if(e<=3)do{var r=e;if(e=e+1|0,!lt(new oi(Mn("null",r)),new oi(Mn(this.v3q(),n+r|0))))return!1}while(e<=3);return!(i>4&&0===Vr(Mn(this.v3q(),n+4|0))||(t&&(this.b3k_1=n+4|0),0))},it(Hr).k3o=function(t,n){return t=t===rt||t,n===rt?this.z3n(t):n.z3n.call(this,t)},it(Hr).c3r=function(){var t=this.b3k_1;t:for(;-1!==(t=this.w3q(t));){var n=Mn(this.v3q(),t);if(!(lt(new oi(n),new oi(pt(32)))||lt(new oi(n),new oi(pt(10)))||lt(new oi(n),new oi(pt(13)))||lt(new oi(n),new oi(pt(9)))))break t;t=t+1|0}return this.b3k_1=t,t},it(Hr).a3o=function(t){var n,i=this.l3m();if(t){if(1!==i&&0!==i)return null;n=this.o3m()}else{if(1!==i)return null;n=this.n3m()}var e=n;return this.d3k_1=e,e},it(Hr).lg=function(t,n){var i=this.v3q();return gt(tn(i,t,n))},it(Hr).n3m=function(){return null!=this.d3k_1?Rr(this):this.d3o()},it(Hr).consumeString2=function(t,n,i){for(var e=i,r=n,s=Mn(t,e),o=!1;!lt(new oi(s),new oi(pt(34)));)lt(new oi(s),new oi(pt(92)))?(o=!0,-1===(e=this.w3q(Mr(this,r,e)))&&this.t3l("EOF",e),r=e):(e=e+1|0)>=Qt(t)&&(o=!0,this.u3q(r,e),-1===(e=this.w3q(e))&&this.t3l("EOF",e),r=e),s=Mn(t,e);var u=o?Nr(this,r,e):this.lg(r,e);return this.b3k_1=e+1|0,u},it(Hr).e3o=function(){var t,n=this.o3m();return"null"===n&&!lt(new oi(Mn((t=this).v3q(),t.b3k_1-1|0)),new oi(pt(34)))&&this.t3l("Unexpected 'null' value instead of string literal"),n},it(Hr).o3m=function(){if(null!=this.d3k_1)return Rr(this);var t=this.c3r();(t>=Qt(this.v3q())||-1===t)&&this.t3l("EOF",t);var n=Vr(Mn(this.v3q(),t));if(1===n)return this.n3m();0!==n&&this.t3l("Expected beginning of the string, but got "+new oi(Mn(this.v3q(),t)));for(var i=!1;0===Vr(Mn(this.v3q(),t));)if((t=t+1|0)>=Qt(this.v3q())){i=!0,this.u3q(this.b3k_1,t);var e=this.w3q(t);if(-1===e)return this.b3k_1=t,Nr(this,0,0);t=e}var r=i?Nr(this,this.b3k_1,t):this.lg(this.b3k_1,t);return this.b3k_1=t,r},it(Hr).u3q=function(t,n){this.e3k_1.ig(this.v3q(),t,n)},it(Hr).c3o=function(t){var n=un(),i=this.l3m();if(8!==i&&6!==i)return this.o3m(),wt();for(;;)if(1!==(i=this.l3m())){var e=i;if(8===e||6===e)n.a(i);else if(9===e){if(8!==xi(n))throw Ae(this.b3k_1,"found ] instead of } at path: "+this.c3k_1,this.v3q());zi(n)}else if(7===e){if(6!==xi(n))throw Ae(this.b3k_1,"found } instead of ] at path: "+this.c3k_1,this.v3q());zi(n)}else 10===e&&this.t3l("Unexpected end of input due to malformed JSON during ignoring unknown keys");if(this.q3m(),0===n.g())return wt()}else t?this.o3m():this.d3o()},it(Hr).toString=function(){return"JsonReader(source='"+this.v3q()+"', currentPosition="+this.b3k_1+")"},it(Hr).b3o=function(t){var n=this.lg(0,this.b3k_1),i=Ei(n,t);this.b3r("Encountered an unknown key '"+t+"'",i,"Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.")},it(Hr).b3r=function(t,n,i){var e=0===Qt(i)?"":"\n"+i;throw Ae(n,t+" at path: "+this.c3k_1.g3m()+e,this.v3q())},it(Hr).t3l=function(t,n,i,e){return n=n===rt?this.b3k_1:n,i=i===rt?"":i,e===rt?this.b3r(t,n,i):e.b3r.call(this,t,n,i)},it(Hr).n3o=function(){var t,n=this.c3r();((n=this.w3q(n))>=Qt(this.v3q())||-1===n)&&this.t3l("EOF"),lt(new oi(Mn(this.v3q(),n)),new oi(pt(34)))?((n=n+1|0)===Qt(this.v3q())&&this.t3l("EOF"),t=!0):t=!1;var i,e=t,r=new Ci(0,0),s=!1,o=n,u=!0;t:for(;u;){var a=Mn(this.v3q(),n);if(lt(new oi(a),new oi(pt(45))))n!==o&&this.t3l("Unexpected symbol '-' in numeric literal"),s=!0,n=n+1|0;else{if(0!==Vr(a))break t;u=!((n=n+1|0)===Qt(this.v3q()));var h=Si(a,pt(48));0<=h&&h<=9||this.t3l("Unexpected symbol '"+new oi(a)+"' in numeric literal"),(r=r.n7(new Ci(10,0)).p7(In(h))).w(new Ci(0,0))>0&&this.t3l("Numeric value overflow")}}if((o===n||s&&o===(n-1|0))&&this.t3l("Expected numeric literal"),e&&(u||this.t3l("EOF"),lt(new oi(Mn(this.v3q(),n)),new oi(pt(34)))||this.t3l("Expected closing quotation mark"),n=n+1|0),this.b3k_1=n,s)i=r;else{var _=r;qi(),_.equals(new Ci(0,-2147483648))?this.t3l("Numeric value overflow"):i=r.l7()}return i},it(Hr).l3o=function(){return Fr(this,this.c3r())},it(Hr).m3o=function(){var t,n=this.c3r();n===Qt(this.v3q())&&this.t3l("EOF"),lt(new oi(Mn(this.v3q(),n)),new oi(pt(34)))?(n=n+1|0,t=!0):t=!1;var i=t,e=Fr(this,n);if(i){this.b3k_1===Qt(this.v3q())&&this.t3l("EOF"),lt(new oi(Mn(this.v3q(),this.b3k_1)),new oi(pt(34)))||this.t3l("Expected closing quotation mark");this.b3k_1=this.b3k_1+1|0}return e},it(cs).v3q=function(){return this.j3r_1},it(cs).w3q=function(t){return t=t.jz_1.length){var i=nt(t.jz_1.length,2),e=t.gz_1,r=Math.min(i,e),s=vn(Array(r),null),o=0;if(o=1))throw e="ArrayChannel capacity must be at least 1, but "+this.gz_1+" was specified",dn(zt(e));this.iz_1=new $o;var r,s,o=this.gz_1;s=Math.min(o,8);var u=vn(Array(s),null);wn(u,ir()),r=u,this.jz_1=r,this.kz_1=0,this.lz_1=yt(0)}function zr(){if(T)return st();T=!0,I=new Er("SUSPEND",0),A=new Er("DROP_OLDEST",1),new Er("DROP_LATEST",2)}function Er(t,n){Bt.call(this,t,n)}function Cr(){return zr(),I}function Sr(){}function qr(t){Sr.call(this),this.mz_1=t}function Or(){D=this,this.zy_1=new Sr}function Ir(){return null==D&&new Or,D}function Ar(){var t,n,i,e;M=this,this.nz_1=2147483647,this.oz_1=0,this.pz_1=-1,this.qz_1=-2,this.rz_1=-3,this.sz_1="kotlinx.coroutines.channels.defaultBuffer",this.tz_1=(t="kotlinx.coroutines.channels.defaultBuffer",n=64,i=(i=1)===ft?1:i,e=(e=2147483646)===ft?bn().MAX_VALUE:e,function(t,n,i,e){var r;i=i===ft?new Gt(1,0):i,e===ft?(Kt(),r=new Gt(-1,2147483647)):r=e,e=r;var s=null;if(null==s)return n;var o=s,u=Cn(o);if(null==u)throw $t(zt("System property '"+t+"' has unrecognized value '"+o+"'"));var a=u;if(!(i.w(a)<=0&&a.w(e)<=0)){var h="System property '"+t+"' should be in range "+zt(i)+".."+zt(e)+", but is '"+zt(a)+"'";throw $t(zt(h))}return a}(t,kn(n),kn(i),kn(e)).c8())}function Tr(){return null==M&&new Ar,M}function Dr(){}function Mr(){}function Nr(t){gn(t,this),Zt(this,Nr)}function Rr(t){yn(t,this),Zt(this,Rr)}function Pr(){return N}function Lr(t,n){var i,e=t.yz_1;if(e===ir())i=null;else{var r=t.uw_1;i=null==r?null:Ds(r,null==e||rt(e)?e:et())}var s=i;return t.yz_1=n,s}function Fr(t){cr.call(this,t),this.xz_1=new $o,this.yz_1=ir()}function Ur(t){cr.call(this,t)}function Hr(t){cr.call(this,t)}function Vr(){return _s(),R}function Br(t){var n=t.o10_1,i=t.n10_1;return n.w(i)<=0?n:i}function Yr(t){var n=Br(t),i=t.p10_1;return n.o7(kn(i)).p7(t.n10_1).c8()}function Wr(t){return t.p10_1+t.q10_1|0}function Gr(t){var n=Br(t),i=t.p10_1;return n.o7(kn(i))}function Kr(t,n){if(0===t.s10_1)return function(t,n){if(0===t.j10_1)return!0;Xr(t,n);var i=t,e=i.p10_1;i.p10_1=e+1|0,t.p10_1>t.j10_1&&Jr(t);var r,s=t,o=Br(t),u=t.p10_1;return r=o.o7(kn(u)),s.o10_1=r,!0}(t,n);if(t.p10_1>=t.k10_1&&t.o10_1.w(t.n10_1)<=0)switch(t.l10_1.l6_1){case 0:return!1;case 2:return!0}Xr(t,n);var i=t,e=i.p10_1;return i.p10_1=e+1|0,t.p10_1>t.k10_1&&Jr(t),Yr(t)>t.j10_1&&Qr(t,t.n10_1.o7(new Gt(1,0)),t.o10_1,Gr(t),function(t){var n=Br(t),i=t.p10_1,e=n.o7(kn(i)),r=t.q10_1;return e.o7(kn(r))}(t)),!0}function Jr(t){hs(pn(t.m10_1),Br(t),null);var n=t,i=n.p10_1;n.p10_1=i-1|0;var e=Br(t).o7(new Gt(1,0));t.n10_1.w(e)<0&&(t.n10_1=e),t.o10_1.w(e)<0&&function(t,n){if(0!==t.s10_1){var i=t.r10_1;if(null==i);else for(var e=jn(i);e.e();){var r=e.f();null!=r&&r.v10_1.w(new Gt(0,0))>=0&&r.v10_1.w(n)<0&&(r.v10_1=n)}}else st();t.o10_1=n}(t,e)}function Xr(t,n){var i=Wr(t),e=t.m10_1;hs(null==e?Zr(t,null,0,2):i>=e.length?Zr(t,e,i,nt(e.length,2)):e,Br(t).o7(kn(i)),n)}function Zr(t,n,i,e){if(!(e>0))throw $t(zt("Buffer size overflow"));var r=vn(Array(e),null);t.m10_1=r;var s=r;if(null==n)return s;var o=Br(t),u=0;if(u0){var e=Br(t),r=Wr(t);i=as(n,e.o7(kn(r)).p7(new Gt(1,0)))===Vr()}else i=!1;if(!i)break t;var s=t,o=s.q10_1;s.q10_1=o-1|0;var u=Br(t),a=Wr(t);hs(n,u.o7(kn(a)),null)}}function ns(t,n){var i,e=ls(),r=is(t,n);if(r.w(new Gt(0,0))<0)i=Vr();else{var s,o=n.v10_1,u=function(t,n){var i=as(pn(t.m10_1),n);return i instanceof rs?i.z10_1:i}(t,r),a=n;s=r.o7(new Gt(1,0)),a.v10_1=s,e=t.b11(o),i=u}for(var h=i,_=e,l=0,f=_.length;l0||i.w(Br(t))>0||0===t.q10_1?new Gt(-1,-1):i}function es(t,n){var i=n,e=n.length;if(0!==t.s10_1){var r=t.r10_1;if(null==r);else for(var s=jn(r);s.e();){var o=s.f();if(null!=o){var u=o.w10_1;if(null!=u){var a=u;if(is(t,o).w(new Gt(0,0))<0)st();else{if(e>=i.length){var h,_=i,l=nt(2,i.length);h=Math.max(2,l),i=xn(_,h)}var f=e;e=f+1|0,i[f]=a,o.w10_1=null}}else st()}}}else st();return i}function rs(t,n,i,e){this.x10_1=t,this.y10_1=n,this.z10_1=i,this.a11_1=e}function ss(t,n,i){dt.call(this,i),this.k11_1=t,this.l11_1=n}function os(t,n,i){fs.call(this),this.j10_1=t,this.k10_1=n,this.l10_1=i,this.m10_1=null,this.n10_1=new Gt(0,0),this.o10_1=new Gt(0,0),this.p10_1=0,this.q10_1=0}function us(){cs.call(this),this.v10_1=new Gt(-1,-1),this.w10_1=null}function as(t,n){return _s(),t[n.c8()&(t.length-1|0)]}function hs(t,n,i){return _s(),t[n.c8()&(t.length-1|0)]=i}function _s(){P||(P=!0,R=new Rs("NO_VALUE"))}function ls(){return F||(F=!0,t=vn(Array(0),null),L=t),L;var t}function fs(){this.r10_1=null,this.s10_1=0,this.t10_1=0,this.u10_1=null}function cs(){}function vs(t,n){if(n.e6(0,(e=t,function(t,n){var i=n.r(),r=e.v12_1.y5(i);if(i!==Ki())return n!==r?bn().MIN_VALUE:t+1|0;var s=null==r||jt(r,Ji)?r:et(),o=function(t,n){for(var i=t,e=n;;){if(null===i)return null;if(i===e)return i;if(!(i instanceof Ms))return i;var r=i.sn();i=r}}(jt(n,Ji)?n:et(),s);if(o!==s)throw $t(zt("Flow invariant is violated:\n\t\tEmission from another coroutine is detected.\n\t\tChild of "+o+", expected child of "+s+".\n\t\tFlowCollector is not thread-safe and concurrent emissions are prohibited.\n\t\tTo mitigate this restriction please use 'channelFlow' builder instead of 'flow'"));return null==s?t:t+1|0}))!==t.w12_1){var i="Flow invariant is violated:\n\t\tFlow was collected in "+t.v12_1+",\n\t\tbut emission happened in "+n+".\n\t\tPlease refer to 'flow' documentation or use 'flowOn' instead";throw $t(zt(i))}var e}function ws(t,n){dt.call(this,n),this.g13_1=t}function ds(){}function ps(t,n,i){dt.call(this,i),this.s13_1=t,this.t13_1=n}function ms(t,n){this.u13_1=n,this.v13_1=t}function gs(){var t;t=vn(Array(16),null),this.kr_1=t,this.lr_1=0,this.mr_1=0}function $s(){}function ys(){return xs(),U}function bs(){return xs(),H}function ks(t,n,i){var e;if(i=i===ft?null:i,xs(),t instanceof js){var r,s=t,o=bi(n,i);if(s.go_1.tq(s.r4()))s.io_1=o,s.uo_1=zs(),s.go_1.uq(s.r4(),s),r=st();else{var u=zs(),a=Bi().xr();if(a.qr())s.io_1=o,s.uo_1=u,a.or(s);else{a.tr(!0);try{var h,_=s.r4().y5(Ki());if(null==_||_.pk())h=!1;else{var l,f=_.ml();s.mp(o,f),Tt(),l=Dt(Mt(f)),s.p4(l),st(),h=!0}for(h||(s.ho_1,s.jo_1,s.ho_1.p4(n),st());a.jr(););}catch(t){if(!(t instanceof Error))throw t;var c=t;s.xp(c,null)}finally{a.ur(!0)}}r=st()}e=r}else t.p4(n),e=st();return e}function js(t,n){Es.call(this,Y),this.go_1=t,this.ho_1=n,this.io_1=ys(),this.jo_1=(this.r4(),0),this.ko_1=Et(null)}function xs(){V||(V=!0,U=new Rs("UNDEFINED"),H=new Rs("REUSABLE_CLAIMED"))}function zs(){return B}function Es(t){po.call(this),this.uo_1=t}function Cs(t){return 1===t||2===t}function Ss(){return K}function qs(t,n,i){var e,r=t.lp(),s=t.vp(r);if(null!=s)Tt(),e=Dt(Mt(s));else{Tt();var o=t.tp(r);e=Dt(o)}var u=e;if(i){var a=n instanceof js?n:et();a.ho_1,a.jo_1,a.ho_1.p4(u),st()}else n.p4(u)}function Os(t){return t===ft?null:t}function Is(t,n){var i,e=t;if(null==e)i=Os(n);else if(e instanceof un){(t instanceof un?t:et()).a(n),i=Os(t)}else{var r=sn(4),s=t;r.a(null==s||rt(s)?s:et()),r.a(n),i=Os(r)}return i}function As(t,n,i){return e=t,r=n,s=i,function(t){return function(t,n,i){var e=Ds(t,n,null);null==e||(Si(i,e),st())}(e,r,s),st()};var e,r,s}function Ts(t,n){Xt(t,n,this),Zt(this,Ts)}function Ds(t,n,i){i=i===ft?null:i;try{t(n)}catch(t){if(!(t instanceof Error))throw t;var e=t;if(null==i||i.cause===e)return new Ts("Exception in undelivered element handler for "+n,e)}return i}function Ms(t,n){Pn.call(this,t,!0,!0),this.rn_1=n}function Ns(t){this.x13_1=t}function Rs(t){this.y13_1=t}function Ps(t,n,i,e){var r;e=e===ft?null:e;try{var s=bt(wt(t,n,i));Tt(),ks(s,Dt(st()),e),r=st()}catch(t){if(!(t instanceof Error))throw t;Fs(i,t),r=st()}return r}function Ls(t,n){var i;try{var e=bt(t);Tt(),ks(e,Dt(st())),i=st()}catch(t){if(!(t instanceof Error))throw t;Fs(n,t),i=st()}return i}function Fs(t,n){return function(t,n){var i;throw Tt(),i=Dt(Mt(n)),t.p4(i),n}(t,n)}function Us(t,n,i){var e,r;try{var s;r="function"==typeof(s=i)?s(n,t):i.ck(n,t)}catch(t){if(!(t instanceof Error))throw t;r=new $i(t)}var o=r;if(o!==pt()){var u=t.xk(o);if(u!==se()){if(u instanceof $i)throw u.uk_1,ko(u.uk_1,t.rn_1);e=Ve(u)}else e=pt()}else e=pt();return e}function Hs(){}function Vs(){bo.call(this)}function Bs(t,n){"function"==typeof t?t(n):t.invoke(n)}function Ys(){}function Ws(t){return zt(t)}function Gs(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&void 0!==navigator.userAgent&&void 0!==navigator.userAgent.match&&navigator.userAgent.match("\\bjsdom\\b")?uo():"undefined"!=typeof window&&null!=window&&void 0!==window.addEventListener?function(t){var n,i=t.coroutineDispatcher;if(null==i){var e=new vo(t);t.coroutineDispatcher=e,n=e}else n=i;return n}(window):"undefined"==typeof process||void 0===process.nextTick?(null==tt&&new ao,tt):uo()}function Ks(t,n){var i=t.ok().f6(n);return i!==io().zq_1&&null==i.y5(mt())?i.f6(io().zq_1):i}function Js(t,n){Ms.call(this,t,n)}function Xs(t,n){console.error(n)}function Zs(){return X}function Qs(t){var n=Sn(t).ye();return null==n?"Unknown":n}function to(t){var n=t.__debug_counter;return"number"!=typeof n&&(n=J=J+1|0,t.__debug_counter=n),(null!=n&&"number"==typeof n?n:et()).toString()}function no(){Z=this,this.zq_1=Gs(),this.ar_1=(null==j&&new tr,j),this.br_1=new eo(this.zq_1,!1),this.cr_1=null}function io(){return null==Z&&new no,Z}function eo(t,n){Je.call(this),this.g14_1=t,this.h14_1=n,this.i14_1=this.h14_1?this:new eo(this.g14_1,!0)}function ro(){Hi.call(this)}function so(t,n,i){qn(t,n,this),Zt(this,so),this.n14_1=i}function oo(){Q=this,_o.call(this)}function uo(){return null==Q&&new oo,Q}function ao(){tt=this,_o.call(this)}function ho(t){var n;this.x14_1=t,lo.call(this),this.w14_1=(n=this,function(){return n.h15(),st()})}function _o(){Ci.call(this),this.z14_1=new ho(this)}function lo(){gs.call(this),this.f15_1=16,this.g15_1=!1}function fo(t){return On(t,new Gt(0,0),new Gt(2147483647,0)).c8()}function co(t){_i.call(this),this.l15_1=t}function vo(t){Ci.call(this),this.n15_1=t,this.o15_1=new wo(this.n15_1)}function wo(t){var n;lo.call(this),this.u15_1=t,this.v15_1="dispatchCoroutine",this.u15_1.addEventListener("message",(n=this,function(t){return t.source==n.u15_1&&t.data==n.v15_1&&(t.stopPropagation(),n.h15(),st()),st()}),!0)}function po(){}function mo(t,n){return t+1|0}function go(t,n){this.u12_1=t,this.v12_1=n,this.w12_1=this.v12_1.e6(0,mo),this.x12_1=null}function $o(){}function yo(){bo.call(this)}function bo(){this.hs_1=this,this.is_1=this,this.js_1=!1}function ko(t,n){return t}function jo(){this.yr_1=null}return ct(Ji,"Job",kt,ft,[nn],ft,ft,[0]),ct(Xi,"ParentJob",kt,ft,[Ji],ft,ft,[0]),ct(Me,"JobSupport",lt,ft,[Ji,Xi],ft,ft,[0]),ct(Mi,"CoroutineScope",kt),ct(Pn,"AbstractCoroutine",lt,Me,[Me,Ji,_t,Mi],ft,ft,[0]),ct(Ln,"StandaloneCoroutine",lt,Pn,ft,ft,ft,[0]),ct(Fn,"LazyStandaloneCoroutine",lt,Ln,ft,ft,ft,[0]),ct(Un,"$awaitCOROUTINE$1",lt,dt),ct(Hn,"DeferredCoroutine",lt,Pn,[Pn,Ji],ft,ft,[0]),ct(Vn,"LazyDeferredCoroutine",lt,Hn,ft,ft,ft,[0]),ct(Ms,"ScopeCoroutine",lt,Pn,ft,ft,ft,[0]),ct(Bn,"DispatchedCoroutine",lt,Ms,ft,ft,ft,[0]),ct(Yn,"CancellableContinuation",kt,ft,[_t]),ct(Ys,"CancelHandlerBase",lt),ct(ci,"NotCompleted",kt),ct(_i,"CancelHandler",lt,Ys,[Ys,ci]),ct(Gn,"DisposeOnCancel",lt,_i),ct(po,"SchedulerTask",lt),ct(Es,"DispatchedTask",lt,po),ct(hi,"CancellableContinuationImpl",lt,Es,[Es,Yn]),ct(li,"Active",Ct,ft,[ci]),ct(vi,"CompletedContinuation",lt),ct(wi,"BeforeResumeCancelHandler",lt,_i),ct(di,"InvokeOnCancel",lt,_i),ct(pi,"$awaitCOROUTINE$2",lt,dt),ct(mi,"CompletableDeferredImpl",lt,Me,[Me,Ji],ft,ft,[0]),ct(gi,"CompletableJob",kt,ft,[Ji],ft,ft,[0]),ct($i,"CompletedExceptionally",lt),ct(yi,"CancelledContinuation",lt,$i),ct(ki,"CompletedWithCancellation",lt),ct(zi,"Key",Ct,Nt),ct(Ci,"CoroutineDispatcher",lt,Rt,[Rt,Ft]),ct(qi,"Key",Ct),ct(Ii,"Key",Ct),ct(Ti,"CoroutineName",lt,Rt),ct(Ni,"GlobalScope",Ct,ft,[Mi]),ct(Pi,"CoroutineStart",lt,Bt),ct(Fi,"Delay",kt,ft,ft,ft,ft,[1]),ct(Hi,"EventLoop",lt,Ci),ct(Vi,"ThreadLocalEventLoop",Ct),ct(Yi,"CompletionHandlerException",lt,Jt),ct(Wi,"CoroutinesInternalError",lt,Qt),ct(Gi,"Key",Ct),ct(Zi,"ChildHandle",kt),ct(Qi,"NonDisposableHandle",Ct,ft,[Zi]),ct(le,"Incomplete",kt),ct(_e,"Empty",lt,ft,[le]),ct(bo,"LinkedListNode",lt),ct(yo,"LinkedListHead",lt,bo),ct(fe,"NodeList",lt,yo,[yo,le]),ct(Vs,"CompletionHandlerBase",lt,bo),ct(ce,"JobNode",lt,Vs,[Vs,le]),ct(Ie,"Finishing",lt,ft,[le]),ct(Ae,"ChildCompletion",lt,ce),ct(Te,"AwaitContinuation",lt,hi),ct(De,"JobSupport$$slambda",lt,dt,ft,ft,ft,[1]),ct(Re,"JobCancellingNode",lt,ce),ct(Pe,"InactiveNodeList",lt,ft,[le]),ct(Le,"ChildHandleNode",lt,Re,[Re,Zi]),ct(Fe,"InvokeOnCancelling",lt,Re),ct(Ue,"InvokeOnCompletion",lt,ce),ct(He,"ResumeOnCompletion",lt,ce),ct(Be,"ResumeAwaitOnCompletion",lt,ce),ct(Ye,"IncompleteStateBox",lt),ct(We,"ChildContinuation",lt,Re),ct(Ge,"JobImpl",lt,Me,[Me,gi],ft,ft,[0]),ct(Je,"MainCoroutineDispatcher",lt,Ci),ct(Ze,"SupervisorJobImpl",lt,Ge,ft,ft,ft,[0]),ct(Qe,"TimeoutCancellationException",lt,on),ct(tr,"Unconfined",Ct,Ci),ct(nr,"Key",Ct),ct(_r,"RemoveReceiveOnCancel",lt,wi),ct(lr,"Itr",lt,ft,ft,ft,ft,[0]),ct($r,"ReceiveOrClosed",kt),ct(br,"Receive",lt,bo,[bo,$r]),ct(fr,"ReceiveHasNext",lt,br),ct(Dr,"SendChannel",kt,ft,ft,ft,ft,[1]),ct(mr,"AbstractSendChannel",lt,ft,[Dr],ft,ft,[1]),ct(Mr,"ReceiveChannel",kt,ft,ft,ft,ft,[0]),ct(cr,"AbstractChannel",lt,mr,[mr,Dr,Mr],ft,ft,[0,1]),ct(gr,"Send",lt,bo),ct(pr,"SendBuffered",lt,gr),ct(yr,"Closed",lt,gr,[gr,$r]),ct(xr,"ArrayChannel",lt,cr,ft,ft,ft,[0,1]),ct(Er,"BufferOverflow",lt,Bt),ct(Sr,"Failed",lt),ct(qr,"Closed",lt,Sr),ct(Or,"Companion",Ct),ct(Ar,"Factory",Ct),ct(Nr,"ClosedReceiveChannelException",lt,mn),ct(Rr,"ClosedSendChannelException",lt,$n),ct(Fr,"ConflatedChannel",lt,cr,ft,ft,ft,[0,1]),ct(Ur,"LinkedListChannel",lt,cr,ft,ft,ft,[0,1]),ct(Hr,"RendezvousChannel",lt,cr,ft,ft,ft,[0,1]),ct(rs,"Emitter",lt),ct(ss,"$collectCOROUTINE$7",lt,dt),ct(fs,"AbstractSharedFlow",lt),ct(os,"SharedFlowImpl",lt,fs,ft,ft,ft,[1]),ct(cs,"AbstractSharedFlowSlot",lt),ct(us,"SharedFlowSlot",lt,cs),ct(ws,"$onSubscriptionCOROUTINE$10",lt,dt),ct(ds,"SubscribedFlowCollector",lt,ft,ft,ft,ft,[1,0]),ct(ps,"$collectCOROUTINE$11",lt,dt),ct(ms,"ReadonlySharedFlow",lt,ft,ft,ft,ft,[1]),ct(gs,"ArrayQueue",lt),ct($s,"OpDescriptor",lt),ct(js,"DispatchedContinuation",lt,Es,[Es,_t]),ct(Ts,"UndeliveredElementException",lt,Jt),ct(Ns,"ContextScope",lt,ft,[Mi]),ct(Rs,"Symbol",lt),ct(Hs,"CloseableCoroutineDispatcher",lt,Ci),ct(Js,"UndispatchedCoroutine",lt,Ms,ft,ft,ft,[0]),ct(no,"Dispatchers",Ct),ct(eo,"JsMainDispatcher",lt,Je),ct(ro,"UnconfinedEventLoop",lt,Hi),ct(so,"JobCancellationException",lt,on),ct(_o,"SetTimeoutBasedDispatcher",lt,Ci,[Ci,Fi],ft,ft,[1]),ct(oo,"NodeDispatcher",Ct,_o,ft,ft,ft,[1]),ct(ao,"SetTimeoutDispatcher",Ct,_o,ft,ft,ft,[1]),ct(lo,"MessageQueue",lt,gs),ct(ho,"ScheduledMessageQueue",lt,lo),ct(co,"ClearTimeout",lt,_i),ct(vo,"WindowDispatcher",lt,Ci,[Ci,Fi],ft,ft,[1]),ct(wo,"WindowMessageQueue",lt,lo),ct(go,"SafeCollector",lt,ft,ft,ft,ft,[1]),ct($o,"NoOpLock",lt),ct(jo,"CommonThreadLocal",lt),it(Pn).r4=function(){return this.nk_1},it(Pn).ok=function(){return this.nk_1},it(Pn).pk=function(){return it(Me).pk.call(this)},it(Pn).qk=function(t){},it(Pn).rk=function(t,n){},it(Pn).sk=function(){return Qs(this)+" was cancelled"},it(Pn).tk=function(t){t instanceof $i?this.rk(t.uk_1,t.wk()):this.qk(null==t||rt(t)?t:et())},it(Pn).p4=function(t){var n=this.xk(bi(t));if(n===se())return st();this.yk(n)},it(Pn).yk=function(t){return this.zk(t)},it(Pn).al=function(t){Si(this.nk_1,t)},it(Pn).bl=function(){var t=(this.nk_1,null);return null==t?it(Me).bl.call(this):'"'+t+'":'+it(Me).bl.call(this)},it(Pn).cl=function(t,n,i){t.fl(i,n,this)},it(Ln).gm=function(t){return Si(this.nk_1,t),!0},it(Fn).ll=function(){Ls(this.pm_1,this)},it(Un).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.ym_1.zm(this))===pt())return t;continue t;case 1:return null==t||rt(t)?t:et();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},it(Hn).dn=function(t){var n=new Un(this,t);return n.jj_1=st(),n.kj_1=null,n.qj()},it(Vn).ll=function(){Ls(this.hn_1,this)},it(Bn).zk=function(t){this.yk(t)},it(Bn).yk=function(t){if(function(t){for(var n=t.mn_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.mn_1.atomicfu$compareAndSet(0,2))return!0;break;case 1:return!1;default:throw $t("Already resumed")}}(this))return st();ks(bt(this.rn_1),ji(t,this.rn_1))},it(Bn).nn=function(){if(function(t){for(var n=t.mn_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.mn_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw $t("Already suspended")}}(this))return pt();var t=Ve(this.il());if(t instanceof $i)throw t.uk_1;return null==t||rt(t)?t:et()},it(Gn).do=function(t){return this.co_1.eo()},it(Gn).invoke=function(t){return this.do(t)},it(Gn).toString=function(){return"DisposeOnCancel["+this.co_1+"]"},it(hi).jp=function(){return this.no_1},it(hi).r4=function(){return this.oo_1},it(hi).il=function(){return this.qo_1.kotlinx$atomicfu$value},it(hi).jl=function(){var t=this.il();return!(null!=t&&jt(t,ci))},it(hi).tn=function(){return this.il()instanceof yi},it(hi).kp=function(){var t=Qn(this);if(null==t)return st();var n=t;this.jl()&&(n.eo(),this.ro_1=te())},it(hi).so=function(){var t=this.qo_1.kotlinx$atomicfu$value;return t instanceof vi&&null!=t.hp_1?(this.xo(),!1):(this.po_1.kotlinx$atomicfu$value=0,this.qo_1.kotlinx$atomicfu$value=fi(),!0)},it(hi).lp=function(){return this.il()},it(hi).mp=function(t,n){for(var i=this.qo_1;;){var e=i.kotlinx$atomicfu$value,r=e;if(null!=r&&jt(r,ci))throw $t("Not completed");if(r instanceof $i)return st();if(r instanceof vi){if(e.np())throw $t(zt("Must be called at most once"));var s=e.op(ft,ft,ft,ft,n);if(this.qo_1.atomicfu$compareAndSet(e,s))return e.pp(this,n),st()}else if(this.qo_1.atomicfu$compareAndSet(e,new vi(e,ft,ft,ft,n)))return st()}return st()},it(hi).yo=function(t){for(var n=this.qo_1;;){var i=n.kotlinx$atomicfu$value;if(null==i||!jt(i,ci))return!1;var e=new yi(this,t,i instanceof _i);if(this.qo_1.atomicfu$compareAndSet(i,e)){var r=i instanceof _i?i:null;return null==r||(this.qp(r,t),st()),ai(this),ii(this,this.uo_1),!0}st()}},it(hi).rp=function(t){if(function(t,n){if(!Xn(t))return!1;var i=t.no_1;return(i instanceof js?i:et()).vo(n)}(this,t))return st();this.yo(t),ai(this)},it(hi).qp=function(t,n){var i;try{t.invoke(n),i=st()}catch(t){if(!(t instanceof Error))throw t;var e=t;Si(this.r4(),new Yi("Exception in invokeOnCancellation handler for "+this,e)),i=st()}return i},it(hi).zo=function(t,n){try{t(n)}catch(t){if(!(t instanceof Error))throw t;var i=t;Si(this.r4(),new Yi("Exception in resume onCancellation handler for "+this,i))}},it(hi).sp=function(t){return t.ml()},it(hi).nn=function(){var t=Xn(this);if(function(t){for(var n=t.po_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.po_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw $t("Already suspended")}}(this))return null==this.ro_1&&Qn(this),t&&ti(this),pt();t&&ti(this);var n=this.il();if(n instanceof $i)throw ko(n.uk_1);if(Cs(this.uo_1)){var i=this.r4().y5(Ki());if(null!=i&&!i.pk()){var e=i.ml();throw this.mp(n,e),ko(e)}}return this.tp(n)},it(hi).p4=function(t){return si(this,function(t,n){var i,e=It(t);if(null==e){var r=At(t);i=null==r||rt(r)?r:et()}else i=new $i(ko(e));return i}(t),this.uo_1)},it(hi).bo=function(t,n){return ri(this,t,this.uo_1,n)},it(hi).zn=function(t){for(var n=function(t,n){return n instanceof _i?n:new di(n)}(0,t),i=this.qo_1;;){var e=i.kotlinx$atomicfu$value,r=e;if(r instanceof li){if(this.qo_1.atomicfu$compareAndSet(e,n))return st()}else if(r instanceof _i)ni(0,t,e);else{if(r instanceof $i){if(e.up()||ni(0,t,e),e instanceof yi){var s=e instanceof $i?e:null;Zn(this,t,null==s?null:s.uk_1)}return st()}if(r instanceof vi){if(null!=e.fp_1&&ni(0,t,e),n instanceof wi)return st();if(e.np())return Zn(this,t,e.ip_1),st();var o=e.op(ft,n);if(this.qo_1.atomicfu$compareAndSet(e,o))return st()}else{if(n instanceof wi)return st();var u=new vi(e,n);if(this.qo_1.atomicfu$compareAndSet(e,u))return st()}}}},it(hi).xo=function(){var t=this.ro_1;if(null==t)return st();t.eo(),this.ro_1=te()},it(hi).un=function(t,n){return oi(this,t,n,null)},it(hi).wn=function(t,n,i){return oi(this,t,n,i)},it(hi).xn=function(t){return oi(this,new $i(t),null,null)},it(hi).yn=function(t){ii(this,this.uo_1)},it(hi).ao=function(t,n){var i=this.no_1,e=i instanceof js?i:null;si(this,n,(null==e?null:e.go_1)===t?G:this.uo_1)},it(hi).tp=function(t){var n;if(t instanceof vi){var i=t.ep_1;n=null==i||rt(i)?i:et()}else n=null==t||rt(t)?t:et();return n},it(hi).vp=function(t){var n=it(Es).vp.call(this,t);return null==n?null:ko(n,this.no_1)},it(hi).toString=function(){return this.bl()+"("+Ws(this.no_1)+"){"+((null!=(t=this.il())&&jt(t,ci)?"Active":t instanceof yi?"Cancelled":"Completed")+"}@")+to(this);var t},it(hi).bl=function(){return"CancellableContinuation"},it(li).toString=function(){return"Active"},it(vi).np=function(){return!(null==this.ip_1)},it(vi).pp=function(t,n){var i=this.fp_1;null==i||(t.qp(i,n),st());var e=this.gp_1;null==e||(t.zo(e,n),st())},it(vi).yp=function(t,n,i,e,r){return new vi(t,n,i,e,r)},it(vi).op=function(t,n,i,e,r,s){return t=t===ft?this.ep_1:t,n=n===ft?this.fp_1:n,i=i===ft?this.gp_1:i,e=e===ft?this.hp_1:e,r=r===ft?this.ip_1:r,s===ft?this.yp(t,n,i,e,r):s.yp.call(this,t,n,i,e,r)},it(vi).toString=function(){return"CompletedContinuation(result="+xt(this.ep_1)+", cancelHandler="+this.fp_1+", onCancellation="+this.gp_1+", idempotentResume="+xt(this.hp_1)+", cancelCause="+this.ip_1+")"},it(vi).hashCode=function(){var t=null==this.ep_1?0:St(this.ep_1);return t=nt(t,31)+(null==this.fp_1?0:St(this.fp_1))|0,t=nt(t,31)+(null==this.gp_1?0:St(this.gp_1))|0,t=nt(t,31)+(null==this.hp_1?0:St(this.hp_1))|0,nt(t,31)+(null==this.ip_1?0:St(this.ip_1))|0},it(vi).equals=function(t){if(this===t)return!0;if(!(t instanceof vi))return!1;var n=t instanceof vi?t:et();return!!(gt(this.ep_1,n.ep_1)&>(this.fp_1,n.fp_1)&>(this.gp_1,n.gp_1)&>(this.hp_1,n.hp_1)&>(this.ip_1,n.ip_1))},it(di).do=function(t){this.zp_1(t)},it(di).invoke=function(t){return this.do(t)},it(di).toString=function(){return"InvokeOnCancel["+Qs(this.zp_1)+"@"+to(this)+"]"},it(pi).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.iq_1.zm(this))===pt())return t;continue t;case 1:return null==t||rt(t)?t:et();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},it(mi).tl=function(){return!0},it(mi).dn=function(t){var n=new pi(this,t);return n.jj_1=st(),n.kj_1=null,n.qj()},it(mi).lq=function(t){return this.mq(t)},it(mi).nq=function(t){return this.mq(new $i(t))},it($i).wk=function(){return this.vk_1.kotlinx$atomicfu$value},it($i).up=function(){return this.vk_1.atomicfu$compareAndSet(!1,!0)},it($i).toString=function(){return Qs(this)+"["+this.uk_1+"]"},it(yi).dp=function(){return this.cp_1.atomicfu$compareAndSet(!1,!0)},it(ki).toString=function(){return"CompletedWithCancellation(result="+xt(this.qq_1)+", onCancellation="+this.rq_1+")"},it(ki).hashCode=function(){var t=null==this.qq_1?0:St(this.qq_1);return nt(t,31)+St(this.rq_1)|0},it(ki).equals=function(t){if(this===t)return!0;if(!(t instanceof ki))return!1;var n=t instanceof ki?t:et();return!!gt(this.qq_1,n.qq_1)&&!!gt(this.rq_1,n.rq_1)},it(Ci).tq=function(t){return!0},it(Ci).w5=function(t){return new js(this,t)},it(Ci).x5=function(t){(t instanceof js?t:et()).vq()},it(Ci).toString=function(){return Qs(this)+"@"+to(this)},it(Ti).toString=function(){return"CoroutineName("+this.yq_1+")"},it(Ti).hashCode=function(){return Ht(this.yq_1)},it(Ti).equals=function(t){if(this===t)return!0;if(!(t instanceof Ti))return!1;var n=t instanceof Ti?t:et();return this.yq_1===n.yq_1},it(Ni).ok=function(){return vt()},it(Pi).fl=function(t,n,i){var e;switch(this.l6_1){case 0:Ps(t,n,i),e=st();break;case 2:Yt(t,n,i),e=st();break;case 3:(function(t,n,i){t:{var e,r=i;try{var s;i.r4(),e="function"==typeof(s=t)?s(n,r):t.ck(n,r)}catch(t){if(t instanceof Error){var o,u=t;Tt(),o=Dt(Mt(u)),r.p4(o),st(),st();break t}throw t}var a=e;if(a!==pt()){var h,_=null==a||rt(a)?a:et();Tt(),h=Dt(_),r.p4(h),st()}}})(t,n,i),e=st();break;case 1:e=st();break;default:Wt()}return e},it(Pi).im=function(){return this===(Ri(),l)},it(Hi).jr=function(){var t=this.ir_1;if(null==t)return!1;var n=t.nr();return null!=n&&(n.wp(),!0)},it(Hi).or=function(t){var n,i=this.ir_1;if(null==i){var e=new gs;this.ir_1=e,n=e}else n=i;n.pr(t)},it(Hi).qr=function(){return this.gr_1.w(Ui(0,!0))>=0},it(Hi).rr=function(){var t=this.ir_1,n=null==t?null:t.sr();return null==n||n},it(Hi).tr=function(t){this.gr_1=this.gr_1.o7(Ui(0,t)),t||(this.hr_1=!0)},it(Hi).ur=function(t){if(this.gr_1=this.gr_1.p7(Ui(0,t)),this.gr_1.w(new Gt(0,0))>0)return st();this.hr_1&&this.vr()},it(Hi).vr=function(){},it(Vi).xr=function(){var t,n=this.wr_1.zr();if(null==n){var i=new ro;Bi().wr_1.as(i),t=i}else t=n;return t},it(Qi).sn=function(){return null},it(Qi).eo=function(){},it(Qi).yl=function(t){return!1},it(Qi).toString=function(){return"NonDisposableHandle"},it(_e).pk=function(){return this.bs_1},it(_e).cs=function(){return null},it(_e).toString=function(){return"Empty{"+(this.bs_1?"Active":"New")+"}"},it(fe).pk=function(){return!0},it(fe).cs=function(){return this},it(fe).gs=function(t){var n=en();n.l8("List{"),n.l8(t),n.l8("}[");for(var i=!0,e=this.hs_1;!gt(e,this);){if(e instanceof ce){var r=e;i?i=!1:n.l8(", "),n.k8(r)}e=e.hs_1}return n.l8("]"),n.toString()},it(fe).toString=function(){return Zs()?this.gs("Active"):it(yo).toString.call(this)},it(ce).vs=function(){var t=this.us_1;if(null!=t)return t;rn("job")},it(ce).pk=function(){return!0},it(ce).cs=function(){return null},it(ce).eo=function(){return this.vs().sl(this)},it(ce).toString=function(){return Qs(this)+"@"+to(this)+"[job@"+to(this.vs())+"]"},it(Ie).cs=function(){return this.xs_1},it(Ie).it=function(t){this.ys_1.kotlinx$atomicfu$value=t},it(Ie).et=function(){return this.ys_1.kotlinx$atomicfu$value},it(Ie).ot=function(t){this.zs_1.kotlinx$atomicfu$value=t},it(Ie).ht=function(){return this.zs_1.kotlinx$atomicfu$value},it(Ie).ft=function(){return we(this)===ae()},it(Ie).bt=function(){return!(null==this.ht())},it(Ie).pk=function(){return null==this.ht()},it(Ie).ct=function(t){var n,i=we(this);if(null==i)n=de();else if(i instanceof Error){var e=de();e.a(i),n=e}else{if(!(i instanceof un)){var r="State is "+xt(i);throw $t(zt(r))}n=i instanceof un?i:et()}var s=n,o=this.ht(),u=o;return null==u||(s.z2(0,u),st()),null==t||gt(t,o)||s.a(t),ve(this,ae()),s},it(Ie).gt=function(t){var n=this.ht();if(null==n)return this.ot(t),st();if(t===n)return st();var i=we(this);if(null==i)ve(this,t);else if(i instanceof Error){if(t===i)return st();var e=de();e.a(i),e.a(t),ve(this,e)}else{if(!(i instanceof un)){var r="State is "+xt(i);throw $t(zt(r))}(i instanceof un?i:et()).a(t)}},it(Ie).toString=function(){return"Finishing[cancelling="+this.bt()+", completing="+this.et()+", rootCause="+this.ht()+", exceptions="+xt(we(this))+", list="+this.xs_1+"]"},it(Ae).do=function(t){!function(t,n,i,e){var r=qe(i);if(null!=r&&Se(t,n,r,e))return st();var s=pe(t,n,e);t.zk(s)}(this.tt_1,this.ut_1,this.vt_1,this.wt_1)},it(Ae).invoke=function(t){return this.do(t)},it(Te).sp=function(t){var n=this.du_1.il();if(n instanceof Ie){var i=n.ht();if(null!=i)return i}return n instanceof $i?n.uk_1:t.ml()},it(Te).bl=function(){return"AwaitContinuation"},it(De).tu=function(t,n){var i=this.uu(t,n);return i.jj_1=st(),i.kj_1=null,i.qj()},it(De).ck=function(t,n){return this.tu(t instanceof an?t:et(),n)},it(De).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=8,this.ou_1=this.mu_1.il(),this.ou_1 instanceof Le){if(this.hj_1=6,(t=this.nu_1.k4(this.ou_1.nt_1,this))===pt())return t;continue t}var n=this.ou_1;if(null!=n&&jt(n,le)){if(this.pu_1=this.ou_1.cs(),null==this.pu_1){this.qu_1=null,this.hj_1=5;continue t}this.ru_1=this.pu_1.hs_1,this.hj_1=1;continue t}this.hj_1=7;continue t;case 1:if(gt(this.ru_1,this.pu_1)){this.hj_1=4;continue t}if(this.ru_1 instanceof Le){if(this.su_1=this.ru_1,this.hj_1=2,(t=this.nu_1.k4(this.su_1.nt_1,this))===pt())return t;continue t}this.hj_1=3;continue t;case 2:this.hj_1=3;continue t;case 3:this.ru_1=this.ru_1.hs_1,this.hj_1=1;continue t;case 4:this.qu_1=st(),this.hj_1=5;continue t;case 5:case 6:this.hj_1=7;continue t;case 7:return st();case 8:throw this.kj_1}}catch(t){var i=t;if(8===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},it(De).uu=function(t,n){var i=new De(this.mu_1,n);return i.nu_1=t,i},it(Me).r=function(){return Ki()},it(Me).gl=function(t){this.jk_1.kotlinx$atomicfu$value=t},it(Me).hl=function(){return this.jk_1.kotlinx$atomicfu$value},it(Me).kk=function(t){if(null==t)return this.gl(te()),st();t.kl();var n=t.cm(this);this.gl(n),this.jl()&&(n.eo(),this.gl(te()))},it(Me).il=function(){for(var t=this.ik_1;;){var n=t.kotlinx$atomicfu$value;if(!(n instanceof $s))return n;n.vu(this)}},it(Me).pk=function(){var t=this.il();return!(null==t||!jt(t,le))&&t.pk()},it(Me).jl=function(){var t=this.il();return!(null!=t&&jt(t,le))},it(Me).kl=function(){for(;;){var t=ye(this,this.il());if(0===t)return!1;if(1===t)return!0}},it(Me).ll=function(){},it(Me).ml=function(){var t,n=this.il();if(n instanceof Ie){var i=n.ht(),e=null==i?null:this.nl(i,Qs(this)+" is cancelling");if(null==e)throw $t(zt("Job is still new or active: "+this));t=e}else{if(null!=n&&jt(n,le))throw $t(zt("Job is still new or active: "+this));t=n instanceof $i?this.ol(n.uk_1):new so(Qs(this)+" has completed normally",null,this)}return t},it(Me).nl=function(t,n){var i,e=t instanceof on?t:null;if(null==e){var r=n;i=new so(null==r?this.sk():r,t,this)}else i=e;return i},it(Me).ol=function(t,n,i){return n=n===ft?null:n,i===ft?this.nl(t,n):i.nl.call(this,t,n)},it(Me).pl=function(t){return this.ql(!1,!0,t)},it(Me).ql=function(t,n,i){for(var e=function(t,n,i){var e;if(i){var r=n instanceof Re?n:null;e=null==r?new Fe(n):r}else{var s=n instanceof ce?n:null,o=null==s?null:s;e=null==o?new Ue(n):o}var u=e;return u.us_1=t,u}(this,i,t);;)t:{var r=this.il(),s=r;if(s instanceof _e)if(r.bs_1){if(this.ik_1.atomicfu$compareAndSet(r,e))return e}else ke(this,r);else{if(null==s||!jt(s,le)){if(n){var o=r instanceof $i?r:null;Bs(i,null==o?null:o.uk_1)}return te()}var u=r.cs();if(null==u)je(this,r instanceof ce?r:et());else{var a=null,h=te();if(t&&r instanceof Ie&&(null==(a=r.ht())||i instanceof Le&&!r.et())){if(!be(this,r,u,e)){st();break t}if(null==a)return e;h=e,st()}if(null!=a)return n&&Bs(i,a),h;if(be(this,r,u,e))return e}}}},it(Me).pq=function(t){return function(t){for(;;){var n=t.il();if(null==n||!jt(n,le))return!1;if(ye(t,n)>=0)return!0}}(this)?function(t,n){var i,e=new hi(bt(n),zs());return e.kp(),i=new He(e),Wn(e,t.pl(i)),e.nn()}(this,t):(ne(t.r4()),st())},it(Me).sl=function(t){for(;;){var n=this.il();if(!(n instanceof ce))return null!=n&&jt(n,le)?(null!=n.cs()&&t.ns(),st()):st();if(n!==t)return st();if(this.ik_1.atomicfu$compareAndSet(n,he()))return st()}},it(Me).tl=function(){return!1},it(Me).ul=function(t){var n,i=t;if(null==i){n=new so(this.sk(),null,this)}else n=i;this.wl(n)},it(Me).sk=function(){return"Job was cancelled"},it(Me).wl=function(t){this.zl(t)},it(Me).xl=function(t){this.zl(t)},it(Me).yl=function(t){return t instanceof on||!!this.zl(t)&&this.fm()},it(Me).zl=function(t){var n,i=re();return!(!this.tl()||(i=function(t,n){for(;;){var i=t.il();if(null==i||!jt(i,le)||i instanceof Ie&&i.et())return re();var e=Ce(t,i,new $i(xe(t,n)));if(e!==oe())return e}}(this,t))!==se())||(i===re()&&(i=function(t,n){for(var i=null;;)t:{var e=t.il(),r=e;if(r instanceof Ie){if(e.ft())return ue();var s=e.bt();if(null!=n||!s){var o,u=i;if(null==u){var a=xe(t,n);i=a,o=a}else o=u;var h=o;e.gt(h)}var _=e.ht(),l=s?null:_;return null==l||(ge(t,e.xs_1,l),st()),re()}if(null==r||!jt(r,le))return ue();var f,c=i;if(null==c){var v=xe(t,n);i=v,f=v}else f=c;var w=f;if(!e.pk()){var d=Ce(t,e,new $i(w));if(d===re()){var p="Cannot happen in "+xt(e);throw $t(zt(p))}if(d===oe()){st();break t}return d}if(Ee(t,e,w))return re()}}(this,t)),i===re()||i===se()?n=!0:i===ue()?n=!1:(this.zk(i),n=!0),n)},it(Me).am=function(){var t,n=this.il(),i=n;if(i instanceof Ie)t=n.ht();else if(i instanceof $i)t=n.uk_1;else{if(null!=i&&jt(i,le)){var e="Cannot be cancelling child in this state: "+xt(n);throw $t(zt(e))}t=null}var r=t,s=r instanceof on?r:null;return null==s?new so("Parent job is "+Oe(0,n),r,this):s},it(Me).mq=function(t){for(;;){var n=Ce(this,this.il(),t);if(n===re())return!1;if(n===se())return!0;if(n!==oe())return this.zk(n),!0;st()}},it(Me).xk=function(t){for(;;){var n=Ce(this,this.il(),t);if(n===re())throw hn("Job "+this+" is already complete or completing, but is being completed with "+xt(t),(e=void 0,null==(e=(i=t)instanceof $i?i:null)?null:e.uk_1));if(n!==oe())return n;st()}var i,e},it(Me).bm=function(){return _n((t=new De(this,null),(n=function(n,i){return t.tu(n,i)}).$arity=1,n));var t,n},it(Me).cm=function(t){var n;n=new Le(t);var i=this.rl(!0,ft,n);return jt(i,Zi)?i:et()},it(Me).al=function(t){throw t},it(Me).dm=function(t){},it(Me).em=function(){return!1},it(Me).fm=function(){return!0},it(Me).gm=function(t){return!1},it(Me).tk=function(t){},it(Me).zk=function(t){},it(Me).toString=function(){return this.hm()+"@"+to(this)},it(Me).hm=function(){return this.bl()+"{"+Oe(0,this.il())+"}"},it(Me).bl=function(){return Qs(this)},it(Me).zm=function(t){t:for(;;){var n=this.il();if(null==n||!jt(n,le)){if(n instanceof $i)throw n.uk_1;return Ve(n)}if(ye(this,n)>=0)break t}return function(t,n){var i,e=new Te(bt(n),t);return e.kp(),i=new Be(e),Wn(e,t.pl(i)),e.nn()}(this,t)},it(Pe).cs=function(){return this.dt_1},it(Pe).pk=function(){return!1},it(Pe).toString=function(){return Zs()?this.dt_1.gs("New"):ln(this)},it(Le).sn=function(){return this.vs()},it(Le).do=function(t){return this.nt_1.xl(this.vs())},it(Le).invoke=function(t){return this.do(t)},it(Le).yl=function(t){return this.vs().yl(t)},it(Fe).do=function(t){this.bv_1.atomicfu$compareAndSet(0,1)&&this.av_1(t)},it(Fe).invoke=function(t){return this.do(t)},it(Ue).do=function(t){return this.gv_1(t)},it(Ue).invoke=function(t){return this.do(t)},it(He).do=function(t){var n,i=this.lv_1;return Tt(),n=Dt(st()),i.p4(n),st()},it(He).invoke=function(t){return this.do(t)},it(Be).do=function(t){var n=this.vs().il();if(n instanceof $i){var i,e=this.rv_1,r=n.uk_1;Tt(),i=Dt(Mt(r)),e.p4(i),st()}else{var s,o=this.rv_1,u=Ve(n),a=null==u||rt(u)?u:et();Tt(),s=Dt(a),o.p4(s),st()}},it(Be).invoke=function(t){return this.do(t)},it(We).do=function(t){this.wv_1.rp(this.wv_1.sp(this.vs()))},it(We).invoke=function(t){return this.do(t)},it(Ge).tl=function(){return!0},it(Ge).fm=function(){return this.zv_1},it(Ge).oq=function(){return this.mq(st())},it(Ge).nq=function(t){return this.mq(new $i(t))},it(Je).toString=function(){var t=this.cw();return null==t?Qs(this)+"@"+to(this):t},it(Je).cw=function(){var t,n=io().dr();if(this===n)return"Dispatchers.Main";try{t=n.bw()}catch(n){if(!(n instanceof fn))throw n;t=null}return this===t?"Dispatchers.Main.immediate":null},it(Ze).yl=function(t){return!1},it(tr).tq=function(t){return!1},it(tr).uq=function(t,n){var i=t.y5((null==x&&new nr,x));if(null!=i)return i.iw_1=!0,st();throw cn("Dispatchers.Unconfined.dispatch function can only be used by the yield function. If you wrap Unconfined dispatcher in your code, make sure you properly delegate isDispatchNeeded and dispatch calls.")},it(tr).toString=function(){return"Dispatchers.Unconfined"},it(_r).do=function(t){this.zw_1.ns()&&this.ax_1.bx()},it(_r).invoke=function(t){return this.do(t)},it(_r).toString=function(){return"RemoveReceiveOnCancel["+this.zw_1+"]"},it(lr).cx=function(t){return this.pw_1!==sr()?ur(0,this.pw_1):(this.pw_1=this.ow_1.tw(),this.pw_1!==sr()?ur(0,this.pw_1):function(t,n){var i=Kn(bt(n));t:for(var e=new fr(t,i);;){if(ar(t.ow_1,e)){hr(t.ow_1,i,e),st();break t}var r=t.ow_1.tw();if(t.pw_1=r,r instanceof yr){if(null==r.mw_1){var s;Tt(),s=Dt(!1),i.p4(s),st()}else{var o,u=r.nw();Tt(),o=Dt(Mt(u)),i.p4(o),st()}st();break t}if(r!==sr()){var a,h=t.ow_1.uw_1;a=null==h?null:As(h,null==r||rt(r)?r:et(),i.r4()),i.bo(!0,a),st();break t}}return i.nn()}(this,t))},it(lr).f=function(){var t=this.pw_1;if(t instanceof yr)throw t.nw();if(t!==sr())return this.pw_1=sr(),null==t||rt(t)?t:et();throw $t("'hasNext' should be called prior to 'next' invocation")},it(fr).ix=function(t,n){var i=n;return null==this.hx_1.wn(!0,null==i?null:i.kx_1,this.mx(t))?null:(null==n||n.nx(),Jn())},it(fr).ox=function(t){this.gx_1.pw_1=t,this.hx_1.yn(Jn())},it(fr).px=function(t){var n=null==t.mw_1?this.hx_1.vn(!1):this.hx_1.xn(t.nw());null!=n&&(this.gx_1.pw_1=t,this.hx_1.yn(n))},it(fr).mx=function(t){var n=this.gx_1.ow_1.uw_1;return null==n?null:As(n,t,this.hx_1.r4())},it(fr).toString=function(){return"ReceiveHasNext@"+to(this)},it(cr).tw=function(){for(;;){var t=this.wx();if(null==t)return sr();var n=t;if(null!=n.ay(null))return n.by(),n.cy();n.dy()}},it(cr).ey=function(){return null!=this.fy()&&this.vx()},it(cr).xw=function(t){var n;if(this.ux()){var i,e=this.vw_1;e.is_1 instanceof gr?i=!1:(e.os(t),i=!0),n=i}else{var r,s=this.vw_1;s.is_1 instanceof gr?r=!1:this.vx()?(s.os(t),r=!0):r=!1,n=r}return n},it(cr).ul=function(t){if(this.ey())return st();var n=t;this.gy(null==n?Ot(Qs(this)+" was cancelled"):n)},it(cr).gy=function(t){var n=this.iy(t);return this.jy(n),n},it(cr).jy=function(t){var n=this.ky();if(null==n)throw $t("Cannot happen");var i=n,e=Os();t:for(;;){var r=i.is_1;if(r instanceof yo)break t;r.ns()?e=Is(e,r instanceof gr?r:et()):r.qs()}this.ly(e,i)},it(cr).ly=function(t,n){if(null!=t)if(t instanceof un){var i=t instanceof un?t:et(),e=i.g()-1|0;if(0<=e)do{var r=e;e=e+-1|0,i.h(r).my(n)}while(0<=e)}else{var s=t;(null==s||rt(s)?s:et()).my(n)}else st()},it(cr).d=function(){return new lr(this)},it(cr).ny=function(){var t=it(mr).ny.call(this);return null!=t&&!(t instanceof yr)&&this.bx(),t},it(cr).yw=function(){},it(cr).bx=function(){},it(pr).cy=function(){return this.xy_1},it(pr).ay=function(t){var n=Jn();return null==t||t.nx(),n},it(pr).by=function(){},it(pr).my=function(t){},it(pr).toString=function(){return"SendBuffered@"+to(this)+"("+this.xy_1+")"},it(mr).oy=function(t){for(;;){var n=this.ny();if(null==n)return rr();var i=n;if(null!=i.ix(t,null))return i.ox(t),i.tx()}},it(mr).ky=function(){var t,n,i=(t=this.vw_1.is_1)instanceof yr?t:null;return null==i?n=null:(wr(this,i),n=i),n},it(mr).fy=function(){var t,n,i=(t=this.vw_1.hs_1)instanceof yr?t:null;return null==i?n=null:(wr(this,i),n=i),n},it(mr).wx=function(){var t,n=this.vw_1,i=n.hs_1;if(i!==n)if(i instanceof gr)if(i instanceof yr)t=i;else{if(!i.ps())throw $t(zt("Should remove"));t=i}else t=null;else t=null;return t},it(mr).yy=function(t){var n=this.vw_1,i=new pr(t),e=n.is_1;return jt(e,$r)?e:(n.os(i),null)},it(mr).py=function(t){var n,i=this.oy(t);if(i===er())n=Ir().cz(st());else if(i===rr()){var e=this.ky();if(null==e)return Ir().bz();var r=e;n=Ir().az(vr(this,r))}else{if(!(i instanceof yr)){var s="trySend returned "+zt(i);throw $t(zt(s))}n=Ir().az(vr(this,i))}return n},it(mr).iy=function(t){var n,i=new yr(t),e=this.vw_1;e.is_1 instanceof yr?n=!1:(e.os(i),n=!0);var r,s=n;return wr(this,s?i:(r=this.vw_1.is_1)instanceof yr?r:et()),s&&function(t,n){var i=t.ww_1.kotlinx$atomicfu$value;null!==i&&i!==or()&&t.ww_1.atomicfu$compareAndSet(i,or())&&(null!=i&&"function"==typeof i?i:et())(n)}(this,t),s},it(mr).ry=function(t){},it(mr).ny=function(){var t,n=this.vw_1,i=n.hs_1;if(i!==n)if(jt(i,$r))if(i instanceof yr)t=i;else{if(!i.ps())throw $t(zt("Should remove"));t=i}else t=null;else t=null;return t},it(mr).toString=function(){return Qs(this)+"@"+to(this)+"{"+dr(this)+"}"+this.sy()},it(mr).sy=function(){return""},it(gr).dy=function(){},it(yr).ty=function(){var t=this.mw_1;return null==t?new Rr(Pr()):t},it(yr).nw=function(){var t=this.mw_1;return null==t?new Nr(Pr()):t},it(yr).tx=function(){return this},it(yr).cy=function(){return this},it(yr).ay=function(t){var n=Jn();return null==t||t.nx(),n},it(yr).by=function(){},it(yr).ix=function(t,n){var i=Jn();return null==n||n.nx(),i},it(yr).ox=function(t){},it(yr).my=function(t){return st()},it(yr).toString=function(){return"Closed@"+to(this)+"["+this.mw_1+"]"},it(br).tx=function(){return er()},it(xr).ux=function(){return!1},it(xr).vx=function(){return 0===this.lz_1.kotlinx$atomicfu$value},it(xr).ey=function(){return this.iz_1,it(cr).ey.call(this)},it(xr).oy=function(t){var n=null;this.iz_1;t:{var i=this.lz_1.kotlinx$atomicfu$value,e=this.ky();if(null!=e)return e;var r=function(t,n){if(n0)return ls();var n=Br(this),i=this.p10_1,e=n.o7(kn(i));if(0===this.k10_1&&this.q10_1>0&&(e=e.ui()),0!==this.s10_1){var r=this.r10_1;if(null==r);else for(var s=jn(r);s.e();){var o=s.f();null!=o&&o.v10_1.w(new Gt(0,0))>=0&&o.v10_1.w(e)<0&&(e=o.v10_1)}}else st();if(e.w(this.o10_1)<=0)return ls();var u,a=Gr(this);if(this.s10_1>0){var h=a.p7(e).c8(),_=this.q10_1,l=this.k10_1-h|0;u=Math.min(_,l)}else u=this.q10_1;var f=u,c=ls(),v=a,w=this.q10_1,d=v.o7(kn(w));if(f>0){c=vn(Array(f),null);var p=0,m=pn(this.m10_1),g=a;if(g.w(d)<0)t:do{var $=g;g=g.o7(new Gt(1,0));var y=as(m,$);if(y!==Vr()){y instanceof rs||et();var b=p;if(p=b+1|0,c[b]=y.a11_1,hs(m,$,Vr()),hs(m,a,y.z10_1),a=a.ui(),p>=f)break t}}while(g.w(d)<0)}var k=a.p7(n).c8();0===this.s10_1&&(e=a);var j=this.n10_1,x=a,z=this.j10_1,E=Math.min(z,k),C=x.p7(kn(E)),S=j.w(C)>=0?j:C;return 0===this.k10_1&&S.w(d)<0&>(as(pn(this.m10_1),S),Vr())&&(a=a.ui(),S=S.ui()),Qr(this,S,e,a,d),ts(this),!(0===c.length)&&(c=es(this,c)),c},it(os).b12=function(){return new us},it(os).c12=function(t){return vn(Array(t),null)},it(us).d12=function(t){return!(this.v10_1.w(new Gt(0,0))>=0||(this.v10_1=t.a12(),0))},it(us).e12=function(t){return this.d12(t instanceof os?t:et())},it(us).f12=function(t){var n=this.v10_1;return this.v10_1=new Gt(-1,-1),this.w10_1=null,t.b11(n)},it(us).g12=function(t){return this.f12(t instanceof os?t:et())},it(fs).q11=function(){var t,n=null,i=this.r10_1;if(null==i){var e=this.c12(2);this.r10_1=e,t=e}else{var r;if(this.s10_1>=i.length){var s=xn(i,nt(2,i.length));this.r10_1=s,r=s}else r=i;t=r}var o,u=t,a=this.t10_1;t:for(;;){var h,_=u[a];if(null==_){var l=this.b12();u[a]=l,h=l}else h=_;if(o=h,(a=a+1|0)>=u.length&&(a=0),(o instanceof cs?o:et()).e12(this))break t}this.t10_1=a;var f=this.s10_1;this.s10_1=f+1|0;var c=o;return null==(n=this.u10_1)||n.t12(1),c},it(fs).v11=function(t){var n=null,i=this.s10_1;this.s10_1=i-1|0,n=this.u10_1,0===this.s10_1&&(this.t10_1=0);for(var e=(t instanceof cs?t:et()).g12(this),r=0,s=e.length;r"},it(Js).yk=function(t){return this.rn_1.p4(ji(t,this.rn_1))},it(no).dr=function(){var t=this.cr_1;return null==t?this.br_1:t},it(eo).bw=function(){return this.i14_1},it(eo).tq=function(t){return!this.h14_1},it(eo).uq=function(t,n){return this.g14_1.uq(t,n)},it(eo).toString=function(){var t=this.cw();return null==t?this.g14_1.toString():t},it(ro).uq=function(t,n){!function(){throw cn("runBlocking event loop is not supported")}()},it(so).toString=function(){return it(on).toString.call(this)+"; job="+this.n14_1},it(so).equals=function(t){return t===this||!!(t instanceof so&&t.message==this.message&>(t.n14_1,this.n14_1))&>(t.cause,this.cause)},it(so).hashCode=function(){var t=nt(nt(Ht(pn(this.message)),31)+St(this.n14_1)|0,31),n=this.cause,i=null==n?null:St(n);return t+(null==i?0:i)|0},it(oo).q14=function(){process.nextTick(this.z14_1.w14_1)},it(ao).q14=function(){setTimeout(this.z14_1.w14_1,0)},it(ho).i15=function(){this.x14_1.q14()},it(ho).j15=function(){setTimeout(this.w14_1,0)},it(_o).uq=function(t,n){this.z14_1.k15(n)},it(_o).er=function(t,n){var i,e,r;i=new co(setTimeout((e=n,r=this,function(){return e.ao(r,st()),st(),st()}),fo(t))),n.zn(i)},it(lo).k15=function(t){this.pr(t),this.g15_1||(this.g15_1=!0,this.i15())},it(lo).h15=function(){try{var t=this.f15_1,n=0;if(n=0))throw dn(zt("replay cannot be negative, but was "+t));if(!(n>=0))throw dn(zt("extraBufferCapacity cannot be negative, but was "+n));if(!(t>0||n>0||i.equals(Cr())))throw dn(zt("replay or extraBufferCapacity must be positive with non-default onBufferOverflow strategy "+i));var e=t+n|0;return new os(t,e<0?bn().MAX_VALUE:e,i)},t.$_$.p=function(t){return new ms(t,null)},t.$_$.q=bo,t.$_$.r=ko,t.$_$.s=hi,t.$_$.t=Hs,t.$_$.u=function(t){return new mi(t=t===ft?null:t)},t.$_$.v=gi,t.$_$.w=Ti,t.$_$.x=function(t){return new Ns(null!=t.y5(Ki())?t:t.f6(ee()))},t.$_$.y=Mi,t.$_$.z=ee,t.$_$.a1=Ji,t.$_$.b1=zs,t.$_$.c1=function(){return new Ns(Xe().f6(io().dr()))},t.$_$.d1=Xe,t.$_$.e1=function(t,n,i,e){n=n===ft?vt():n,i=i===ft?Li():i;var r=Ks(t,n),s=i.im()?new Vn(r,e):new Hn(r,!0);return s.cl(i,s,e),s},t.$_$.f1=function(t,n){n=n===ft?null:n;var i=t.y5(Ki()),e=null==i?null:i.bm();if(null==e);else for(var r=e.d();r.e();)r.f().ul(n)},t.$_$.g1=Di,t.$_$.h1=function(t,n){n=n===ft?null:n;var i=t.y5(Ki());null==i||i.ul(n)},t.$_$.i1=function(t,n,i){return Di(t,Vt(n,i=i===ft?null:i))},t.$_$.j1=function(t,n,i){return i=i===ft?null:i,t.ul(Vt(n,i))},t.$_$.k1=function(t){var n=t.ok().y5(Ki()),i=null==n?null:n.pk();return null==i||i},t.$_$.l1=function(t){var n=t.y5(Ki());if(null==n)throw $t(zt("Current context doesn't contain Job in it: "+t));return n},t.$_$.m1=function(t,n,i,e){n=n===ft?vt():n,i=i===ft?Li():i;var r=Ks(t,n),s=i.im()?new Fn(r,e):new Ln(r,!0);return s.cl(i,s,e),s},t})?e.apply(n,r):e)||(t.exports=s)},220:function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,factory;factory=function(_,kotlin_kotlin,kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core,kotlin_io_ktor_ktor_utils,kotlin_org_jetbrains_kotlinx_atomicfu,kotlin_io_ktor_ktor_events,kotlin_io_ktor_ktor_io,kotlin_io_ktor_ktor_http,kotlin_io_ktor_ktor_websockets){"use strict";var imul=Math.imul,protoOf=kotlin_kotlin.$_$.ta,objectCreate=kotlin_kotlin.$_$.ra,cancel=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.g1,Unit_getInstance=kotlin_kotlin.$_$.u4,CoroutineImpl=kotlin_kotlin.$_$.z8,THROW_CCE=kotlin_kotlin.$_$.hf,PipelineContext=kotlin_io_ktor_ktor_utils.$_$.g,isObject=kotlin_kotlin.$_$.ha,toString=kotlin_kotlin.$_$.ya,getKClassFromExpression=kotlin_kotlin.$_$.c,IllegalStateException_init_$Create$=kotlin_kotlin.$_$.v1,get_COROUTINE_SUSPENDED=kotlin_kotlin.$_$.l8,classMeta=kotlin_kotlin.$_$.l9,VOID=kotlin_kotlin.$_$.ng,setMetadataFor=kotlin_kotlin.$_$.ua,atomic$boolean$1=kotlin_org_jetbrains_kotlinx_atomicfu.$_$.a,Key_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.l,Job=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.z,AttributesJsFn=kotlin_io_ktor_ktor_utils.$_$.m,Events=kotlin_io_ktor_ktor_events.$_$.b,AttributeKey=kotlin_io_ktor_ktor_utils.$_$.l,Closeable=kotlin_io_ktor_ktor_io.$_$.r,isInterface=kotlin_kotlin.$_$.ea,CoroutineScope=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.y,ensureNotNull=kotlin_kotlin.$_$.xf,LinkedHashMap_init_$Create$=kotlin_kotlin.$_$.u,PlatformUtils_getInstance=kotlin_io_ktor_ktor_utils.$_$.c,ByteReadChannel=kotlin_io_ktor_ktor_io.$_$.e1,objectMeta=kotlin_kotlin.$_$.sa,instanceOf=kotlin_io_ktor_ktor_utils.$_$.j,NullBody_getInstance=kotlin_io_ktor_ktor_http.$_$.a,equals=kotlin_kotlin.$_$.o9,cancel_0=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.i1,throwUninitializedPropertyAccessException=kotlin_kotlin.$_$.jg,IllegalStateException=kotlin_kotlin.$_$.ye,IllegalStateException_init_$Init$=kotlin_kotlin.$_$.t1,captureStack=kotlin_kotlin.$_$.f9,defineProp=kotlin_kotlin.$_$.n9,UnsupportedOperationException=kotlin_kotlin.$_$.sf,UnsupportedOperationException_init_$Init$=kotlin_kotlin.$_$.h2,flattenEntries=kotlin_io_ktor_ktor_utils.$_$.u,joinToString=kotlin_kotlin.$_$.v6,trimMargin=kotlin_kotlin.$_$.je,ByteReadChannel_0=kotlin_io_ktor_ktor_io.$_$.d1,readBytes=kotlin_io_ktor_ktor_io.$_$.v,IllegalStateException_init_$Init$_0=kotlin_kotlin.$_$.u1,WriterScope=kotlin_io_ktor_ktor_io.$_$.f1,ReadChannelContent=kotlin_io_ktor_ktor_http.$_$.l,noWhenBranchMatchedException=kotlin_kotlin.$_$.eg,GlobalScope_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.k,writer=kotlin_io_ktor_ktor_io.$_$.h1,WriteChannelContent=kotlin_io_ktor_ktor_http.$_$.m,Companion_getInstance=kotlin_io_ktor_ktor_io.$_$.g,NoContent=kotlin_io_ktor_ktor_http.$_$.j,ProtocolUpgrade=kotlin_io_ktor_ktor_http.$_$.k,ByteArrayContent=kotlin_io_ktor_ktor_http.$_$.i,IllegalArgumentException_init_$Create$=kotlin_kotlin.$_$.r1,JsType_getInstance=kotlin_io_ktor_ktor_utils.$_$.b,PrimitiveClasses_getInstance=kotlin_kotlin.$_$.l4,arrayOf=kotlin_kotlin.$_$.uf,createKType=kotlin_kotlin.$_$.a,typeInfoImpl=kotlin_io_ktor_ktor_utils.$_$.k,OutgoingContent=kotlin_io_ktor_ktor_http.$_$.n,get_job=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.l1,async=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.e1,emptySet=kotlin_kotlin.$_$.k6,interfaceMeta=kotlin_kotlin.$_$.v9,ArrayList_init_$Create$=kotlin_kotlin.$_$.l,HttpHeaders_getInstance=kotlin_io_ktor_ktor_http.$_$.e,UnsafeHeaderException=kotlin_io_ktor_ktor_http.$_$.s,CancellationException_init_$Create$=kotlin_kotlin.$_$.z,CoroutineName=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.w,SilentSupervisor=kotlin_io_ktor_ktor_utils.$_$.n,lazy=kotlin_kotlin.$_$.dg,CompletableJob=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.v,CloseableCoroutineDispatcher=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.t,KProperty1=kotlin_kotlin.$_$.ub,getPropertyCallableRef=kotlin_kotlin.$_$.s9,setOf=kotlin_kotlin.$_$.q7,get=kotlin_kotlin.$_$.v8,fold=kotlin_kotlin.$_$.u8,minusKey=kotlin_kotlin.$_$.w8,plus=kotlin_kotlin.$_$.y8,Element=kotlin_kotlin.$_$.x8,setOf_0=kotlin_kotlin.$_$.r7,PipelinePhase=kotlin_io_ktor_ktor_utils.$_$.h,contentLength=kotlin_io_ktor_ktor_http.$_$.x,MalformedInputException=kotlin_io_ktor_ktor_io.$_$.h,KtorSimpleLogger=kotlin_io_ktor_ktor_utils.$_$.f,Application_getInstance=kotlin_io_ktor_ktor_http.$_$.b,toLong=kotlin_kotlin.$_$.wa,toLong_0=kotlin_kotlin.$_$.ae,contentType=kotlin_io_ktor_ktor_http.$_$.y,isByteArray=kotlin_kotlin.$_$.y9,Text_getInstance=kotlin_io_ktor_ktor_http.$_$.c,TextContent=kotlin_io_ktor_ktor_http.$_$.o,Companion_getInstance_0=kotlin_kotlin.$_$.o4,Long=kotlin_kotlin.$_$.af,copyTo=kotlin_io_ktor_ktor_io.$_$.a,CancellationException=kotlin_kotlin.$_$.k8,cancel_1=kotlin_io_ktor_ktor_io.$_$.g1,HttpStatusCode=kotlin_io_ktor_ktor_http.$_$.q,getKClass=kotlin_kotlin.$_$.d,toByteArray=kotlin_io_ktor_ktor_utils.$_$.a,Input=kotlin_io_ktor_ktor_io.$_$.s,ByteReadPacket=kotlin_io_ktor_ktor_io.$_$.q,Unit=kotlin_kotlin.$_$.rf,toString_0=kotlin_kotlin.$_$.kg,toInt=kotlin_kotlin.$_$.yd,reversed=kotlin_kotlin.$_$.p7,LinkedHashSet_init_$Create$=kotlin_kotlin.$_$.w,Charsets_getInstance=kotlin_io_ktor_ktor_io.$_$.f,charset=kotlin_io_ktor_ktor_http.$_$.w,withCharset=kotlin_io_ktor_ktor_http.$_$.d1,compareValues=kotlin_kotlin.$_$.j8,get_name=kotlin_io_ktor_ktor_io.$_$.l,toList=kotlin_kotlin.$_$.z7,sortedWith=kotlin_kotlin.$_$.v7,StringBuilder_init_$Create$=kotlin_kotlin.$_$.e1,charSequenceLength=kotlin_kotlin.$_$.j9,roundToInt=kotlin_kotlin.$_$.bb,firstOrNull=kotlin_kotlin.$_$.o6,charset_0=kotlin_io_ktor_ktor_http.$_$.v,readText=kotlin_io_ktor_ktor_io.$_$.x,get_authority=kotlin_io_ktor_ktor_http.$_$.u,takeFrom=kotlin_io_ktor_ktor_http.$_$.c1,isSecure=kotlin_io_ktor_ktor_http.$_$.z,get_authority_0=kotlin_io_ktor_ktor_http.$_$.t,EventDefinition=kotlin_io_ktor_ktor_events.$_$.a,Companion_getInstance_1=kotlin_io_ktor_ktor_http.$_$.h,Companion_getInstance_2=kotlin_io_ktor_ktor_http.$_$.f,SupervisorJob=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.d1,cancel_2=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.j1,get_lastIndex=kotlin_kotlin.$_$.z6,downTo=kotlin_kotlin.$_$.ob,delay=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.b,isWebsocket=kotlin_io_ktor_ktor_http.$_$.a1,launch=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.m1,IOException=kotlin_io_ktor_ktor_io.$_$.b1,IOException_init_$Init$=kotlin_io_ktor_ktor_io.$_$.d,URLBuilder=kotlin_io_ktor_ktor_http.$_$.r,HeadersBuilder=kotlin_io_ktor_ktor_http.$_$.p,takeFrom_0=kotlin_io_ktor_ktor_http.$_$.b1,appendAll=kotlin_io_ktor_ktor_utils.$_$.t,putAll=kotlin_io_ktor_ktor_utils.$_$.w,GMTDate=kotlin_io_ktor_ktor_utils.$_$.e,Pipeline=kotlin_io_ktor_ktor_utils.$_$.i,decode=kotlin_io_ktor_ktor_io.$_$.i,hashCode=kotlin_kotlin.$_$.u9,get_ByteArrayPool=kotlin_io_ktor_ktor_io.$_$.c1,readAvailable=kotlin_io_ktor_ktor_io.$_$.b,Companion_getInstance_3=kotlin_io_ktor_ktor_http.$_$.g,CoroutineScope_0=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.x,CancellationException_init_$Create$_0=kotlin_kotlin.$_$.b1,cancel_3=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.h1,Companion_getInstance_4=kotlin_io_ktor_ktor_http.$_$.d,Dispatchers_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.j,intercepted=kotlin_kotlin.$_$.n8,get_MODE_CANCELLABLE=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.b1,CancellableContinuationImpl=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.s,extendThrowable=kotlin_kotlin.$_$.p9,Companion_getInstance_5=kotlin_kotlin.$_$.p4,createFailure=kotlin_kotlin.$_$.wf,_Result___init__impl__xyqfz8=kotlin_kotlin.$_$.v2,toTypedArray=kotlin_kotlin.$_$.h8,writeFully=kotlin_io_ktor_ktor_io.$_$.c,Error_init_$Create$=kotlin_kotlin.$_$.i1,Error_init_$Create$_0=kotlin_kotlin.$_$.k1,_ChannelResult___get_isSuccess__impl__odq1z9=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.f,Channel=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.m,Companion_getInstance_6=kotlin_io_ktor_ktor_websockets.$_$.f,Codes_CLOSED_ABNORMALLY_getInstance=kotlin_io_ktor_ktor_websockets.$_$.a,Text_init_$Create$=kotlin_io_ktor_ktor_websockets.$_$.e,Binary_init_$Create$=kotlin_io_ktor_ktor_websockets.$_$.c,CloseReason=kotlin_io_ktor_ktor_websockets.$_$.g,Close_init_$Create$=kotlin_io_ktor_ktor_websockets.$_$.d,String_0=kotlin_io_ktor_ktor_io.$_$.t,BytePacketBuilder=kotlin_io_ktor_ktor_io.$_$.p,writeFully_0=kotlin_io_ktor_ktor_io.$_$.y,readShort=kotlin_io_ktor_ktor_io.$_$.w,cancelConsumed=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.n,Codes_INTERNAL_ERROR_getInstance=kotlin_io_ktor_ktor_websockets.$_$.b,CompletableDeferred=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.u,Factory_getInstance=kotlin_org_jetbrains_kotlinx_kotlinx_coroutines_core.$_$.g,Companion_instance,CALL_COROUTINE,CLIENT_CONFIG,properties_initialized_HttpClientEngine_kt_5uiebb,ENGINE_CAPABILITIES_KEY,DEFAULT_CAPABILITIES,properties_initialized_HttpClientEngineCapability_kt_qarzcf,KTOR_DEFAULT_USER_AGENT,DATE_HEADERS,Companion_instance_0,properties_initialized_Utils_kt_xvi83j,UploadProgressListenerAttributeKey,DownloadProgressListenerAttributeKey,Plugin_instance,properties_initialized_BodyProgress_kt_pmfrhr,ValidateMark,LOGGER,properties_initialized_DefaultResponseValidation_kt_akvzqt,LOGGER_0,properties_initialized_DefaultTransform_kt_ossax9,LOGGER_1,ExpectSuccessAttributeKey,Companion_instance_1,properties_initialized_HttpCallValidator_kt_xrx49w,PLUGIN_INSTALLED_LIST,properties_initialized_HttpClientPlugin_kt_p98320,LOGGER_2,Plugin_instance_0,properties_initialized_HttpPlainText_kt_2nx4ox,ALLOWED_FOR_REDIRECT,LOGGER_3,Plugin_instance_1,properties_initialized_HttpRedirect_kt_klj746,LOGGER_4,Plugin_instance_2,properties_initialized_HttpRequestLifecycle_kt_3hmcrf,Plugin_instance_3,LOGGER_5,Companion_instance_2,Plugin_instance_4,properties_initialized_HttpTimeout_kt_9oyjbd,WebSocketCapability_instance,Companion_instance_3,Phases_instance,Phases_instance_0,BodyTypeAttributeKey,properties_initialized_RequestBody_kt_agyv1b,Phases_instance_1,Phases_instance_2,HttpRequestCreated,HttpRequestIsReadyForSending,HttpResponseReceived,HttpResponseReceiveFailed,HttpResponseCancelled,properties_initialized_ClientEvents_kt_rdee4m,EmptyContent_instance,Js_instance;function get_coroutineContext(){return this.l2a().ok()}function get_supportedCapabilities(){return emptySet()}function install(t){var n=Phases_getInstance_0().v27_1;t.e25_1.n1r(n,HttpClientEngine$install$slambda_0(t,this,null))}function HttpClient_init_$Init$(t,n,i,e){return HttpClient.call(e,t,n),e.y24_1=i,e}function HttpClient_init_$Create$(t,n,i){return HttpClient_init_$Init$(t,n,i,objectCreate(protoOf(HttpClient)))}function HttpClient$lambda(t){return function(n){return null!=n&&(cancel(t.w24_1),Unit_getInstance()),Unit_getInstance()}}function HttpClient$slambda(t,n){this.s25_1=t,CoroutineImpl.call(this,n)}function HttpClient$slambda_0(t,n){var i=new HttpClient$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function HttpClient$lambda_0(t){return defaultTransformers(t),Unit_getInstance()}function HttpClient$slambda_1(t,n){this.n26_1=t,CoroutineImpl.call(this,n)}function HttpClient$slambda_2(t,n){var i=new HttpClient$slambda_1(t,n),e=function(t,n,e){return i.q26(t,n,e)};return e.$arity=2,e}function $executeCOROUTINE$0(t,n,i){CoroutineImpl.call(this,i),this.a27_1=t,this.b27_1=n}function HttpClient(t,n){n=n===VOID?new HttpClientConfig:n,this.w24_1=t,this.x24_1=n,this.y24_1=!1,this.z24_1=atomic$boolean$1(!1),this.a25_1=Job(this.w24_1.ok().y5(Key_getInstance())),this.b25_1=this.w24_1.ok().f6(this.a25_1),this.c25_1=new HttpRequestPipeline(this.x24_1.p27_1),this.d25_1=new HttpResponsePipeline(this.x24_1.p27_1),this.e25_1=new HttpSendPipeline(this.x24_1.p27_1),this.f25_1=new HttpReceivePipeline(this.x24_1.p27_1),this.g25_1=AttributesJsFn(!0),this.h25_1=this.w24_1.q27(),this.i25_1=new Events,this.j25_1=new HttpClientConfig,this.y24_1&&this.a25_1.pl(HttpClient$lambda(this)),this.w24_1.r27(this);var i=Phases_getInstance_0().w27_1;this.e25_1.n1r(i,HttpClient$slambda_0(this,null));var e=this.x24_1;this.j25_1.x27(Plugin_getInstance_2()),this.j25_1.x27(Plugin_getInstance()),e.n27_1&&this.j25_1.y27("DefaultTransformers",HttpClient$lambda_0),this.j25_1.x27(Plugin_getInstance_3()),this.j25_1.x27(Companion_getInstance_9()),e.m27_1&&this.j25_1.x27(Plugin_getInstance_1()),this.j25_1.z27(e),e.n27_1&&this.j25_1.x27(Plugin_getInstance_0()),addDefaultResponseValidation(this.j25_1),this.j25_1.r27(this),Unit_getInstance();var r=Phases_getInstance_1().a28_1;this.d25_1.n1r(r,HttpClient$slambda_2(this,null))}function HttpClient_0(t,n){n=n===VOID?HttpClient$lambda_1:n;var i=new HttpClientConfig;n(i);var e=i,r=t.g28(e.l27_1),s=HttpClient_init_$Create$(r,e,!0);return ensureNotNull(s.b25_1.y5(Key_getInstance())).pl(HttpClient$lambda_2(r)),s}function HttpClient$lambda_1(t){return Unit_getInstance()}function HttpClient$lambda_2(t){return function(n){return t.a14(),Unit_getInstance()}}function HttpClientConfig$engineConfig$lambda(t){return Unit_getInstance()}function HttpClientConfig$install$lambda(t){return Unit_getInstance()}function HttpClientConfig$install$lambda_0(t,n){return function(i){return null==t||t(i),n(isObject(i)?i:THROW_CCE()),Unit_getInstance()}}function HttpClientConfig$install$lambda$lambda(){return AttributesJsFn(!0)}function HttpClientConfig$install$lambda_1(t){return function(n){var i=get_PLUGIN_INSTALLED_LIST(),e=n.g25_1.b1n(i,HttpClientConfig$install$lambda$lambda),r=ensureNotNull(n.j25_1.j27_1.g2(t.r())),s=t.h28(r);return t.i28(s,n),e.z1m(t.r(),s),Unit_getInstance()}}function HttpClientConfig(){var t,n,i;t=LinkedHashMap_init_$Create$(),this.i27_1=t,n=LinkedHashMap_init_$Create$(),this.j27_1=n,i=LinkedHashMap_init_$Create$(),this.k27_1=i,this.l27_1=HttpClientConfig$engineConfig$lambda,this.m27_1=!0,this.n27_1=!0,this.o27_1=!1,this.p27_1=PlatformUtils_getInstance().h1s_1}function HttpClientCall_init_$Init$(t,n,i,e){HttpClientCall.call(e,t),e.a26_1=new DefaultHttpRequest(e,n),e.b26_1=new DefaultHttpResponse(e,i);var r=i.o28_1;return isInterface(r,ByteReadChannel)||e.r28().z1m(Companion_getInstance_7().s28_1,i.o28_1),e}function HttpClientCall_init_$Create$(t,n,i){return HttpClientCall_init_$Init$(t,n,i,objectCreate(protoOf(HttpClientCall)))}function Companion(){Companion_instance=this,this.s28_1=new AttributeKey("CustomResponse")}function Companion_getInstance_7(){return null==Companion_instance&&new Companion,Companion_instance}function $bodyNullableCOROUTINE$1(t,n,i){CoroutineImpl.call(this,i),this.b29_1=t,this.c29_1=n}function HttpClientCall(t){Companion_getInstance_7(),this.y25_1=t,this.z25_1=atomic$boolean$1(!1),this.c26_1=!1}function DoubleReceiveException(t){IllegalStateException_init_$Init$(this),captureStack(this,DoubleReceiveException),this.r29_1="Response already received: "+t}function NoTransformationFoundException$message$lambda(t){return t.d4()+": "+t.e4()+"\n"}function NoTransformationFoundException(t,n,i){UnsupportedOperationException_init_$Init$(this),captureStack(this,NoTransformationFoundException);var e=get_request(t).p29(),r=t.q29(),s=flattenEntries(t.k1y());this.s29_1=trimMargin("No transformation found: "+n+" -> "+i+"\n |with response from "+e+":\n |status: "+r+"\n |response headers: \n |"+joinToString(s,VOID,VOID,VOID,VOID,VOID,NoTransformationFoundException$message$lambda)+"\n ")}function save(t,n){var i=new $saveCOROUTINE$3(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()}function SavedHttpCall(t,n,i,e){HttpClientCall.call(this,t),this.h2a_1=e,this.a26_1=new SavedHttpRequest(this,n),this.b26_1=new SavedHttpResponse(this,this.h2a_1,i),this.i2a_1=!0}function SavedHttpRequest(t,n){this.j2a_1=t,this.k2a_1=n}function SavedHttpResponse(t,n,i){HttpResponse.call(this),this.n2a_1=t,this.o2a_1=Job(),this.p2a_1=i.q29(),this.q2a_1=i.w2a(),this.r2a_1=i.x2a(),this.s2a_1=i.y2a(),this.t2a_1=i.k1y(),this.u2a_1=i.ok().f6(this.o2a_1),this.v2a_1=ByteReadChannel_0(n)}function $saveCOROUTINE$3(t,n){CoroutineImpl.call(this,n),this.b2a_1=t}function UnsupportedContentTypeException(t){IllegalStateException_init_$Init$_0("Failed to write body: "+getKClassFromExpression(t),this),captureStack(this,UnsupportedContentTypeException)}function ObservableContent$content$slambda(t,n){this.h2b_1=t,CoroutineImpl.call(this,n)}function ObservableContent$content$slambda_0(t,n){var i=new ObservableContent$content$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function ObservableContent(t,n,i){ReadChannelContent.call(this),this.m2b_1=n,this.n2b_1=i;var e,r=t;if(r instanceof ByteArrayContent)e=ByteReadChannel_0(t.n23());else{if(r instanceof ProtocolUpgrade)throw new UnsupportedContentTypeException(t);if(r instanceof NoContent)e=Companion_getInstance().f1g();else if(r instanceof ReadChannelContent)e=t.j23();else if(r instanceof WriteChannelContent){var s=GlobalScope_getInstance();e=writer(s,this.m2b_1,!0,ObservableContent$content$slambda_0(t,null)).u1e()}else noWhenBranchMatchedException()}this.o2b_1=e,this.p2b_1=t}function get_CALL_COROUTINE(){return _init_properties_HttpClientEngine_kt__h91z5h(),CALL_COROUTINE}function get_CLIENT_CONFIG(){return _init_properties_HttpClientEngine_kt__h91z5h(),CLIENT_CONFIG}function HttpClientEngine$install$slambda$lambda(t,n){return function(i){return null!=i&&(t.i25_1.u23(get_HttpResponseCancelled(),n),Unit_getInstance()),Unit_getInstance()}}function _get_closed__iwkfs1(t){var n=t.ok().y5(Key_getInstance()),i=null==n?null:n.pk();return!(null!=i&&i)}function executeWithinCallContext(t,n,i){var e=new $executeWithinCallContextCOROUTINE$4(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()}function checkExtensions(t,n){for(var i=n.i2c_1.d();i.e();){var e=i.f();if(!t.j2c().n(e))throw IllegalArgumentException_init_$Create$(toString("Engine doesn't support "+e))}}function HttpClientEngine$install$slambda(t,n,i){this.s2c_1=t,this.t2c_1=n,CoroutineImpl.call(this,i)}function HttpClientEngine$install$slambda_0(t,n,i){var e=new HttpClientEngine$install$slambda(t,n,i),r=function(t,n,i){return e.w25(t,n,i)};return r.$arity=2,r}function HttpClientEngine$executeWithinCallContext$slambda(t,n,i){this.l2d_1=t,this.m2d_1=n,CoroutineImpl.call(this,i)}function HttpClientEngine$executeWithinCallContext$slambda_0(t,n,i){var e=new HttpClientEngine$executeWithinCallContext$slambda(t,n,i),r=function(t,n){return e.o2d(t,n)};return r.$arity=1,r}function $executeWithinCallContextCOROUTINE$4(t,n,i){CoroutineImpl.call(this,i),this.y2b_1=t,this.z2b_1=n}function HttpClientEngine(){}function validateHeaders(t){_init_properties_HttpClientEngine_kt__h91z5h();for(var n=t.e2c_1.o1o(),i=ArrayList_init_$Create$(),e=n.d();e.e();){var r=e.f();HttpHeaders_getInstance().d1y_1.n(r)&&i.a(r)}var s=i;if(!s.m())throw new UnsafeHeaderException(toString(s))}function createCallContext(t,n,i){var e=Job(n),r=t.ok().f6(e).f6(get_CALL_COROUTINE()),s=i.r4().y5(Key_getInstance());if(null!=s){var o=s.rl(!0,VOID,createCallContext$lambda(e));e.pl(createCallContext$lambda_0(o))}else Unit_getInstance();return r}function createCallContext$lambda(t){return function(n){return null==n||t.ul(CancellationException_init_$Create$(n.message)),Unit_getInstance()}}function createCallContext$lambda_0(t){return function(n){return t.eo(),Unit_getInstance()}}function _init_properties_HttpClientEngine_kt__h91z5h(){properties_initialized_HttpClientEngine_kt_5uiebb||(properties_initialized_HttpClientEngine_kt_5uiebb=!0,CALL_COROUTINE=new CoroutineName("call-context"),CLIENT_CONFIG=new AttributeKey("client-config"))}function ClientEngineClosedException(t){t=t===VOID?null:t,IllegalStateException_init_$Init$_0("Client already closed",this),captureStack(this,ClientEngineClosedException),this.q2d_1=t}function HttpClientEngineBase$coroutineContext$delegate$lambda(t){return function(){return SilentSupervisor().f6(t.r2d()).f6(new CoroutineName(t.s2d_1+"-context"))}}function HttpClientEngineBase$close$lambda(t){return function(n){return close(t.r2d()),Unit_getInstance()}}function HttpClientEngineBase(t){this.s2d_1=t,this.t2d_1=atomic$boolean$1(!1),this.u2d_1=lazy(HttpClientEngineBase$coroutineContext$delegate$lambda(this))}function close(t){try{(t instanceof CloseableCoroutineDispatcher||isInterface(t,Closeable))&&t.a14()}catch(t){if(!(t instanceof Error))throw t}}function coroutineContext$factory(){return getPropertyCallableRef("coroutineContext",1,KProperty1,(function(t){return t.ok()}),null)}function get_ENGINE_CAPABILITIES_KEY(){return _init_properties_HttpClientEngineCapability_kt__ifvyst(),ENGINE_CAPABILITIES_KEY}function _init_properties_HttpClientEngineCapability_kt__ifvyst(){properties_initialized_HttpClientEngineCapability_kt_qarzcf||(properties_initialized_HttpClientEngineCapability_kt_qarzcf=!0,ENGINE_CAPABILITIES_KEY=new AttributeKey("EngineCapabilities"),DEFAULT_CAPABILITIES=setOf(Plugin_getInstance_4()))}function HttpClientEngineConfig(){this.v2d_1=4,this.w2d_1=!1,this.x2d_1=null}function get_KTOR_DEFAULT_USER_AGENT(){return _init_properties_Utils_kt__jo07cx(),KTOR_DEFAULT_USER_AGENT}function get_DATE_HEADERS(){return _init_properties_Utils_kt__jo07cx(),DATE_HEADERS}function Companion_0(){Companion_instance_0=this}function Companion_getInstance_8(){return null==Companion_instance_0&&new Companion_0,Companion_instance_0}function KtorCallContextElement(t){Companion_getInstance_8(),this.y2d_1=t}function callContext(t){var n;return n=t.r4(),ensureNotNull(n.y5(Companion_getInstance_8())).y2d_1}function mergeHeaders(t,n,i){_init_properties_Utils_kt__jo07cx(),buildHeaders(mergeHeaders$lambda(t,n)).q1o(mergeHeaders$lambda_0(i)),null==t.q1n(HttpHeaders_getInstance().g1x_1)&&null==n.k1y().q1n(HttpHeaders_getInstance().g1x_1)&&needUserAgent()&&i(HttpHeaders_getInstance().g1x_1,get_KTOR_DEFAULT_USER_AGENT());var e=n.g23(),r=null==e?null:e.toString(),s=null==r?n.k1y().q1n(HttpHeaders_getInstance().a1v_1):r,o=null==s?t.q1n(HttpHeaders_getInstance().a1v_1):s,u=n.h23(),a=null==u?null:u.toString(),h=null==a?n.k1y().q1n(HttpHeaders_getInstance().x1u_1):a,_=null==h?t.q1n(HttpHeaders_getInstance().x1u_1):h,l=o;null==l||i(HttpHeaders_getInstance().a1v_1,l);var f=_;null==f||i(HttpHeaders_getInstance().x1u_1,f)}function needUserAgent(){return _init_properties_Utils_kt__jo07cx(),!PlatformUtils_getInstance().d1s_1}function mergeHeaders$lambda(t,n){return function(i){return i.y1o(t),i.y1o(n.k1y()),Unit_getInstance()}}function mergeHeaders$lambda_0(t){return function(n,i){if(HttpHeaders_getInstance().x1u_1===n)return Unit_getInstance();if(HttpHeaders_getInstance().a1v_1===n)return Unit_getInstance();if(get_DATE_HEADERS().n(n)){for(var e=i.d();e.e();){var r=e.f();t(n,r)}Unit_getInstance()}else t(n,joinToString(i,","));return Unit_getInstance()}}function _init_properties_Utils_kt__jo07cx(){properties_initialized_Utils_kt_xvi83j||(properties_initialized_Utils_kt_xvi83j=!0,KTOR_DEFAULT_USER_AGENT="Ktor client",DATE_HEADERS=setOf_0([HttpHeaders_getInstance().d1v_1,HttpHeaders_getInstance().j1v_1,HttpHeaders_getInstance().v1v_1,HttpHeaders_getInstance().q1v_1,HttpHeaders_getInstance().u1v_1]))}function get_UploadProgressListenerAttributeKey(){return _init_properties_BodyProgress_kt__s0v569(),UploadProgressListenerAttributeKey}function get_DownloadProgressListenerAttributeKey(){return _init_properties_BodyProgress_kt__s0v569(),DownloadProgressListenerAttributeKey}function handle(t,n){var i=new PipelinePhase("ObservableContent");n.c25_1.k1r(Phases_getInstance().c2e_1,i),n.c25_1.n1r(i,BodyProgress$handle$slambda_0(null));var e=Phases_getInstance_2().g2e_1;n.f25_1.n1r(e,BodyProgress$handle$slambda_2(null))}function Plugin(){Plugin_instance=this,this.h2e_1=new AttributeKey("BodyProgress")}function Plugin_getInstance(){return null==Plugin_instance&&new Plugin,Plugin_instance}function BodyProgress$handle$slambda(t){CoroutineImpl.call(this,t)}function BodyProgress$handle$slambda_0(t){var n=new BodyProgress$handle$slambda(t),i=function(t,i,e){return n.w25(t,i,e)};return i.$arity=2,i}function BodyProgress$handle$slambda_1(t){CoroutineImpl.call(this,t)}function BodyProgress$handle$slambda_2(t){var n=new BodyProgress$handle$slambda_1(t),i=function(t,i,e){return n.i2f(t,i,e)};return i.$arity=2,i}function BodyProgress(){Plugin_getInstance()}function withObservableDownload(t,n){_init_properties_BodyProgress_kt__s0v569();var i=observable(t.n29(),t.ok(),contentLength(t),n);return wrapWithContent(t,i)}function _init_properties_BodyProgress_kt__s0v569(){properties_initialized_BodyProgress_kt_pmfrhr||(properties_initialized_BodyProgress_kt_pmfrhr=!0,UploadProgressListenerAttributeKey=new AttributeKey("UploadProgressListenerAttributeKey"),DownloadProgressListenerAttributeKey=new AttributeKey("DownloadProgressListenerAttributeKey"))}function get_ValidateMark(){return _init_properties_DefaultResponseValidation_kt__wcn8vr(),ValidateMark}function get_LOGGER(){return _init_properties_DefaultResponseValidation_kt__wcn8vr(),LOGGER}function addDefaultResponseValidation(t){_init_properties_DefaultResponseValidation_kt__wcn8vr(),HttpResponseValidator(t,addDefaultResponseValidation$lambda(t))}function ResponseException(t,n){IllegalStateException_init_$Init$_0("Bad response: "+t+'. Text: "'+n+'"',this),captureStack(this,ResponseException),this.k2f_1=t}function RedirectResponseException(t,n){ResponseException.call(this,t,n),captureStack(this,RedirectResponseException),this.m2f_1="Unhandled redirect: "+t.l2a().m29().m2a().t1y_1+" "+t.l2a().m29().p29()+". Status: "+t.q29()+'. Text: "'+n+'"'}function ClientRequestException(t,n){ResponseException.call(this,t,n),captureStack(this,ClientRequestException),this.o2f_1="Client request("+t.l2a().m29().m2a().t1y_1+" "+t.l2a().m29().p29()+") invalid: "+t.q29()+'. Text: "'+n+'"'}function ServerResponseException(t,n){ResponseException.call(this,t,n),captureStack(this,ServerResponseException),this.q2f_1="Server error("+t.l2a().m29().m2a().t1y_1+" "+t.l2a().m29().p29()+": "+t.q29()+'. Text: "'+n+'"'}function addDefaultResponseValidation$lambda$slambda(t){CoroutineImpl.call(this,t)}function addDefaultResponseValidation$lambda$slambda_0(t){var n=new addDefaultResponseValidation$lambda$slambda(t),i=function(t,i){return n.h2g(t,i)};return i.$arity=1,i}function addDefaultResponseValidation$lambda(t){return function(n){return n.l2g_1=t.o27_1,n.m2g(addDefaultResponseValidation$lambda$slambda_0(null)),Unit_getInstance()}}function _init_properties_DefaultResponseValidation_kt__wcn8vr(){properties_initialized_DefaultResponseValidation_kt_akvzqt||(properties_initialized_DefaultResponseValidation_kt_akvzqt=!0,ValidateMark=new AttributeKey("ValidateMark"),LOGGER=KtorSimpleLogger("io.ktor.client.plugins.DefaultResponseValidation"))}function get_LOGGER_0(){return _init_properties_DefaultTransform_kt__20knxx(),LOGGER_0}function defaultTransformers(t){_init_properties_DefaultTransform_kt__20knxx();var n=Phases_getInstance().c2e_1;t.c25_1.n1r(n,defaultTransformers$slambda_0(null));var i=Phases_getInstance_1().b28_1;t.d25_1.n1r(i,defaultTransformers$slambda_2(null)),platformResponseDefaultTransformers(t)}function defaultTransformers$1$content$1(t,n){this.q2g_1=n,ByteArrayContent.call(this);var i=t;this.o2g_1=null==i?Application_getInstance().a1t_1:i,this.p2g_1=toLong(n.length)}function defaultTransformers$1$content$2(t,n,i){this.u2g_1=i,ReadChannelContent.call(this);var e=t.j1r_1.e27_1.q1n(HttpHeaders_getInstance().x1u_1);this.s2g_1=null==e?null:toLong_0(e);var r=n;this.t2g_1=null==r?Application_getInstance().a1t_1:r}function defaultTransformers$slambda(t){CoroutineImpl.call(this,t)}function defaultTransformers$slambda_0(t){var n=new defaultTransformers$slambda(t),i=function(t,i,e){return n.w25(t,i,e)};return i.$arity=2,i}function defaultTransformers$slambda$slambda(t,n,i){this.p2h_1=t,this.q2h_1=n,CoroutineImpl.call(this,i)}function defaultTransformers$slambda$slambda_0(t,n,i){var e=new defaultTransformers$slambda$slambda(t,n,i),r=function(t,n){return e.j2b(t,n)};return r.$arity=1,r}function defaultTransformers$slambda$lambda(t){return function(n){return t.oq(),Unit_getInstance()}}function defaultTransformers$slambda_1(t){CoroutineImpl.call(this,t)}function defaultTransformers$slambda_2(t){var n=new defaultTransformers$slambda_1(t),i=function(t,i,e){return n.q26(t,i,e)};return i.$arity=2,i}function _init_properties_DefaultTransform_kt__20knxx(){properties_initialized_DefaultTransform_kt_ossax9||(properties_initialized_DefaultTransform_kt_ossax9=!0,LOGGER_0=KtorSimpleLogger("io.ktor.client.plugins.defaultTransformers"))}function get_LOGGER_1(){return _init_properties_HttpCallValidator_kt__r6yh2y(),LOGGER_1}function get_ExpectSuccessAttributeKey(){return _init_properties_HttpCallValidator_kt__r6yh2y(),ExpectSuccessAttributeKey}function HttpCallValidator$Companion$install$slambda$lambda(t){return function(){return t.v2i_1}}function HttpCallValidator$Companion$install$slambda(t,n){this.e2j_1=t,CoroutineImpl.call(this,n)}function HttpCallValidator$Companion$install$slambda_0(t,n){var i=new HttpCallValidator$Companion$install$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function HttpCallValidator$Companion$install$slambda_1(t,n){this.r2j_1=t,CoroutineImpl.call(this,n)}function HttpCallValidator$Companion$install$slambda_2(t,n){var i=new HttpCallValidator$Companion$install$slambda_1(t,n),e=function(t,n,e){return i.q26(t,n,e)};return e.$arity=2,e}function HttpCallValidator$Companion$install$slambda_3(t,n){this.e2k_1=t,CoroutineImpl.call(this,n)}function HttpCallValidator$Companion$install$slambda_4(t,n){var i=new HttpCallValidator$Companion$install$slambda_3(t,n),e=function(t,n,e){return i.i2k(t,n,e)};return e.$arity=2,e}function validateResponse(t,n,i){var e=new $validateResponseCOROUTINE$5(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()}function processException(t,n,i,e){var r=new $processExceptionCOROUTINE$6(t,n,i,e);return r.jj_1=Unit_getInstance(),r.kj_1=null,r.qj()}function Config(){var t,n;t=ArrayList_init_$Create$(),this.j2g_1=t,n=ArrayList_init_$Create$(),this.k2g_1=n,this.l2g_1=!0}function Companion_1(){Companion_instance_1=this,this.m2l_1=new AttributeKey("HttpResponseValidator")}function Companion_getInstance_9(){return null==Companion_instance_1&&new Companion_1,Companion_instance_1}function $validateResponseCOROUTINE$5(t,n,i){CoroutineImpl.call(this,i),this.s2k_1=t,this.t2k_1=n}function $processExceptionCOROUTINE$6(t,n,i,e){CoroutineImpl.call(this,e),this.f2l_1=t,this.g2l_1=n,this.h2l_1=i}function HttpCallValidator(t,n,i){Companion_getInstance_9(),this.t2i_1=t,this.u2i_1=n,this.v2i_1=i}function ExceptionHandlerWrapper(){}function RequestExceptionHandlerWrapper(){}function HttpRequest(t){return _init_properties_HttpCallValidator_kt__r6yh2y(),new HttpRequest$1(t)}function HttpResponseValidator(t,n){_init_properties_HttpCallValidator_kt__r6yh2y(),t.j28(Companion_getInstance_9(),n)}function set_expectSuccess(t,n){return _init_properties_HttpCallValidator_kt__r6yh2y(),t.h27_1.z1m(get_ExpectSuccessAttributeKey(),n)}function HttpRequest$1(t){this.y2l_1=t,this.u2l_1=t.d27_1,this.v2l_1=t.c27_1.f1c(),this.w2l_1=t.h27_1,this.x2l_1=t.e27_1.f1c()}function _init_properties_HttpCallValidator_kt__r6yh2y(){properties_initialized_HttpCallValidator_kt_xrx49w||(properties_initialized_HttpCallValidator_kt_xrx49w=!0,LOGGER_1=KtorSimpleLogger("io.ktor.client.plugins.HttpCallValidator"),ExpectSuccessAttributeKey=new AttributeKey("ExpectSuccessAttributeKey"))}function get_PLUGIN_INSTALLED_LIST(){return _init_properties_HttpClientPlugin_kt__cypu1m(),PLUGIN_INSTALLED_LIST}function plugin(t,n){_init_properties_HttpClientPlugin_kt__cypu1m();var i=pluginOrNull(t,n);if(null==i)throw IllegalStateException_init_$Create$("Plugin "+n+" is not installed. Consider using `install("+n.r()+")` in client config first.");return i}function HttpClientPlugin(){}function pluginOrNull(t,n){_init_properties_HttpClientPlugin_kt__cypu1m();var i=t.g25_1.x1m(get_PLUGIN_INSTALLED_LIST());return null==i?null:i.x1m(n.r())}function _init_properties_HttpClientPlugin_kt__cypu1m(){properties_initialized_HttpClientPlugin_kt_p98320||(properties_initialized_HttpClientPlugin_kt_p98320=!0,PLUGIN_INSTALLED_LIST=new AttributeKey("ApplicationPluginRegistry"))}function get_LOGGER_2(){return _init_properties_HttpPlainText_kt__iy89z1(),LOGGER_2}function HttpPlainText$Plugin$install$slambda(t,n){this.h2m_1=t,CoroutineImpl.call(this,n)}function HttpPlainText$Plugin$install$slambda_0(t,n){var i=new HttpPlainText$Plugin$install$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function HttpPlainText$Plugin$install$slambda_1(t,n){this.x2m_1=t,CoroutineImpl.call(this,n)}function HttpPlainText$Plugin$install$slambda_2(t,n){var i=new HttpPlainText$Plugin$install$slambda_1(t,n),e=function(t,n,e){return i.q26(t,n,e)};return e.$arity=2,e}function Config_0(){var t,n;t=LinkedHashSet_init_$Create$(),this.f2n_1=t,n=LinkedHashMap_init_$Create$(),this.g2n_1=n,this.h2n_1=null,this.i2n_1=Charsets_getInstance().e1j_1}function Plugin_0(){Plugin_instance_0=this,this.j2n_1=new AttributeKey("HttpPlainText")}function Plugin_getInstance_0(){return null==Plugin_instance_0&&new Plugin_0,Plugin_instance_0}function wrapContent(t,n,i,e){var r=e,s=null==r?Text_getInstance().r1t_1:r,o=null==e?null:charset(e),u=null==o?t.m2m_1:o;return get_LOGGER_2().j1s("Sending request body to "+n.c27_1+" as text/plain with charset "+u),new TextContent(i,withCharset(s,u))}function sam$kotlin_Comparator$0(t){this.l2n_1=t}function HttpPlainText$lambda(t,n){var i,e=n.c4_1;return i=t.c4_1,compareValues(e,i)}function HttpPlainText$lambda_0(t,n){var i,e=get_name(t);return i=get_name(n),compareValues(e,i)}function HttpPlainText(t,n,i,e){Plugin_getInstance_0(),this.l2m_1=e;var r,s=toList(n);r=new sam$kotlin_Comparator$0(HttpPlainText$lambda);for(var o=sortedWith(s,r),u=ArrayList_init_$Create$(),a=t.d();a.e();){var h=a.f();!n.a2(h)&&u.a(h)}var _,l=u;_=new sam$kotlin_Comparator$0(HttpPlainText$lambda_0);for(var f,c=sortedWith(l,_),v=StringBuilder_init_$Create$(),w=c.d();w.e();){var d=w.f();charSequenceLength(v)>0&&v.l8(","),v.l8(get_name(d))}for(var p=o.d();p.e();){var m=p.f(),g=m.d4(),$=m.e4();if(charSequenceLength(v)>0&&v.l8(","),!(0<=$&&$<=1))throw IllegalStateException_init_$Create$(toString("Check failed."));var y=roundToInt(100*$)/100;v.l8(get_name(g)+";q="+y)}0===charSequenceLength(v)&&v.l8(get_name(this.l2m_1)),f=v.toString(),this.n2m_1=f;var b,k=i,j=null==k?firstOrNull(c):k;if(null==j){var x=firstOrNull(o);b=null==x?null:x.b4_1}else b=j;var z=b;this.m2m_1=null==z?Charsets_getInstance().e1j_1:z}function _init_properties_HttpPlainText_kt__iy89z1(){properties_initialized_HttpPlainText_kt_2nx4ox||(properties_initialized_HttpPlainText_kt_2nx4ox=!0,LOGGER_2=KtorSimpleLogger("io.ktor.client.plugins.HttpPlainText"))}function get_ALLOWED_FOR_REDIRECT(){return _init_properties_HttpRedirect_kt__ure7fo(),ALLOWED_FOR_REDIRECT}function get_LOGGER_3(){return _init_properties_HttpRedirect_kt__ure7fo(),LOGGER_3}function handleCall(t,n,i,e,r,s,o){var u=new $handleCallCOROUTINE$7(n,t,i,e,r,s,o);return u.jj_1=Unit_getInstance(),u.kj_1=null,u.qj()}function HttpRedirect$Plugin$install$slambda(t,n,i){this.n2o_1=t,this.o2o_1=n,CoroutineImpl.call(this,i)}function HttpRedirect$Plugin$install$slambda_0(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.i2k(t,n,i)};return r.$arity=2,r}function $handleCallCOROUTINE$7(t,n,i,e,r,s,o){CoroutineImpl.call(this,o),this.u2n_1=t,this.v2n_1=n,this.w2n_1=i,this.x2n_1=e,this.y2n_1=r,this.z2n_1=s}function Config_1(){this.w2o_1=!0,this.x2o_1=!1}function Plugin_1(){Plugin_instance_1=this,this.u2o_1=new AttributeKey("HttpRedirect"),this.v2o_1=new EventDefinition}function Plugin_getInstance_1(){return null==Plugin_instance_1&&new Plugin_1,Plugin_instance_1}function HttpRedirect(t,n){Plugin_getInstance_1(),this.s2o_1=t,this.t2o_1=n}function isRedirect(t){_init_properties_HttpRedirect_kt__ure7fo();var n=t.e21_1;return n===Companion_getInstance_1().o1z_1.e21_1||n===Companion_getInstance_1().p1z_1.e21_1||n===Companion_getInstance_1().u1z_1.e21_1||n===Companion_getInstance_1().v1z_1.e21_1||n===Companion_getInstance_1().q1z_1.e21_1}function _init_properties_HttpRedirect_kt__ure7fo(){properties_initialized_HttpRedirect_kt_klj746||(properties_initialized_HttpRedirect_kt_klj746=!0,ALLOWED_FOR_REDIRECT=setOf_0([Companion_getInstance_2().l1y_1,Companion_getInstance_2().q1y_1]),LOGGER_3=KtorSimpleLogger("io.ktor.client.plugins.HttpRedirect"))}function get_LOGGER_4(){return _init_properties_HttpRequestLifecycle_kt__jgkmfx(),LOGGER_4}function HttpRequestLifecycle$Plugin$install$slambda(t,n){this.h2p_1=t,CoroutineImpl.call(this,n)}function HttpRequestLifecycle$Plugin$install$slambda_0(t,n){var i=new HttpRequestLifecycle$Plugin$install$slambda(t,n),e=function(t,n,e){return i.w25(t,n,e)};return e.$arity=2,e}function Plugin_2(){Plugin_instance_2=this,this.m2p_1=new AttributeKey("RequestLifecycle")}function Plugin_getInstance_2(){return null==Plugin_instance_2&&new Plugin_2,Plugin_instance_2}function HttpRequestLifecycle(){Plugin_getInstance_2()}function attachToClientEngineJob(t,n){_init_properties_HttpRequestLifecycle_kt__jgkmfx();var i=n.pl(attachToClientEngineJob$lambda(t));t.pl(attachToClientEngineJob$lambda_0(i))}function attachToClientEngineJob$lambda(t){return function(n){return null!=n?(get_LOGGER_4().j1s("Cancelling request because engine Job failed with error: "+n),cancel_2(t,"Engine failed",n),Unit_getInstance()):(get_LOGGER_4().j1s("Cancelling request because engine Job completed"),t.oq(),Unit_getInstance()),Unit_getInstance()}}function attachToClientEngineJob$lambda_0(t){return function(n){return t.eo(),Unit_getInstance()}}function _init_properties_HttpRequestLifecycle_kt__jgkmfx(){properties_initialized_HttpRequestLifecycle_kt_3hmcrf||(properties_initialized_HttpRequestLifecycle_kt_3hmcrf=!0,LOGGER_4=KtorSimpleLogger("io.ktor.client.plugins.HttpRequestLifecycle"))}function HttpSend$Plugin$install$slambda(t,n,i){this.w2p_1=t,this.x2p_1=n,CoroutineImpl.call(this,i)}function HttpSend$Plugin$install$slambda_0(t,n,i){var e=new HttpSend$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.w25(t,n,i)};return r.$arity=2,r}function $executeCOROUTINE$8(t,n,i){CoroutineImpl.call(this,i),this.l2q_1=t,this.m2q_1=n}function Config_2(){this.r2q_1=20}function Plugin_3(){Plugin_instance_3=this,this.s2q_1=new AttributeKey("HttpSend")}function Plugin_getInstance_3(){return null==Plugin_instance_3&&new Plugin_3,Plugin_instance_3}function InterceptedSender(t,n){this.u2q_1=t,this.v2q_1=n}function DefaultSender(t,n){this.n2q_1=t,this.o2q_1=n,this.p2q_1=0,this.q2q_1=null}function HttpSend(t){var n;Plugin_getInstance_3(),t=t===VOID?20:t,this.p2l_1=t,n=ArrayList_init_$Create$(),this.q2l_1=n}function Sender(){}function SendCountExceedException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,SendCountExceedException)}function get_LOGGER_5(){return _init_properties_HttpTimeout_kt__pucqrr(),LOGGER_5}function HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,e){return t=t===VOID?null:t,n=n===VOID?null:n,i=i===VOID?null:i,HttpTimeoutCapabilityConfiguration.call(e),e.z2q(t),e.a2r(n),e.b2r(i),e}function HttpTimeoutCapabilityConfiguration_init_$Create$(t,n,i){return HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,objectCreate(protoOf(HttpTimeoutCapabilityConfiguration)))}function checkTimeoutValue(t,n){if(!(null==n||n.w(new Long(0,0))>0))throw IllegalArgumentException_init_$Create$(toString("Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS"));return n}function Companion_2(){Companion_instance_2=this,this.c2r_1=new AttributeKey("TimeoutConfiguration")}function Companion_getInstance_10(){return null==Companion_instance_2&&new Companion_2,Companion_instance_2}function HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e){this.l2r_1=t,this.m2r_1=n,this.n2r_1=i,CoroutineImpl.call(this,e)}function HttpTimeout$Plugin$install$slambda$slambda_0(t,n,i,e){var r=new HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e),s=function(t,n){return r.n1f(t,n)};return s.$arity=1,s}function HttpTimeout$Plugin$install$slambda$lambda(t){return function(n){return t.vl(),Unit_getInstance()}}function HttpTimeout$Plugin$install$slambda(t,n,i){this.x2r_1=t,this.y2r_1=n,CoroutineImpl.call(this,i)}function HttpTimeout$Plugin$install$slambda_0(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.i2k(t,n,i)};return r.$arity=2,r}function HttpTimeoutCapabilityConfiguration(){Companion_getInstance_10(),this.w2q_1=new Long(0,0),this.x2q_1=new Long(0,0),this.y2q_1=new Long(0,0)}function hasNotNullTimeouts(t){return null!=t.g2s_1||null!=t.h2s_1||!(null==t.i2s_1)}function Plugin_4(){Plugin_instance_4=this,this.l2s_1=new AttributeKey("TimeoutPlugin"),this.m2s_1=new Long(-1,2147483647)}function Plugin_getInstance_4(){return null==Plugin_instance_4&&new Plugin_4,Plugin_instance_4}function HttpTimeout(t,n,i){Plugin_getInstance_4(),this.g2s_1=t,this.h2s_1=n,this.i2s_1=i}function HttpRequestTimeoutException_init_$Init$(t,n){var i=t.c27_1.y22(),e=t.d2s(Plugin_getInstance_4());return HttpRequestTimeoutException.call(n,i,null==e?null:e.k2s()),n}function HttpRequestTimeoutException_init_$Create$(t){var n=HttpRequestTimeoutException_init_$Init$(t,objectCreate(protoOf(HttpRequestTimeoutException)));return captureStack(n,HttpRequestTimeoutException_init_$Create$),n}function HttpRequestTimeoutException(t,n){IOException_init_$Init$("Request timeout has expired [url="+t+", request_timeout="+toString(null==n?"unknown":n)+" ms]",this),captureStack(this,HttpRequestTimeoutException)}function _init_properties_HttpTimeout_kt__pucqrr(){properties_initialized_HttpTimeout_kt_9oyjbd||(properties_initialized_HttpTimeout_kt_9oyjbd=!0,LOGGER_5=KtorSimpleLogger("io.ktor.client.plugins.HttpTimeout"))}function wrapWithContent(t,n){return new DelegatedResponse(t.l2a(),n,t)}function DelegatedResponse(t,n,i){HttpResponse.call(this),this.p2s_1=t,this.q2s_1=n,this.r2s_1=i,this.s2s_1=this.r2s_1.ok()}function WebSocketCapability(){WebSocketCapability_instance=this}function WebSocketCapability_getInstance(){return null==WebSocketCapability_instance&&new WebSocketCapability,WebSocketCapability_instance}function WebSocketException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,WebSocketException)}function ClientUpgradeContent(){}function DefaultHttpRequest(t,n){this.t2s_1=t,this.u2s_1=n.d2c_1,this.v2s_1=n.c2c_1,this.w2s_1=n.f2c_1,this.x2s_1=n.e2c_1,this.y2s_1=n.h2c_1}function HttpRequest_0(){}function Companion_3(){Companion_instance_3=this}function Companion_getInstance_11(){return null==Companion_instance_3&&new Companion_3,Companion_instance_3}function HttpRequestBuilder$setCapability$lambda(){return LinkedHashMap_init_$Create$()}function HttpRequestBuilder(){Companion_getInstance_11(),this.c27_1=new URLBuilder,this.d27_1=Companion_getInstance_2().l1y_1,this.e27_1=new HeadersBuilder,this.f27_1=EmptyContent_getInstance(),this.g27_1=SupervisorJob(),this.h27_1=AttributesJsFn(!0)}function HttpRequestData(t,n,i,e,r,s){this.c2c_1=t,this.d2c_1=n,this.e2c_1=i,this.f2c_1=e,this.g2c_1=r,this.h2c_1=s;var o=this.h2c_1.x1m(get_ENGINE_CAPABILITIES_KEY()),u=null==o?null:o.h2();this.i2c_1=null==u?emptySet():u}function HttpResponseData(t,n,i,e,r,s){this.k28_1=t,this.l28_1=n,this.m28_1=i,this.n28_1=e,this.o28_1=r,this.p28_1=s,this.q28_1=GMTDate()}function url(t,n){takeFrom(t.c27_1,n)}function isUpgradeRequest(t){return t.f2c_1 instanceof ClientUpgradeContent}function Phases(){Phases_instance=this,this.z2d_1=new PipelinePhase("Before"),this.a2e_1=new PipelinePhase("State"),this.b2e_1=new PipelinePhase("Transform"),this.c2e_1=new PipelinePhase("Render"),this.d2e_1=new PipelinePhase("Send")}function Phases_getInstance(){return null==Phases_instance&&new Phases,Phases_instance}function HttpRequestPipeline(t){Phases_getInstance(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance().z2d_1,Phases_getInstance().a2e_1,Phases_getInstance().b2e_1,Phases_getInstance().c2e_1,Phases_getInstance().d2e_1]),this.i2t_1=t}function Phases_0(){Phases_instance_0=this,this.s27_1=new PipelinePhase("Before"),this.t27_1=new PipelinePhase("State"),this.u27_1=new PipelinePhase("Monitoring"),this.v27_1=new PipelinePhase("Engine"),this.w27_1=new PipelinePhase("Receive")}function Phases_getInstance_0(){return null==Phases_instance_0&&new Phases_0,Phases_instance_0}function HttpSendPipeline(t){Phases_getInstance_0(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_0().s27_1,Phases_getInstance_0().t27_1,Phases_getInstance_0().u27_1,Phases_getInstance_0().v27_1,Phases_getInstance_0().w27_1]),this.q2t_1=t}function get_BodyTypeAttributeKey(){return _init_properties_RequestBody_kt__bo3lwf(),BodyTypeAttributeKey}function _init_properties_RequestBody_kt__bo3lwf(){properties_initialized_RequestBody_kt_agyv1b||(properties_initialized_RequestBody_kt_agyv1b=!0,BodyTypeAttributeKey=new AttributeKey("BodyTypeAttributeKey"))}function DefaultHttpResponse(t,n){HttpResponse.call(this),this.r2t_1=t,this.s2t_1=n.p28_1,this.t2t_1=n.k28_1,this.u2t_1=n.n28_1,this.v2t_1=n.l28_1,this.w2t_1=n.q28_1;var i=n.o28_1,e=isInterface(i,ByteReadChannel)?i:null;this.x2t_1=null==e?Companion_getInstance().f1g():e,this.y2t_1=n.m28_1}function HttpResponse(){}function get_request(t){return t.l2a().m29()}function complete(t){var n=ensureNotNull(t.ok().y5(Key_getInstance()));(isInterface(n,CompletableJob)?n:THROW_CCE()).oq()}function bodyAsText(t,n,i){var e=new $bodyAsTextCOROUTINE$12(t,n=n===VOID?Charsets_getInstance().e1j_1:n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()}function $bodyAsTextCOROUTINE$12(t,n,i){CoroutineImpl.call(this,i),this.h2u_1=t,this.i2u_1=n}function Phases_1(){Phases_instance_1=this,this.a28_1=new PipelinePhase("Receive"),this.b28_1=new PipelinePhase("Parse"),this.c28_1=new PipelinePhase("Transform"),this.d28_1=new PipelinePhase("State"),this.e28_1=new PipelinePhase("After")}function Phases_getInstance_1(){return null==Phases_instance_1&&new Phases_1,Phases_instance_1}function HttpResponsePipeline(t){Phases_getInstance_1(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_1().a28_1,Phases_getInstance_1().b28_1,Phases_getInstance_1().c28_1,Phases_getInstance_1().d28_1,Phases_getInstance_1().e28_1]),this.s2u_1=t}function Phases_2(){Phases_instance_2=this,this.e2e_1=new PipelinePhase("Before"),this.f2e_1=new PipelinePhase("State"),this.g2e_1=new PipelinePhase("After")}function Phases_getInstance_2(){return null==Phases_instance_2&&new Phases_2,Phases_instance_2}function HttpReceivePipeline(t){Phases_getInstance_2(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_2().e2e_1,Phases_getInstance_2().f2e_1,Phases_getInstance_2().g2e_1]),this.a2v_1=t}function HttpResponseContainer(t,n){this.k29_1=t,this.l29_1=n}function checkCapabilities(t){var n,i=t.b2v_1.h27_1.x1m(get_ENGINE_CAPABILITIES_KEY()),e=null==i?null:i.h2();if(null==e)n=null;else{for(var r=ArrayList_init_$Create$(),s=e.d();s.e();){var o=s.f();null!=o&&isInterface(o,HttpClientPlugin)&&r.a(o)}n=r}if(null==n);else for(var u=n.d();u.e();){var a=u.f();if(null==pluginOrNull(t.c2v_1,a))throw IllegalArgumentException_init_$Create$(toString("Consider installing "+a+" plugin because the request requires it to be installed"))}}function HttpStatement$execute$slambda(t){CoroutineImpl.call(this,t)}function HttpStatement$execute$slambda_0(t){var n=new HttpStatement$execute$slambda(t),i=function(t,i){return n.m2v(t,i)};return i.$arity=1,i}function $executeCOROUTINE$13(t,n,i){CoroutineImpl.call(this,i),this.v2v_1=t,this.w2v_1=n}function $executeUnsafeCOROUTINE$14(t,n){CoroutineImpl.call(this,n),this.m2w_1=t}function $cleanupCOROUTINE$15(t,n,i){CoroutineImpl.call(this,i),this.x2w_1=t,this.y2w_1=n}function HttpStatement(t,n){this.b2v_1=t,this.c2v_1=n,checkCapabilities(this)}function observable(t,n,i,e){var r=GlobalScope_getInstance();return writer(r,n,!0,observable$slambda_0(i,t,e,null)).u1e()}function observable$slambda(t,n,i,e){this.l2x_1=t,this.m2x_1=n,this.n2x_1=i,CoroutineImpl.call(this,e)}function observable$slambda_0(t,n,i,e){var r=new observable$slambda(t,n,i,e),s=function(t,n){return r.j2b(t,n)};return s.$arity=1,s}function get_HttpRequestCreated(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestCreated}function get_HttpRequestIsReadyForSending(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestIsReadyForSending}function get_HttpResponseReceived(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceived}function get_HttpResponseReceiveFailed(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceiveFailed}function get_HttpResponseCancelled(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseCancelled}function HttpResponseReceiveFail(t,n){this.x2x_1=t,this.y2x_1=n}function _init_properties_ClientEvents_kt__xuvbz8(){properties_initialized_ClientEvents_kt_rdee4m||(properties_initialized_ClientEvents_kt_rdee4m=!0,HttpRequestCreated=new EventDefinition,HttpRequestIsReadyForSending=new EventDefinition,HttpResponseReceived=new EventDefinition,HttpResponseReceiveFailed=new EventDefinition,HttpResponseCancelled=new EventDefinition)}function EmptyContent(){EmptyContent_instance=this,NoContent.call(this),this.a2y_1=new Long(0,0)}function EmptyContent_getInstance(){return null==EmptyContent_instance&&new EmptyContent,EmptyContent_instance}function buildHeaders(t){t=t===VOID?buildHeaders$lambda:t;var n=new HeadersBuilder;return t(n),n.f1c()}function buildHeaders$lambda(t){return Unit_getInstance()}function HttpClient_1(t){return t=t===VOID?HttpClient$lambda_3:t,HttpClient_0(JsClient(),t)}function HttpClient$lambda_3(t){return Unit_getInstance()}function JsClient(){return Js_getInstance()}function Js(){Js_instance=this}function Js_getInstance(){return null==Js_instance&&new Js,Js_instance}function createWebSocket($this,urlString_capturingHack,headers){var tmp;if(PlatformUtils_getInstance().e1s_1){var ws_capturingHack=eval("require")("ws"),headers_capturingHack=new JsClientEngine$createWebSocket$headers_capturingHack$1;headers.q1o(JsClientEngine$createWebSocket$lambda(headers_capturingHack)),tmp=new ws_capturingHack(urlString_capturingHack,{headers:headers_capturingHack})}else tmp=new WebSocket(urlString_capturingHack);return tmp}function executeWebSocketRequest(t,n,i,e){var r=new $executeWebSocketRequestCOROUTINE$17(t,n,i,e);return r.jj_1=Unit_getInstance(),r.kj_1=null,r.qj()}function JsClientEngine$createWebSocket$headers_capturingHack$1(){}function JsClientEngine$createWebSocket$lambda(t){return function(n,i){return t[n]=joinToString(i,","),Unit_getInstance()}}function $executeCOROUTINE$16(t,n,i){CoroutineImpl.call(this,i),this.y2y_1=t,this.z2y_1=n}function $executeWebSocketRequestCOROUTINE$17(t,n,i,e){CoroutineImpl.call(this,e),this.k2y_1=t,this.l2y_1=n,this.m2y_1=i}function JsClientEngine(t){if(HttpClientEngineBase.call(this,"ktor-js"),this.h2z_1=t,this.i2z_1=Dispatchers_getInstance().zq_1,this.j2z_1=setOf_0([Plugin_getInstance_4(),WebSocketCapability_getInstance()]),null!=this.h2z_1.x2d_1)throw IllegalStateException_init_$Create$(toString("Proxy unsupported in Js engine."))}function mapToKtor(t){return buildHeaders(mapToKtor$lambda(t))}function awaitConnection(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());if(i.kp(),i.tn())Unit_getInstance();else{var e=awaitConnection$lambda(i,t);t.addEventListener("open",e),t.addEventListener("error",e),i.zn(awaitConnection$lambda_0(t,e))}return i.nn()}function asString(t){var n,i=StringBuilder_init_$Create$(),e=JSON;return n=["message","target","type","isTrusted"],i.l8(e.stringify(t,n)),i.toString()}function JsError(t){extendThrowable(this,"Error from javascript["+t+"]."),captureStack(this,JsError),this.k2z_1=t}function mapToKtor$lambda$lambda(t){return function(n,i){return t.x1o(i,n),Unit_getInstance()}}function mapToKtor$lambda(t){return function(n){return t.forEach(mapToKtor$lambda$lambda(n)),Unit_getInstance()}}function awaitConnection$lambda(t,n){return function(i){var e,r=i.type;if("open"===r)Companion_getInstance_5(),e=_Result___init__impl__xyqfz8(n),t.p4(e),Unit_getInstance();else if("error"===r){var s,o=new WebSocketException(asString(i));Companion_getInstance_5(),s=_Result___init__impl__xyqfz8(createFailure(o)),t.p4(s),Unit_getInstance()}return Unit_getInstance()}}function awaitConnection$lambda_0(t,n){return function(i){return t.removeEventListener("open",n),t.removeEventListener("error",n),null!=i&&(t.close(),Unit_getInstance()),Unit_getInstance()}}function toRaw(t,n,i,e){var r=new $toRawCOROUTINE$18(t,n,i,e);return r.jj_1=Unit_getInstance(),r.kj_1=null,r.qj()}function buildObject(t){var n={},i=null==n||isObject(n)?n:THROW_CCE();return t(i),i}function toRaw$lambda(t){return function(n,i){return t[n]=i,Unit_getInstance()}}function toRaw$slambda(t,n){this.h30_1=t,CoroutineImpl.call(this,n)}function toRaw$slambda_0(t,n){var i=new toRaw$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function toRaw$lambda_0(t,n,i,e){return function(r){var s;r.method=t.d2c_1.t1y_1,r.headers=n,s=i.m27_1?"follow":"manual",r.redirect=s;var o=e;return null==o||(r.body=new Uint8Array(toTypedArray(o)),Unit_getInstance()),Unit_getInstance()}}function $toRawCOROUTINE$18(t,n,i,e){CoroutineImpl.call(this,e),this.t2z_1=t,this.u2z_1=n,this.v2z_1=i}function asByteArray(t){return new Int8Array(t.buffer,t.byteOffset,t.length)}function readBodyBrowser(t,n){var i=n.body;return null==i?Companion_getInstance().f1g():channelFromStream(t,i)}function channelFromStream(t,n){return writer(t,VOID,VOID,channelFromStream$slambda_0(n,null)).u1e()}function readChunk(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());return i.kp(),t.read().then(readChunk$lambda(i)).catch(readChunk$lambda_0(i)),i.nn()}function channelFromStream$slambda(t,n){this.r30_1=t,CoroutineImpl.call(this,n)}function channelFromStream$slambda_0(t,n){var i=new channelFromStream$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function readChunk$lambda(t){return function(n){var i,e=n.value,r=n.done||null==e?null:e;return Companion_getInstance_5(),i=_Result___init__impl__xyqfz8(r),t.p4(i),Unit_getInstance()}}function readChunk$lambda_0(t){return function(n){var i;return Companion_getInstance_5(),i=_Result___init__impl__xyqfz8(createFailure(n)),t.p4(i),Unit_getInstance(),Unit_getInstance()}}function commonFetch(t,n,i){var e=new CancellableContinuationImpl(intercepted(i),get_MODE_CANCELLABLE());e.kp();var r=AbortController_0();n.signal=r.signal,e.zn(commonFetch$lambda(r));var s=PlatformUtils_getInstance().d1s_1?fetch(t,n):jsRequireNodeFetch()(t,n),o=commonFetch$lambda_0(e);return s.then(o,commonFetch$lambda_1(e)),e.nn()}function readBody(t,n){return PlatformUtils_getInstance().d1s_1?readBodyBrowser(t,n):readBodyNode(t,n)}function AbortController_0(){var tmp;if(PlatformUtils_getInstance().d1s_1)tmp=new AbortController;else{var controller=eval("require")("abort-controller");tmp=new controller}return tmp}function jsRequireNodeFetch(){var tmp;try{tmp=eval("require")("node-fetch")}catch(t){var tmp_0,cause=t;throw Error_init_$Create$("Error loading module 'node-fetch': "+cause)}return tmp}function commonFetch$lambda(t){return function(n){return t.abort(),Unit_getInstance()}}function commonFetch$lambda_0(t){return function(n){var i;return Companion_getInstance_5(),i=_Result___init__impl__xyqfz8(n),t.p4(i),Unit_getInstance()}}function commonFetch$lambda_1(t){return function(n){Companion_getInstance_5();var i,e=Error_init_$Create$_0("Fail to fetch",n);return i=_Result___init__impl__xyqfz8(createFailure(e)),t.p4(i),Unit_getInstance()}}function readBodyNode(t,n){return writer(t,VOID,VOID,readBodyNode$slambda_0(n,null)).u1e()}function readBodyNode$slambda$lambda(t,n){return function(i){return _ChannelResult___get_isSuccess__impl__odq1z9(t.py(asByteArray(new Uint8Array(i)))),n.pause()}}function readBodyNode$slambda$lambda_0(t,n){return function(i){var e=new JsError(i);return t.iy(e),n.u1e().iy(e)}}function readBodyNode$slambda$lambda_1(t){return function(){return t.qy()}}function readBodyNode$slambda(t,n){this.f31_1=t,CoroutineImpl.call(this,n)}function readBodyNode$slambda_0(t,n){var i=new readBodyNode$slambda(t,n),e=function(t,n){return i.j2b(t,n)};return e.$arity=1,e}function platformRequestDefaultTransform(t,n,i){return null}function platformResponseDefaultTransformers(t){}function isReservedStatusCode(t,n){var i=Companion_getInstance_6().e24(t);return null==i||equals(i,Codes_CLOSED_ABNORMALLY_getInstance())}function JsWebSocketSession$lambda(t){return function(n){var i,e=n,r=e.data;if(r instanceof ArrayBuffer){var s=new Int8Array(r);i=Binary_init_$Create$(!1,s)}else{if(null==r||"string"!=typeof r){var o=IllegalStateException_init_$Create$("Unknown frame type: "+e.type);throw t.n31_1.nq(o),o}i=Text_init_$Create$(r)}var u=i;return t.o31_1.py(u),Unit_getInstance()}}function JsWebSocketSession$lambda_0(t){return function(n){var i=new WebSocketException(""+n);return t.n31_1.nq(i),t.o31_1.iy(i),t.p31_1.hy(),Unit_getInstance()}}function JsWebSocketSession$lambda_1(t){return function(n){var i=n.code,e=null!=i&&"number"==typeof i?i:THROW_CCE(),r=n.reason,s=new CloseReason(e,null!=r&&"string"==typeof r?r:THROW_CCE());return t.n31_1.lq(s),t.o31_1.py(Close_init_$Create$(s)),t.o31_1.qy(),t.p31_1.hy(),Unit_getInstance()}}function JsWebSocketSession$slambda(t,n){this.b32_1=t,CoroutineImpl.call(this,n)}function JsWebSocketSession$slambda_0(t,n){var i=new JsWebSocketSession$slambda(t,n),e=function(t,n){return i.n1f(t,n)};return e.$arity=1,e}function JsWebSocketSession$lambda_2(t){return function(n){return null==n?(t.m31_1.close(),Unit_getInstance()):(t.m31_1.close(Codes_INTERNAL_ERROR_getInstance().b24_1,"Client failed"),Unit_getInstance()),Unit_getInstance()}}function JsWebSocketSession(t,n){this.l31_1=t,this.m31_1=n,this.n31_1=CompletableDeferred(),Factory_getInstance(),this.o31_1=Channel(2147483647),Factory_getInstance(),this.p31_1=Channel(2147483647),this.q31_1=this.o31_1,this.r31_1=this.p31_1,this.s31_1=this.n31_1,this.m31_1.binaryType="arraybuffer",this.m31_1.addEventListener("message",JsWebSocketSession$lambda(this)),this.m31_1.addEventListener("error",JsWebSocketSession$lambda_0(this)),this.m31_1.addEventListener("close",JsWebSocketSession$lambda_1(this)),launch(this,VOID,VOID,JsWebSocketSession$slambda_0(this,null));var i=this.l31_1.y5(Key_getInstance());null==i||i.pl(JsWebSocketSession$lambda_2(this))}function unwrapCancellationException(t){for(var n=t;n instanceof CancellationException;){if(equals(n,n.cause))return t;n=n.cause}return null==n?t:n}return setMetadataFor(HttpClient$slambda,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpClient$slambda_1,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$0,"$executeCOROUTINE$0",classMeta,CoroutineImpl),setMetadataFor(HttpClient,"HttpClient",classMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,[1]),setMetadataFor(HttpClientConfig,"HttpClientConfig",classMeta),setMetadataFor(Companion,"Companion",objectMeta),setMetadataFor($bodyNullableCOROUTINE$1,"$bodyNullableCOROUTINE$1",classMeta,CoroutineImpl),setMetadataFor(HttpClientCall,"HttpClientCall",classMeta,VOID,[CoroutineScope],VOID,VOID,[0,1]),setMetadataFor(DoubleReceiveException,"DoubleReceiveException",classMeta,IllegalStateException),setMetadataFor(NoTransformationFoundException,"NoTransformationFoundException",classMeta,UnsupportedOperationException),setMetadataFor(SavedHttpCall,"SavedHttpCall",classMeta,HttpClientCall,VOID,VOID,VOID,[0,1]),setMetadataFor(HttpRequest_0,"HttpRequest",interfaceMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpRequest,"SavedHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpResponse,"HttpResponse",classMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpResponse,"SavedHttpResponse",classMeta,HttpResponse),setMetadataFor($saveCOROUTINE$3,"$saveCOROUTINE$3",classMeta,CoroutineImpl),setMetadataFor(UnsupportedContentTypeException,"UnsupportedContentTypeException",classMeta,IllegalStateException),setMetadataFor(ObservableContent$content$slambda,"ObservableContent$content$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(ObservableContent,"ObservableContent",classMeta,ReadChannelContent),setMetadataFor(HttpClientEngine$install$slambda,"HttpClientEngine$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpClientEngine$executeWithinCallContext$slambda,"HttpClientEngine$executeWithinCallContext$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor($executeWithinCallContextCOROUTINE$4,"$executeWithinCallContextCOROUTINE$4",classMeta,CoroutineImpl),setMetadataFor(HttpClientEngine,"HttpClientEngine",interfaceMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,[1]),setMetadataFor(ClientEngineClosedException,"ClientEngineClosedException",classMeta,IllegalStateException),setMetadataFor(HttpClientEngineBase,"HttpClientEngineBase",classMeta,VOID,[HttpClientEngine],VOID,VOID,[1]),setMetadataFor(HttpClientEngineConfig,"HttpClientEngineConfig",classMeta),setMetadataFor(Companion_0,"Companion",objectMeta),setMetadataFor(KtorCallContextElement,"KtorCallContextElement",classMeta,VOID,[Element]),setMetadataFor(HttpClientPlugin,"HttpClientPlugin",interfaceMeta),setMetadataFor(Plugin,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(BodyProgress$handle$slambda,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress$handle$slambda_1,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress,"BodyProgress",classMeta),setMetadataFor(ResponseException,"ResponseException",classMeta,IllegalStateException),setMetadataFor(RedirectResponseException,"RedirectResponseException",classMeta,ResponseException),setMetadataFor(ClientRequestException,"ClientRequestException",classMeta,ResponseException),setMetadataFor(ServerResponseException,"ServerResponseException",classMeta,ResponseException),setMetadataFor(addDefaultResponseValidation$lambda$slambda,"addDefaultResponseValidation$lambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$1$content$1,VOID,classMeta,ByteArrayContent),setMetadataFor(defaultTransformers$1$content$2,VOID,classMeta,ReadChannelContent),setMetadataFor(defaultTransformers$slambda,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(defaultTransformers$slambda$slambda,"defaultTransformers$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$slambda_1,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_1,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_3,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(Config,"Config",classMeta),setMetadataFor(Companion_1,"Companion",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor($validateResponseCOROUTINE$5,"$validateResponseCOROUTINE$5",classMeta,CoroutineImpl),setMetadataFor($processExceptionCOROUTINE$6,"$processExceptionCOROUTINE$6",classMeta,CoroutineImpl),setMetadataFor(HttpCallValidator,"HttpCallValidator",classMeta,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(ExceptionHandlerWrapper,"ExceptionHandlerWrapper",classMeta),setMetadataFor(RequestExceptionHandlerWrapper,"RequestExceptionHandlerWrapper",classMeta),setMetadataFor(HttpRequest$1,VOID,classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpPlainText$Plugin$install$slambda,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpPlainText$Plugin$install$slambda_1,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(Config_0,"Config",classMeta),setMetadataFor(Plugin_0,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(sam$kotlin_Comparator$0,"sam$kotlin_Comparator$0",classMeta),setMetadataFor(HttpPlainText,"HttpPlainText",classMeta),setMetadataFor(HttpRedirect$Plugin$install$slambda,"HttpRedirect$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor($handleCallCOROUTINE$7,"$handleCallCOROUTINE$7",classMeta,CoroutineImpl),setMetadataFor(Config_1,"Config",classMeta),setMetadataFor(Plugin_1,"Plugin",objectMeta,VOID,[HttpClientPlugin],VOID,VOID,[4]),setMetadataFor(HttpRedirect,"HttpRedirect",classMeta),setMetadataFor(HttpRequestLifecycle$Plugin$install$slambda,"HttpRequestLifecycle$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(Plugin_2,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpRequestLifecycle,"HttpRequestLifecycle",classMeta),setMetadataFor(HttpSend$Plugin$install$slambda,"HttpSend$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$8,"$executeCOROUTINE$8",classMeta,CoroutineImpl),setMetadataFor(Config_2,"Config",classMeta),setMetadataFor(Plugin_3,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(Sender,"Sender",interfaceMeta,VOID,VOID,VOID,VOID,[1]),setMetadataFor(InterceptedSender,"InterceptedSender",classMeta,VOID,[Sender],VOID,VOID,[1]),setMetadataFor(DefaultSender,"DefaultSender",classMeta,VOID,[Sender],VOID,VOID,[1]),setMetadataFor(HttpSend,"HttpSend",classMeta),setMetadataFor(SendCountExceedException,"SendCountExceedException",classMeta,IllegalStateException),setMetadataFor(Companion_2,"Companion",objectMeta),setMetadataFor(HttpTimeout$Plugin$install$slambda$slambda,"HttpTimeout$Plugin$install$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(HttpTimeout$Plugin$install$slambda,"HttpTimeout$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[2]),setMetadataFor(HttpTimeoutCapabilityConfiguration,"HttpTimeoutCapabilityConfiguration",classMeta),setMetadataFor(Plugin_4,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpTimeout,"HttpTimeout",classMeta),setMetadataFor(HttpRequestTimeoutException,"HttpRequestTimeoutException",classMeta,IOException),setMetadataFor(DelegatedResponse,"DelegatedResponse",classMeta,HttpResponse),setMetadataFor(WebSocketCapability,"WebSocketCapability",objectMeta),setMetadataFor(WebSocketException,"WebSocketException",classMeta,IllegalStateException),setMetadataFor(ClientUpgradeContent,"ClientUpgradeContent",classMeta,NoContent,VOID,VOID,VOID,[1]),setMetadataFor(DefaultHttpRequest,"DefaultHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(Companion_3,"Companion",objectMeta),setMetadataFor(HttpRequestBuilder,"HttpRequestBuilder",classMeta),setMetadataFor(HttpRequestData,"HttpRequestData",classMeta),setMetadataFor(HttpResponseData,"HttpResponseData",classMeta),setMetadataFor(Phases,"Phases",objectMeta),setMetadataFor(HttpRequestPipeline,"HttpRequestPipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(Phases_0,"Phases",objectMeta),setMetadataFor(HttpSendPipeline,"HttpSendPipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(DefaultHttpResponse,"DefaultHttpResponse",classMeta,HttpResponse),setMetadataFor($bodyAsTextCOROUTINE$12,"$bodyAsTextCOROUTINE$12",classMeta,CoroutineImpl),setMetadataFor(Phases_1,"Phases",objectMeta),setMetadataFor(HttpResponsePipeline,"HttpResponsePipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(Phases_2,"Phases",objectMeta),setMetadataFor(HttpReceivePipeline,"HttpReceivePipeline",classMeta,Pipeline,VOID,VOID,VOID,[2]),setMetadataFor(HttpResponseContainer,"HttpResponseContainer",classMeta),setMetadataFor(HttpStatement$execute$slambda,"HttpStatement$execute$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor($executeCOROUTINE$13,"$executeCOROUTINE$13",classMeta,CoroutineImpl),setMetadataFor($executeUnsafeCOROUTINE$14,"$executeUnsafeCOROUTINE$14",classMeta,CoroutineImpl),setMetadataFor($cleanupCOROUTINE$15,"$cleanupCOROUTINE$15",classMeta,CoroutineImpl),setMetadataFor(HttpStatement,"HttpStatement",classMeta,VOID,VOID,VOID,VOID,[1,0]),setMetadataFor(observable$slambda,"observable$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(HttpResponseReceiveFail,"HttpResponseReceiveFail",classMeta),setMetadataFor(EmptyContent,"EmptyContent",objectMeta,NoContent),setMetadataFor(Js,"Js",objectMeta),setMetadataFor(JsClientEngine$createWebSocket$headers_capturingHack$1,VOID,classMeta),setMetadataFor($executeCOROUTINE$16,"$executeCOROUTINE$16",classMeta,CoroutineImpl),setMetadataFor($executeWebSocketRequestCOROUTINE$17,"$executeWebSocketRequestCOROUTINE$17",classMeta,CoroutineImpl),setMetadataFor(JsClientEngine,"JsClientEngine",classMeta,HttpClientEngineBase,VOID,VOID,VOID,[1,2]),setMetadataFor(JsError,"JsError",classMeta,Error),setMetadataFor(toRaw$slambda,"toRaw$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor($toRawCOROUTINE$18,"$toRawCOROUTINE$18",classMeta,CoroutineImpl),setMetadataFor(channelFromStream$slambda,"channelFromStream$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(readBodyNode$slambda,"readBodyNode$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession$slambda,"JsWebSocketSession$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession,"JsWebSocketSession",classMeta,VOID,[CoroutineScope],VOID,VOID,[0,1]),protoOf(HttpClient$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpClient$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpClient$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,!(this.u25_1 instanceof HttpClientCall)){var n="Error: HttpClientCall expected, but found "+toString(this.u25_1)+"("+getKClassFromExpression(this.u25_1)+").";throw IllegalStateException_init_$Create$(toString(n))}if(this.hj_1=1,(t=this.s25_1.f25_1.i1r(Unit_getInstance(),this.u25_1.d26(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.v25_1=t,this.u25_1.e26(this.v25_1),this.hj_1=2,(t=this.t25_1.n1q(this.u25_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var i=t;if(3===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpClient$slambda).x25=function(t,n,i){var e=new HttpClient$slambda(this.s25_1,i);return e.t25_1=t,e.u25_1=n,e},protoOf(HttpClient$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpClient$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpClient$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.ij_1=2,this.hj_1=1,(t=this.o26_1.o1q(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof Error){var n=this.kj_1;throw this.n26_1.i25_1.u23(get_HttpResponseReceiveFailed(),new HttpResponseReceiveFail(this.o26_1.j1r_1.d26(),n)),n}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,Unit_getInstance()}}catch(t){var i=t;if(3===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpClient$slambda_1).r26=function(t,n,i){var e=new HttpClient$slambda_1(this.n26_1,i);return e.o26_1=t,e.p26_1=n,e},protoOf($executeCOROUTINE$0).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.a27_1.i25_1.u23(get_HttpRequestCreated(),this.b27_1),this.hj_1=1,(t=this.a27_1.c25_1.i1r(this.b27_1,this.b27_1.f27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t instanceof HttpClientCall?t:THROW_CCE();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpClient).ok=function(){return this.b25_1},protoOf(HttpClient).f28=function(t,n){var i=new $executeCOROUTINE$0(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpClient).a14=function(){if(!this.z24_1.atomicfu$compareAndSet(!1,!0))return Unit_getInstance();for(var t=this.g25_1.w1m(get_PLUGIN_INSTALLED_LIST()),n=t.c1n().d();n.e();){var i=n.f(),e=t.w1m(i instanceof AttributeKey?i:THROW_CCE());isInterface(e,Closeable)&&e.a14()}this.a25_1.oq(),this.y24_1&&this.w24_1.a14()},protoOf(HttpClient).toString=function(){return"HttpClient["+this.w24_1+"]"},protoOf(HttpClientConfig).j28=function(t,n){var i=this.j27_1.g2(t.r()),e=this.j27_1,r=t.r();if(e.f4(r,HttpClientConfig$install$lambda_0(i,n)),this.i27_1.a2(t.r()))return Unit_getInstance();var s=this.i27_1,o=t.r();s.f4(o,HttpClientConfig$install$lambda_1(t))},protoOf(HttpClientConfig).x27=function(t,n,i){var e;return n=n===VOID?HttpClientConfig$install$lambda:n,i===VOID?(this.j28(t,n),e=Unit_getInstance()):e=i.j28.call(this,t,n),e},protoOf(HttpClientConfig).y27=function(t,n){this.k27_1.f4(t,n)},protoOf(HttpClientConfig).r27=function(t){for(var n=this.i27_1.i2().d();n.e();)n.f()(t);for(var i=this.k27_1.i2().d();i.e();)i.f()(t)},protoOf(HttpClientConfig).z27=function(t){this.m27_1=t.m27_1,this.n27_1=t.n27_1,this.o27_1=t.o27_1;var n=this.i27_1,i=t.i27_1;n.zc(i);var e=this.j27_1,r=t.j27_1;e.zc(r);var s=this.k27_1,o=t.k27_1;s.zc(o)},protoOf($bodyNullableCOROUTINE$1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=10,this.hj_1=1;continue t;case 1:this.hj_1=2;continue t;case 2:if(this.ij_1=9,this.ij_1=8,instanceOf(this.b29_1.d26(),this.c29_1.z1r_1)){this.d29_1=this.b29_1.d26(),this.ij_1=10,this.hj_1=7;continue t}this.hj_1=3;continue t;case 3:if(!this.b29_1.i29()&&!this.b29_1.z25_1.atomicfu$compareAndSet(!1,!0))throw new DoubleReceiveException(this.b29_1);if(this.e29_1=this.b29_1.r28().x1m(Companion_getInstance_7().s28_1),null==this.e29_1){if(this.hj_1=4,(t=this.b29_1.j29(this))===get_COROUTINE_SUSPENDED())return t;continue t}this.f29_1=this.e29_1,this.hj_1=5;continue t;case 4:this.f29_1=t,this.hj_1=5;continue t;case 5:if(this.g29_1=this.f29_1,this.h29_1=new HttpResponseContainer(this.c29_1,this.g29_1),this.hj_1=6,(t=this.b29_1.y25_1.d25_1.i1r(this.b29_1,this.h29_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var n=t.l29_1,i=equals(n,NullBody_getInstance())?null:n;if(null!=i&&!instanceOf(i,this.c29_1.z1r_1)){var e=getKClassFromExpression(i),r=this.c29_1.z1r_1;throw new NoTransformationFoundException(this.b29_1.d26(),e,r)}this.d29_1=i,this.ij_1=10,this.hj_1=7;continue t;case 7:var s=this.d29_1;return complete(this.b29_1.d26()),s;case 8:if(this.ij_1=9,this.kj_1 instanceof Error){var o=this.kj_1;throw cancel_0(this.b29_1.d26(),"Receive failed",o),o}throw this.kj_1;case 9:this.ij_1=10;var u=this.kj_1;throw complete(this.b29_1.d26()),u;case 10:throw this.kj_1;case 11:return complete(this.b29_1.d26()),Unit_getInstance()}}catch(t){var a=t;if(10===this.ij_1)throw a;this.hj_1=this.ij_1,this.kj_1=a}},protoOf(HttpClientCall).ok=function(){return this.d26().ok()},protoOf(HttpClientCall).r28=function(){return this.m29().r28()},protoOf(HttpClientCall).m29=function(){var t=this.a26_1;if(null!=t)return t;throwUninitializedPropertyAccessException("request")},protoOf(HttpClientCall).d26=function(){var t=this.b26_1;if(null!=t)return t;throwUninitializedPropertyAccessException("response")},protoOf(HttpClientCall).i29=function(){return this.c26_1},protoOf(HttpClientCall).j29=function(t){return this.d26().n29()},protoOf(HttpClientCall).o29=function(t,n){var i=new $bodyNullableCOROUTINE$1(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpClientCall).toString=function(){return"HttpClientCall["+this.m29().p29()+", "+this.d26().q29()+"]"},protoOf(HttpClientCall).e26=function(t){this.b26_1=t},protoOf(DoubleReceiveException).g1=function(){return this.r29_1},defineProp(protoOf(DoubleReceiveException),"message",(function(){return this.g1()})),protoOf(NoTransformationFoundException).g1=function(){return this.s29_1},defineProp(protoOf(NoTransformationFoundException),"message",(function(){return this.g1()})),protoOf(SavedHttpCall).j29=function(t){return ByteReadChannel_0(this.h2a_1)},protoOf(SavedHttpCall).i29=function(){return this.i2a_1},protoOf(SavedHttpRequest).l2a=function(){return this.j2a_1},protoOf(SavedHttpRequest).r28=function(){return this.k2a_1.r28()},protoOf(SavedHttpRequest).ok=function(){return this.k2a_1.ok()},protoOf(SavedHttpRequest).k1y=function(){return this.k2a_1.k1y()},protoOf(SavedHttpRequest).m2a=function(){return this.k2a_1.m2a()},protoOf(SavedHttpRequest).p29=function(){return this.k2a_1.p29()},protoOf(SavedHttpResponse).l2a=function(){return this.n2a_1},protoOf(SavedHttpResponse).q29=function(){return this.p2a_1},protoOf(SavedHttpResponse).w2a=function(){return this.q2a_1},protoOf(SavedHttpResponse).x2a=function(){return this.r2a_1},protoOf(SavedHttpResponse).y2a=function(){return this.s2a_1},protoOf(SavedHttpResponse).k1y=function(){return this.t2a_1},protoOf(SavedHttpResponse).ok=function(){return this.u2a_1},protoOf(SavedHttpResponse).n29=function(){return this.v2a_1},protoOf($saveCOROUTINE$3).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.b2a_1.d26().n29().l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=readBytes(t);return new SavedHttpCall(this.b2a_1.y25_1,this.b2a_1.m29(),this.b2a_1.d26(),n);case 2:throw this.kj_1}}catch(t){var i=t;if(2===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(ObservableContent$content$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(ObservableContent$content$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(ObservableContent$content$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.h2b_1.l23(this.i2b_1.u1e(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(ObservableContent$content$slambda).k2b=function(t,n){var i=new ObservableContent$content$slambda(this.h2b_1,n);return i.i2b_1=t,i},protoOf(ObservableContent).g23=function(){return this.p2b_1.g23()},protoOf(ObservableContent).h23=function(){return this.p2b_1.h23()},protoOf(ObservableContent).k1y=function(){return this.p2b_1.k1y()},protoOf(ObservableContent).j23=function(){return observable(this.o2b_1,this.m2b_1,this.h23(),this.n2b_1)},protoOf(HttpClientEngine$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpClientEngine$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpClientEngine$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=3;var n=new HttpRequestBuilder;n.b2d(this.u2c_1.j1r_1);var i=this.v2c_1;if(null==i){n.f27_1=NullBody_getInstance();var e,r=JsType_getInstance(),s=PrimitiveClasses_getInstance().nf();try{e=createKType(PrimitiveClasses_getInstance().nf(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;e=null}n.c2d(typeInfoImpl(r,s,e))}else if(i instanceof OutgoingContent)n.f27_1=this.v2c_1,n.c2d(null);else{n.f27_1=this.v2c_1;var o,u=JsType_getInstance(),a=PrimitiveClasses_getInstance().nf();try{o=createKType(PrimitiveClasses_getInstance().nf(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;o=null}n.c2d(typeInfoImpl(u,a,o))}this.w2c_1=n,this.s2c_1.i25_1.u23(get_HttpRequestIsReadyForSending(),this.w2c_1);var h=this.w2c_1.f1c();if(h.h2c_1.z1m(get_CLIENT_CONFIG(),this.s2c_1.j25_1),this.x2c_1=h,validateHeaders(this.x2c_1),checkExtensions(this.t2c_1,this.x2c_1),this.hj_1=1,(t=executeWithinCallContext(this.t2c_1,this.x2c_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.y2c_1=t,this.z2c_1=HttpClientCall_init_$Create$(this.s2c_1,this.x2c_1,this.y2c_1),this.a2d_1=this.z2c_1.d26(),this.s2c_1.i25_1.u23(get_HttpResponseReceived(),this.a2d_1),get_job(this.a2d_1.ok()).pl(HttpClientEngine$install$slambda$lambda(this.s2c_1,this.a2d_1)),this.hj_1=2,(t=this.u2c_1.n1q(this.z2c_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var _=t;if(3===this.ij_1)throw _;this.hj_1=this.ij_1,this.kj_1=_}},protoOf(HttpClientEngine$install$slambda).x25=function(t,n,i){var e=new HttpClientEngine$install$slambda(this.s2c_1,this.t2c_1,i);return e.u2c_1=t,e.v2c_1=n,e},protoOf(HttpClientEngine$executeWithinCallContext$slambda).o2d=function(t,n){var i=this.o1f(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpClientEngine$executeWithinCallContext$slambda).ck=function(t,n){return this.o2d(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpClientEngine$executeWithinCallContext$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,_get_closed__iwkfs1(this.l2d_1))throw new ClientEngineClosedException;if(this.hj_1=1,(t=this.l2d_1.p2d(this.m2d_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t;case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpClientEngine$executeWithinCallContext$slambda).o1f=function(t,n){var i=new HttpClientEngine$executeWithinCallContext$slambda(this.l2d_1,this.m2d_1,n);return i.n2d_1=t,i},protoOf($executeWithinCallContextCOROUTINE$4).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,(t=createCallContext(this.y2b_1,this.z2b_1.g2c_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.a2c_1=t,this.b2c_1=this.a2c_1.f6(new KtorCallContextElement(this.a2c_1)),this.hj_1=2,(t=async(this.y2b_1,this.b2c_1,VOID,HttpClientEngine$executeWithinCallContext$slambda_0(this.y2b_1,this.z2b_1,null)).dn(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(ClientEngineClosedException).h1=function(){return this.q2d_1},defineProp(protoOf(ClientEngineClosedException),"cause",(function(){return this.h1()})),protoOf(HttpClientEngineBase).ok=function(){return coroutineContext$factory(),this.u2d_1.s()},protoOf(HttpClientEngineBase).a14=function(){if(!this.t2d_1.atomicfu$compareAndSet(!1,!0))return Unit_getInstance();var t=this.ok().y5(Key_getInstance()),n=null!=t&&isInterface(t,CompletableJob)?t:null;if(null==n)return Unit_getInstance();var i=n;i.oq(),i.pl(HttpClientEngineBase$close$lambda(this))},protoOf(KtorCallContextElement).r=function(){return Companion_getInstance_8()},protoOf(Plugin).r=function(){return this.h2e_1},protoOf(Plugin).i2e=function(t){return new BodyProgress},protoOf(Plugin).h28=function(t){return this.i2e(t)},protoOf(Plugin).j2e=function(t,n){handle(t,n)},protoOf(Plugin).i28=function(t,n){return this.j2e(t instanceof BodyProgress?t:THROW_CCE(),n)},protoOf(BodyProgress$handle$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(BodyProgress$handle$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n,i=this.s2e_1.j1r_1.h27_1.x1m(get_UploadProgressListenerAttributeKey());if(null==i)return Unit_getInstance();n=i,this.u2e_1=n;var e=this.t2e_1;if(this.v2e_1=new ObservableContent(e instanceof OutgoingContent?e:THROW_CCE(),this.s2e_1.j1r_1.g27_1,this.u2e_1),this.hj_1=1,(t=this.s2e_1.n1q(this.v2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var r=t;if(2===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(BodyProgress$handle$slambda).x25=function(t,n,i){var e=new BodyProgress$handle$slambda(i);return e.s2e_1=t,e.t2e_1=n,e},protoOf(BodyProgress$handle$slambda_1).i2f=function(t,n,i){var e=this.j2f(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(BodyProgress$handle$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.i2f(e,n instanceof HttpResponse?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n,i=this.f2f_1.l2a().m29().r28().x1m(get_DownloadProgressListenerAttributeKey());if(null==i)return Unit_getInstance();if(n=i,this.g2f_1=n,this.h2f_1=withObservableDownload(this.f2f_1,this.g2f_1),this.hj_1=1,(t=this.e2f_1.n1q(this.h2f_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var e=t;if(2===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(BodyProgress$handle$slambda_1).j2f=function(t,n,i){var e=new BodyProgress$handle$slambda_1(i);return e.e2f_1=t,e.f2f_1=n,e},protoOf(RedirectResponseException).g1=function(){return this.m2f_1},defineProp(protoOf(RedirectResponseException),"message",(function(){return this.g1()})),protoOf(ClientRequestException).g1=function(){return this.o2f_1},defineProp(protoOf(ClientRequestException),"message",(function(){return this.g1()})),protoOf(ServerResponseException).g1=function(){return this.q2f_1},defineProp(protoOf(ServerResponseException),"message",(function(){return this.g1()})),protoOf(addDefaultResponseValidation$lambda$slambda).h2g=function(t,n){var i=this.i2g(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(addDefaultResponseValidation$lambda$slambda).ck=function(t,n){return this.h2g(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(addDefaultResponseValidation$lambda$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=5,this.a2g_1=this.z2f_1.l2a().r28().w1m(get_ExpectSuccessAttributeKey()),!this.a2g_1)return get_LOGGER().j1s("Skipping default response validation for "+this.z2f_1.l2a().m29().p29()),Unit_getInstance();if(this.b2g_1=this.z2f_1.q29().e21_1,this.c2g_1=this.z2f_1.l2a(),this.b2g_1<300||this.c2g_1.r28().y1m(get_ValidateMark()))return Unit_getInstance();if(this.hj_1=1,(t=save(this.c2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.d2g_1=t,this.d2g_1.r28().z1m(get_ValidateMark(),Unit_getInstance()),this.e2g_1=this.d2g_1,this.f2g_1=this.e2g_1.d26(),this.ij_1=3,this.hj_1=2,(t=bodyAsText(this.f2g_1,VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.g2g_1=t,this.ij_1=5,this.hj_1=4;continue t;case 3:if(this.ij_1=5,this.kj_1 instanceof MalformedInputException){this.kj_1,this.g2g_1="",this.hj_1=4;continue t}throw this.kj_1;case 4:this.ij_1=5;var n=this.g2g_1,i=this.b2g_1,e=300<=i&&i<=399?new RedirectResponseException(this.f2g_1,n):400<=i&&i<=499?new ClientRequestException(this.f2g_1,n):500<=i&&i<=599?new ServerResponseException(this.f2g_1,n):new ResponseException(this.f2g_1,n);throw get_LOGGER().j1s("Default response validation for "+this.z2f_1.l2a().m29().p29()+" failed with "+e),e;case 5:throw this.kj_1}}catch(t){var r=t;if(5===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(addDefaultResponseValidation$lambda$slambda).i2g=function(t,n){var i=new addDefaultResponseValidation$lambda$slambda(n);return i.z2f_1=t,i},protoOf(defaultTransformers$1$content$1).g23=function(){return this.o2g_1},protoOf(defaultTransformers$1$content$1).h23=function(){return this.p2g_1},protoOf(defaultTransformers$1$content$1).n23=function(){return this.q2g_1},protoOf(defaultTransformers$1$content$2).h23=function(){return this.s2g_1},protoOf(defaultTransformers$1$content$2).g23=function(){return this.t2g_1},protoOf(defaultTransformers$1$content$2).j23=function(){return this.u2g_1},protoOf(defaultTransformers$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(defaultTransformers$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=3,null==this.d2h_1.j1r_1.e27_1.q1n(HttpHeaders_getInstance().i1u_1)&&this.d2h_1.j1r_1.e27_1.x1o(HttpHeaders_getInstance().i1u_1,"*/*"),this.f2h_1=contentType(this.d2h_1.j1r_1);var n,i=this.e2h_1;if("string"==typeof i){var e=this.f2h_1;n=new TextContent(this.e2h_1,null==e?Text_getInstance().r1t_1:e)}else n=isByteArray(i)?new defaultTransformers$1$content$1(this.f2h_1,this.e2h_1):isInterface(i,ByteReadChannel)?new defaultTransformers$1$content$2(this.d2h_1,this.f2h_1,this.e2h_1):i instanceof OutgoingContent?this.e2h_1:platformRequestDefaultTransform(this.f2h_1,this.d2h_1.j1r_1,this.e2h_1);this.g2h_1=n;var r=this.g2h_1;if(null!=(null==r?null:r.g23())){if(this.d2h_1.j1r_1.e27_1.z1o(HttpHeaders_getInstance().a1v_1),get_LOGGER_0().j1s("Transformed with default transformers request body for "+this.d2h_1.j1r_1.c27_1+" from "+getKClassFromExpression(this.e2h_1)),this.hj_1=1,(t=this.d2h_1.n1q(this.g2h_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=2;continue t;case 1:this.hj_1=2;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var s=t;if(3===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(defaultTransformers$slambda).x25=function(t,n,i){var e=new defaultTransformers$slambda(i);return e.d2h_1=t,e.e2h_1=n,e},protoOf(defaultTransformers$slambda$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(defaultTransformers$slambda$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(defaultTransformers$slambda$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=5,this.hj_1=1;continue t;case 1:this.ij_1=4,this.ij_1=3,this.hj_1=2;var n=this.r2h_1.u1e();if(Companion_getInstance_0(),(t=copyTo(this.p2h_1,n,new Long(-1,2147483647),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.s2h_1=Unit_getInstance(),this.ij_1=5,this.hj_1=6;continue t;case 3:if(this.ij_1=4,this.kj_1 instanceof CancellationException){var i=this.kj_1;throw cancel(this.q2h_1,i),i}if(this.kj_1 instanceof Error){var e=this.kj_1;throw cancel_0(this.q2h_1,"Receive failed",e),e}throw this.kj_1;case 4:this.ij_1=5;var r=this.kj_1;throw complete(this.q2h_1),r;case 5:throw this.kj_1;case 6:return complete(this.q2h_1),Unit_getInstance()}}catch(t){var s=t;if(5===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(defaultTransformers$slambda$slambda).k2b=function(t,n){var i=new defaultTransformers$slambda$slambda(this.p2h_1,this.q2h_1,n);return i.r2h_1=t,i},protoOf(defaultTransformers$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(defaultTransformers$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=11,this.d2i_1=this.c2i_1.d4(),this.e2i_1=this.c2i_1.e4();var n=this.e2i_1;if(!isInterface(n,ByteReadChannel))return Unit_getInstance();if(this.f2i_1=this.b2i_1.j1r_1.d26(),this.g2i_1=this.d2i_1.z1r_1,this.g2i_1.equals(getKClass(Unit))){if(cancel_1(this.e2i_1),this.hj_1=9,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,Unit_getInstance()),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(PrimitiveClasses_getInstance().tf())){if(this.hj_1=7,(t=this.e2i_1.l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(getKClass(ByteReadPacket))||this.g2i_1.equals(getKClass(Input))){if(this.hj_1=5,(t=this.e2i_1.l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(PrimitiveClasses_getInstance().bg())){if(this.hj_1=3,(t=toByteArray(this.e2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(getKClass(ByteReadChannel))){this.i2i_1=Job(this.f2i_1.ok().y5(Key_getInstance()));var i=this.f2i_1.ok(),e=writer(this.b2i_1,i,VOID,defaultTransformers$slambda$slambda_0(this.e2i_1,this.f2i_1,null));if(e.pl(defaultTransformers$slambda$lambda(this.i2i_1)),this.j2i_1=e.u1e(),this.hj_1=2,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,this.j2i_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.g2i_1.equals(getKClass(HttpStatusCode))){if(cancel_1(this.e2i_1),this.hj_1=1,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,this.f2i_1.q29()),this))===get_COROUTINE_SUSPENDED())return t;continue t}this.h2i_1=null,this.hj_1=10;continue t;case 1:case 2:case 4:case 6:case 8:case 9:this.h2i_1=t,this.hj_1=10;continue t;case 3:if(this.k2i_1=t,this.l2i_1=contentLength(this.f2i_1),this.m2i_1=!PlatformUtils_getInstance().d1s_1&&null==this.f2i_1.k1y().q1n(HttpHeaders_getInstance().v1u_1),this.m2i_1&&null!=this.l2i_1&&this.l2i_1.w(new Long(0,0))>0&&this.k2i_1.length!==this.l2i_1.c8()){var r="Expected "+toString_0(this.l2i_1)+", actual "+this.k2i_1.length;throw IllegalStateException_init_$Create$(toString(r))}if(this.hj_1=4,(t=this.b2i_1.n1q(new HttpResponseContainer(this.d2i_1,this.k2i_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.n2i_1=t,this.o2i_1=new HttpResponseContainer(this.d2i_1,this.n2i_1),this.hj_1=6,(t=this.b2i_1.n1q(this.o2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:if(this.p2i_1=t,this.q2i_1=this.p2i_1.v1i(),this.r2i_1=toInt(this.q2i_1),this.s2i_1=new HttpResponseContainer(this.d2i_1,this.r2i_1),this.hj_1=8,(t=this.b2i_1.n1q(this.s2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 10:return null!=this.h2i_1&&get_LOGGER_0().j1s("Transformed with default transformers response body for "+this.b2i_1.j1r_1.m29().p29()+" to "+this.d2i_1.z1r_1),Unit_getInstance();case 11:throw this.kj_1}}catch(t){var s=t;if(11===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(defaultTransformers$slambda_1).r26=function(t,n,i){var e=new defaultTransformers$slambda_1(i);return e.b2i_1=t,e.c2i_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpCallValidator$Companion$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=5,this.ij_1=3;var n=get_ExpectSuccessAttributeKey();if(this.f2j_1.j1r_1.h27_1.b1n(n,HttpCallValidator$Companion$install$slambda$lambda(this.e2j_1)),this.hj_1=1,(t=this.f2j_1.n1q(this.g2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=5,this.hj_1=2;continue t;case 2:return this.ij_1=5,Unit_getInstance();case 3:if(this.ij_1=5,this.kj_1 instanceof Error){if(this.h2j_1=this.kj_1,this.i2j_1=unwrapCancellationException(this.h2j_1),this.hj_1=4,(t=processException(this.e2j_1,this.i2j_1,HttpRequest(this.f2j_1.j1r_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.kj_1;case 4:throw this.i2j_1;case 5:throw this.kj_1}}catch(t){var i=t;if(5===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpCallValidator$Companion$install$slambda).x25=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda(this.e2j_1,i);return e.f2j_1=t,e.g2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpCallValidator$Companion$install$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=5,this.ij_1=3,this.hj_1=1,(t=this.s2j_1.n1q(this.t2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=5,this.hj_1=2;continue t;case 2:return this.ij_1=5,Unit_getInstance();case 3:if(this.ij_1=5,this.kj_1 instanceof Error){if(this.u2j_1=this.kj_1,this.v2j_1=unwrapCancellationException(this.u2j_1),this.hj_1=4,(t=processException(this.r2j_1,this.v2j_1,this.s2j_1.j1r_1.m29(),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.kj_1;case 4:throw this.v2j_1;case 5:throw this.kj_1}}catch(t){var n=t;if(5===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_1).r26=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_1(this.r2j_1,i);return e.s2j_1=t,e.t2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_3).i2k=function(t,n,i){var e=this.j2k(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpCallValidator$Companion$install$slambda_3).z8=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.i2k(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_3).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,(t=this.f2k_1.f28(this.g2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.h2k_1=t,this.hj_1=2,(t=validateResponse(this.e2k_1,this.h2k_1.d26(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return this.h2k_1;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_3).j2k=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_3(this.e2k_1,i);return e.f2k_1=t,e.g2k_1=n,e},protoOf(Config).m2g=function(t){this.j2g_1.a(t)},protoOf(Companion_1).r=function(){return this.m2l_1},protoOf(Companion_1).n2l=function(t){var n=new Config;t(n);var i=n;return new HttpCallValidator(reversed(i.j2g_1),reversed(i.k2g_1),i.l2g_1)},protoOf(Companion_1).h28=function(t){return this.n2l(t)},protoOf(Companion_1).o2l=function(t,n){var i=Phases_getInstance().z2d_1;n.c25_1.n1r(i,HttpCallValidator$Companion$install$slambda_0(t,null));var e=new PipelinePhase("BeforeReceive");n.d25_1.m1r(Phases_getInstance_1().a28_1,e),n.d25_1.n1r(e,HttpCallValidator$Companion$install$slambda_2(t,null)),plugin(n,Plugin_getInstance_3()).r2l(HttpCallValidator$Companion$install$slambda_4(t,null))},protoOf(Companion_1).i28=function(t,n){return this.o2l(t instanceof HttpCallValidator?t:THROW_CCE(),n)},protoOf($validateResponseCOROUTINE$5).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=4,get_LOGGER_1().j1s("Validating response for request "+this.t2k_1.l2a().m29().p29()),this.u2k_1=this.s2k_1.t2i_1,this.v2k_1=this.u2k_1.d(),this.hj_1=1;continue t;case 1:if(!this.v2k_1.e()){this.hj_1=3;continue t}if(this.w2k_1=this.v2k_1.f(),this.hj_1=2,(t=this.w2k_1(this.t2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.hj_1=1;continue t;case 3:return Unit_getInstance();case 4:throw this.kj_1}}catch(t){var n=t;if(4===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf($processExceptionCOROUTINE$6).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,get_LOGGER_1().j1s("Processing exception "+this.g2l_1+" for request "+this.h2l_1.p29()),this.i2l_1=this.f2l_1.u2i_1,this.j2l_1=this.i2l_1.d(),this.hj_1=1;continue t;case 1:if(!this.j2l_1.e()){this.hj_1=5;continue t}if(this.k2l_1=this.j2l_1.f(),this.l2l_1=this.k2l_1,this.l2l_1 instanceof ExceptionHandlerWrapper){if(this.hj_1=3,(t=this.k2l_1.t2l_1(this.g2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.l2l_1 instanceof RequestExceptionHandlerWrapper){if(this.hj_1=2,(t=this.k2l_1.s2l_1(this.g2l_1,this.h2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=4;continue t;case 2:case 3:this.hj_1=4;continue t;case 4:this.hj_1=1;continue t;case 5:return Unit_getInstance();case 6:throw this.kj_1}}catch(t){var n=t;if(6===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpRequest$1).l2a=function(){throw IllegalStateException_init_$Create$("Call is not initialized")},protoOf(HttpRequest$1).m2a=function(){return this.u2l_1},protoOf(HttpRequest$1).p29=function(){return this.v2l_1},protoOf(HttpRequest$1).r28=function(){return this.w2l_1},protoOf(HttpRequest$1).k1y=function(){return this.x2l_1},protoOf(HttpPlainText$Plugin$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpPlainText$Plugin$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.h2m_1.o2m(this.i2m_1.j1r_1),"string"!=typeof this.j2m_1)return Unit_getInstance();if(this.k2m_1=contentType(this.i2m_1.j1r_1),null!=this.k2m_1&&this.k2m_1.b1u_1!==Text_getInstance().r1t_1.b1u_1)return Unit_getInstance();if(this.hj_1=1,(t=this.i2m_1.n1q(wrapContent(this.h2m_1,this.i2m_1.j1r_1,this.j2m_1,this.k2m_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpPlainText$Plugin$install$slambda).x25=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda(this.h2m_1,i);return e.i2m_1=t,e.j2m_1=n,e},protoOf(HttpPlainText$Plugin$install$slambda_1).q26=function(t,n,i){var e=this.r26(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpPlainText$Plugin$install$slambda_1).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.q26(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda_1).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:var n;if(this.ij_1=3,this.a2n_1=this.z2m_1.d4(),this.b2n_1=this.z2m_1.e4(),this.a2n_1.z1r_1.equals(PrimitiveClasses_getInstance().xf())){var i=this.b2n_1;n=!isInterface(i,ByteReadChannel)}else n=!0;if(n)return Unit_getInstance();if(this.hj_1=1,(t=this.b2n_1.l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.c2n_1=t,this.d2n_1=this.x2m_1.e2n(this.y2m_1.j1r_1,this.c2n_1),this.hj_1=2,(t=this.y2m_1.n1q(new HttpResponseContainer(this.a2n_1,this.d2n_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(HttpPlainText$Plugin$install$slambda_1).r26=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda_1(this.x2m_1,i);return e.y2m_1=t,e.z2m_1=n,e},protoOf(Plugin_0).r=function(){return this.j2n_1},protoOf(Plugin_0).n2l=function(t){var n=new Config_0;t(n);var i=n;return new HttpPlainText(i.f2n_1,i.g2n_1,i.h2n_1,i.i2n_1)},protoOf(Plugin_0).h28=function(t){return this.n2l(t)},protoOf(Plugin_0).k2n=function(t,n){var i=Phases_getInstance().c2e_1;n.c25_1.n1r(i,HttpPlainText$Plugin$install$slambda_0(t,null));var e=Phases_getInstance_1().c28_1;n.d25_1.n1r(e,HttpPlainText$Plugin$install$slambda_2(t,null))},protoOf(Plugin_0).i28=function(t,n){return this.k2n(t instanceof HttpPlainText?t:THROW_CCE(),n)},protoOf(sam$kotlin_Comparator$0).sh=function(t,n){return this.l2n_1(t,n)},protoOf(sam$kotlin_Comparator$0).compare=function(t,n){return this.sh(t,n)},protoOf(HttpPlainText).e2n=function(t,n){var i=charset_0(t.d26()),e=null==i?this.l2m_1:i;return get_LOGGER_2().j1s("Reading response body for "+t.m29().p29()+" as String with charset "+e),readText(n,e)},protoOf(HttpPlainText).o2m=function(t){if(null!=t.e27_1.q1n(HttpHeaders_getInstance().j1u_1))return Unit_getInstance();get_LOGGER_2().j1s("Adding Accept-Charset="+this.n2m_1+" to "+t.c27_1),t.e27_1.v1o(HttpHeaders_getInstance().j1u_1,this.n2m_1)},protoOf(HttpRedirect$Plugin$install$slambda).i2k=function(t,n,i){var e=this.j2k(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpRedirect$Plugin$install$slambda).z8=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.i2k(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpRedirect$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,(t=this.p2o_1.f28(this.q2o_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.r2o_1=t,this.n2o_1.s2o_1&&!get_ALLOWED_FOR_REDIRECT().n(this.r2o_1.m29().m2a()))return this.r2o_1;if(this.hj_1=2,(t=handleCall(this.p2o_1,Plugin_getInstance_1(),this.q2o_1,this.r2o_1,this.n2o_1.t2o_1,this.o2o_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpRedirect$Plugin$install$slambda).j2k=function(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(this.n2o_1,this.o2o_1,i);return e.p2o_1=t,e.q2o_1=n,e},protoOf($handleCallCOROUTINE$7).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,!isRedirect(this.x2n_1.d26().q29()))return this.x2n_1;this.a2o_1=this.x2n_1,this.b2o_1=this.w2n_1,this.c2o_1=this.x2n_1.m29().p29().v21_1,this.d2o_1=get_authority(this.x2n_1.m29().p29()),this.hj_1=1;continue t;case 1:this.z2n_1.i25_1.u23(this.u2n_1.v2o_1,this.a2o_1.d26()),this.e2o_1=this.a2o_1.d26().k1y().q1n(HttpHeaders_getInstance().w1v_1),get_LOGGER_3().j1s("Received redirect response to "+this.e2o_1+" for request "+this.w2n_1.c27_1);var n=new HttpRequestBuilder;n.b2d(this.b2o_1),n.c27_1.s21_1.d3();var i=this.e2o_1;if(null==i||takeFrom(n.c27_1,i),!this.y2n_1&&isSecure(this.c2o_1)&&!isSecure(n.c27_1.j21_1))return get_LOGGER_3().j1s("Can not redirect "+this.w2n_1.c27_1+" because of security downgrade"),this.a2o_1;if(this.d2o_1!==get_authority_0(n.c27_1)&&(n.e27_1.z1o(HttpHeaders_getInstance().r1u_1),get_LOGGER_3().j1s("Removing Authorization header from redirect for "+this.w2n_1.c27_1)),this.b2o_1=n,this.hj_1=2,(t=this.v2n_1.f28(this.b2o_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.a2o_1=t,!isRedirect(this.a2o_1.d26().q29()))return this.a2o_1;this.hj_1=1;continue t;case 3:throw this.kj_1;case 4:return Unit_getInstance()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(Plugin_1).r=function(){return this.u2o_1},protoOf(Plugin_1).n2l=function(t){var n=new Config_1;t(n);var i=n;return new HttpRedirect(i.w2o_1,i.x2o_1)},protoOf(Plugin_1).h28=function(t){return this.n2l(t)},protoOf(Plugin_1).y2o=function(t,n){plugin(n,Plugin_getInstance_3()).r2l(HttpRedirect$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_1).i28=function(t,n){return this.y2o(t instanceof HttpRedirect?t:THROW_CCE(),n)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpRequestLifecycle$Plugin$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,this.k2p_1=SupervisorJob(this.i2p_1.j1r_1.g27_1),attachToClientEngineJob(this.k2p_1,ensureNotNull(this.h2p_1.b25_1.y5(Key_getInstance()))),this.hj_1=1;continue t;case 1:if(this.ij_1=4,this.ij_1=3,this.i2p_1.j1r_1.g27_1=this.k2p_1,this.hj_1=2,(t=this.i2p_1.o1q(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.l2p_1=Unit_getInstance(),this.ij_1=6,this.hj_1=5;continue t;case 3:if(this.ij_1=4,this.kj_1 instanceof Error){var n=this.kj_1;throw this.k2p_1.nq(n),n}throw this.kj_1;case 4:this.ij_1=6;var i=this.kj_1;throw this.k2p_1.oq(),i;case 5:return this.k2p_1.oq(),Unit_getInstance();case 6:throw this.kj_1}}catch(t){var e=t;if(6===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(HttpRequestLifecycle$Plugin$install$slambda).x25=function(t,n,i){var e=new HttpRequestLifecycle$Plugin$install$slambda(this.h2p_1,i);return e.i2p_1=t,e.j2p_1=n,e},protoOf(Plugin_2).r=function(){return this.m2p_1},protoOf(Plugin_2).i2e=function(t){return new HttpRequestLifecycle},protoOf(Plugin_2).h28=function(t){return this.i2e(t)},protoOf(Plugin_2).n2p=function(t,n){var i=Phases_getInstance().z2d_1;n.c25_1.n1r(i,HttpRequestLifecycle$Plugin$install$slambda_0(n,null))},protoOf(Plugin_2).i28=function(t,n){return this.n2p(t instanceof HttpRequestLifecycle?t:THROW_CCE(),n)},protoOf(HttpSend$Plugin$install$slambda).w25=function(t,n,i){var e=this.x25(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpSend$Plugin$install$slambda).z8=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.w25(e,isObject(n)?n:THROW_CCE(),i)},protoOf(HttpSend$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,!(this.z2p_1 instanceof OutgoingContent)){var n=trimMargin("\n|Fail to prepare request body for sending. \n|The body type is: "+getKClassFromExpression(this.z2p_1)+", with Content-Type: "+contentType(this.y2p_1.j1r_1)+".\n|\n|If you expect serialized body, please check that you have installed the corresponding plugin(like `ContentNegotiation`) and set `Content-Type` header.");throw IllegalStateException_init_$Create$(toString(n))}var i=this.y2p_1.j1r_1,e=this.z2p_1,r=e;if(null==r){i.f27_1=NullBody_getInstance();var s,o=JsType_getInstance(),u=getKClass(OutgoingContent);try{s=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;s=null}i.c2d(typeInfoImpl(o,u,s))}else if(r instanceof OutgoingContent)i.f27_1=e,i.c2d(null);else{i.f27_1=e;var a,h=JsType_getInstance(),_=getKClass(OutgoingContent);try{a=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;a=null}i.c2d(typeInfoImpl(h,_,a))}this.a2q_1=new DefaultSender(this.w2p_1.p2l_1,this.x2p_1),this.b2q_1=this.a2q_1;var l=downTo(get_lastIndex(this.w2p_1.q2l_1),0),f=l.y_1,c=l.z_1,v=l.a1_1;if(v>0&&f<=c||v<0&&c<=f)do{var w=f;f=f+v|0;var d=this.w2p_1.q2l_1.h(w);this.b2q_1=new InterceptedSender(d,this.b2q_1)}while(w!==c);if(this.hj_1=1,(t=this.b2q_1.f28(this.y2p_1.j1r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.c2q_1=t,this.hj_1=2,(t=this.y2p_1.n1q(this.c2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_getInstance();case 3:throw this.kj_1}}catch(t){var p=t;if(3===this.ij_1)throw p;this.hj_1=this.ij_1,this.kj_1=p}},protoOf(HttpSend$Plugin$install$slambda).x25=function(t,n,i){var e=new HttpSend$Plugin$install$slambda(this.w2p_1,this.x2p_1,i);return e.y2p_1=t,e.z2p_1=n,e},protoOf($executeCOROUTINE$8).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n=this.l2q_1.q2q_1;if(null==n||cancel(n),this.l2q_1.p2q_1>=this.l2q_1.n2q_1)throw new SendCountExceedException("Max send count "+this.l2q_1.n2q_1+" exceeded. Consider increasing the property maxSendCount if more is required.");var i=this.l2q_1,e=i.p2q_1;if(i.p2q_1=e+1|0,this.hj_1=1,(t=this.l2q_1.o2q_1.e25_1.i1r(this.m2q_1,this.m2q_1.f27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var r=t instanceof HttpClientCall?t:null;if(null==r){var s="Failed to execute send pipeline. Expected [HttpClientCall], but received "+toString(t);throw IllegalStateException_init_$Create$(toString(s))}var o=r;return this.l2q_1.q2q_1=o,o;case 2:throw this.kj_1}}catch(t){var u=t;if(2===this.ij_1)throw u;this.hj_1=this.ij_1,this.kj_1=u}},protoOf(Plugin_3).r=function(){return this.s2q_1},protoOf(Plugin_3).n2l=function(t){var n=new Config_2;return t(n),new HttpSend(n.r2q_1)},protoOf(Plugin_3).h28=function(t){return this.n2l(t)},protoOf(Plugin_3).t2q=function(t,n){var i=Phases_getInstance().d2e_1;n.c25_1.n1r(i,HttpSend$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_3).i28=function(t,n){return this.t2q(t instanceof HttpSend?t:THROW_CCE(),n)},protoOf(InterceptedSender).f28=function(t,n){return this.u2q_1(this.v2q_1,t,n)},protoOf(DefaultSender).f28=function(t,n){var i=new $executeCOROUTINE$8(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpSend).r2l=function(t){this.q2l_1.a(t)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpTimeout$Plugin$install$slambda$slambda).ck=function(t,n){return this.n1f(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=delay(this.l2r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=HttpRequestTimeoutException_init_$Create$(this.m2r_1);return get_LOGGER_5().j1s("Request timeout: "+this.m2r_1.c27_1),cancel_2(this.n2r_1,ensureNotNull(n.message),n),Unit_getInstance();case 2:throw this.kj_1}}catch(t){var i=t;if(2===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpTimeout$Plugin$install$slambda$slambda).o1f=function(t,n){var i=new HttpTimeout$Plugin$install$slambda$slambda(this.l2r_1,this.m2r_1,this.n2r_1,n);return i.o2r_1=t,i},protoOf(HttpTimeout$Plugin$install$slambda).i2k=function(t,n,i){var e=this.j2k(t,n,i);return e.jj_1=Unit_getInstance(),e.kj_1=null,e.qj()},protoOf(HttpTimeout$Plugin$install$slambda).z8=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.i2k(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpTimeout$Plugin$install$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=4,this.b2s_1=isWebsocket(this.a2s_1.c27_1.j21_1),this.b2s_1||this.a2s_1.f27_1 instanceof ClientUpgradeContent){if(this.hj_1=3,(t=this.z2r_1.f28(this.a2s_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=1;continue t;case 1:this.c2s_1=this.a2s_1.d2s(Plugin_getInstance_4()),null==this.c2s_1&&hasNotNullTimeouts(this.x2r_1)&&(this.c2s_1=HttpTimeoutCapabilityConfiguration_init_$Create$(),this.a2s_1.e2s(Plugin_getInstance_4(),this.c2s_1));var n=this.c2s_1;if(null==n);else n:do{var i=n.f2s();n.a2r(null==i?this.x2r_1.h2s_1:i);var e=n.j2s();n.b2r(null==e?this.x2r_1.i2s_1:e);var r=n.k2s();n.z2q(null==r?this.x2r_1.g2s_1:r);var s,o=n.k2s(),u=null==o?this.x2r_1.g2s_1:o;if(null==u?s=!0:(Plugin_getInstance_4(),s=equals(u,new Long(-1,2147483647))),s){Unit_getInstance();break n}var a=this.a2s_1.g27_1,h=launch(this.y2r_1,VOID,VOID,HttpTimeout$Plugin$install$slambda$slambda_0(u,this.a2s_1,a,null));this.a2s_1.g27_1.pl(HttpTimeout$Plugin$install$slambda$lambda(h))}while(0);if(this.hj_1=2,(t=this.z2r_1.f28(this.a2s_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:case 3:return t;case 4:throw this.kj_1}}catch(t){var _=t;if(4===this.ij_1)throw _;this.hj_1=this.ij_1,this.kj_1=_}},protoOf(HttpTimeout$Plugin$install$slambda).j2k=function(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(this.x2r_1,this.y2r_1,i);return e.z2r_1=t,e.a2s_1=n,e},protoOf(HttpTimeoutCapabilityConfiguration).z2q=function(t){this.w2q_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).k2s=function(){return this.w2q_1},protoOf(HttpTimeoutCapabilityConfiguration).a2r=function(t){this.x2q_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).f2s=function(){return this.x2q_1},protoOf(HttpTimeoutCapabilityConfiguration).b2r=function(t){this.y2q_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).j2s=function(){return this.y2q_1},protoOf(HttpTimeoutCapabilityConfiguration).f1c=function(){return new HttpTimeout(this.k2s(),this.f2s(),this.j2s())},protoOf(HttpTimeoutCapabilityConfiguration).equals=function(t){return!!(this===t||null!=t&&getKClassFromExpression(this).equals(getKClassFromExpression(t))&&(t instanceof HttpTimeoutCapabilityConfiguration||THROW_CCE(),equals(this.w2q_1,t.w2q_1)&&equals(this.x2q_1,t.x2q_1)&&equals(this.y2q_1,t.y2q_1)))},protoOf(HttpTimeoutCapabilityConfiguration).hashCode=function(){var t=this.w2q_1,n=null==t?null:t.hashCode(),i=null==n?0:n,e=imul(31,i),r=this.x2q_1,s=null==r?null:r.hashCode(),o=imul(31,i=e+(null==s?0:s)|0),u=this.y2q_1,a=null==u?null:u.hashCode();return o+(null==a?0:a)|0},protoOf(Plugin_4).r=function(){return this.l2s_1},protoOf(Plugin_4).n2s=function(t){var n=HttpTimeoutCapabilityConfiguration_init_$Create$();return t(n),n.f1c()},protoOf(Plugin_4).h28=function(t){return this.n2s(t)},protoOf(Plugin_4).o2s=function(t,n){plugin(n,Plugin_getInstance_3()).r2l(HttpTimeout$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_4).i28=function(t,n){return this.o2s(t instanceof HttpTimeout?t:THROW_CCE(),n)},protoOf(DelegatedResponse).l2a=function(){return this.p2s_1},protoOf(DelegatedResponse).n29=function(){return this.q2s_1},protoOf(DelegatedResponse).ok=function(){return this.s2s_1},protoOf(DelegatedResponse).q29=function(){return this.r2s_1.q29()},protoOf(DelegatedResponse).w2a=function(){return this.r2s_1.w2a()},protoOf(DelegatedResponse).x2a=function(){return this.r2s_1.x2a()},protoOf(DelegatedResponse).y2a=function(){return this.r2s_1.y2a()},protoOf(DelegatedResponse).k1y=function(){return this.r2s_1.k1y()},protoOf(WebSocketCapability).toString=function(){return"WebSocketCapability"},protoOf(DefaultHttpRequest).l2a=function(){return this.t2s_1},protoOf(DefaultHttpRequest).ok=function(){return this.l2a().ok()},protoOf(DefaultHttpRequest).m2a=function(){return this.u2s_1},protoOf(DefaultHttpRequest).p29=function(){return this.v2s_1},protoOf(DefaultHttpRequest).k1y=function(){return this.x2s_1},protoOf(DefaultHttpRequest).r28=function(){return this.y2s_1},protoOf(HttpRequestBuilder).k1y=function(){return this.e27_1},protoOf(HttpRequestBuilder).c2d=function(t){null!=t?this.h27_1.z1m(get_BodyTypeAttributeKey(),t):this.h27_1.a1n(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).z2s=function(){return this.h27_1.x1m(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).f1c=function(){var t=this.c27_1.f1c(),n=this.d27_1,i=this.e27_1.f1c(),e=this.f27_1,r=e instanceof OutgoingContent?e:null;if(null==r){var s="No request transformation found: "+toString(this.f27_1);throw IllegalStateException_init_$Create$(toString(s))}return new HttpRequestData(t,n,i,r,this.g27_1,this.h27_1)},protoOf(HttpRequestBuilder).b2d=function(t){return this.g27_1=t.g27_1,this.a2t(t)},protoOf(HttpRequestBuilder).a2t=function(t){return this.d27_1=t.d27_1,this.f27_1=t.f27_1,this.c2d(t.z2s()),takeFrom_0(this.c27_1,t.c27_1),this.c27_1.q21_1=this.c27_1.q21_1,appendAll(this.e27_1,t.e27_1),putAll(this.h27_1,t.h27_1),this},protoOf(HttpRequestBuilder).e2s=function(t,n){var i=get_ENGINE_CAPABILITIES_KEY();this.h27_1.b1n(i,HttpRequestBuilder$setCapability$lambda).f4(t,n)},protoOf(HttpRequestBuilder).d2s=function(t){var n=this.h27_1.x1m(get_ENGINE_CAPABILITIES_KEY()),i=null==n?null:n.g2(t);return null==i||isObject(i)?i:THROW_CCE()},protoOf(HttpRequestData).toString=function(){return"HttpRequestData(url="+this.c2c_1+", method="+this.d2c_1+")"},protoOf(HttpResponseData).toString=function(){return"HttpResponseData=(statusCode="+this.k28_1+")"},protoOf(HttpRequestPipeline).h1r=function(){return this.i2t_1},protoOf(HttpSendPipeline).h1r=function(){return this.q2t_1},protoOf(DefaultHttpResponse).l2a=function(){return this.r2t_1},protoOf(DefaultHttpResponse).ok=function(){return this.s2t_1},protoOf(DefaultHttpResponse).q29=function(){return this.t2t_1},protoOf(DefaultHttpResponse).w2a=function(){return this.u2t_1},protoOf(DefaultHttpResponse).x2a=function(){return this.v2t_1},protoOf(DefaultHttpResponse).y2a=function(){return this.w2t_1},protoOf(DefaultHttpResponse).n29=function(){return this.x2t_1},protoOf(DefaultHttpResponse).k1y=function(){return this.y2t_1},protoOf(HttpResponse).toString=function(){return"HttpResponse["+get_request(this).p29()+", "+this.q29()+"]"},protoOf($bodyAsTextCOROUTINE$12).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=2;var n=charset_0(this.h2u_1);this.j2u_1=null==n?this.i2u_1:n,this.k2u_1=this.j2u_1.h1j(),this.hj_1=1;var i,e=this.h2u_1.l2a(),r=JsType_getInstance(),s=getKClass(Input);try{i=createKType(getKClass(Input),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;i=null}if((t=e.o29(typeInfoImpl(r,s,i),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var o=t instanceof Input?t:THROW_CCE();return decode(this.k2u_1,o);case 2:throw this.kj_1}}catch(t){var u=t;if(2===this.ij_1)throw u;this.hj_1=this.ij_1,this.kj_1=u}},protoOf(HttpResponsePipeline).h1r=function(){return this.s2u_1},protoOf(HttpReceivePipeline).h1r=function(){return this.a2v_1},protoOf(HttpResponseContainer).d4=function(){return this.k29_1},protoOf(HttpResponseContainer).e4=function(){return this.l29_1},protoOf(HttpResponseContainer).toString=function(){return"HttpResponseContainer(expectedType="+this.k29_1+", response="+toString(this.l29_1)+")"},protoOf(HttpResponseContainer).hashCode=function(){var t=this.k29_1.hashCode();return imul(t,31)+hashCode(this.l29_1)|0},protoOf(HttpResponseContainer).equals=function(t){if(this===t)return!0;if(!(t instanceof HttpResponseContainer))return!1;var n=t instanceof HttpResponseContainer?t:THROW_CCE();return!!this.k29_1.equals(n.k29_1)&&!!equals(this.l29_1,n.l29_1)},protoOf(HttpStatement$execute$slambda).m2v=function(t,n){var i=this.i2g(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpStatement$execute$slambda).ck=function(t,n){return this.m2v(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(HttpStatement$execute$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=save(this.l2v_1.l2a(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t.d26();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(HttpStatement$execute$slambda).i2g=function(t,n){var i=new HttpStatement$execute$slambda(n);return i.l2v_1=t,i},protoOf($executeCOROUTINE$13).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=13,this.hj_1=1;continue t;case 1:if(this.ij_1=12,this.hj_1=2,(t=this.v2v_1.c2w(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.y2v_1=t,this.hj_1=3;continue t;case 3:this.hj_1=4;continue t;case 4:if(this.ij_1=10,this.hj_1=5,(t=this.w2v_1(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:this.z2v_1=t,this.hj_1=6;continue t;case 6:if(this.a2w_1=this.z2v_1,this.hj_1=7,(t=this.v2v_1.d2w(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:return this.a2w_1;case 8:if(this.hj_1=9,(t=this.v2v_1.d2w(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 9:this.x2v_1=Unit_getInstance(),this.ij_1=13,this.hj_1=15;continue t;case 10:if(this.ij_1=12,this.b2w_1=this.kj_1,this.hj_1=11,(t=this.v2v_1.d2w(this.y2v_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 11:throw this.b2w_1;case 12:if(this.ij_1=13,this.kj_1 instanceof CancellationException)throw unwrapCancellationException(this.kj_1);throw this.kj_1;case 13:throw this.kj_1;case 14:this.ij_1=13,this.hj_1=15;continue t;case 15:return this.x2v_1}}catch(t){var n=t;if(13===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf($executeUnsafeCOROUTINE$14).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=4,this.hj_1=1;continue t;case 1:if(this.ij_1=3,this.o2w_1=(new HttpRequestBuilder).b2d(this.m2w_1.b2v_1),this.hj_1=2,(t=this.m2w_1.c2v_1.f28(this.o2w_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t.d26();case 3:if(this.ij_1=4,this.kj_1 instanceof CancellationException)throw unwrapCancellationException(this.kj_1);throw this.kj_1;case 4:throw this.kj_1;case 5:this.ij_1=4,this.hj_1=6;continue t;case 6:return this.n2w_1}}catch(t){var n=t;if(4===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf($cleanupCOROUTINE$15).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=4;var n=ensureNotNull(this.y2w_1.ok().y5(Key_getInstance()));this.z2w_1=isInterface(n,CompletableJob)?n:THROW_CCE(),this.z2w_1.oq(),this.ij_1=1,cancel_1(this.y2w_1.n29()),this.ij_1=4,this.hj_1=2;continue t;case 1:if(this.ij_1=4,this.kj_1 instanceof Error){this.a2x_1=this.kj_1,this.hj_1=2;continue t}throw this.kj_1;case 2:if(this.ij_1=4,this.hj_1=3,(t=this.z2w_1.pq(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:return Unit_getInstance();case 4:throw this.kj_1}}catch(t){var i=t;if(4===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(HttpStatement).b2x=function(t,n){var i=new $executeCOROUTINE$13(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpStatement).c2x=function(t){return this.b2x(HttpStatement$execute$slambda_0(null),t)},protoOf(HttpStatement).c2w=function(t){var n=new $executeUnsafeCOROUTINE$14(this,t);return n.jj_1=Unit_getInstance(),n.kj_1=null,n.qj()},protoOf(HttpStatement).d2w=function(t,n){var i=new $cleanupCOROUTINE$15(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(HttpStatement).toString=function(){return"HttpStatement["+this.b2v_1.c27_1+"]"},protoOf(observable$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(observable$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(observable$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=15,this.hj_1=1;continue t;case 1:this.q2x_1=get_ByteArrayPool(),this.r2x_1=this.q2x_1.p1f(),this.hj_1=2;continue t;case 2:this.hj_1=3;continue t;case 3:this.ij_1=14;var n=this.l2x_1;this.t2x_1=null==n?new Long(-1,-1):n,this.u2x_1=new Long(0,0),this.hj_1=4;continue t;case 4:if(this.m2x_1.f19()){this.hj_1=8;continue t}if(this.hj_1=5,(t=readAvailable(this.m2x_1,this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.v2x_1=t,this.hj_1=6,(t=this.o2x_1.u1e().j1e(this.r2x_1,0,this.v2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var i=this.u2x_1;if(this.u2x_1=i.o7(toLong(this.v2x_1)),this.hj_1=7,(t=this.n2x_1(this.u2x_1,this.t2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:this.hj_1=4;continue t;case 8:if(this.w2x_1=this.m2x_1.p18(),this.o2x_1.u1e().iy(this.w2x_1),null==this.w2x_1&&this.u2x_1.equals(new Long(0,0))){if(this.hj_1=9,(t=this.n2x_1(this.u2x_1,this.t2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=10;continue t;case 9:this.hj_1=10;continue t;case 10:this.s2x_1=Unit_getInstance(),this.ij_1=15,this.hj_1=11;continue t;case 11:this.q2x_1.u1h(this.r2x_1),this.p2x_1=Unit_getInstance(),this.hj_1=13;continue t;case 12:this.q2x_1.u1h(this.r2x_1),this.hj_1=13;continue t;case 13:return Unit_getInstance();case 14:this.ij_1=15;var e=this.kj_1;throw this.q2x_1.u1h(this.r2x_1),e;case 15:throw this.kj_1}}catch(t){var r=t;if(15===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(observable$slambda).k2b=function(t,n){var i=new observable$slambda(this.l2x_1,this.m2x_1,this.n2x_1,n);return i.o2x_1=t,i},protoOf(EmptyContent).h23=function(){return this.a2y_1},protoOf(EmptyContent).toString=function(){return"EmptyContent"},protoOf(Js).b2y=function(t){var n=new HttpClientEngineConfig;return t(n),new JsClientEngine(n)},protoOf(Js).g28=function(t){return this.b2y(t)},protoOf($executeCOROUTINE$16).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=6,this.hj_1=1,(t=callContext(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.a2z_1=t,this.b2z_1=this.z2y_1.h2c_1.w1m(get_CLIENT_CONFIG()),isUpgradeRequest(this.z2y_1)){if(this.hj_1=5,(t=executeWebSocketRequest(this.y2y_1,this.z2y_1,this.a2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.hj_1=2;continue t;case 2:if(this.c2z_1=GMTDate(),this.hj_1=3,(t=toRaw(this.z2y_1,this.b2z_1,this.a2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:if(this.d2z_1=t,this.hj_1=4,(t=commonFetch(this.z2y_1.c2c_1.toString(),this.d2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:var n=t,i=new HttpStatusCode(n.status,n.statusText),e=mapToKtor(n.headers),r=Companion_getInstance_3().v1y_1,s=readBody(CoroutineScope_0(this.a2z_1),n);return new HttpResponseData(i,this.c2z_1,e,r,s,this.a2z_1);case 5:return t;case 6:throw this.kj_1}}catch(t){var o=t;if(6===this.ij_1)throw o;this.hj_1=this.ij_1,this.kj_1=o}},protoOf($executeWebSocketRequestCOROUTINE$17).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=4,this.n2y_1=GMTDate(),this.o2y_1=this.l2y_1.c2c_1.toString(),this.p2y_1=createWebSocket(this.k2y_1,this.o2y_1,this.l2y_1.e2c_1),this.ij_1=2,this.hj_1=1,(t=awaitConnection(this.p2y_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ij_1=4,this.hj_1=3;continue t;case 2:if(this.ij_1=4,this.kj_1 instanceof Error){var n=this.kj_1;throw cancel_3(this.m2y_1,CancellationException_init_$Create$_0("Failed to connect to "+this.o2y_1,n)),n}throw this.kj_1;case 3:this.ij_1=4;var i=new JsWebSocketSession(this.m2y_1,this.p2y_1);return new HttpResponseData(Companion_getInstance_1().f1z_1,this.n2y_1,Companion_getInstance_4().f1u_1,Companion_getInstance_3().v1y_1,i,this.m2y_1);case 4:throw this.kj_1}}catch(t){var e=t;if(4===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},protoOf(JsClientEngine).q27=function(){return this.h2z_1},protoOf(JsClientEngine).r2d=function(){return this.i2z_1},protoOf(JsClientEngine).j2c=function(){return this.j2z_1},protoOf(JsClientEngine).p2d=function(t,n){var i=new $executeCOROUTINE$16(this,t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(toRaw$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(toRaw$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(toRaw$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=2,this.hj_1=1,(t=this.h30_1.l23(this.i30_1.u1e(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_getInstance();case 2:throw this.kj_1}}catch(t){var n=t;if(2===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},protoOf(toRaw$slambda).k2b=function(t,n){var i=new toRaw$slambda(this.h30_1,n);return i.i30_1=t,i},protoOf($toRawCOROUTINE$18).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=4,this.w2z_1={},mergeHeaders(this.t2z_1.e2c_1,this.t2z_1.f2c_1,toRaw$lambda(this.w2z_1)),this.x2z_1=this.t2z_1.f2c_1,this.x2z_1 instanceof ByteArrayContent){this.y2z_1=this.x2z_1.n23(),this.hj_1=3;continue t}if(this.x2z_1 instanceof ReadChannelContent){if(this.hj_1=2,(t=this.x2z_1.j23().l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.x2z_1 instanceof WriteChannelContent){this.hj_1=1;var n=GlobalScope_getInstance();if((t=writer(n,this.v2z_1,VOID,toRaw$slambda_0(this.x2z_1,null)).u1e().l1e(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.y2z_1=null,this.hj_1=3;continue t;case 1:var i=t;this.y2z_1=readBytes(i),this.hj_1=3;continue t;case 2:var e=t;this.y2z_1=readBytes(e),this.hj_1=3;continue t;case 3:var r=this.y2z_1;return buildObject(toRaw$lambda_0(this.t2z_1,this.w2z_1,this.u2z_1,r));case 4:throw this.kj_1}}catch(t){var s=t;if(4===this.ij_1)throw s;this.hj_1=this.ij_1,this.kj_1=s}},protoOf(channelFromStream$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(channelFromStream$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(channelFromStream$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,this.t30_1=this.r30_1.getReader(),this.hj_1=1;continue t;case 1:if(this.ij_1=5,this.hj_1=2,(t=readChunk(this.t30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.u30_1=t,null==this.u30_1){this.ij_1=6,this.hj_1=8;continue t}this.v30_1=this.u30_1,this.hj_1=3;continue t;case 3:if(this.w30_1=this.v30_1,this.hj_1=4,(t=writeFully(this.s30_1.u1e(),asByteArray(this.w30_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:this.ij_1=6,this.hj_1=7;continue t;case 5:if(this.ij_1=6,this.kj_1 instanceof Error){var n=this.kj_1;throw this.t30_1.cancel(n),n}throw this.kj_1;case 6:throw this.kj_1;case 7:this.ij_1=6,this.hj_1=1;continue t;case 8:return Unit_getInstance()}}catch(t){var i=t;if(6===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},protoOf(channelFromStream$slambda).k2b=function(t,n){var i=new channelFromStream$slambda(this.r30_1,n);return i.s30_1=t,i},protoOf(readBodyNode$slambda).j2b=function(t,n){var i=this.k2b(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(readBodyNode$slambda).ck=function(t,n){return this.j2b(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(readBodyNode$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6;var n,i=this.f31_1.body;if(null==i)throw IllegalStateException_init_$Create$("Fail to get body");n=i,this.h31_1=n,this.i31_1=Channel(1),this.h31_1.on("data",readBodyNode$slambda$lambda(this.i31_1,this.h31_1)),this.h31_1.on("error",readBodyNode$slambda$lambda_0(this.i31_1,this.g31_1)),this.h31_1.on("end",readBodyNode$slambda$lambda_1(this.i31_1)),this.ij_1=5,this.j31_1=this.i31_1.d(),this.hj_1=1;continue t;case 1:if(this.hj_1=2,(t=this.j31_1.cx(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(!t){this.hj_1=4;continue t}if(this.k31_1=this.j31_1.f(),this.hj_1=3,(t=writeFully(this.g31_1.u1e(),this.k31_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:this.h31_1.resume(),this.hj_1=1;continue t;case 4:this.ij_1=6,this.hj_1=7;continue t;case 5:if(this.ij_1=6,this.kj_1 instanceof Error){var e=this.kj_1;throw this.h31_1.destroy(e),e}throw this.kj_1;case 6:throw this.kj_1;case 7:return this.ij_1=6,Unit_getInstance()}}catch(t){var r=t;if(6===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},protoOf(readBodyNode$slambda).k2b=function(t,n){var i=new readBodyNode$slambda(this.f31_1,n);return i.g31_1=t,i},protoOf(JsWebSocketSession$slambda).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=Unit_getInstance(),i.kj_1=null,i.qj()},protoOf(JsWebSocketSession$slambda).ck=function(t,n){return this.n1f(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(JsWebSocketSession$slambda).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=10,this.d32_1=this.b32_1.p31_1,this.hj_1=1;continue t;case 1:this.f32_1=null,this.hj_1=2;continue t;case 2:this.hj_1=3;continue t;case 3:this.ij_1=9,this.ij_1=8,this.h32_1=this.d32_1.d(),this.hj_1=4;continue t;case 4:if(this.hj_1=5,(t=this.h32_1.cx(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(!t){this.hj_1=6;continue t}var n=this.h32_1.f();switch(n.q24_1.l6_1){case 0:var i=n.r24_1;this.b32_1.m31_1.send(String_0(i));break;case 1:var e=n.r24_1,r=e instanceof Int8Array?e:THROW_CCE(),s=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength|0);this.b32_1.m31_1.send(s);break;case 2:var o;n:do{var u=new BytePacketBuilder;try{writeFully_0(u,n.r24_1),o=u.f1c();break n}catch(t){if(t instanceof Error){var a=t;throw u.vq(),a}throw t}}while(0);var h=o,_=readShort(h),l=h.v1i();this.b32_1.n31_1.lq(new CloseReason(_,l)),isReservedStatusCode(_,this.b32_1)?this.b32_1.m31_1.close():this.b32_1.m31_1.close(_,l)}this.hj_1=4;continue t;case 6:this.g32_1=Unit_getInstance(),this.ij_1=10,this.hj_1=7;continue t;case 7:cancelConsumed(this.d32_1,this.f32_1),this.e32_1=Unit_getInstance(),this.hj_1=12;continue t;case 8:if(this.ij_1=9,this.kj_1 instanceof Error){var f=this.kj_1;throw this.f32_1=f,f}throw this.kj_1;case 9:this.ij_1=10;var c=this.kj_1;throw cancelConsumed(this.d32_1,this.f32_1),c;case 10:throw this.kj_1;case 11:cancelConsumed(this.d32_1,this.f32_1),this.hj_1=12;continue t;case 12:return Unit_getInstance()}}catch(t){var v=t;if(10===this.ij_1)throw v;this.hj_1=this.ij_1,this.kj_1=v}},protoOf(JsWebSocketSession$slambda).o1f=function(t,n){var i=new JsWebSocketSession$slambda(this.b32_1,n);return i.c32_1=t,i},protoOf(JsWebSocketSession).ok=function(){return this.l31_1},protoOf(HttpClientEngineBase).j2c=get_supportedCapabilities,protoOf(HttpClientEngineBase).r27=install,protoOf(KtorCallContextElement).y5=get,protoOf(KtorCallContextElement).e6=fold,protoOf(KtorCallContextElement).d6=minusKey,protoOf(KtorCallContextElement).f6=plus,protoOf(HttpRequest$1).ok=get_coroutineContext,protoOf(JsClientEngine).r27=install,_.$_$=_.$_$||{},_.$_$.a=bodyAsText,_.$_$.b=Plugin_getInstance_4,_.$_$.c=set_expectSuccess,_.$_$.d=HttpRequestBuilder,_.$_$.e=url,_.$_$.f=HttpStatement,_.$_$.g=HttpClient_1,_},__WEBPACK_AMD_DEFINE_ARRAY__=[exports,__webpack_require__(744),__webpack_require__(646),__webpack_require__(781),__webpack_require__(868),__webpack_require__(246),__webpack_require__(538),__webpack_require__(813),__webpack_require__(524)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},246:function(t,n,i){var e,r,s;r=[n,i(646),i(744),i(781)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r=n.$_$.q,s=i.$_$.l9,o=(i.$_$.ng,i.$_$.ua),u=e.$_$.d,a=i.$_$.o9,h=i.$_$.hf,_=i.$_$.tf,l=i.$_$.u4,f=i.$_$.ta;function c(){}function v(){this.t23_1=new u}function w(){}return o(c,"HandlerRegistration",s,r),o(v,"Events",s),o(w,"EventDefinition",s),f(v).u23=function(t,n){var i=null,e=this.t23_1.g2(t);if(null==e);else for(var r=e.hs_1;!a(r,e);){if(r instanceof c){var s=r;try{var o=s.y23_1;("function"==typeof o?o:h())(n)}catch(t){if(!(t instanceof Error))throw t;var u,f=t;null==i?u=null:(_(i,f),u=l()),null==u&&(i=f,l())}}r=r.hs_1}if(null!=i)throw i},t.$_$=t.$_$||{},t.$_$.a=w,t.$_$.b=v,t})?e.apply(n,r):e)||(t.exports=s)},813:function(t,n,i){var e,r,s;r=[n,i(744),i(538),i(781)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I=Math.imul,A=n.$_$.ng,T=n.$_$.e1,D=i.$_$.f,M=i.$_$.k,N=n.$_$.u4,R=i.$_$.n,P=i.$_$.o,L=i.$_$.m,F=n.$_$.h9,U=n.$_$.m2,H=n.$_$.jc,V=n.$_$.i9,B=n.$_$.qe,Y=n.$_$.o9,W=n.$_$.ya,G=n.$_$.ad,K=n.$_$.r2,J=n.$_$.q2,X=n.$_$.d1,Z=n.$_$.j9,Q=n.$_$.k9,tt=n.$_$.va,nt=i.$_$.t,it=n.$_$.we,et=n.$_$.l1,rt=n.$_$.f9,st=n.$_$.ta,ot=n.$_$.l9,ut=n.$_$.ua,at=n.$_$.p2,ht=n.$_$.ma,_t=n.$_$.s2,lt=n.$_$.j7,ft=n.$_$.k7,ct=n.$_$.q5,vt=n.$_$.k,wt=n.$_$.t2,dt=n.$_$.f8,pt=n.$_$.r7,mt=n.$_$.i7,gt=n.$_$.e7,$t=n.$_$.i6,yt=n.$_$.ra,bt=n.$_$.rc,kt=n.$_$.x4,jt=n.$_$.ea,xt=n.$_$.wc,zt=n.$_$.c7,Et=n.$_$.vc,Ct=n.$_$.hf,St=n.$_$.aa,qt=n.$_$.le,Ot=n.$_$.lc,It=n.$_$.sa,At=n.$_$.l7,Tt=n.$_$.t9,Dt=n.$_$.u9,Mt=i.$_$.e,Nt=n.$_$.xe,Rt=i.$_$.l,Pt=n.$_$.z6,Lt=n.$_$.fd,Ft=n.$_$.sc,Ut=n.$_$.cd,Ht=e.$_$.q,Vt=n.$_$.k6,Bt=e.$_$.p,Yt=e.$_$.o,Wt=e.$_$.s,Gt=e.$_$.r,Kt=n.$_$.j6,Jt=n.$_$.vd,Xt=n.$_$.pb,Zt=n.$_$.h,Qt=n.$_$.cg,tn=n.$_$.lg,nn=n.$_$.l,en=n.$_$.m5,rn=n.$_$.o2,sn=n.$_$.q1,on=n.$_$.ae,un=n.$_$.f7,an=n.$_$.fb,hn=n.$_$.t,_n=n.$_$.v9,ln=n.$_$.bd,fn=n.$_$.nd,cn=n.$_$.g9,vn=n.$_$.kd,wn=n.$_$.d8,dn=n.$_$.p6,pn=n.$_$.v6,mn=n.$_$.r1,gn=e.$_$.x,$n=n.$_$.tc,yn=n.$_$.h6,bn=n.$_$.ye,kn=n.$_$.w1,jn=n.$_$.uc,xn=n.$_$.yd,zn=n.$_$.d7,En=e.$_$.y,Cn=e.$_$.v,Sn=e.$_$.t,qn=n.$_$.md,On=n.$_$.k5,In=n.$_$.x6,An=n.$_$.kg,Tn=n.$_$.dg,Dn=n.$_$.c,Mn=n.$_$.ub,Nn=n.$_$.s9,Rn=n.$_$.pc,Pn=i.$_$.j,Ln=n.$_$.wa,Fn=n.$_$.rd,Un=e.$_$.c;function Hn(){return ui(),r}function Vn(){return ui(),s}function Bn(){return ui(),o}function Yn(){return ui(),a}function Wn(t,n){n=n!==A&&n,ui();var i,e,r=T();return Zn(M(D().e1j_1.i1j(),t),(i=r,e=n,function(t){return Hn().n(t)||(ui(),h).n(t)?(i.k7(ht(t)),N()):e&&t===tt(32)?(i.k7(U(43)),N()):(i.l8(Qn(t)),N()),N()})),r.toString()}function Gn(t,n,i,e){return n=n===A?0:n,i=i===A?t.length:i,e=e===A?D().e1j_1:e,ui(),ti(t,n,i,!1,e)}function Kn(t,n,i,e){n=n!==A&&n,i=i!==A&&i,e=e===A?D().e1j_1:e,ui();var r,s,o,a=T();return Zn(M(e.i1j(),t),(r=i,s=a,o=n,function(t){return t===tt(32)?r?(s.k7(U(43)),N()):(s.l8("%20"),N()):Hn().n(t)||!o&&(ui(),u).n(t)?(s.k7(ht(t)),N()):(s.l8(Qn(t)),N()),N()})),a.toString()}function Jn(t,n,i,e,r){return n=n===A?0:n,i=i===A?t.length:i,e=e!==A&&e,r=r===A?D().e1j_1:r,ui(),ti(t,n,i,e,r)}function Xn(t){return ui(),function(t,n){ui();for(var i=T(),e=D().e1j_1,r=0;rs.n1a_1;)n(s.v1g());i=!1;var o=P(t,r);if(null==o)break t;r=o,i=!0}}finally{i&&L(t,r)}}else N()}function Qn(t){ui();var n=255&t,i=F(3);return i[0]=U(37),i[1]=ni(n>>4),i[2]=ni(15&n),H(i)}function ti(t,n,i,e,r){ui();var s=n;if(s255?o/3|0:o);e>n&&u.ig(t,n,e);for(var a=e,h=null;a=i){var f=a,c=Z(t);throw new ei("Incomplete trailing HEX escape: "+W(Q(t,f,c))+", in "+t+" at "+a)}var v=ri(V(t,a+1|0)),w=ri(V(t,a+2|0));if(-1===v||-1===w)throw new ei("Wrong HEX escape: %"+new B(V(t,a+1|0))+new B(V(t,a+2|0))+", in "+t+", at "+a);var d=l;l=d+1|0,h[d]=tt(I(v,16)+w|0),a=a+3|0}u.l8(nt(h,0,l,s))}else u.k7(_),a=a+1|0}return u.toString()}function ei(t){et(t,this),rt(this,ei)}function ri(t){ui();var n=t;return U(48)<=n&&n<=U(57)?at(t,U(48)):U(65)<=n&&n<=U(70)?at(t,U(65))+10|0:U(97)<=n&&n<=U(102)?at(t,U(97))+10|0:-1}function si(t){return ui(),Wn(t,!0)}function oi(t){return function(n){return t.l8(Qn(n)),N()}}function ui(){if(_);else{_=!0;for(var t=ft(lt(_t(U(97),U(122)),_t(U(65),U(90))),_t(U(48),U(57))),n=vt(ct(t,10)),i=t.d();i.e();){var e,l,f=i.f().j7_1;l=wt(f),e=tt(l),n.a(e)}r=dt(n),s=dt(ft(lt(_t(U(97),U(122)),_t(U(65),U(90))),_t(U(48),U(57)))),o=dt(ft(lt(_t(U(97),U(102)),_t(U(65),U(70))),_t(U(48),U(57))));for(var c=pt([new B(U(58)),new B(U(47)),new B(U(63)),new B(U(35)),new B(U(91)),new B(U(93)),new B(U(64)),new B(U(33)),new B(U(36)),new B(U(38)),new B(U(39)),new B(U(40)),new B(U(41)),new B(U(42)),new B(U(44)),new B(U(59)),new B(U(61)),new B(U(45)),new B(U(46)),new B(U(95)),new B(U(126)),new B(U(43))]),v=vt(ct(c,10)),w=c.d();w.e();){var d,p,m=w.f().j7_1;p=wt(m),d=tt(p),v.a(d)}u=v,a=pt([new B(U(58)),new B(U(64)),new B(U(33)),new B(U(36)),new B(U(38)),new B(U(39)),new B(U(40)),new B(U(41)),new B(U(42)),new B(U(43)),new B(U(44)),new B(U(59)),new B(U(61)),new B(U(45)),new B(U(46)),new B(U(95)),new B(U(126))]),mt(Vn(),pt([new B(U(33)),new B(U(35)),new B(U(36)),new B(U(38)),new B(U(43)),new B(U(45)),new B(U(46)),new B(U(94)),new B(U(95)),new B(U(96)),new B(U(124)),new B(U(126))]));for(var g=gt([new B(U(45)),new B(U(46)),new B(U(95)),new B(U(126))]),$=vt(ct(g,10)),y=g.d();y.e();){var b,k,j=y.f().j7_1;k=wt(j),b=tt(k),$.a(b)}h=$}}function ai(t,n,i){return function(t,n,i,e){return i=i===A?$t():i,ci.call(e,t,n,t+"/"+n,i),e}(t,n,i,yt(st(ci)))}function hi(){l=this,this.p1s_1=ai("*","*")}function _i(){return null==l&&new hi,l}function li(){f=this,this.u1s_1=ai("application","*"),this.v1s_1=ai("application","atom+xml"),this.w1s_1=ai("application","cbor"),this.x1s_1=ai("application","json"),this.y1s_1=ai("application","hal+json"),this.z1s_1=ai("application","javascript"),this.a1t_1=ai("application","octet-stream"),this.b1t_1=ai("application","font-woff"),this.c1t_1=ai("application","rss+xml"),this.d1t_1=ai("application","xml"),this.e1t_1=ai("application","xml-dtd"),this.f1t_1=ai("application","zip"),this.g1t_1=ai("application","gzip"),this.h1t_1=ai("application","x-www-form-urlencoded"),this.i1t_1=ai("application","pdf"),this.j1t_1=ai("application","vnd.openxmlformats-officedocument.spreadsheetml.sheet"),this.k1t_1=ai("application","vnd.openxmlformats-officedocument.wordprocessingml.document"),this.l1t_1=ai("application","vnd.openxmlformats-officedocument.presentationml.presentation"),this.m1t_1=ai("application","protobuf"),this.n1t_1=ai("application","wasm"),this.o1t_1=ai("application","problem+json"),this.p1t_1=ai("application","problem+xml")}function fi(){c=this,this.q1t_1=ai("text","*"),this.r1t_1=ai("text","plain"),this.s1t_1=ai("text","css"),this.t1t_1=ai("text","csv"),this.u1t_1=ai("text","html"),this.v1t_1=ai("text","javascript"),this.w1t_1=ai("text","vcard"),this.x1t_1=ai("text","xml"),this.y1t_1=ai("text","event-stream")}function ci(t,n,i,e){_i(),e=e===A?$t():e,mi.call(this,i,e),this.b1u_1=t,this.c1u_1=n}function vi(t){et("Bad Content-Type format: "+t,this),rt(this,vi)}function wi(t){var n,i=t.e1u("charset");if(null==i)n=null;else{var e;try{e=Mt().f1m(i)}catch(t){if(!(t instanceof Nt))throw t;e=null}n=e}return n}function di(){w=this}function pi(){return null==w&&new di,w}function mi(t,n){pi(),n=n===A?$t():n,this.k1s_1=t,this.l1s_1=n}function gi(t){if(yi(),0===Z(t))return!0;if(function(t){if(yi(),t.length<2)return!1;if(!Y(new B(Ft(t)),new B(U(34)))||!Y(new B(Lt(t)),new B(U(34))))return!1;var n=1;t:do{var i=Et(t,U(34),n);if(i===Ut(t))break t;for(var e=0,r=i-1|0;Y(new B(V(t,r)),new B(U(92)));)e=e+1|0,r=r-1|0;if(0==(e%2|0))return!1;n=i+1|0}while(nUt(t))r=ne().g21_1;else{ne();var s=ee();(function(t,n,i,e,r){var s=0,o=i,u=-1,a=i,h=Ut(n);if(a<=h)do{var _=a;if(a=a+1|0,s===e)return N();var l=V(n,_);Y(new B(l),new B(U(38)))?(ae(t,n,o,u,_,r),o=_+1|0,u=-1,s=s+1|0):Y(new B(l),new B(U(61)))&&-1===u&&(u=_)}while(_!==h);if(s===e)return N();ae(t,n,o,u,n.length,r)})(s,t,n,i,e),r=s.f1c()}return r}function ae(t,n,i,e,r,s){if(-1===e){var o=he(i,r,n),u=_e(o,r,n);if(u>o){var a=s?Jn(n,o,u):n.substring(o,u);t.u1o(a,$t())}return N()}var h=he(i,e,n),_=_e(h,e,n);if(_>h){var l=s?Jn(n,h,_):n.substring(h,_),f=he(e+1|0,r,n),c=_e(f,r,n),v=s?Jn(n,f,c,!0):n.substring(f,c);t.x1o(l,v)}}function he(t,n,i){for(var e=t;et&&ln(V(i,e-1|0));)e=e-1|0;return e}function le(t){var n=t.k21_1;if(Z(n)>0||"file"===t.j21_1.t21_1)return N();t.k21_1=ce().l22_1.w21_1,t.j21_1.equals(Ce().m22_1)&&(t.j21_1=ce().l22_1.v21_1),0===t.l21_1&&(t.l21_1=ce().l22_1.x21_1)}function fe(){x=this,this.l22_1=function(t){return be(new ve,t)}(function(t){var n,i;if(Un().d1s_1){var e=(i="",(i="undefined"!=typeof window?window.location.origin:self.location.origin)&&"null"!=i?i:"http://localhost");n=null!=e&&"string"==typeof e?e:Ct()}else n="http://localhost";return n}()).f1c()}function ce(){return null==x&&new fe,x}function ve(t,n,i,e,r,s,o,u,a){ce(),t=t===A?Ce().m22_1:t,n=n===A?"":n,i=i===A?0:i,e=e===A?null:e,r=r===A?null:r,s=s===A?$t():s,o=o===A?ne().g21_1:o,u=u===A?"":u,a=a!==A&&a,this.j21_1=t,this.k21_1=n,this.l21_1=i,this.m21_1=a;var h=e;this.n21_1=null==h?null:Wn(h);var _=r;this.o21_1=null==_?null:Wn(_),this.p21_1=Kn(u);for(var l,f=vt(ct(s,10)),c=s.d();c.e();){var v;v=Xn(c.f()),f.a(v)}l=f,this.q21_1=l,this.r21_1=function(t){var n=ee();return function(t,n){for(var i=n.o1o().d();i.e();){for(var e,r=i.f(),s=n.n1o(r),o=null==s?$t():s,u=Wn(r),a=vt(ct(o,10)),h=o.d();h.e();){var _;_=si(h.f()),a.a(_)}e=a,t.u1o(u,e)}}(n,t),n}(o),this.s21_1=new Te(this.r21_1)}function we(t){var n=T();return n.l8(me(t)),n.l8(t.k21_1),0!==t.l21_1&&t.l21_1!==t.j21_1.u21_1&&(n.l8(":"),n.l8(t.l21_1.toString())),n.toString()}function de(){return z}function pe(t,n){n.b(t.j21_1.t21_1);var i=t.j21_1.t21_1;if("file"===i)return function(t,n,i){t.b("://"),t.b(n),fn(i,U(47))||t.k7(U(47)),t.b(i)}(n,t.k21_1,$e(t)),n;if("mailto"===i)return function(t,n,i){t.b(":"),t.b(n),t.b(i)}(n,me(t),t.k21_1),n;n.b("://"),n.b(we(t)),function(t,n,i,e){!xt(n)&&!qn(n,"/")&&t.k7(U(47)),t.b(n),i.m()&&!e||t.b("?");for(var r=i.p1o(),s=nn(),o=r.d();o.e();){var u,a=o.f(),h=a.r(),_=a.s();if(_.m())u=zn(tn(h,null));else{for(var l=vt(ct(_,10)),f=_.d();f.e();){var c,v=f.f();c=tn(h,v),l.a(c)}u=l}On(s,u)}In(s,t,"&",A,A,A,A,Oe)}(n,$e(t),t.r21_1,t.m21_1);var e=t.p21_1;return Z(e)>0&&(n.k7(U(35)),n.b(t.p21_1)),n}function me(t){var n=T();return qe(n,t.n21_1,t.o21_1),n.toString()}function ge(t,n){t.q21_1=xt(n)?$t():"/"===n?ye():wn(vn(n,cn([U(47)])))}function $e(t){return function(t){if(t.m())return"";if(1===t.g()){var n=dn(t);return 0===Z(n)?"/":dn(t)}return pn(t,"/")}(t.q21_1)}function ye(){return ze(),E}function be(t,n){if(ze(),xt(n))return t;var i;try{i=function(t,n){var i;ze();t:{var e=0,r=Z(n)-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=V(n,s);if(!ln(o)){i=s;break t}}while(e<=r);i=-1}var u,a=i;t:{var h=Z(n)-1|0;if(0<=h)do{var _=h;h=h+-1|0;var l=V(n,_);if(!ln(l)){u=_;break t}}while(0<=h);u=-1}var f=u+1|0,c=function(t,n,i){ze();var e=n,r=-1,s=V(t,e);for(U(97)<=s&&s<=U(122)||U(65)<=s&&s<=U(90)||(r=e);e0){var v=a,w=a+c|0,d=n.substring(v,w);t.j21_1=Ce().z22(d),a=a+(c+1|0)|0}var p=function(t,n,i,e){ze();for(var r=0;(n+r|0)=2)t:for(;;){var m,g=$n(n,gn("@/\\?#"),a),$=null==(m=g>0?g:null)?f:m;if(!($=f)return t.q21_1=Y(new B(V(n,f-1|0)),new B(U(47)))?ye():$t(),t;var O,I,T=t;O=0===p?yn(t.q21_1,1):$t(),T.q21_1=O;var D=$n(n,gn("?#"),a),M=null==(I=D>0?D:null)?f:I;if(M>a){var R,P=a,L=n.substring(P,M);if(1===t.q21_1.g()){var F=dn(t.q21_1);R=0===Z(F)}else R=!1;var H=R?$t():t.q21_1,G="/"===L?ye():vn(L,cn([U(47)])),K=ft(1===p?ye():$t(),G);t.q21_1=ft(H,K),a=M}return a0?s:null)?e:r,u=i+1|0;return ue(n.substring(u,o),A,A,!1).q1o((a=t,function(t,n){return a.r21_1.u1o(t,n),N()})),o;var a}(t,n,a,f)),function(t,n,i,e){if(ze(),i0?o:null)?e:r,a=t;if(s=n.substring(i,u),a.k21_1=s,(u+1|0)?@[\\]{}',s))throw new Ui(t,u)}},st(Li).f1y=function(t){for(var n=0,i=t,e=0,r=i.length;e=0?i:new U(16,0)}return n}(n),s=(e.w(r)<=0?e:r).c8(),o=_t(s);return function(t,n,i,e){var r=Oe(he(ge(t)),!0),s=0,o=!0,u=Di(n,1);if(null!=u){var a=u,h=1;try{t:do{var _,l,f=a,c=f.o1a_1-f.n1a_1|0;if(c>=h)try{var v,w=a,d=e-s|0,p=w.o1a_1-w.n1a_1|0;if(d0&&w.l1g(p),E=0}else E=s0)}finally{o&&Ti(n,a)}}else O();if(s=L)try{var B=P,Y=B.m1a_1,W=B.n1a_1,G=B.o1a_1,K=ke(new Int8Array(Y.g1g_1.buffer,Y.g1g_1.byteOffset+W|0,G-W|0),r,e-s|0);i.b(K.q1m_1),s=s+K.q1m_1.length|0;var J=K.r1m_1;B.h1g(J),L=M=J>0?1:M===ye()?0:M+1|0}finally{var X=P;F=X.o1a_1-X.n1a_1|0}else F=V;if(N=!1,0===F)U=Mi(n,P);else{var Z;if(F0)}finally{N&&Ti(n,P)}}else O()}}(t,n,o,i),o.toString()}function kn(t,n,i,e,r){var s=e;if(s>=r)return 0;var o=0,u=Ni(n,1,null);try{var a;t:for(;;){var h=u,_=h.q1a_1-h.o1a_1|0,l=me(t,i,s,r,h);if(!(l>=0))throw D(I("Check failed."));if(s=s+l|0,o=o+(_-(h.q1a_1-h.o1a_1|0)|0)|0,(a=s>=r?0:0===l?8:1)<=0)break t;u=Ni(n,a,u)}}finally{n.d1g()}return o+function(t,n){var i=1,e=0,r=Ni(n,1,null);try{t:for(;;){var s=r,o=s.q1a_1-s.o1a_1|0;if(i=0,e=e+(o-(s.q1a_1-s.o1a_1|0)|0)|0,!(i>0))break t;r=Ni(n,1,r)}}finally{n.d1g()}return e}(0,n)|0}function jn(){o=this,this.e1g_1=8}function xn(){return null==o&&new jn,o}function zn(t){xn(),this.m1a_1=t,this.n1a_1=0,this.o1a_1=0,this.p1a_1=0;var n;n=this.m1a_1.g1g_1.byteLength,this.q1a_1=n;var i;i=this.m1a_1.g1g_1.byteLength,this.r1a_1=i}function En(t,n){throw new Ce("Unable to discard "+t+" bytes: only "+n+" available for reading")}function Cn(t,n){throw new Ce("Unable to discard "+t+" bytes: only "+n+" available for writing")}function Sn(t,n,i){var e=function(t,n,i,e){return qn.call(e,"Not enough free space to write "+t+" of "+n+" bytes, available "+i+" bytes."),e}(t,n,i,ct(R(qn)));return J(e,Sn),e}function qn(t){wt(t=t===L?"Not enough free space":t,this),J(this,qn)}function On(t,n,i){var e=n.o1a_1-n.n1a_1|0,r=Math.min(e,i);(t.q1a_1-t.o1a_1|0)<=r&&function(t,n){if(((t.q1a_1-t.o1a_1|0)+(t.r1a_1-t.q1a_1|0)|0)0&&t.t1g()}(t,r);var s=t.m1a_1,o=t.o1a_1,u=(t.q1a_1,n.m1a_1),a=n.n1a_1;n.o1a_1,u.y1g(s,a,r,o);var h=r;n.h1g(h);var _=h;return t.i1g(_),_}function In(){return h||(h=!0,u=new An),u}function An(t,n,i){t=t===L?4096:t,n=n===L?1e3:n,i=i===L?te():i,Ne.call(this,n),this.c1h_1=t,this.d1h_1=i}function Tn(t,n,i,e){i=i===L?0:i,e=e===L?n.length-i|0:e;var r=t.m1a_1,s=t.o1a_1,o=t.q1a_1-s|0;if(o=0))throw A(I("length shouldn't be negative: "+i));if(!(i<=(n.o1a_1-n.n1a_1|0)))throw e=n.o1a_1-n.n1a_1|0,A(I("length shouldn't be greater than the source read remaining: "+i+" > "+e));if(!(i<=(t.q1a_1-t.o1a_1|0)))throw r=t.q1a_1-t.o1a_1|0,A(I("length shouldn't be greater than the destination write remaining space: "+i+" > "+r));var s=t.m1a_1,o=t.o1a_1,u=t.q1a_1-o|0;if(u=0))throw A(I("Failed requirement."));if(!(i<=(n.q1a_1-n.o1a_1|0)))throw A(I("Failed requirement."));var s=t.m1a_1,o=t.n1a_1;if((t.o1a_1-o|0)(i=Math.min(e,r)))!function(t,n,i,e){var r=t.v1b_1.p1f(),s=t.v1b_1.p1f();xn(),r.n1g(8),xn(),s.n1g(8),r.c1j(s),s.c1j(n.v1h()),On(r,n,i-e|0),On(s,n,e),Yn(t,r),t.p1i(Rn(s))}(t,n,e,i);else{var s=t.v1b_1.p1f();xn(),s.n1g(8),s.c1j(n.v1h()),On(s,n,e),Yn(t,s)}n.c1g(t.v1b_1)}function Jn(t){if(t.b1c_1)return null;var n=t.m1i();return null==n?(t.b1c_1=!0,null):(function(t,n){var i=Pn(t.w1b_1);if(i===gi().d1e_1){if(Yn(t,n),!t.a1c_1.equals(new U(0,0)))throw D("It should be no tail remaining bytes if current tail is EmptyBuffer");var e=n.q1h(),r=null==e?null:Rn(e);t.p1i(null==r?new U(0,0):r)}else{i.c1j(n);var s=t;s.p1i(s.a1c_1.o7(Rn(n)))}}(t,n),n)}function Xn(t,n,i){for(var e=t,r=n,s=i;;){var o=e.z1b_1-e.y1b_1|0;if(o>=r)return s;var u=s.q1h(),a=null==u?Jn(e):u;if(null==a)return null;var h=a;if(0!==o){var _=On(s,h,r-o|0);e.z1b_1=s.o1a_1;var l,f=e;if(l=f.a1c_1.p7(T(_)),f.p1i(l),h.o1a_1>h.n1a_1?h.m1g(_):(s.c1j(null),s.c1j(h.v1h()),h.c1g(e.v1b_1)),(s.o1a_1-s.n1a_1|0)>=r)return s;var c=r;xn(),c>8&&Zn(0,r)}else s!==gi().d1e_1&&e.b1j(s),s=h}}function Zn(t,n){throw xn(),D("minSize of "+n+" is too big (should be less than 8)")}function Qn(t,n){0==(n.o1a_1-n.n1a_1|0)&&t.b1j(n)}function ti(){l=this}function ni(t,n,i){null==l&&new ti,t=t===L?gi().d1e_1:t,n=n===L?Rn(t):n,i=i===L?gi().b1e_1:i,this.v1b_1=i,this.w1b_1=t,this.x1b_1=t.m1a_1,this.y1b_1=t.n1a_1,this.z1b_1=t.o1a_1;var e,r=this.z1b_1-this.y1b_1|0;e=n.p7(T(r)),this.a1c_1=e,this.b1c_1=!1}function ii(t,n,i,e){var r;i=i===L?0:i;var s=e=e===L?n.length-i|0:e,o=i,u=!0,a=Di(t,1);if(null!=a){var h=a;try{t:for(;;){var _=h,l=s,f=_.o1a_1-_.n1a_1|0,c=Math.min(l,f);if(Mn(_,n,o,c),o=o+c|0,!((s=s-c|0)>0))break t;u=!1;var v=Mi(t,h);if(null==v)break t;h=v,u=!0}}finally{u&&Ti(t,h)}}else O();(r=s)>0&&li(r)}function ei(t,n,i){var e,r,s;i===L?(r=n.q1a_1-n.o1a_1|0,O(),e=r):e=i;var o=i=e,u=0,a=!0,h=Di(t,1);if(null!=h){var _=h;try{t:for(;;){var l=_,f=o,c=l.o1a_1-l.n1a_1|0,v=Math.min(f,c);if(Nn(l,n,v),u=u+v|0,!((o=o-v|0)>0))break t;a=!1;var w=Mi(t,_);if(null==w)break t;_=w,a=!0}}finally{a&&Ti(t,_)}}else O();(s=o)>0&&li(s)}function ri(t){var n=t.f18_1.p1f();return xn(),n.n1g(8),t.b1g(n),n}function si(t,n,i,e){var r=t.h18_1;if(null==r)t.g18_1=n,t.m18_1=0;else{r.c1j(n);var s=t.j18_1;r.j1g(s);var o=t;o.m18_1=o.m18_1+(s-t.l18_1|0)|0}t.h18_1=i;var u=t;u.m18_1=u.m18_1+e|0,t.i18_1=i.m1a_1,t.j18_1=i.o1a_1,t.l18_1=i.n1a_1,t.k18_1=i.q1a_1}function oi(t,n,i,e){n.j1g(t.j18_1);var r=n.o1a_1-n.n1a_1|0,s=i.o1a_1-i.n1a_1|0,o=Ee(),u=s0))break t;u=Ni(t,1,u)}}finally{t.d1g()}}function hi(t,n,i,e){var r=i=i===L?0:i,s=e=e===L?n.length-i|0:e,o=Ni(t,1,null);try{t:for(;;){var u=o,a=s,h=u.q1a_1-u.o1a_1|0,_=Math.min(a,h);if(Tn(u,n,r,_),r=r+_|0,!((s=s-_|0)>0))break t;o=Ni(t,1,o)}}finally{t.d1g()}}function _i(t,n){var i,e;if(n===L){var r,s=t.c1c();if(s.w(T(ht().MAX_VALUE))>0)throw A("Unable to convert to a ByteArray: packet is too big");r=s.c8(),O(),i=r}else i=n;if(0!==(n=i)){var o=new Int8Array(n);ii(t,o,0,n),e=o}else e=Ai();return e}function li(t){throw new Ce("Premature end of stream: expected "+t+" bytes")}function fi(t,n,i){return function(t,n,i){if(0===i)return"";if((n.z1b_1-n.y1b_1|0)>=i){var e,r=Oe(ge(t).g1j_1,!0),s=n.a1i(),o=n.x1b_1.g1g_1;t:try{var u=0===s.n1a_1&&i===o.byteLength?o:new DataView(o.buffer,o.byteOffset+s.n1a_1|0,i);e=r.s1m(u);break t}catch(t){if(t instanceof Error){var a=t.message;throw new fe("Failed to decode bytes: "+(null==a?"no cause provided":a))}throw t}var h=e;return n.h1g(i),h}return function(t,n,i){var e=Oe(he(ge(t)),!0),r=i,s=_t(i);t:try{var o=!0,u=Di(n,6);if(null!=u){var a=u,h=6;try{n:do{var _,l,f=a,c=f.o1a_1-f.n1a_1|0;if(c>=h)try{var v,w=a,d=w.o1a_1-w.n1a_1|0,p=r,m=Math.min(d,p);if(0===w.n1a_1&&w.m1a_1.g1g_1.byteLength===m){var g;i:{var $=w.m1a_1.g1g_1;try{g=e.o1m($,Ie(!0));break i}catch(t){if(t instanceof Error){var y=t.message;throw new fe("Failed to decode bytes: "+(null==y?"no cause provided":y))}throw t}}v=g}else{var b;i:{var k=new Int8Array(w.m1a_1.g1g_1.buffer,w.m1a_1.g1g_1.byteOffset+w.n1a_1|0,m);try{b=e.o1m(k,Ie(!0));break i}catch(t){if(t instanceof Error){var j=t.message;throw new fe("Failed to decode bytes: "+(null==j?"no cause provided":j))}throw t}}v=b}var x=v;s.l8(x),w.h1g(m),h=(r=r-m|0)>0?6:0}finally{var z=a;_=z.o1a_1-z.n1a_1|0}else _=c;if(o=!1,0===_)l=Mi(n,a);else{var E;if(_0)}finally{o&&Ti(n,a)}}else O();if(r>0){var I=!0,A=Di(n,1);if(null!=A){var T=A;try{n:for(;;){var D,M=T,N=M.o1a_1-M.n1a_1|0,R=r,P=Math.min(N,R);if(0===M.n1a_1&&M.m1a_1.g1g_1.byteLength===P)D=e.s1m(M.m1a_1.g1g_1);else{var L;i:{var F=new Int8Array(M.m1a_1.g1g_1.buffer,M.m1a_1.g1g_1.byteOffset+M.n1a_1|0,P);try{L=e.o1m(F,Ie(!0));break i}catch(t){if(t instanceof Error){var U=t.message;throw new fe("Failed to decode bytes: "+(null==U?"no cause provided":U))}throw t}}D=L}var H=D;s.l8(H),M.h1g(P),r=r-P|0,I=!1;var V=Mi(n,T);if(null==V)break n;T=V,I=!0}}finally{I&&Ti(n,T)}}else O()}s.l8(e.p1m());break t}catch(t){if(t instanceof Error){var B=t.message;throw new fe("Failed to decode bytes: "+(null==B?"no cause provided":B))}throw t}if(r>0)throw new Ce("Not enough bytes available: had only "+(i-r|0)+" instead of "+i);return s.toString()}(t,n,i)}((i=i===L?le().e1j_1:i).h1j(),t,n)}function ci(t,n,i,e,r){if(i=i===L?0:i,e=e===L?lt(n):e,(r=r===L?le().e1j_1:r)===le().e1j_1)return function(t,n,i,e){var r=i,s=Ni(t,1,null);try{var o;t:for(;;){var u,a=s,h=Oi(a.m1a_1,n,r,e,a.o1a_1,a.q1a_1),_=bi(h),l=ki(h);if(r=r+(65535&yt(_))|0,u=65535&yt(l),a.i1g(u),(o=0==(65535&yt(_))&&r>>16|0),jt(n)}(t)}function ki(t){return function(t){var n;return n=kt(65535&t),jt(n)}(t)}function ji(t){wt(t,this),J(this,ji)}function xi(t){throw new ji("Expected "+t+" more character bytes")}function zi(t){return 0==(t>>>16|0)}function Ei(t){return t<=1114111}function Ci(t){throw A("Malformed code-point "+t+" found")}function Si(t){return 55232+(t>>>10|0)|0}function qi(t){return 56320+(1023&t)|0}function Oi(t,n,i,e,r,s){xt();var o,u=jt(-1),a=i+(65535&yt(u))|0,h=Math.min(e,a);xt();var _=jt(-1);o=65535&yt(_);var l=mt(s,o),f=r,c=i;t:for(;;){if(f>=l||c>=h)return yi(jt(kt(c-i|0)),jt(kt(f-r|0)));var v=c;c=v+1|0;var w=zt(n,v),d=65535>(w);if(0!=(65408&d))break t;var p=f;f=p+1|0;var m=p,g=$t(d);t.g1g_1.setInt8(m,g)}return function(t,n,i,e,r,s,o,u){var a=i,h=s,_=o-3|0;for(;!((_-h|0)<=0||a>=e);){var l=a;a=l+1|0;var f,c=zt(n,l);if(Ct(c)){var v;if(a!==e&&Et(zt(n,a))){var w=a;a=w+1|0,v=Ii(c,zt(n,w))}else v=63;f=v}else f=gt(c);var d,p=f,m=h,g=p;if(0<=g&&g<=127){var $=$t(p);t.g1g_1.setInt8(m,$),d=1}else if(128<=g&&g<=2047){var y=$t(192|p>>6&31);t.g1g_1.setInt8(m,y),O();var b=m+1|0,k=$t(128|63&p);t.g1g_1.setInt8(b,k),O(),d=2}else if(2048<=g&&g<=65535){var j=$t(224|p>>12&15);t.g1g_1.setInt8(m,j),O();var x=m+1|0,z=$t(128|p>>6&63);t.g1g_1.setInt8(x,z),O();var E=m+2|0,C=$t(128|63&p);t.g1g_1.setInt8(E,C),O(),d=3}else if(65536<=g&&g<=1114111){var S=$t(240|p>>18&7);t.g1g_1.setInt8(m,S),O();var q=m+1|0,I=$t(128|p>>12&63);t.g1g_1.setInt8(q,I),O();var A=m+2|0,T=$t(128|p>>6&63);t.g1g_1.setInt8(A,T),O();var D=m+3|0,M=$t(128|63&p);t.g1g_1.setInt8(D,M),O(),d=4}else Ci(p);h=h+d|0}return h===_?function(t,n,i,e,r,s,o,u){var a=i,h=s;t:for(;;){var _=o-h|0;if(_<=0||a>=e)break t;var l=a;a=l+1|0;var f,c=zt(n,l);if(Ct(c)){var v;if(a!==e&&Et(zt(n,a))){var w=a;a=w+1|0,v=Ii(c,zt(n,w))}else v=63;f=v}else f=gt(c);var d,p=f;if(1<=p&&p<=127?d=1:128<=p&&p<=2047?d=2:2048<=p&&p<=65535?d=3:65536<=p&&p<=1114111?d=4:Ci(p),d>_){a=a-1|0;break t}var m,g=h,$=p;if(0<=$&&$<=127){var y=$t(p);t.g1g_1.setInt8(g,y),m=1}else if(128<=$&&$<=2047){var b=$t(192|p>>6&31);t.g1g_1.setInt8(g,b),O();var k=g+1|0,j=$t(128|63&p);t.g1g_1.setInt8(k,j),O(),m=2}else if(2048<=$&&$<=65535){var x=$t(224|p>>12&15);t.g1g_1.setInt8(g,x),O();var z=g+1|0,E=$t(128|p>>6&63);t.g1g_1.setInt8(z,E),O();var C=g+2|0,S=$t(128|63&p);t.g1g_1.setInt8(C,S),O(),m=3}else if(65536<=$&&$<=1114111){var q=$t(240|p>>18&7);t.g1g_1.setInt8(g,q),O();var I=g+1|0,A=$t(128|p>>12&63);t.g1g_1.setInt8(I,A),O();var T=g+2|0,D=$t(128|p>>6&63);t.g1g_1.setInt8(T,D),O();var M=g+3|0,N=$t(128|63&p);t.g1g_1.setInt8(M,N),O(),m=4}else Ci(p);h=h+m|0}return yi(jt(kt(a-r|0)),jt(kt(h-u|0)))}(t,n,a,e,r,h,o,u):yi(jt(kt(a-r|0)),jt(kt(h-u|0)))}(t,n,c=c-1|0,h,i,f,l,r)}function Ii(t,n){return(gt(t)-55232|0)<<10|gt(n)-56320|0}function Ai(){return Ri(),c}function Ti(t,n){if(Ri(),n===t)return O();if(n.o1a_1>n.n1a_1){var i=n.r1a_1-n.q1a_1|0;xn(),i<8?t.z1i(n):t.y1b_1=n.n1a_1}else t.y1i(n)}function Di(t,n){return Ri(),t.w1i(n)}function Mi(t,n){return Ri(),n===t?t.s1c()?t:null:t.x1i(n)}function Ni(t,n,i){return Ri(),null!=i&&t.d1g(),t.c1i(n)}function Ri(){v||(v=!0,c=new Int8Array(0))}function Pi(t,n,i){M.call(this,i),this.g1k_1=t,this.h1k_1=n}function Li(t,n,i){M.call(this,i),this.u1j_1=t,this.v1j_1=n}function Fi(){this.v17_1=H(null)}function Ui(t,n,i,e){M.call(this,e),this.q1k_1=t,this.r1k_1=n,this.s1k_1=i}function Hi(t,n,i,e){M.call(this,e),this.f1l_1=t,this.g1l_1=n,this.h1l_1=i}function Vi(){Ne.call(this,128)}function Bi(){}function Yi(){}function Wi(t){return function(n){return t.d1m_1=null,null!=n&&(t.yo(function(t){for(var n=t;n instanceof G;){if(at(n,n.cause))return t;var i=n.cause;if(null==i)return n;n=i}return n}(n)),O()),O()}}function Gi(t,n){vn.call(this,t,n),this.d1m_1=null}function Ki(){var t=new Gi(gi().d1e_1,!1);return t.iy(null),t}function Ji(){p=this,this.o1l_1=It(Ki)}function Xi(){return null==p&&new Ji,p}function Zi(){}function Qi(){m=this}function te(){return null==m&&new Qi,m}function ne(t,n,i,e){return i=i===L?0:i,e=e===L?n.byteLength-i|0:e,new re(new DataView(n,i,e))}function ie(){g=this,this.d1j_1=new re(new DataView(new ArrayBuffer(0)))}function ee(){return null==g&&new ie,g}function re(t){ee(),this.g1g_1=t}function se(t,n,i,e,r){!function(t,n,i,e,r){var s=new Int8Array(t,i,e);new Int8Array(n.g1g_1.buffer,n.g1g_1.byteOffset+r|0,e).set(s,0)}(t.buffer,n,i+t.byteOffset|0,e,r)}function oe(){$=this}function ue(){return null==$&&new oe,$}function ae(t){ue(),this.g1j_1=t}function he(t){return t.g1j_1}function _e(){y=this,this.e1j_1=new we("UTF-8"),this.f1j_1=new we("ISO-8859-1")}function le(){return null==y&&new _e,y}function fe(t){Lt(this,t),J(this,fe)}function ce(t){this.g1m_1=t}function ve(t){this.h1m_1=t}function we(t){ae.call(this,t),this.j1m_1=t}function de(t){ve.call(this,t),this.l1m_1=t}function pe(t){ce.call(this,t),this.n1m_1=t}function me(t,n,i,e,r){if(!(i<=e))throw A(I("Failed requirement."));if($e(t).equals(le().f1j_1))return function(t,n,i,e){if(n>=i)return 0;var r=e.m1a_1,s=e.o1a_1,o=e.q1a_1,u=r.e1m(s,o-s|0).g1g_1,a=new Int8Array(u.buffer,u.byteOffset,u.byteLength),h=0,_=n;if(_255&&je(c);var v=h;h=v+1|0;var w=v,d=$t(c);a[w]=d}while(_0;){var a,h=e-o|0,_=u/6|0;a=Math.min(h,_);var l,f=pt(a,1),c=Ct(zt(n,(o+f|0)-1|0)),v=c&&1===f?o+2|0:c?(o+f|0)-1|0:o+f|0;l=I(Ft(n,o,v));var w=s.encode(l);if(w.length>u)break t;xe(r,w),o=v,u=u-w.length|0}return o-i|0}function ge(t){return t.g1m_1}function $e(t){return t.h1m_1}function ye(){return b}function be(t,n){this.q1m_1=t,this.r1m_1=n}function ke(t,n,i){if(0===i)return new be("",0);try{var e=mt(i,t.byteLength),r=n.s1m(t.subarray(0,e));if(r.length<=i)return new be(r,e)}catch(t){}return function(t,n,i){for(var e=mt(i>=268435455?ht().MAX_VALUE:S(i,8),t.byteLength);e>8;){try{var r=n.s1m(t.subarray(0,e));if(r.length<=i)return new be(r,e)}catch(t){}e=e/2|0}for(e=8;e>0;){try{var s=n.s1m(t.subarray(0,e));if(s.length<=i)return new be(s,e)}catch(t){}e=e-1|0}t:try{n.s1m(t);break t}catch(t){if(t instanceof Error){var o=t.message;throw new fe("Failed to decode bytes: "+(null==o?"no cause provided":o))}throw t}throw new fe("Unable to decode buffer")}(t,n,i)}function je(t){throw new fe("The character with unicode point "+t+" couldn't be mapped to ISO-8859-1 character")}function xe(t,n,i,e){i=i===L?0:i,e=e===L?n.byteLength-i|0:e;var r=t.m1a_1,s=t.o1a_1;if((t.q1a_1-s|0)=0))throw A(I("Failed requirement."));if(this.hj_1=1,(t=this.y1d_1.a1e(this.z1d_1,this))===N())return t;continue t;case 1:this.y1d_1.r1c();var n=this.y1d_1.p18();if(null!=n)throw n;return!this.y1d_1.f19()&&this.y1d_1.d19()>=this.z1d_1;case 2:throw this.kj_1}}catch(t){var i=t;if(2===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},R(vn).g1e=function(){return this.g17_1},R(vn).q18=function(){return!(null==this.m17_1.kotlinx$atomicfu$value)},R(vn).d19=function(){return this.k17_1.kotlinx$atomicfu$value},R(vn).e19=function(){var t=4088-this.l17_1.kotlinx$atomicfu$value|0;return Math.max(0,t)},R(vn).f19=function(){return!(t=this,n=t.m17_1.kotlinx$atomicfu$value,null==(null==n?null:n.u17_1)&&(!this.q18()||0!==this.l17_1.kotlinx$atomicfu$value));var t,n},R(vn).p18=function(){var t=this.m17_1.kotlinx$atomicfu$value;return null==t?null:t.u17_1},R(vn).l1a=function(t,n){var i=new rn(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).a1e=function(t,n){var i=new sn(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).h1e=function(){Zt(this)},R(vn).r1c=function(){this.s17_1,function(t,n){Ri();var i=n.g(),e=n.n18();if(null==e)return 0;var r=e;i<=Ee()&&null==r.q1h()&&t.s1i(r)?n.d1i():t.r1i(r)}(this.o17_1,this.t17_1)},R(vn).i1e=function(t,n){var i=new on(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).j1e=function(t,n,i,e){var r=new un(this,t,n,i,e);return r.jj_1=O(),r.kj_1=null,r.qj()},R(vn).e1c=function(t){(function(t,n){var i,e;if(!(n>=0))throw A(I("Can't read negative amount of bytes: "+n));if(t.l17_1.atomicfu$getAndAdd(0|-n),t.i17_1.atomicfu$addAndGet$long(T(n)),t.k17_1.atomicfu$getAndAdd(0|-n),!(t.l17_1.kotlinx$atomicfu$value>=0))throw i="Readable bytes count is negative: "+t.d19()+", "+n+" in "+t,D(I(i));if(!(t.d19()>=0))throw e="Readable bytes count is negative: "+t.d19()+", "+n+" in "+t,D(I(e))})(this,t),this.r17_1.w17()},R(vn).k1e=function(t,n){var i=new an(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).m1e=function(t,n){return this.n1e(t instanceof zn?t:Y(),n)},R(vn).n1e=function(t,n){var i=new _n(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).o1e=function(t,n,i,e){var r=new ln(this,t,n,i,e);return r.jj_1=O(),r.kj_1=null,r.qj()},R(vn).p1e=function(t){var n=new fn(this,t);return n.jj_1=O(),n.kj_1=null,n.qj()},R(vn).g1c=function(t,n){var i=new cn(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(vn).yo=function(t){if(null!=this.p18()||this.q18())return!1;var n=t;return this.iy(null==n?W("Channel cancelled"):n)},R(vn).iy=function(t){var n=null==t?dn():new pn(t);return!!this.m17_1.atomicfu$compareAndSet(null,n)&&(null!=t?(this.o17_1.vq(),this.n17_1.vq(),this.t17_1.vq()):this.h1e(),this.r17_1.q1e(t),!0)},R(vn).r1e=function(t,n){var i,e=this.o17_1.c1c();return e.w(n)<=0?(t.n17_1.s1e(this.o17_1),t.s1a(e.c8()),this.e1c(e.c8()),i=e):i=new U(0,0),i},R(vn).s1a=function(t){(function(t,n){var i;if(!(n>=0))throw A(I("Can't write negative amount of bytes: "+n));if(t.l17_1.atomicfu$getAndAdd(n),t.j17_1.atomicfu$addAndGet$long(T(n)),!(t.l17_1.kotlinx$atomicfu$value>=0))throw i="Readable bytes count is negative: "+t.l17_1.kotlinx$atomicfu$value+", "+n+" in "+t,D(I(i))})(this,t),this.q18()&&(this.n17_1.vq(),function(t){if(t.q18()){var n=t.p18();throw null==n?new wn("Channel "+t+" is already closed"):n}}(this)),(this.g1e()||0===this.e19())&&this.h1e()},R(gn).u1e=function(){return this.w1e_1},R(gn).bm=function(){return this.v1e_1.bm()},R(gn).pk=function(){return this.v1e_1.pk()},R(gn).r=function(){return this.v1e_1.r()},R(gn).cm=function(t){return this.v1e_1.cm(t)},R(gn).ul=function(t){this.v1e_1.ul(t)},R(gn).e6=function(t,n){return this.v1e_1.e6(t,n)},R(gn).y5=function(t){return this.v1e_1.y5(t)},R(gn).ml=function(){return this.v1e_1.ml()},R(gn).ql=function(t,n,i){return this.v1e_1.ql(t,n,i)},R(gn).pl=function(t){return this.v1e_1.pl(t)},R(gn).d6=function(t){return this.v1e_1.d6(t)},R(gn).f6=function(t){return this.v1e_1.f6(t)},R(gn).kl=function(){return this.v1e_1.kl()},R(gn).toString=function(){return"ChannelJob["+this.v1e_1+"]"},R($n).u1e=function(){return this.x1e_1},R($n).ok=function(){return this.y1e_1.ok()},R(yn).n1f=function(t,n){var i=this.o1f(t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(yn).ck=function(t,n){return this.n1f(null!=t&&st(t,Z)?t:Y(),n)},R(yn).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=3,this.h1f_1&&this.i1f_1.t1e(q(this.l1f_1.ok().y5(ot())));var n=new $n(this.l1f_1,this.i1f_1);if(this.m1f_1=st(n,Z)?n:Y(),this.ij_1=2,this.hj_1=1,(t=this.j1f_1(this.m1f_1,this))===N())return t;continue t;case 1:this.ij_1=3,this.hj_1=4;continue t;case 2:if(this.ij_1=3,this.kj_1 instanceof Error){var i=this.kj_1;if(!at(this.k1f_1,ut().ar_1)&&null!=this.k1f_1)throw i;this.i1f_1.yo(i),this.hj_1=4;continue t}throw this.kj_1;case 3:throw this.kj_1;case 4:return this.ij_1=3,O()}}catch(t){var e=t;if(3===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},R(yn).o1f=function(t,n){var i=new yn(this.h1f_1,this.i1f_1,this.j1f_1,this.k1f_1,n);return i.l1f_1=t,i},R(jn).f1g=function(){return gi().d1e_1},R(zn).h1g=function(t){if(0===t)return O();var n=this.n1a_1+t|0;(t<0||n>this.o1a_1)&&En(t,this.o1a_1-this.n1a_1|0),this.n1a_1=n},R(zn).i1g=function(t){var n=this.o1a_1+t|0;(t<0||n>this.q1a_1)&&Cn(t,this.q1a_1-this.o1a_1|0),this.o1a_1=n},R(zn).j1g=function(t){var n=this.q1a_1;if(t=n){if(t===n)return this.o1a_1=t,!1;Cn(t-this.o1a_1|0,this.q1a_1-this.o1a_1|0)}return this.o1a_1=t,!0},R(zn).k1g=function(t){(t<0||t>this.o1a_1)&&En(t-this.n1a_1|0,this.o1a_1-this.n1a_1|0),this.n1a_1!==t&&(this.n1a_1=t)},R(zn).l1g=function(t){var n=this.n1a_1-t|0;n=0))throw A(I("startGap shouldn't be negative: "+t));return this.n1a_1>=t?(this.p1a_1=t,O()):this.n1a_1===this.o1a_1?(t>this.q1a_1&&function(t,n){if(n>t.r1a_1)throw A("Start gap "+n+" is bigger than the capacity "+t.r1a_1);var i;throw i=t.r1a_1-t.q1a_1|0,D("Unable to reserve "+n+" start gap: there are already "+i+" bytes reserved in the end")}(this,t),this.o1a_1=t,this.n1a_1=t,this.p1a_1=t,O()):void function(t,n){var i,e="Unable to reserve "+n+" start gap: ";throw i=t.o1a_1-t.n1a_1|0,D(e+"there are already "+i+" content bytes starting at offset "+t.n1a_1)}(this,t)},R(zn).n1g=function(t){if(!(t>=0))throw A(I("endGap shouldn't be negative: "+t));var n=this.r1a_1-t|0;return n>=this.o1a_1?(this.q1a_1=n,O()):(n<0&&function(t,n){throw A("End gap "+n+" is too big: capacity is "+t.r1a_1)}(this,t),n=0))throw A(I("newReadPosition shouldn't be negative: "+t));if(!(t<=this.n1a_1))throw n="newReadPosition shouldn't be ahead of the read position: "+t+" > "+this.n1a_1,A(I(n));this.n1a_1=t,this.p1a_1>t&&(this.p1a_1=t)},R(zn).u1g=function(t){t.q1a_1=this.q1a_1,t.p1a_1=this.p1a_1,t.n1a_1=this.n1a_1,t.o1a_1=this.o1a_1},R(zn).v1g=function(){var t=this.n1a_1;if(t===this.o1a_1)throw new Ce("No readable bytes available.");return this.n1a_1=t+1|0,this.m1a_1.g1g_1.getInt8(t)},R(zn).w1g=function(t){var n=this.o1a_1;if(n===this.q1a_1)throw new qn("No free space in the buffer to write a byte");this.m1a_1.g1g_1.setInt8(n,t),O(),this.o1a_1=n+1|0},R(zn).x1g=function(){this.r1g(),this.p1g()},R(zn).toString=function(){return"Buffer("+(this.o1a_1-this.n1a_1|0)+" used, "+(this.q1a_1-this.o1a_1|0)+" free, "+(this.p1a_1+(this.r1a_1-this.q1a_1|0)|0)+" reserved of "+this.r1a_1+")"},R(An).e1h=function(){return new $i(this.d1h_1.f1h(this.c1h_1),null,this)},R(An).g1h=function(t){this.d1h_1.h1h(t.m1a_1),R(Ne).l1h.call(this,t),t.m1h()},R(An).l1h=function(t){return this.g1h(t instanceof $i?t:Y())},R(An).n1h=function(t){R(Ne).o1h.call(this,t);var n=t.m1a_1;if(!T(n.g1g_1.byteLength).equals(T(this.c1h_1))){var i,e,r=t.m1a_1;throw e=T(r.g1g_1.byteLength),i="Buffer size mismatch. Expected: "+this.c1h_1+", actual: "+I(e),D(I(i))}if(t===gi().d1e_1)throw D(I("ChunkBuffer.Empty couldn't be recycled"));if(t===xn().f1g())throw D(I("Empty instance couldn't be recycled"));if(0!==t.p1h())throw D(I("Unable to clear buffer: it is still in use."));if(null!=t.q1h())throw D(I("Recycled instance shouldn't be a part of a chain."));if(null!=t.z1f_1)throw D(I("Recycled instance shouldn't be a view or another buffer."))},R(An).o1h=function(t){return this.n1h(t instanceof $i?t:Y())},R(An).r1h=function(t){var n=R(Ne).s1h.call(this,t);return n.t1h(),n.x1g(),n},R(An).s1h=function(t){return this.r1h(t instanceof $i?t:Y())},R(Fn).g=function(){return this.w1h()},R(Fn).sr=function(){return 0===this.w1h()},R(Fn).x1h=function(){},R(Fn).y1h=function(t,n,i){},R(Fn).k7=function(t){var n=R(ui).k7.call(this,t);return n instanceof Fn?n:Y()},R(Fn).b=function(t){var n=R(ui).b.call(this,t);return n instanceof Fn?n:Y()},R(Fn).ig=function(t,n,i){var e=R(ui).ig.call(this,t,n,i);return e instanceof Fn?e:Y()},R(Fn).f1c=function(){var t=this.g(),n=this.n18();return null==n?Vn().z1h_1:new Bn(n,T(t),this.f18_1)},R(Fn).toString=function(){return"BytePacketBuilder("+this.g()+" bytes written)"},R(Bn).m1i=function(){return null},R(Bn).n1i=function(t,n,i){return 0},R(Bn).o1i=function(){},R(Bn).toString=function(){return"ByteReadPacket("+I(this.c1c())+" bytes remaining)"},R(ni).p1d=function(){return!(0!=(this.z1b_1-this.y1b_1|0)||!this.a1c_1.equals(new U(0,0))||!this.b1c_1&&null!=Jn(this))},R(ni).a1i=function(){var t=this.w1b_1;return t.k1g(this.y1b_1),t},R(ni).p1i=function(t){var n;if(!(t.w(new U(0,0))>=0))throw n="tailRemaining shouldn't be negative: "+I(t),A(I(n));this.a1c_1=t},R(ni).c1c=function(){var t;return t=this.z1b_1-this.y1b_1|0,T(t).o7(this.a1c_1)},R(ni).s1c=function(){return this.y1b_1!==this.z1b_1||!this.a1c_1.equals(new U(0,0))},R(ni).vq=function(){var t=this.a1i(),n=gi().d1e_1;t!==n&&(Yn(this,n),this.p1i(new U(0,0)),Ln(t,this.v1b_1))},R(ni).a14=function(){this.vq(),this.b1c_1||(this.b1c_1=!0),this.o1i()},R(ni).n18=function(){var t=this.a1i(),n=gi().d1e_1;return t===n?null:(Yn(this,n),this.p1i(new U(0,0)),t)},R(ni).q1i=function(){var t=this.a1i(),n=t.q1h(),i=gi().d1e_1;if(t===i)return null;if(null==n)Yn(this,i),this.p1i(new U(0,0));else{Yn(this,n);var e,r=this.a1c_1,s=n.o1a_1-n.n1a_1|0;e=r.p7(T(s)),this.p1i(e)}return t.c1j(null),t},R(ni).r1i=function(t){if(t===gi().d1e_1)return O();var n=Rn(t);if(this.w1b_1===gi().d1e_1){var i;Yn(this,t);var e=this.z1b_1-this.y1b_1|0;i=n.p7(T(e)),this.p1i(i)}else{Pn(this.w1b_1).c1j(t);this.p1i(this.a1c_1.o7(n))}},R(ni).s1i=function(t){var n=Pn(this.a1i()),i=t.o1a_1-t.n1a_1|0;if(0===i||(n.q1a_1-n.o1a_1|0)=0))throw A(I("Negative discard is not allowed: "+t));return function(t,n,i){for(var e=n,r=i;;){if(0===e)return r;var s=t.a1j(1);if(null==s)return r;var o=s,u=o.o1a_1-o.n1a_1|0,a=e,h=Math.min(u,a);o.h1g(h);var _=t;_.y1b_1=_.y1b_1+h|0,Qn(t,o),e=e-h|0,r=r+h|0}}(this,t,0)},R(ni).h1g=function(t){if(this.t1i(t)!==t)throw new Ce("Unable to discard "+t+" bytes due to end of packet")},R(ni).u1i=function(t,n){if(0===t&&(0===n||this.p1d()))return"";var i=this.c1c();if(i.w(new U(0,0))>0&&T(n).w(i)>=0)return fi(this,i.c8());var e=mt(pt(t,16),n),r=_t(e);return Wn(this,r,t,n),r.toString()},R(ni).v1i=function(t,n,i){return t=t===L?0:t,n=n===L?ht().MAX_VALUE:n,i===L?this.u1i(t,n):i.u1i.call(this,t,n)},R(ni).w1i=function(t){return Xn(this,t,this.a1i())},R(ni).x1i=function(t){return this.y1i(t)},R(ni).y1i=function(t){return function(t,n,i){for(var e=t,r=n,s=i;;){if(r===s)return Jn(e);var o=r.v1h();if(r.c1g(e.v1b_1),null!=o){if(o.o1a_1>o.n1a_1){Yn(e,o);var u,a=e,h=a.a1c_1,_=o.o1a_1-o.n1a_1|0;return u=h.p7(T(_)),a.p1i(u),o}r=o}else Yn(e,s),e.p1i(new U(0,0)),r=s}}(this,t,gi().d1e_1)},R(ni).z1i=function(t){var n=t.q1h();if(null==n)return Kn(this,t);var i=n,e=t.o1a_1-t.n1a_1|0;xn();var r,s,o=8-(t.r1a_1-t.q1a_1|0)|0,u=Math.min(e,o);if(i.p1a_1u){t.t1g(),this.z1b_1=t.o1a_1;var a;a=this.a1c_1.o7(T(u)),this.p1i(a)}else{Yn(this,i);var h,_=this.a1c_1,l=(i.o1a_1-i.n1a_1|0)-u|0;h=_.p7(T(l)),this.p1i(h),t.v1h(),t.c1g(this.v1b_1)}},R(ni).m1i=function(){var t=this.v1b_1.p1f();try{xn(),t.n1g(8);var n,i=t.o1a_1;n=t.q1a_1-t.o1a_1|0;var e=this.n1i(t.m1a_1,i,n);return 0!==e||(this.b1c_1=!0,t.o1a_1>t.n1a_1)?(t.i1g(e),t):(t.c1g(this.v1b_1),null)}catch(n){if(n instanceof Error){var r=n;throw t.c1g(this.v1b_1),r}throw n}},R(ni).e1i=function(){this.b1c_1||(this.b1c_1=!0)},R(ni).a1j=function(t){var n=this.a1i();return(this.z1b_1-this.y1b_1|0)>=t?n:Xn(this,t,n)},R(ni).b1j=function(t){var n=t.v1h(),i=null==n?gi().d1e_1:n;Yn(this,i);var e,r=this.a1c_1,s=i.o1a_1-i.n1a_1|0;return e=r.p7(T(s)),this.p1i(e),t.c1g(this.v1b_1),i},R(ui).w1h=function(){return this.m18_1+(this.j18_1-this.l18_1|0)|0},R(ui).a1i=function(){var t=this.g18_1;return null==t?gi().d1e_1:t},R(ui).h1e=function(){!function(t){var n=t.n18();if(null==n)return O();var i=n;try{var e=i;t:for(;;){var r,s=e,o=s.n1a_1;r=s.o1a_1-s.n1a_1|0,t.y1h(s.m1a_1,o,r);var u=e.q1h();if(null==u)break t;e=u}}finally{Ln(i,t.f18_1)}}(this)},R(ui).n18=function(){var t=this.g18_1;if(null==t)return null;var n=t,i=this.h18_1;return null==i||i.j1g(this.j18_1),this.g18_1=null,this.h18_1=null,this.j18_1=0,this.k18_1=0,this.l18_1=0,this.m18_1=0,this.i18_1=ee().d1j_1,n},R(ui).b1g=function(t){if(null!=t.q1h())throw D(I("It should be a single buffer chunk."));si(this,t,t,0)},R(ui).b1i=function(t){var n=Pn(t),i=Rn(t),e=n.o1a_1-n.n1a_1|0,r=i.p7(T(e));r.w(T(ht().MAX_VALUE))>=0&&function(t,n){throw A("Long value "+I(t)+" of "+n+" doesn't fit into 32-bit integer")}(r,"total size increase"),si(this,t,n,r.c8())},R(ui).w1g=function(t){var n=this.j18_1;return n=3){var i,e=this.i18_1,r=gt(t),s=r;if(0<=s&&s<=127){var o=$t(r);e.g1g_1.setInt8(n,o),i=1}else if(128<=s&&s<=2047){var u=$t(192|r>>6&31);e.g1g_1.setInt8(n,u),O();var a=n+1|0,h=$t(128|63&r);e.g1g_1.setInt8(a,h),O(),i=2}else if(2048<=s&&s<=65535){var _=$t(224|r>>12&15);e.g1g_1.setInt8(n,_),O();var l=n+1|0,f=$t(128|r>>6&63);e.g1g_1.setInt8(l,f),O();var c=n+2|0,v=$t(128|63&r);e.g1g_1.setInt8(c,v),O(),i=3}else if(65536<=s&&s<=1114111){var w=$t(240|r>>18&7);e.g1g_1.setInt8(n,w),O();var d=n+1|0,p=$t(128|r>>12&63);e.g1g_1.setInt8(d,p),O();var m=n+2|0,g=$t(128|r>>6&63);e.g1g_1.setInt8(m,g),O();var $=n+3|0,y=$t(128|63&r);e.g1g_1.setInt8($,y),O(),i=4}else Ci(r);var b=i;return this.j18_1=n+b|0,this}return function(t,n){t:{var i=t.c1i(3);try{var e,r=i.m1a_1,s=i.o1a_1,o=gt(n),u=o;if(0<=u&&u<=127){var a=$t(o);r.g1g_1.setInt8(s,a),e=1}else if(128<=u&&u<=2047){var h=$t(192|o>>6&31);r.g1g_1.setInt8(s,h),O();var _=s+1|0,l=$t(128|63&o);r.g1g_1.setInt8(_,l),O(),e=2}else if(2048<=u&&u<=65535){var f=$t(224|o>>12&15);r.g1g_1.setInt8(s,f),O();var c=s+1|0,v=$t(128|o>>6&63);r.g1g_1.setInt8(c,v),O();var w=s+2|0,d=$t(128|63&o);r.g1g_1.setInt8(w,d),O(),e=3}else if(65536<=u&&u<=1114111){var p=$t(240|o>>18&7);r.g1g_1.setInt8(s,p),O();var m=s+1|0,g=$t(128|o>>12&63);r.g1g_1.setInt8(m,g),O();var $=s+2|0,y=$t(128|o>>6&63);r.g1g_1.setInt8($,y),O();var b=s+3|0,k=$t(128|63&o);r.g1g_1.setInt8(b,k),O(),e=4}else Ci(o);var j=e;if(i.i1g(j),!(j>=0))throw D(I("The returned value shouldn't be negative"));break t}finally{t.d1g()}}}(this,t),this},R(ui).b=function(t){return null==t?this.ig("null",0,4):this.ig(t,0,lt(t)),this},R(ui).ig=function(t,n,i){return null==t?this.ig("null",n,i):(ci(this,t,n,i,le().e1j_1),this)},R(ui).s1e=function(t){var n=t.n18();if(null==n)return t.vq(),O();var i=this.h18_1;if(null==i)return this.b1i(n),O();oi(this,i,n,t.v1b_1)},R(ui).o18=function(t){var n=this.h18_1;if(null==n)return this.b1i(t),O();oi(this,n,t,this.f18_1)},R(ui).d1c=function(t,n){var i=n;t:for(;i.w(new U(0,0))>0;){var e;e=t.z1b_1-t.y1b_1|0;var r=T(e);if(!(r.w(i)<=0)){var s,o=t.a1j(1);null==o?li(1):s=o;var u=s,a=u.n1a_1;try{ai(this,u,i.c8())}finally{var h=u.n1a_1;if(h=t){var n=this.h18_1;if(null!=n)return n.j1g(this.j18_1),n}return ri(this)},R(ui).d1g=function(){var t=this.h18_1;null==t||(this.j18_1=t.o1a_1,O())},R(ui).d1i=function(){var t=this.a1i();if(t!==gi().d1e_1){if(null!=t.q1h())throw D(I("Check failed."));t.p1g(),xn(),t.n1g(8),this.j18_1=t.o1a_1,this.l18_1=this.j18_1,this.k18_1=t.q1a_1}},R(vi).p1f=function(){return In().p1f()},R(vi).j1j=function(t){In().u1h(t)},R(vi).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R(vi).eo=function(){In().eo()},R(wi).p1f=function(){return gi().d1e_1},R(wi).j1j=function(t){if(t!==gi().d1e_1)throw A(I("Only ChunkBuffer.Empty instance could be recycled."))},R(wi).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R(wi).eo=function(){},R(di).p1f=function(){return new $i(te().f1h(a),null,this)},R(di).j1j=function(t){te().h1h(t.m1a_1)},R(di).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R(pi).p1f=function(){throw bt("This pool doesn't support borrow")},R(pi).j1j=function(t){},R(pi).u1h=function(t){return this.j1j(t instanceof $i?t:Y())},R($i).c1j=function(t){null==t?this.v1h():function(t,n){if(!t.x1f_1.atomicfu$compareAndSet(null,n))throw D("This chunk has already a next chunk.")}(this,t)},R($i).q1h=function(){return this.x1f_1.kotlinx$atomicfu$value},R($i).p1h=function(){return this.y1f_1.kotlinx$atomicfu$value},R($i).v1h=function(){return this.x1f_1.atomicfu$getAndSet(null)},R($i).a1g=function(){var t=this.z1f_1,n=null==t?this:t;n.k1j();var i=new $i(this.m1a_1,n,this.w1f_1);return this.u1g(i),i},R($i).c1g=function(t){if(this.l1j()){var n=this.z1f_1;if(null!=n)this.m1h(),n.c1g(t);else{var i=this.w1f_1;(null==i?t:i).u1h(this)}}},R($i).m1h=function(){if(!this.y1f_1.atomicfu$compareAndSet(0,-1))throw D("Unable to unlink: buffer is in use.");this.v1h(),this.z1f_1=null},R($i).k1j=function(){t:for(var t=this.y1f_1;;){var n=t.kotlinx$atomicfu$value;if(n<=0)throw D("Unable to acquire chunk: it is already released.");var i=n+1|0;if(t.atomicfu$compareAndSet(n,i)){O();break t}}},R($i).t1h=function(){t:for(var t=this.y1f_1;;){var n=t.kotlinx$atomicfu$value;if(n<0)throw D("This instance is already disposed and couldn't be borrowed.");if(n>0)throw D("This instance is already in use but somehow appeared in the pool.");if(t.atomicfu$compareAndSet(n,1)){O();break t}}},R($i).l1j=function(){var t;t:for(var n=this.y1f_1;;){var i=n.kotlinx$atomicfu$value;if(i<=0)throw D("Unable to release: it is already released.");var e=i-1|0;if(n.atomicfu$compareAndSet(i,e)){t=e;break t}}return 0===t},R($i).x1g=function(){if(null!=this.z1f_1)throw A(I("Unable to reset buffer with origin"));R(zn).x1g.call(this),this.x1f_1.kotlinx$atomicfu$value=null},R(Pi).qj=function(){var t,n,i,e=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.hj_1=1,t=this.g1k_1,n=this.h1k_1,i=void 0,(i=new Li(t,n,this)).jj_1=O(),i.kj_1=null,(e=i.qj())===N())return e;continue t;case 1:if(e)return O();this.hj_1=2;continue t;case 2:return this.g1k_1.w17(),O();case 3:throw this.kj_1}}catch(t){var r=t;if(3===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},R(Li).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=3,this.w1j_1=!1,this.x1j_1=St(),this.u1j_1.v17_1.atomicfu$compareAndSet(null,this.x1j_1)&&this.v1j_1()){if(this.w1j_1=!0,this.hj_1=1,(t=this.x1j_1.pq(this))===N())return t;continue t}this.hj_1=2;continue t;case 1:this.hj_1=2;continue t;case 2:return this.w1j_1;case 3:throw this.kj_1}}catch(t){var n=t;if(3===this.ij_1)throw n;this.hj_1=this.ij_1,this.kj_1=n}},R(Fi).q19=function(t,n){var i=new Pi(this,t,n);return i.jj_1=O(),i.kj_1=null,i.qj()},R(Fi).w17=function(){var t=this.v17_1.atomicfu$getAndSet(null);null==t||t.oq()},R(Fi).q1e=function(t){var n=this.v17_1.atomicfu$getAndSet(null);if(null==n)return O();var i=n;null!=t?i.nq(t):i.oq()},R(Ui).qj=function(){var t,n,i,e,r=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:if(this.ij_1=10,this.q1k_1===this.r1k_1)throw A(I("Failed requirement."));if(null!=this.q1k_1.p18())return this.r1k_1.iy(this.q1k_1.p18()),new U(0,0);this.t1k_1=this.s1k_1,this.hj_1=1;continue t;case 1:if(!(this.t1k_1.w(new U(0,0))>0)){this.hj_1=9;continue t}if(this.hj_1=2,(r=this.q1k_1.p1e(this))===N())return r;continue t;case 2:if(this.u1k_1=r,this.u1k_1){this.hj_1=3;continue t}this.hj_1=9;continue t;case 3:if(this.v1k_1=this.q1k_1.r1e(this.r1k_1,this.t1k_1),this.v1k_1.equals(new U(0,0))){if(this.hj_1=6,t=this.q1k_1,n=this.r1k_1,i=this.t1k_1,e=void 0,(e=new Hi(t,n,i,this)).jj_1=O(),e.kj_1=null,(r=e.qj())===N())return r;continue t}if(0===this.r1k_1.e19()){if(this.hj_1=4,(r=this.r1k_1.l1a(1,this))===N())return r;continue t}this.hj_1=5;continue t;case 4:this.hj_1=5;continue t;case 5:this.w1k_1=this.v1k_1,this.hj_1=8;continue t;case 6:var s=r;if(s.equals(new U(0,0))){this.hj_1=9;continue t}this.hj_1=7;continue t;case 7:this.w1k_1=s,this.hj_1=8;continue t;case 8:var o=this.w1k_1;this.t1k_1=this.t1k_1.p7(o),o.w(new U(0,0))>0&&this.r1k_1.h1e(),this.hj_1=1;continue t;case 9:return this.s1k_1.p7(this.t1k_1);case 10:throw this.kj_1}}catch(t){var u=t;if(10===this.ij_1)throw u;this.hj_1=this.ij_1,this.kj_1=u}},R(Hi).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=9,this.i1l_1=gi().b1e_1.p1f(),this.hj_1=1;continue t;case 1:this.hj_1=2;continue t;case 2:if(this.ij_1=8,this.i1l_1.q1g(qt(this.h1l_1,T(this.i1l_1.r1a_1)).c8()),this.hj_1=3,(t=this.f1l_1.m1e(this.i1l_1,this))===N())return t;continue t;case 3:if(this.k1l_1=t,-1===this.k1l_1){this.i1l_1.c1g(gi().b1e_1),this.j1l_1=new U(0,0),this.ij_1=9,this.hj_1=6;continue t}this.hj_1=4;continue t;case 4:if(this.hj_1=5,(t=this.g1l_1.i1e(this.i1l_1,this))===N())return t;continue t;case 5:this.j1l_1=T(this.k1l_1),this.ij_1=9,this.hj_1=6;continue t;case 6:var n=this.j1l_1;return this.i1l_1.c1g(gi().b1e_1),n;case 7:return this.i1l_1.c1g(gi().b1e_1),O();case 8:this.ij_1=9;var i=this.kj_1;throw this.i1l_1.c1g(gi().b1e_1),i;case 9:throw this.kj_1}}catch(t){var e=t;if(9===this.ij_1)throw e;this.hj_1=this.ij_1,this.kj_1=e}},R(Vi).e1h=function(){return new Int8Array(4096)},R(Yi).u1h=function(t){},R(Yi).eo=function(){},R(Gi).t1e=function(t){var n=this.d1m_1;null==n||n.vl(),this.d1m_1=t,t.rl(!0,L,Wi(this))},R(Gi).toString=function(){return"ByteChannel["+this.d1m_1+", "+Ot(this)+"]"},R(Ji).f1g=function(){return Dt("Empty",1,Tt,(function(t){return t.f1g()}),null),this.o1l_1.s()},R(Qi).f1h=function(t){return new re(new DataView(new ArrayBuffer(t)))},R(Qi).h1h=function(t){},R(re).e1m=function(t,n){if(!(t>=0))throw A(I("offset shouldn't be negative: "+t));if(!(n>=0))throw A(I("length shouldn't be negative: "+n));var i,e,r=T(t+n|0);if(i=T(this.g1g_1.byteLength),r.w(i)>0)throw e=T(this.g1g_1.byteLength),Mt("offset + length > size: "+t+" + "+n+" > "+I(e));return new re(new DataView(this.g1g_1.buffer,this.g1g_1.byteOffset+t|0,n))},R(re).y1g=function(t,n,i,e){var r=new Int8Array(this.g1g_1.buffer,this.g1g_1.byteOffset+n|0,i);new Int8Array(t.g1g_1.buffer,t.g1g_1.byteOffset+e|0,i).set(r)},R(oe).f1m=function(t){switch(t){case"UTF-8":case"utf-8":case"UTF8":case"utf8":return le().e1j_1}var n;switch(t){case"ISO-8859-1":case"iso-8859-1":n=!0;break;default:var i=Rt(t,Nt(95),Nt(45));n="iso-8859-1"===i||"iso-8859-1"===i.toLowerCase()}if(n||"latin1"===t||"Latin1"===t)return le().f1j_1;throw A("Charset "+t+" is not supported")},R(ae).equals=function(t){return this===t||null!=t&&this.constructor==t.constructor&&(t instanceof ae||Y(),this.g1j_1===t.g1j_1)},R(ae).hashCode=function(){return Pt(this.g1j_1)},R(ae).toString=function(){return this.g1j_1},R(we).i1j=function(){return new de(this)},R(we).h1j=function(){return new pe(this)},R(we).toString=function(){return"CharsetImpl(name="+this.j1m_1+")"},R(we).hashCode=function(){return Pt(this.j1m_1)},R(we).equals=function(t){if(this===t)return!0;if(!(t instanceof we))return!1;var n=t instanceof we?t:Y();return this.j1m_1===n.j1m_1},R(de).toString=function(){return"CharsetEncoderImpl(charset="+this.l1m_1+")"},R(de).hashCode=function(){return this.l1m_1.hashCode()},R(de).equals=function(t){if(this===t)return!0;if(!(t instanceof de))return!1;var n=t instanceof de?t:Y();return!!this.l1m_1.equals(n.l1m_1)},R(pe).toString=function(){return"CharsetDecoderImpl(charset="+this.n1m_1+")"},R(pe).hashCode=function(){return this.n1m_1.hashCode()},R(pe).equals=function(t){if(this===t)return!0;if(!(t instanceof pe))return!1;var n=t instanceof pe?t:Y();return!!this.n1m_1.equals(n.n1m_1)},R(be).toString=function(){return"DecodeBufferResult(charactersDecoded="+this.q1m_1+", bytesConsumed="+this.r1m_1+")"},R(be).hashCode=function(){var t=Pt(this.q1m_1);return S(t,31)+this.r1m_1|0},R(be).equals=function(t){if(this===t)return!0;if(!(t instanceof be))return!1;var n=t instanceof be?t:Y();return this.q1m_1===n.q1m_1&&this.r1m_1===n.r1m_1},R(Ae).p1m=function(){return this.t1m_1.decode()},R(Ae).s1m=function(t){return this.t1m_1.decode(t)},R(Ae).o1m=function(t,n){return this.t1m_1.decode(t,n)},R(Te).p1m=function(){return""},R(Te).s1m=function(t){var n;t:{var i=new Fn;try{var e=t instanceof Int8Array?t:Y(),r=0,s=e.length;if(r255&&i.w1g($t(u>>8)),i.w1g($t(255&u))}while(r=(e=e===L?lt(n):e))return Ai();var s=gi().b1e_1.p1f();try{var o;if((r=r+me(t,n,r,e,s)|0)===e){var u;u=s.o1a_1-s.n1a_1|0;var a=new Int8Array(u),h=a.length-0|0;return Mn(s instanceof zn?s:Y(),a,0,h),a}t:{var _=new Fn;try{_.b1g(s.a1g()),kn(t,_,n,r,e),o=_.f1c();break t}catch(t){if(t instanceof Error){var l=t;throw _.vq(),l}throw t}}return _i(o)}finally{s.c1g(gi().b1e_1)}}(t,n,i=i===L?0:i,e=e===L?lt(n):e)},t.$_$.k=function(t,n,i,e){var r;i=i===L?0:i,e=e===L?lt(n):e;t:{var s=new Fn;try{kn(t,s,n,i,e),r=s.f1c();break t}catch(t){if(t instanceof Error){var o=t;throw s.vq(),o}throw t}}return r},t.$_$.l=he,t.$_$.m=Ti,t.$_$.n=Di,t.$_$.o=Mi,t.$_$.p=Fn,t.$_$.q=Bn,t.$_$.r=ze,t.$_$.s=ni,t.$_$.t=function(t,n,i,e){n=n===L?0:n,i=i===L?t.length:i,e=e===L?le().e1j_1:e,(n<0||i<0||(n+i|0)>t.length)&&function(t,n,i){if(!(t>=0))throw Mt("offset ("+t+") shouldn't be negative");if(!(n>=0))throw Mt("length ("+n+") shouldn't be negative");if(!((t+n|0)<=i.length))throw Mt("offset ("+t+") + length ("+n+") > bytes.size ("+i.length+")");throw Ut()}(n,i,t);var r=t,s=r.byteOffset+n|0,o=r.buffer.slice(s,s+i|0),u=new $i(ne(ee(),o),null,gi().e1e_1);u.o1g();var a=Un(u,gi().f1e_1);return bn(e.h1j(),a,ht().MAX_VALUE)},t.$_$.u=function(t,n){},t.$_$.v=_i,t.$_$.w=function(t){var n;if((t.z1b_1-t.y1b_1|0)>2){var i=t.y1b_1;t.y1b_1=i+2|0,n=t.x1b_1.g1g_1.getInt16(i,!1)}else n=function(t){var n,i=Di(t,2);null==i?li(2):n=i;var e=n,r=function(t){var n,i=t.m1a_1,e=t.n1a_1;if((t.o1a_1-e|0)<2)throw new Ce("Not enough bytes to read a short integer of size 2.");return n=i.g1g_1.getInt16(e,!1),t.h1g(2),n}(e);return Ti(t,e),r}(t);return n},t.$_$.x=function(t,n,i){return n=n===L?le().e1j_1:n,i=i===L?ht().MAX_VALUE:i,bn(n.h1j(),t,i)},t.$_$.y=hi,t.$_$.z=function(t,n){var i,e=t.j18_1;(t.k18_1-e|0)>2?(t.j18_1=e+2|0,t.i18_1.g1g_1.setInt16(e,n,!1),i=!0):i=!1,i||function(t,n){(function(t,n){var i=t.m1a_1,e=t.o1a_1,r=t.q1a_1-e|0;if(r<2)throw Sn("short integer",2,r);i.g1g_1.setInt16(e,n,!1),t.i1g(2),O()})(t.c1i(2),n),t.d1g()}(t,n)},t.$_$.a1=ci,t.$_$.b1=qe,t.$_$.c1=function(){return d||(d=!0,w=new Vi),w},t.$_$.d1=function(t){return function(t,n,i){if(0===t.length)return Xi().f1g();var e=gi().b1e_1.p1f(),r=e,s=n,o=s+i|0;t:for(;;){r.n1g(8);var u=o-s|0,a=r,h=a.q1a_1-a.o1a_1|0,_=Math.min(u,h);if(Tn(r instanceof zn?r:Y(),t,s,_),(s=s+_|0)===o)break t;var l=r;r=gi().b1e_1.p1f(),l.c1j(r)}var f=new Gi(e,!1);return c=f,c.iy(null),f;var c}(t,0,t.length)},t.$_$.e1=Zi,t.$_$.f1=mn,t.$_$.g1=function(t){return t.yo(null)},t.$_$.h1=function(t,n,i,e){return function(t,n,i,e,r){var s=t.ok().y5(et()),o=rt(t,n,L,(u=e,a=i,h=r,_=s,l=null,f=new yn(u,a,h,_,l),c=function(t,n){return f.n1f(t,n)},c.$arity=1,c));var u,a,h,_,l,f,c;return o.pl(function(t){return function(n){return t.iy(n),O()}}(i)),new gn(o,i)}(t,n=n===L?X():n,function(t){return t=t!==L&&t,new Gi(gi().d1e_1,t)}(i=i!==L&&i),!0,e)},t})?e.apply(n,r):e)||(t.exports=s)},781:function(t,n,i){var e,r,s;r=[n,i(744),i(538),i(646),i(868)],void 0===(s="function"==typeof(e=function(t,n,i,e,r){"use strict";var s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C,S,q,O,I,A,T=Math.imul,D=n.$_$.j9,M=n.$_$.u4,N=n.$_$.v1,R=n.$_$.ta,P=n.$_$.c,L=n.$_$.hf,F=n.$_$.t9,U=n.$_$.l9,H=n.$_$.ng,V=n.$_$.ua,B=n.$_$.v9,Y=n.$_$.z8,W=n.$_$.l8,G=i.$_$.v,K=n.$_$.u,J=n.$_$.ha,X=n.$_$.o9,Z=n.$_$.u9,Q=n.$_$.h5,tt=n.$_$.xf,nt=n.$_$.d5,it=n.$_$.ea,et=n.$_$.g5,rt=n.$_$.h9,st=n.$_$.i9,ot=n.$_$.u2,ut=n.$_$.qe,at=e.$_$.d1,ht=n.$_$.o8,_t=e.$_$.i,lt=n.$_$.v8,ft=n.$_$.u8,ct=n.$_$.w8,vt=n.$_$.y8,wt=n.$_$.x8,dt=n.$_$.q5,pt=n.$_$.k,mt=n.$_$.j5,gt=n.$_$.ya,$t=n.$_$.i5,yt=n.$_$.o6,bt=n.$_$.l,kt=n.$_$.t,jt=n.$_$.j6,xt=n.$_$.lg,zt=n.$_$.k5,Et=n.$_$.d1,Ct=n.$_$.cd,St=n.$_$.m2,qt=n.$_$.r2,Ot=n.$_$.rc,It=r.$_$.c,At=n.$_$.af,Tt=n.$_$.sa,Dt=n.$_$.re,Mt=n.$_$.ue,Nt=n.$_$.ja,Rt=n.$_$.f5,Pt=n.$_$.ra,Lt=n.$_$.w4,Ft=n.$_$.i6,Ut=n.$_$.z6,Ht=n.$_$.c7,Vt=n.$_$.h7,Bt=e.$_$.y,Yt=n.$_$.p9,Wt=n.$_$.f9,Gt=e.$_$.r,Kt=n.$_$.p4,Jt=n.$_$.v2,Xt=n.$_$.wf,Zt=n.$_$.w2,Qt=n.$_$.x2,tn=n.$_$.i4,nn=n.$_$.t8,en=n.$_$.q9,rn=n.$_$.n8,sn=n.$_$.a8,on=n.$_$.bg,un=n.$_$.pa,an=n.$_$.ye,hn=n.$_$.u1;function _n(t){this.v1m_1=t;var n=this.v1m_1;if(0===D(n))throw N("Name can't be blank")}function ln(){}function fn(t,n){Y.call(this,n),this.l1n_1=t}function cn(t){return t.m1n_1}function vn(t){return qn(t)}function wn(t){return new mn(t.r().m1n_1,t.s())}function dn(t){return new mn(qn(t.r()),t.s())}function pn(){var t;t=K(),this.o1n_1=t}function mn(t,n){this.u1n_1=t,this.v1n_1=n}function gn(){return new pn}function $n(){ht.call(this,_t())}function yn(t){this.z1n_1=t,this.y1n_1=t.a1o_1.d()}function bn(t,n,i){this.a1o_1=t,this.b1o_1=n,this.c1o_1=i,this.d1o_1=this.a1o_1.g()}function kn(){}function jn(t,n){var i,e=t.s1o_1.g2(n);if(null==e){var r=bt();t.t1o(n),t.s1o_1.f4(n,r),i=r}else i=e;return i}function xn(t,n){t=t!==H&&t,n=n===H?8:n,this.r1o_1=t,this.s1o_1=this.r1o_1?gn():kt(n)}function zn(t,n){return t.b1p_1.g2(n)}function En(t,n){t=t!==H&&t,n=n===H?jt():n,this.a1p_1=t;for(var i=this.a1p_1?gn():K(),e=n.q().d();e.e();){var r=e.f(),s=r.r(),o=r.s(),u=o.g(),a=pt(u),h=0;if(h=this.f1q_1.g()){this.d1q_1.m1q(),this.hj_1=5;continue t}this.hj_1=3;continue t;case 3:this.g1q_1=this.f1q_1.h(this.e1q_1),this.d1q_1.l1q_1=this.e1q_1+1|0,this.hj_1=4;var n=this.g1q_1;if((t=(Nt(n,2)?n:L())(this.d1q_1,this.d1q_1.k1q_1,this))===W())return t;continue t;case 4:this.hj_1=1;continue t;case 5:return this.d1q_1.k1q_1;case 6:throw this.kj_1}}catch(t){var i=t;if(6===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},R(Hn).ok=function(){return this.j1q_1},R(Hn).m1q=function(){this.l1q_1=-1},R(Hn).n1q=function(t,n){return this.k1q_1=t,this.o1q(n)},R(Hn).o1q=function(t){var n=this.l1q_1;return n<0?this.k1q_1:n>=this.i1q_1.g()?(this.m1q(),this.k1q_1):function(t,n){var i=new Un(t,n);return i.jj_1=M(),i.kj_1=null,i.qj()}(this,t)},R(Hn).p1q=function(t,n){return this.l1q_1=0,this.k1q_1=t,this.o1q(n)},R(Wn).sr=function(){return this.t1q_1.m()},R(Wn).g=function(){return this.t1q_1.g()},R(Wn).w1q=function(t){var n;this.u1q_1&&((n=this).t1q_1=n.v1q(),n.u1q_1=!1),this.t1q_1.a(t)},R(Wn).x1q=function(t){var n=this.t1q_1;t instanceof Lt&&t.ad(t.g()+n.g()|0);var i=0,e=n.g();if(i=0)throw N("Already started");return this.o1q(n)},R(vi).toString=function(){return"TypeInfo(type="+this.z1r_1+", reifiedType="+this.a1s_1+", kotlinType="+this.b1s_1+")"},R(vi).hashCode=function(){var t=this.z1r_1.hashCode();return t=T(t,31)+Z(this.a1s_1)|0,T(t,31)+(null==this.b1s_1?0:Z(this.b1s_1))|0},R(vi).equals=function(t){if(this===t)return!0;if(!(t instanceof vi))return!1;var n=t instanceof vi?t:L();return!!this.z1r_1.equals(n.z1r_1)&&!!X(this.a1s_1,n.a1s_1)&&!!X(this.b1s_1,n.b1s_1)},R(di).x1m=function(t){var n=this.c1s_1.g2(t);return null==n||J(n)?n:L()},R(di).y1m=function(t){return this.c1s_1.a2(t)},R(di).z1m=function(t,n){this.c1s_1.f4(t,n)},R(di).a1n=function(t){this.c1s_1.wc(t)},R(di).b1n=function(t,n){var i=this.c1s_1.g2(t);if(null!=i)return J(i)?i:L();var e=n();return this.c1s_1.f4(t,e),e},R(di).c1n=function(){return sn(this.c1s_1.h2())},R($i).j1s=function(t){console.info("TRACE: "+t)},R($n).y5=lt,R($n).e6=ft,R($n).d6=ct,R($n).f6=vt,R(di).w1m=function(t){var n=this.x1m(t);if(null==n)throw N("No instance for key "+t);return n},I=!1,t.$_$=t.$_$||{},t.$_$.a=function(t,n){var i=new fn(t,n);return i.jj_1=M(),i.kj_1=null,i.qj()},t.$_$.b=function(){return null==A&&new yi,A},t.$_$.c=function(){return null==O&&new pi,O},t.$_$.d=On,t.$_$.e=mi,t.$_$.f=function(t){return new $i},t.$_$.g=ei,t.$_$.h=ri,t.$_$.i=ii,t.$_$.j=function(t,n){return n.ze(t)},t.$_$.k=function(t,n,i){return new vi(n,t,i)},t.$_$.l=_n,t.$_$.m=wi,t.$_$.n=function(t){var n,i=at(t=t===H?null:t);return n=new $n,i.f6(n)},t.$_$.o=function(t){for(var n=this.p1o().d();n.e();){var i=n.f();t(i.r(),i.s())}return M()},t.$_$.p=function(t){var n=this.n1o(t);return null==n?null:yt(n)},t.$_$.q=xn,t.$_$.r=En,t.$_$.s=kn,t.$_$.t=function(t,n){for(var i=n.p1o().d();i.e();){var e=i.f(),r=e.r(),s=e.s();t.u1o(r,s)}return t},t.$_$.u=function(t){for(var n=t.p1o(),i=bt(),e=n.d();e.e();){for(var r=e.f(),s=r.s(),o=pt(dt(s,10)),u=s.d();u.e();){var a,h=u.f();a=xt(r.r(),h),o.a(a)}zt(i,o)}return i},t.$_$.v=function(t){var n,i=ot(t).toLowerCase();return n=st(i,0),X(new ut(n),new ut(t))},t.$_$.w=function(t,n){for(var i=n.c1n().d();i.e();){var e=i.f();t.z1m(e instanceof _n?e:L(),n.w1m(e))}},t.$_$.x=function(t){for(var n=0,i=t.length,e=rt(i);n=e)throw new qt(n,"Unexpected end of string "+(null==r?"":" in ["+r+"]"),i);return P(n,i)}function Et(t,n){var i,e=n,r=t.x4n_1,s=r.t6_1;if(e<=r.u6_1&&s<=e)i=L(n)-48|0;else{var o=t.u4n_1,u=o.t6_1;if(e<=o.u6_1&&u<=e)i=(10+L(n)|0)-97|0;else{var a=t.w4n_1,h=a.t6_1;i=e<=a.u6_1&&h<=e?(10+L(n)|0)-65|0:-1}}return i}function Ct(){s=this,this.t4n_1=F(f(97),f(122)),this.u4n_1=F(f(97),f(102)),this.v4n_1=F(f(65),f(90)),this.w4n_1=F(f(65),f(70)),this.x4n_1=F(f(48),f(57)),this.y4n_1=U([new D(f(95)),new D(f(45)),new D(f(33)),new D(f(46)),new D(f(126)),new D(f(39)),new D(f(40)),new D(f(41)),new D(f(42))]);var t;t=c([f(48),f(49),f(50),f(51),f(52),f(53),f(54),f(55),f(56),f(57),f(65),f(66),f(67),f(68),f(69),f(70)]),this.z4n_1=t,this.a4o_1=f(65533)}function St(){return null==s&&new Ct,s}function qt(t,n,i){if(i=i===m?-1:i,Q(n,this),tt(this,qt),this.a4p_1=t,this.b4p_1=n,this.c4p_1=i,!(this.c4p_1>=-1))throw k(b("Failed requirement."))}function Ot(){return o}function It(t){return Z("internalDecoded",1,X,(function(t){return It(t)}),null),t.g4o_1.s()}function At(t){return Z("internalEncoded",1,X,(function(t){return At(t)}),null),t.h4o_1.s()}function Tt(){u=this,this.d4p_1=1,this.e4p_1=2}function Dt(){return null==u&&new Tt,u}function Mt(t,n){var i,e,r;Dt(),this.e4o_1=!(t===ct().x4m_1),this.f4o_1=!(n===ct().x4m_1),this.g4o_1=N((i=this,e=n,r=t,function(){return i.e4o_1||e===ct().x4m_1?St().y4o(r):e})),this.h4o_1=N(function(t,n,i){return function(){return t===ct().x4m_1?n.f4p(i):t}}(t,this,n));var s;if(t!==ct().x4m_1)Dt(),s=1;else{if(n===ct().x4m_1)throw k("Neither encoded nor decoded");Dt(),s=2}this.i4o_1=s}function Nt(t){if(Lt.call(this,t,t),null!=t&&0!==S(t))throw k(b("Expected empty value, got: "+t));this.m4p_1=!0}function Rt(){a=this,this.k4n_1=new Nt(null),this.l4n_1=new Nt("")}function Pt(){return null==a&&new Rt,a}function Lt(t,n){Pt(),Mt.call(this,t,n)}function Ft(){h=this,this.k4o_1=new Ht(null,null),this.l4o_1=new Ht("","")}function Ut(){return null==h&&new Ft,h}function Ht(t,n){var i;Ut(),Mt.call(this,t,n),this.z4p_1=N((i=t,function(){var t=i;if(null==t)return wt().y4m_1;var n,e=t,r=new mt,s=0;t:for(;;){var o=M(e,f(47),s);if(n=o,!(o>-1))break t;if(s57)return Ot()}while(0<=i);return Ot()}function Yt(){var t;this.a4q_1=N((t=this,function(){var n=t.w22();return n.m()?null:et(n)})),this.b4q_1=N(function(t){return function(){var n=t.g4q();if(null==n)return Pt().d4o(null);var i,e=n,r=rt(e,f(64)),s=Pt();return i=r===Ot()?null:e.substring(0,r),s.d4o(i)}}(this)),this.c4q_1=N(function(t){return function(){return Vt(t).g4p()}}(this)),this.d4q_1=N(function(t){return function(){return Vt(t).j4o()}}(this)),this.e4q_1=N(function(t){return function(){var n=t.g4q();if(null==n)return null;var i,e=n,r=rt(e,f(64)),s=Bt(0,e);if(s===Ot()){var o=r+1|0;i=e.substring(o)}else{var u=r+1|0;i=e.substring(u,s)}var a=i;return St().z4o(a)}}(this)),this.f4q_1=N(function(t){return function(){var n=t.g4q();if(null==n)return-1;var i=n,e=Bt(0,i);if(e===Ot())return-1;var r,s=St(),o=e+1|0;r=i.substring(o);var u,a=s.z4o(r);try{u=st(a)}catch(t){if(!(t instanceof ot))throw t;u=-1}return u}}(this))}function Wt(t){return Z("ssp",1,X,(function(t){return Wt(t)}),null),t.u4q_1.s()}function Gt(t,n){var i=n.o4q_1.j4o();null!=i&&t.l8("//").l8(i);var e=n.p4q_1.j4o();null!=e&&t.l8(e),n.q4q_1.sr()||t.k7(f(63)).l8(n.q4q_1.j4o())}function Kt(t){return Z("uriString",1,X,(function(t){return Kt(t)}),null),t.g4r_1.s()}function Jt(t){return function(){return Pt().d4o((n=t,Gt(i=H(),n),i.toString()));var n,i}}function Xt(t,n,i,e,r){Yt.call(this),this.n4q_1=t,this.o4q_1=Pt().s4p(n);var s,o=i;this.p4q_1=null==o?Ut().k4o_1:o,this.q4q_1=Pt().s4p(e),this.r4q_1=Pt().s4p(r),this.s4q_1=!0,this.t4q_1=null==this.n4q_1,this.u4q_1=N(Jt(this)),this.v4q_1=N((s=this,function(){return Wt(s).j4o()})),this.w4q_1=N(function(t){return function(){return Wt(t).g4p()}}(this)),this.x4q_1=N(function(t){return function(){return t.o4q_1.g4p()}}(this)),this.y4q_1=N(function(t){return function(){return t.o4q_1.j4o()}}(this)),this.z4q_1=N(function(t){return function(){return t.p4q_1.j4o()}}(this)),this.a4r_1=N(function(t){return function(){return t.p4q_1.g4p()}}(this)),this.b4r_1=N(function(t){return function(){return t.q4q_1.g4p()}}(this)),this.c4r_1=N(function(t){return function(){return t.q4q_1.j4o()}}(this)),this.d4r_1=N(function(t){return function(){return t.r4q_1.g4p()}}(this)),this.e4r_1=N(function(t){return function(){return t.r4q_1.j4o()}}(this)),this.f4r_1=N(function(t){return function(){return t.p4q_1.w22()}}(this)),this.g4r_1=N(function(t){return function(){var n=H();return null!=t.n4q_1&&n.l8(t.n4q_1).k7(f(58)),Gt(n,t),t.r4q_1.sr()||n.k7(f(35)).l8(t.h4r()),n.toString()}}(this))}function Zt(t){return Z("cachedString",1,X,(function(t){return Zt(t)}),null),t.d4s_1.s()}function Qt(t,n,i){this.i4r_1=t,this.j4r_1=n;var e,r=i;this.k4r_1=null==r?Pt().k4n_1:r,this.l4r_1=!1,this.m4r_1=null==this.i4r_1,this.n4r_1=N((e=this,function(){return e.j4r_1.j4o()})),this.o4r_1=N(function(t){return function(){return t.j4r_1.g4p()}}(this)),this.p4r_1=null,this.q4r_1=null,this.r4r_1=null,this.s4r_1=null,this.t4r_1=null,this.u4r_1=null,this.v4r_1=N(function(t){return function(){return t.k4r_1.g4p()}}(this)),this.w4r_1=N(function(t){return function(){return t.k4r_1.j4o()}}(this)),this.x4r_1=_t(),this.y4r_1=null,this.z4r_1=null,this.a4s_1=null,this.b4s_1=null,this.c4s_1=-1,this.d4s_1=N(function(t){return function(){var n=H();return n.l8(t.i4r_1).k7(f(58)),n.l8(t.e4s()),t.k4r_1.sr()||n.k7(f(35)).l8(t.h4r()),n.toString()}}(this))}function tn(t){return Z("cachedSsi",1,X,(function(t){return tn(t)}),null),t.m4s_1.s()}function nn(t){return Z("cachedFsi",1,X,(function(t){return nn(t)}),null),t.n4s_1.s()}function en(t){return Z("ssp",1,X,(function(t){return en(t)}),null),t.r4s_1.s()}function rn(t){return Z("authorityPart",1,X,(function(t){return rn(t)}),null),t.s4s_1.s()}function sn(t){return Z("pathPart",1,X,(function(t){return sn(t)}),null),t.v4s_1.s()}function on(t){return Z("queryPart",1,X,(function(t){return on(t)}),null),t.z4s_1.s()}function un(t){return Z("fragmentPart",1,X,(function(t){return un(t)}),null),t.c4t_1.s()}function an(){_=this}function hn(){return null==_&&new an,_}function _n(t){var n;hn(),Yt.call(this),this.l4s_1=t,this.m4s_1=N((n=this,function(){return M(n.l4s_1,f(58))})),this.n4s_1=N(function(t){return function(){return M(t.l4s_1,f(35),tn(t))}}(this)),this.o4s_1=N(function(t){return function(){var n=tn(t);return n===Ot()||t.l4s_1.length!==(n+1|0)&&O(new D(P(t.l4s_1,n+1|0)),new D(f(47)))}}(this)),this.p4s_1=N(function(t){return function(){return tn(t)===Ot()}}(this)),this.q4s_1=N(function(t){return function(){var n=tn(t);return n===Ot()?null:t.l4s_1.substring(0,n)}}(this)),this.r4s_1=N(function(t){return function(){var n,i=tn(t),e=nn(t),r=Pt();if(e===Ot()){var s=i+1|0;n=t.l4s_1.substring(s)}else{var o=i+1|0;n=t.l4s_1.substring(o,e)}return r.d4o(n)}}(this)),this.s4s_1=N(function(t){return function(){var n=hn().f4t(t.l4s_1,tn(t));return Pt().d4o(n)}}(this)),this.t4s_1=N(function(t){return function(){return rn(t).g4p()}}(this)),this.u4s_1=N(function(t){return function(){return rn(t).j4o()}}(this)),this.v4s_1=N(function(t){return function(){var n=tn(t),i=n>-1?(n+1|0)===t.l4s_1.length?null:O(new D(P(t.l4s_1,n+1|0)),new D(f(47)))?hn().g4t(t.l4s_1,n):null:hn().g4t(t.l4s_1,n);return Ut().d4o(i)}}(this)),this.w4s_1=N(function(t){return function(){return sn(t).g4p()}}(this)),this.x4s_1=N(function(t){return function(){return sn(t).j4o()}}(this)),this.y4s_1=N(function(t){return function(){return sn(t).w22()}}(this)),this.z4s_1=N(function(t){return function(){var n,i=M(t.l4s_1,f(63),tn(t));if(i===Ot())n=null;else{var e,r=nn(t);if(r===Ot()){var s=i+1|0;e=t.l4s_1.substring(s)}else if(r=this.a4n_1)throw y("Index "+t+" should be less than "+this.a4n_1);if(null==this.z4m_1)throw k(b("Required value was null."));return this.z4m_1[t]},d(mt).d4n=function(t){if(null!=this.b4n_1){if((this.c4n_1+1|0)===pt(this).length){for(var n=0,i=l(pt(this).length,2),e=z(Array(i),null);nr&&i.ig(t,r,o);for(var u=(r=o)+1|0;u>4]),i.k7(this.z4n_1[15&l[w]])}while(v-1&&(t.l8(" at index "),t.k8(this.c4p_1)),t.l8(": "),t.l8(this.a4p_1),t.toString()},nt(d(qt),"message",(function(){return this.g1()})),d(Mt).g4p=function(){return It(this)},d(Mt).j4o=function(){return At(this)},d(Nt).sr=function(){return this.m4p_1},d(Rt).s4p=function(t){var n=t;return null==n?this.k4n_1:n},d(Rt).d4o=function(t){return this.t4p(t,ct().x4m_1)},d(Rt).t4p=function(t,n){return null==t?this.k4n_1:0===S(t)?this.l4n_1:null==n?this.k4n_1:0===S(n)?this.l4n_1:new Lt(t,n)},d(Lt).sr=function(){return!1},d(Lt).f4p=function(t){return St().v4o(t)},d(Ft).d4o=function(t){return this.t4p(t,ct().x4m_1)},d(Ft).t4p=function(t,n){return null==t?this.k4o_1:0===S(t)?this.l4o_1:new Ht(t,n)},d(Ft).m4o=function(t){var n=t.e4o_1?t.j4o():t.g4p();return null==n||0===S(n)||it(n,"/")?t:new Ht(t.e4o_1?"/"+t.j4o():ct().x4m_1,t.f4o_1?"/"+t.g4p():ct().x4m_1)},d(Ht).f4p=function(t){return St().c4o(t,"/")},d(Ht).w22=function(){return Z("pathSegments",1,X,(function(t){return t.w22()}),null),this.z4p_1.s()},d(Yt).p8=function(t){return this.p4o(null!=t&&at(t,yt)?t:ut())},d(Xt).g4q=function(){return Z("encodedAuthority",1,X,(function(t){return t.g4q()}),null),this.y4q_1.s()},d(Xt).h4r=function(){return Z("encodedFragment",1,X,(function(t){return t.h4r()}),null),this.e4r_1.s()},d(Xt).w22=function(){return Z("pathSegments",1,X,(function(t){return t.w22()}),null),this.f4r_1.s()},d(Xt).equals=function(t){return!(null==t||!at(t,yt))&&this.toString()===b(t)},d(Xt).hashCode=function(){return ht(this.toString())},d(Xt).toString=function(){return Kt(this)},d(Xt).q4o=function(){return(new gt).m4n(this.n4q_1).o4n(this.o4q_1).p4n(this.p4q_1).q4n(this.q4q_1).r4n(this.r4q_1)},d(Xt).p8=function(t){return this.p4o(null!=t&&at(t,yt)?t:ut())},d(Qt).e4s=function(){return Z("encodedSchemeSpecificPart",1,X,(function(t){return t.e4s()}),null),this.n4r_1.s()},d(Qt).h4r=function(){return Z("encodedFragment",1,X,(function(t){return t.h4r()}),null),this.w4r_1.s()},d(Qt).equals=function(t){return!(null==t||!at(t,yt))&&this.toString()===b(t)},d(Qt).hashCode=function(){return ht(this.toString())},d(Qt).toString=function(){return Zt(this)},d(Qt).q4o=function(){return(new gt).m4n(this.i4r_1).n4n(this.j4r_1).r4n(this.k4r_1)},d(Qt).p8=function(t){return this.p4o(null!=t&&at(t,yt)?t:ut())},d(an).f4t=function(t,n){var i,e=t.length;if(e>(n+2|0)&&O(new D(P(t,n+1|0)),new D(f(47)))&&O(new D(P(t,n+2|0)),new D(f(47)))){var r=n+3|0;t:for(;r(n+2|0)&&O(new D(P(t,n+1|0)),new D(f(47)))&&O(new D(P(t,n+2|0)),new D(f(47)))){i=n+3|0;t:for(;i=0&&!i.m()&&t.f3u_1!==t.h3u_1){t.l3u("\n");try{t.y3t_1=vt();var e=t.h3u_1,r=0;if(r":"/>":">";t.x3z_1.b(i)}function Xe(t,n){xt.call(this,t,n)}function Ze(t,n,i,e){var r,s=i;if(gn(pn(i),pn(mn(55295)))<=0){var o,u=pn(i);o=$n(bn(u)),r=yn(o)}else r=yn($n(0));var a=r;if(s===mn(0))throw fn("XML documents may not contain null strings directly or indirectly");if(ft(new vn(a),new vn(ot(38))))t.b("&");else if(ft(new vn(a),new vn(ot(60)))&&!e.equals(hr()))t.b("<");else if(ft(new vn(a),new vn(ot(62)))&&e.equals(fr()))t.b(">");else if(ft(new vn(a),new vn(ot(34)))&&e.equals(_r()))t.b(""");else if(ft(new vn(a),new vn(ot(39)))&&e.equals(lr()))t.b("'");else{var h,_=new kn(mn(1),mn(8)),l=_.la_1;if(jn(s,_.ma_1)<=0&&0<=jn(s,l)||s===mn(11)||s===mn(12))h=!0;else{var f=new kn(mn(14),mn(31)),c=f.la_1;h=jn(s,f.ma_1)<=0&&0<=jn(s,c)}if(h){var v=n.a40_1.l6_1;0===v?ar(n,s):1===v&&ur(t,s)}else{var w,d=new kn(mn(127),mn(132)),p=d.la_1;if(jn(s,d.ma_1)<=0&&0<=jn(s,p))w=!0;else{var m=new kn(mn(134),mn(159)),g=m.la_1;w=jn(s,m.ma_1)<=0&&0<=jn(s,g)}if(w){var $=n.a40_1.l6_1;0===$?t.k7(a):1===$&&ur(t,s)}else{var y=new kn(mn(55296),mn(57343)),b=y.la_1;if(jn(s,y.ma_1)<=0&&0<=jn(s,b)||s===mn(65534)||s===mn(65535))ar(n,s);else if(gn(pn(s),pn(mn(65535)))>0){var k,j=mn(pn(s)-pn(mn(65536))|0);k=mn(pn(j)>>>10|0);var x,z=mn(pn(k)+pn(mn(55296))|0);x=mn(pn(j)&pn(mn(1023)));var E,C,S=mn(pn(x)+pn(mn(56320))|0),q=pn(z);E=$n(bn(q)),t.k7(yn(E));var O=pn(S);C=$n(bn(O)),t.k7(yn(C))}else t.k7(a)}}}}function Qe(t,n,i){for(var e=pr(n).d();e.e();){var r=e.f().y9_1;Ze(t.x3z_1,t,r,i)}}function tr(t){0===t.e40_1.l6_1&&(t.z3z_1.equals(Re())||t.c3v(null,null,null),t.e40_1=vr())}function nr(t,n){var i=t.y3t_1;if(t.g40_1>=0&&!i.m()&&t.g40_1!==t.i3t()){t.l3u("\n");try{t.y3t_1=vt();for(var e=function(t,n){if(!t.d().e())return vt();var i=mt(),e=null,r=0;if(r0&&null!=i&&t.f40_1.h40(i)!=n&&t.x3u(i,n)}function er(t,n,i,e){t.x3z_1.k7(ot(32)),tt(n)>0&&t.x3z_1.b(n).k7(ot(58)),t.x3z_1.b(i).k7(ot(61));var r=-1===bt(e,ot(34))?new xn(new vn(ot(34)),_r()):new xn(new vn(ot(39)),lr()),s=r.d4().j7_1,o=r.e4();t.x3z_1.k7(s),Qe(t,e,o),t.x3z_1.k7(s)}function rr(){N=this,this.i40_1=-1,this.j40_1=2147483647}function sr(){return null==N&&new rr,N}function or(t,n){xt.call(this,t,n)}function ur(t,n){t.b("&#x").b(zn(n,16)).k7(ot(59))}function ar(t,n){throw fn("In xml "+t.a40_1.m40_1+" the character 0x"+zn(n,16)+" is not valid")}function hr(){return Be(),z}function _r(){return Be(),E}function lr(){return Be(),C}function fr(){return Be(),S}function cr(){return Ye(),O}function vr(){return Ye(),I}function wr(){return Ye(),T}function dr(t,n,i,e){sr(),n=n===et||n,i=i===et?Re():i,e=e===et?br():e,Dr.call(this),this.x3z_1=t,this.y3z_1=n,this.z3z_1=i,this.a40_1=e,this.b40_1=!0,this.c40_1=!1;var r;r=Ht(Array(12),null),this.d40_1=r,this.e40_1=cr(),this.f40_1=new Or;sr(),this.g40_1=-1}function pr(t){return new gr(t)}function mr(t){this.u40_1=t,this.t40_1=0}function gr(t){this.v40_1=t}function $r(){if(L)return G();L=!0,R=new yr("XML10",0,"1.0"),P=new yr("XML11",1,"1.1")}function yr(t,n,i){xt.call(this,t,n),this.m40_1=i}function br(){return $r(),P}function kr(t,n){var i=0===n?0:jr(t,n-1|0)/2|0,e=jr(t,n)/2|0;return Z(i,e)}function jr(t,n){return Y(t.n3y_1[n],2)}function xr(t,n){return Y(n,2)}function zr(t,n){return Y(n,2)+1|0}function Er(t,n){return lt(t.m3y_1[xr(0,n)])}function Cr(t,n){return lt(t.m3y_1[zr(0,n)])}function Sr(t){this.w40_1=t}function qr(t){this.y40_1=t,this.x40_1=0}function Or(){this.l3y_1=1;var t;t=Ht(Array(10),null),this.m3y_1=t,this.n3y_1=new Int32Array(20),this.o3y_1=0,this.p3y_1=new Sr(this)}function Ir(t,n){if(tt(t)>0){var i=t.toString();if(!function(t){var n;t:{for(var i=Rn("isIgnorableWhitespace",1,Nn,(function(t){return function(t){var n=t;return!!(ft(new vn(n),new vn(ot(32)))||ft(new vn(n),new vn(ot(9)))||ft(new vn(n),new vn(ot(13)))||ft(new vn(n),new vn(ot(10))))}(t.j7_1)}),null),e=t,r=0;r=d;){switch(null==p?-1:p.l6_1){case 1:var m=new ci(f,!0);He(m,t,w),Te(t,m),Ve(m,w,t),m.a14();break;case 9:case 4:f.appendChild(lt(f.ownerDocument).createTextNode(t.j3t()));break;case 5:f.appendChild(lt(f.ownerDocument).createCDATASection(t.j3t()));break;case 3:f.appendChild(lt(f.ownerDocument).createComment(t.j3t()));break;case 8:throw ze("Entity references are not expected here");case 10:throw Ln("Attributes are not expected in the event stream")}p=t.e()?t.f():null}""===w.g2("")&&w.wc("");var g=Nt(w.q()),$=Fn(g,Yr),y=_t(Un($,(c=f,function(t){var n=t.r(),i=t.s();return oe(),c.setAttributeNS("http://www.w3.org/2000/xmlns/",""===n?"xmlns":"xmlns:"+n,i),new ke(n,i)}))),b=(new XMLSerializer).serializeToString(f instanceof Node?f:J()),k=bt(b,ot(62),19)+1|0,j=(b.length-19|0)-3|0;return ns(y,b.substring(k,j))}catch(t){if(t instanceof Se)throw Ce("Failure to parse children into string at "+v,t);if(t instanceof ln)throw Ce("Failure to parse children into string at "+v,t);throw t}}function Yr(t){var n,i=t.r();return n=t.s(),""!==i||!(""===n)}function Wr(){H=this}function Gr(){hn(this,Gr)}function Kr(t){t||console.error("Assertion failed")}function Jr(t,n){t||console.error("Assertion failed: "+n())}function Xr(t){return Yn(t).name}function Zr(){}function Qr(t){return function(t,n){return ts(vt(),t,n),n}(t,Vt(K(rs)))}function ts(t,n,i){return rs.call(i),i.t41_1=ne().b3x(t),i.u41_1=n,i}function ns(t,n){return ts(t,n,Vt(K(rs)))}function is(){V=this,this.v41_1=new Zr}function es(t){return'"'+t.g3t()+" -> "+t.e3t()+'"'}function rs(){null==V&&new is}function ss(t){return t.prototype}function os(t,n,i,e){return function(t,n,i){for(var e=0,r=Y(t.length,2),s=Ht(Array(r),null);e");var a=e.toString()+n+"",h=(new DOMParser).parseFromString(a,"text/xml");return new ri(Q(h)?h:J())}(ls(),t,n));var i;i=[],this.d42_1=us(null,[],i),this.jp().l3t()===Si()&&hs(this)}return rt(Zn,"DomReader$$o$iterator$slambda",it,W,et,et,et,[1]),rt(Vi,"IterableNamespaceContext",Mt),rt(ii,et,it,et,[Vi]),rt(ei,"DomReader$$slambda",it,W,et,et,et,[1]),rt(qe,"XmlReader",Mt),rt(ri,"DomReader",it,et,[qe]),rt(_i,"Companion",pt),rt(fi,et,it),rt(Dr,"PlatformXmlWriterBase",it),rt(ci,"DomWriter",it,Dr),rt(Ei,"EventType",it,xt),rt(vi,"START_DOCUMENT",it,Ei),rt(wi,"START_ELEMENT",it,Ei),rt(di,"END_ELEMENT",it,Ei),rt(pi,"COMMENT",it,Ei),rt(mi,"TEXT",it,Ei),rt(gi,"CDSECT",it,Ei),rt($i,"DOCDECL",it,Ei),rt(yi,"END_DOCUMENT",it,Ei),rt(bi,"ENTITY_REF",it,Ei),rt(ki,"IGNORABLE_WHITESPACE",it,Ei),rt(ji,"ATTRIBUTE",it,Ei),rt(xi,"PROCESSING_INSTRUCTION",it,Ei),rt(Fi,"Companion",pt,et,[Ot]),rt(Hi,"Namespace",Mt),rt(Yi,"QNameSerializer",pt,et,[Ot]),rt(Gi,"SimpleIterator",it),rt(Ki,"SimpleNamespace",it,et,[Hi]),rt(te,"Companion",pt,et,[Ot]),rt(re,"SimpleNamespaceContext",it,et,[Vi],et,{0:ne}),rt(se,"XMLConstants",pt),rt(_e,"XmlBufferedReaderBase",it,et,[qe]),rt(ue,"XmlBufferedReader",it,_e),rt(le,"XmlDelegatingReader",it,et,[qe]),rt(ce,"Companion",pt),rt(je,"XmlEvent",it),rt(we,"TextEvent",it,je),rt(de,"EntityRefEvent",it,we),rt(pe,"EndDocumentEvent",it,je),rt($e,"NamedEvent",it,je),rt(me,"EndElementEvent",it,$e),rt(ge,"StartDocumentEvent",it,je),rt(ye,"StartElementEvent",it,$e),rt(be,"Attribute",it,je),rt(ke,"NamespaceImpl",it,et,[Hi]),rt(Gr,"IOException",it,Bn),rt(Se,"XmlException",it,Gr),rt(De,"Companion",pt),rt(Ne,"XmlDeclMode",it,xt),rt(Xe,"EscapeMode",it,xt),rt(rr,"Companion",pt),rt(or,"WriteState",it,xt),rt(dr,"KtXmlWriter",it,Dr),rt(mr,et,it),rt(gr,et,it),rt(yr,"XmlVersion",it,xt),rt(Sr,et,it,et,[Vi]),rt(qr,et,it),rt(Or,"NamespaceHolder",it),rt(Ar,"Companion",pt),rt(Nr,"NodeConsts",pt),rt(Pr,"NodeListIterator",it),rt(Lr,"ICompactFragment",Mt),rt(Vr,"QName",it),rt(Wr,"XmlStreaming",pt),rt(Zr,"Factory",it),rt(is,"Companion",pt),rt(rs,"CompactFragment",it,et,[Lr]),rt(as,"FragmentNamespaceContext",it,re),rt(_s,"Companion",pt),rt(fs,"XMLFragmentStreamReader",it,le),K(Zn).a3s=function(t,n){var i=this.b3s(t,n);return i.jj_1=G(),i.kj_1=null,i.qj()},K(Zn).ck=function(t,n){return this.a3s(t instanceof X?t:J(),n)},K(Zn).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=8,this.u3r_1=this.s3r_1.c3s_1,this.hj_1=1;continue t;case 1:if(null==this.u3r_1){this.hj_1=7;continue t}this.v3r_1=this.u3r_1.attributes,this.w3r_1=this.v3r_1.length,this.x3r_1=Z(0,this.w3r_1).d(),this.hj_1=2;continue t;case 2:if(!this.x3r_1.e()){this.hj_1=6;continue t}this.y3r_1=this.x3r_1.f();var n=this.v3r_1.item(this.y3r_1);if(this.z3r_1=null!=n&&Q(n)?n:J(),"xmlns"===this.z3r_1.prefix){this.hj_1=4;var i=this.z3r_1.localName;if((t=this.t3r_1.k4(new ke(null==i?this.z3r_1.name:i,this.z3r_1.value),this))===nt())return t;continue t}var e=this.z3r_1.prefix;if((null==e||0===tt(e))&&"xmlns"===this.z3r_1.localName){if(this.hj_1=3,(t=this.t3r_1.k4(new ke("",this.z3r_1.value),this))===nt())return t;continue t}this.hj_1=5;continue t;case 3:case 4:this.hj_1=5;continue t;case 5:this.hj_1=2;continue t;case 6:this.u3r_1=this.u3r_1.parentElement,this.hj_1=1;continue t;case 7:return G();case 8:throw this.kj_1}}catch(t){var r=t;if(8===this.ij_1)throw r;this.hj_1=this.ij_1,this.kj_1=r}},K(Zn).b3s=function(t,n){var i=new Zn(this.s3r_1,n);return i.t3r_1=t,i},K(ii).k3s=function(t){var n=this.c3s_1;return null==n?null:Ur(n,t)},K(ii).l3s=function(){return this},K(ii).d=function(){return ut((t=this,n=null,i=new Zn(t,n),e=function(t,n){return i.a3s(t,n)},e.$arity=1,e)).d();var t,n,i,e},K(ei).a3s=function(t,n){var i=this.b3s(t,n);return i.jj_1=G(),i.kj_1=null,i.qj()},K(ei).ck=function(t,n){return this.a3s(t instanceof X?t:J(),n)},K(ei).qj=function(){var t=this.jj_1;t:for(;;)try{switch(this.hj_1){case 0:this.ij_1=6,this.x3s_1=at(Ae(this.v3s_1)),this.hj_1=1;continue t;case 1:if(!this.x3s_1.e()){this.hj_1=5;continue t}if(this.y3s_1=this.x3s_1.f(),"xmlns"===this.y3s_1.b3t_1){if(this.hj_1=3,(t=this.w3s_1.k4(new ke(this.y3s_1.c3t_1,this.y3s_1.a3t_1),this))===nt())return t;continue t}var n=this.y3s_1.b3t_1;if(0===tt(n)&&"xmlns"===this.y3s_1.c3t_1){if(this.hj_1=2,(t=this.w3s_1.k4(new ke("",this.y3s_1.a3t_1),this))===nt())return t;continue t}this.hj_1=4;continue t;case 2:case 3:this.hj_1=4;continue t;case 4:this.hj_1=1;continue t;case 5:return G();case 6:throw this.kj_1}}catch(t){var i=t;if(6===this.ij_1)throw i;this.hj_1=this.ij_1,this.kj_1=i}},K(ei).b3s=function(t,n){var i=new ei(this.v3s_1,n);return i.w3s_1=t,i},K(ri).e3t=function(){var t,n=this.j3s();if(null==n)t=null;else{var i=n.namespaceURI;t=null==i?"":i}var e=t;if(null==e)throw ze("Only elements have a namespace uri");return e},K(ri).f3t=function(){var t=this.j3s(),n=null==t?null:t.localName;if(null==n)throw ze("Only elements have a local name");return n},K(ri).g3t=function(){var t,n=this.j3s();if(null==n)t=null;else{var i=n.prefix;t=null==i?"":i}var e=t;if(null==e)throw ze("Only elements have a prefix");return e},K(ri).h3t=function(){return this.f3s_1},K(ri).i3t=function(){return this.h3s_1},K(ri).j3t=function(){var t,n,i,e,r=this.e3s_1,s=null==r?null:r.nodeType,o=null==s?null:s;if(Rr(),5===o)e=!0;else{var u=null==s?null:s;Rr(),e=8===u}if(e)i=!0;else{var a=null==s?null:s;Rr(),i=3===a}if(i)n=!0;else{var h=null==s?null:s;Rr(),n=7===h}if(n)t=!0;else{var _=null==s?null:s;Rr(),t=4===_}if(!t)throw ze("Node is not a text node");var l=this.e3s_1;return(null!=l&&Q(l)?l:J()).data},K(ri).k3t=function(){var t=this.e3s_1,n=null==t||Q(t)?t:J(),i=null==n?null:n.attributes,e=null==i?null:i.length;return null==e?0:e},K(ri).l3t=function(){var t=this.e3s_1;return null==t?Di():si(t.nodeType,this.g3s_1)},K(ri).m3t=function(){return ni(this.e3s_1,ht()).toString()},K(ri).j3s=function(){var t,n=this.e3s_1,i=null==n?null:n.nodeType,e=null==i?null:i;if(Rr(),1===e){var r=this.e3s_1;t=null!=r&&Q(r)?r:J()}else t=null;return t},K(ri).n3t=function(){return new ii(this)},K(ri).o3t=function(){return _t(ut((t=new ei(this,null),(n=function(n,i){return t.a3s(n,i)}).$arity=1,n)));var t,n},K(ri).p3t=function(){var t=this.d3s_1,n=t.nodeType;return Rr(),9===n?(Q(t)?t:J()).inputEncoding:lt(t.ownerDocument).inputEncoding},K(ri).q3t=function(){return null},K(ri).w2a=function(){return"1.0"},K(ri).e=function(){return!this.g3s_1||!ft(this.e3s_1,this.d3s_1)},K(ri).f=function(){this.i3s_1=null;var t=this.e3s_1;if(null==t)return this.f3s_1=!0,this.e3s_1=this.d3s_1,Ci();if(this.g3s_1){if(null==t.nextSibling){this.e3s_1=t.parentNode;var n=this.e3s_1,i=null==n?null:n.nodeType,e=null==i?null:si(i,!0);return null==e?Di():e}this.e3s_1=t.nextSibling,this.g3s_1=!1}else{if(null==t.firstChild)return this.g3s_1=!0,qi();this.e3s_1=t.firstChild}var r,s=lt(this.e3s_1).nodeType,o=s;if(Rr(),1!==o){var u=s;Rr(),r=!(9===u)}else r=!1;return r&&(this.g3s_1=!0),si(s,this.g3s_1)},K(ri).r3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();var i=n.namespaceURI;return null==i?"":i},K(ri).s3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();var i=n.prefix;return null==i?"":i},K(ri).t3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();var i=n,e=i.localName;return null==e?i.name:e},K(ri).u3t=function(t){var n=Mr(ti(this).attributes,t);if(null==n)throw ct();return n.value},K(ri).v3t=function(t,n){return ti(this).getAttributeNS(t,n)},K(ri).a14=function(){this.e3s_1=null},K(fi).k3s=function(t){var n=this.s3u_1.d3u_1;return null==n?null:n.lookupNamespaceURI(t)},K(ci).w3u=function(){var t=this.c3u_1;if(null==t)throw ze("Document not created yet");return t},K(ci).x3u=function(t,n){var i=hi(this,"Namespace attribute");0===tt(t)?0===tt(n)&&""===i.lookupNamespaceURI("")||(oe(),oe(),i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns",n)):(oe(),oe(),i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+t,n))},K(ci).y3u=function(t,n,i){ui(this);var e,r=this.h3u_1;if(this.h3u_1=r+1|0,null==this.d3u_1&&null==this.c3u_1){var s=t;this.c3u_1=function(t){var n=document.implementation,i=t.p3w(),e=n.createDocument(null==i?"":i,Pe(t));return Q(e)?e:J()}(Fe(null==s?"":s,n,i)),this.d3u_1=this.c3u_1;for(var o=this.e3u_1.d();o.e();)o.f()(lt(this.c3u_1));var u=this.e3u_1;(dt(u,wt)?u:J()).d3(),this.f3u_1=0;var a=this.c3u_1;return this.d3u_1=null==a?null:a.documentElement,G()}if(null==this.d3u_1&&!this.a3u_1){for(var h=0,_=gt((e=this.w3u().childNodes,new Pr(e))).d();_.e();){var l=_.f().nodeType;Rr(),1===l&&$t(h=h+1|0)}h>0&&function(t){for(var n=t,i=n.firstChild;null!=i;){var e=i.nextSibling;Fr(i)&&n.removeChild(i),i=e}}(this.w3u())}var f=function(t,n){return t.createElementNS(n.p3w(),Pe(n))}(this.w3u(),Fe(t,n,i));lt(this.d3u_1).appendChild(f),this.d3u_1=f,G()},K(ci).t3u=function(t){ui(this);var n,i,e=this.d3u_1;if(null==e)ai(this,(n=this,i=t,function(t){return n.t3u(i),G()}));else{var r=this.w3u().createComment(t);e.appendChild(r)}},K(ci).z3u=function(t){li(),this.f3u_1=-1;var n,i,e=this.d3u_1;if(null==e){if(!yt(t))throw ze("Not in an element -- text");ai(this,(n=this,i=t,function(t){return n.l3u(i),G()}))}else{var r=this.w3u().createTextNode(t);e.appendChild(r)}},K(ci).a3v=function(t){li(),this.f3u_1=-1;var n=this.w3u().createCDATASection(t),i=this.d3u_1;if(null==(null==i?null:i.appendChild(n)))throw ze("Not in an element -- cdsect")},K(ci).u3u=function(t){li(),oi(this,2147483647);var n,i,e=this.d3u_1,r=null==e?null:e.nodeType,s=null==r?null:r;if(Rr(),1!==s)throw ze("Document already started");if(null==this.c3u_1)ai(this,(n=this,i=t,function(t){return n.u3u(i),G()}));else{var o,u=bt(t,ot(32));if(u<0)o=kt(t,"");else{var a,h=t.substring(0,u),_=u+1|0;a=t.substring(_),o=kt(h,a)}var l=o,f=l.d4(),c=l.e4(),v=this.w3u().createProcessingInstruction(f,c);this.w3u().appendChild(v)}},K(ci).l3u=function(t){var n,i,e=this.d3u_1;if(null==e)ai(this,(n=this,i=t,function(t){return n.l3u(i),G()}));else{var r=e.nodeType;if(Rr(),9!==r){var s=this.w3u().createTextNode(t);e.appendChild(s)}}li(),this.f3u_1=-1},K(ci).b3v=function(t,n,i,e){var r=hi(this,"attribute");if(null==i||0===tt(i))r.setAttribute(n,e);else{var s,o=t;null==o?(oe(),s=""):s=o,r.setAttributeNS(s,i+":"+n,e)}},K(ci).v3u=function(t){li(),oi(this,2147483647);var n,i,e=this.c3u_1;if(null==e)ai(this,(n=this,i=t,function(t){return n.v3u(i),G()}));else{var r=jt(t,[" "],et,3),s=r.h(0),o=r.g()>1?r.h(1):"",u=r.g()>2?r.h(2):"",a=e.implementation.createDocumentType(s,o,u);e.appendChild(a)}},K(ci).c3v=function(t,n,i){li(),oi(this,2147483647),this.i3u_1=t,this.j3u_1=n,this.k3u_1=i},K(ci).d3v=function(){this.d3u_1=null},K(ci).e3v=function(t,n,i){var e=this.h3u_1;this.h3u_1=e-1|0,li(),oi(this,2147483647),this.d3u_1=hi(this,"No current element or no parent element").parentNode},K(ci).f3v=function(t){var n=this.d3u_1;return null==n?null:Ur(n,t)},K(ci).a14=function(){var t;Jr(0===this.h3u_1,(t=this,function(){return"Closing a dom writer but not all elements were closed (depth:"+t.h3u_1+")"})),this.d3u_1=null},K(vi).i3v=function(t){return new ge(t.m3t(),t.w2a(),t.p3t(),t.q3t())},K(vi).j3v=function(t,n){t.c3v(n.w2a(),n.p3t(),n.q3t())},K(wi).i3v=function(t){return new ye(t.m3t(),t.e3t(),t.f3t(),t.g3t(),Ae(t),t.n3t().l3s(),t.o3t())},K(wi).j3v=function(t,n){t.y3u(n.e3t(),n.f3t(),n.g3t());for(var i=n.o3t().d();i.e();){var e=i.f();t.x3u(e.g3t(),e.e3t())}var r=0,s=n.k3t();if(r0&&s<=o||u<0&&o<=s)do{var a=s;s=s+u|0,this.x3w(a)===t&&r.a(a)}while(a!==o);var h=Zt(r);n=null==h?null:this.y3w(h)}return n},K(re).x3w=function(t){try{return this.u3w_1[Y(t,2)]}catch(n){if(n instanceof tn)throw Qt("Index out of range: "+t);throw n}},K(re).y3w=function(t){try{return this.u3w_1[Y(t,2)+1|0]}catch(n){if(n instanceof tn)throw Qt("Index out of range: "+t);throw n}},K(re).d=function(){return new Gi(this)},K(re).m3s=function(t){return t instanceof re&&0===t.g()?this:t instanceof re&&0===this.g()?t:Kn.call(this,t)},K(re).equals=function(t){return this===t||t instanceof re&&!!nn(this.u3w_1,t.u3w_1)},K(re).hashCode=function(){return en(this.u3w_1)},K(ue).r3x=function(){return!this.q3x_1.m()},K(ue).s3x=function(){return this.q3x_1.u2()},K(ue).t3x=function(){return this.q3x_1.x2()},K(ue).u3x=function(){var t=this.x3x_1;if(null==t)throw ze("Push back fails due to missing current element");var n=t;switch(n.l3t().l6_1){case 1:this.z3x();break;case 2:this.a3y()}this.q3x_1.v2(n)},K(ue).b3y=function(t){this.q3x_1.l(t)},K(ue).a14=function(){K(_e).a14.call(this),this.q3x_1.d3()},K(_e).e3t=function(){var t,n=this.x3x_1,i=null==n?null:n.l3t();switch(null==i?-1:i.l6_1){case 10:var e=this.x3x_1;t=(e instanceof be?e:J()).d3t_1;break;case 1:var r=this.x3x_1;t=(r instanceof ye?r:J()).a3z_1;break;case 2:var s=this.x3x_1;t=(s instanceof me?s:J()).a3z_1;break;default:throw ze("Attribute not defined here: namespaceUri")}return t},K(_e).f3t=function(){var t,n=this.x3x_1,i=null==n?null:n.l3t();switch(null==i?-1:i.l6_1){case 10:var e=this.x3x_1;t=(e instanceof be?e:J()).c3t_1;break;case 1:var r=this.x3x_1;t=(r instanceof ye?r:J()).b3z_1;break;case 2:var s=this.x3x_1;t=(s instanceof me?s:J()).b3z_1;break;default:throw ze("Attribute not defined here: namespaceUri")}return t},K(_e).g3t=function(){var t,n=this.x3x_1,i=null==n?null:n.l3t();switch(null==i?-1:i.l6_1){case 10:var e=this.x3x_1;t=(e instanceof be?e:J()).b3t_1;break;case 1:var r=this.x3x_1;t=(r instanceof ye?r:J()).c3z_1;break;case 2:var s=this.x3x_1;t=(s instanceof me?s:J()).c3z_1;break;default:throw ze("Attribute not defined here: namespaceUri")}return t},K(_e).i3t=function(){return this.w3x_1.o3y_1},K(_e).a3y=function(){this.w3x_1.a3y()},K(_e).z3x=function(){this.w3x_1.z3x()},K(_e).j3t=function(){var t;if(lt(this.x3x_1).l3t()===Ri()){var n=this.x3x_1;t=(n instanceof be?n:J()).a3t_1}else{var i=this.x3x_1;t=(i instanceof we?i:J()).o3u_1}return t},K(_e).k3t=function(){return ae(this).u3y_1.length},K(_e).h3t=function(){return!(null==this.x3x_1)},K(_e).l3t=function(){var t=this.x3x_1,n=null==t?null:t.l3t();if(null==n)throw this.e()?ze("Attempting to get the event type before getting an event."):ze("Attempting to read beyond the end of the stream");return n},K(_e).m3t=function(){var t=this.x3x_1,n=null==t?null:t.y3x_1;return null==n?this.v3x_1.m3t():n},K(_e).n3t=function(){var t=this.x3x_1;return t instanceof ye?t.n3t():t instanceof me?t.h3z_1:this.w3x_1.p3y_1},K(_e).o3t=function(){var t=this.x3x_1;return t instanceof ye?Wt(t.o3t()):this.w3x_1.i3z()},K(_e).p3t=function(){var t=this.x3x_1;return(t instanceof ge?t:J()).k3z_1},K(_e).q3t=function(){var t=this.x3x_1;return(t instanceof ge?t:J()).m3z_1},K(_e).w2a=function(){var t=this.x3x_1;return(t instanceof ge?t:J()).l3z_1},K(_e).c3y=function(){if(this.r3x())return he(this);if(!this.e())throw sn();return this.d3y(),he(this)},K(_e).d3y=function(){return this.r3x()||this.b3y(this.e3y()),this.s3x()},K(_e).e3y=function(){if(this.v3x_1.e()){this.v3x_1.f();var t=ve().y3y(this.v3x_1),n=on(1);return n.a(t),n}return vt()},K(_e).e=function(){return!(!this.r3x()&&null==this.d3y())},K(_e).a14=function(){this.v3x_1.a14()},K(_e).f3y=function(){return this.g3y().l3t()},K(_e).g3y=function(){var t,n=this.c3y();switch(n.l3t().l6_1){case 4:if(!Le((n instanceof we?n:J()).o3u_1))throw ze("Unexpected element found when looking for tags: "+n);t=this.g3y();break;case 3:case 9:case 11:t=this.g3y();break;case 1:case 2:t=n;break;default:throw ze("Unexpected element found when looking for tags: "+n)}return t},K(_e).f=function(){return this.c3y().l3t()},K(_e).r3t=function(t){return ae(this).u3y_1[t].d3t_1},K(_e).s3t=function(t){return ae(this).u3y_1[t].b3t_1},K(_e).t3t=function(t){return ae(this).u3y_1[t].c3t_1},K(_e).u3t=function(t){return ae(this).u3y_1[t].a3t_1},K(_e).v3t=function(t,n){var i;t:{for(var e=ae(this).u3y_1,r=0,s=e.length;r")},K(dr).v3u=function(t){if(sr(),nr(this,2147483647),tr(this),!this.e40_1.equals(vr()))throw ze("Writing a DTD is only allowed once, in the prolog");this.e40_1=(Ye(),A);var n,i=this.x3z_1.b("")},K(dr).u3u=function(t){Je(this,!1),sr(),nr(this,2147483647),tr(this),this.x3z_1.b("")},K(dr).y3u=function(t,n,i){if(Je(this,!1),e=this,r=r===et?e.i3t():r,nr(e,r),tr(this),this.e40_1.equals((Ye(),D)))throw ze("Attempting to write tag after the document finished");var e,r,s;if(this.e40_1=wr(),""===t)s="";else{var o=this.n40(t);s=null!=o?o:null==i?this.f40_1.o40():i}var u=s;(function(t,n,i,e,r){var s=Y(n,3);if(t.d40_1.length<(s+3|0)){var o=t.d40_1.length+12|0,u=Ht(Array(o),null),a=t.d40_1;dn(a,u,0,0,s),t.d40_1=u}var h=s;s=h+1|0,t.d40_1[h]=i;var _=s;s=_+1|0,t.d40_1[_]=e,t.d40_1[s]=r})(this,this.i3t(),null==t?"":t,u,n),this.x3z_1.k7(ot(60)),tt(u)>0&&(this.x3z_1.b(u),this.x3z_1.k7(ot(58))),this.x3z_1.b(n),this.c40_1=!0,this.f40_1.a3y(),ir(this,t,u)},K(dr).e3v=function(t,n,i){if(this.f40_1.z3x(),sr(),nr(this,2147483647),(null==t?"":t)!==We(this,this.i3t())||Ke(this,this.i3t())!==n)throw fn(" does not match start");if(this.c40_1)Je(this,!0);else{this.x3z_1.b("0&&(this.x3z_1.b(e),this.x3z_1.k7(ot(58))),this.x3z_1.b(n),this.x3z_1.k7(ot(62))}},K(dr).t3u=function(t){Je(this,!1),sr(),nr(this,2147483647),tr(this);var n=!1;this.x3z_1.b("\x3c!--");for(var i=pr(t).d();i.e();){var e,r=i.f().y9_1,s=new Sn(r);e=mn(45),ft(s,new Sn(e))?n?(n=!1,this.x3z_1.b("-")):(n=!0,this.x3z_1.k7(ot(45))):Ze(this.x3z_1,this,r,hr())}this.x3z_1.b("--\x3e")},K(dr).z3u=function(t){Je(this,!1),Qe(this,t,fr());sr(),this.g40_1=-1},K(dr).a3v=function(t){Je(this,!1);var n=0;this.x3z_1.b("");sr(),this.g40_1=-1},K(dr).l3u=function(t){Je(this,!1),tr(this);for(var n=t,i=0,e=n.length;i0)||null==t)&&tt(t)>0&&(this.p40(i,t),ir(this,t,i)),!this.c40_1)throw st("illegal position for attribute");er(this,null==(s=null==i||0===tt(i)?i:this.f3v(i)!=t?this.n40(t):i)?"":s,n,e)},K(dr).x3u=function(t,n){var i=this.f40_1.q40(t);if(null!=i){if(this.y3z_1)return G();throw st(i!==n?"Attempting to set prefix to different values in the same tag":"Namespace attribute duplicated")}if(this.f40_1.r40(t,n),!this.c40_1)throw st("illegal position for attribute");tt(t)>0?(oe(),er(this,"xmlns",t,n)):(oe(),er(this,"","xmlns",n))},K(dr).d3v=function(){if(Kr(0===this.i3t()),!this.e40_1.equals(wr()))throw ze("Attempting to end document when in invalid state: "+this.e40_1);for(;this.i3t()>0;)this.e3v(We(this,this.i3t()-1|0),Ge(this,this.i3t()-1|0),Ke(this,this.i3t()-1|0));this.h1e()},K(dr).p40=function(t,n){n!==this.f3v(t)&&this.f40_1.r40(t,n)},K(dr).f3v=function(t){return this.f40_1.h40(t)},K(dr).n40=function(t){var n=t;return null==n?null:this.f40_1.s40(n)},K(dr).a14=function(){this.f40_1.d3()},K(mr).e=function(){return this.t40_1=this.n3y_1.length&&(this.n3y_1=Tn(this.n3y_1,Y(this.n3y_1.length,2))),this.n3y_1[this.o3y_1]=0===this.o3y_1?0:this.n3y_1[this.o3y_1-1|0]},K(Or).z3x=function(){var t=kr(this,this.o3y_1),n=t.y_1,i=t.z_1;if(n<=i)do{var e=n;n=n+1|0,this.m3y_1[xr(0,e)]=null,this.m3y_1[zr(0,e)]=null}while(e!==i);this.n3y_1[this.o3y_1]=0;this.o3y_1=this.o3y_1-1|0},K(Or).z40=function(){return this.n3y_1[this.o3y_1]},K(Or).d3=function(){var t;t=Ht(Array(10),null),this.m3y_1=t,this.n3y_1=new Int32Array(20),this.o3y_1=0},K(Or).x3y=function(t){this.r40(t.g3t(),t.e3t())},K(Or).r40=function(t,n){var i=this.o3y_1>=1?this.n3y_1[this.o3y_1-1|0]:0,e=this.n3y_1[this.o3y_1];if(i=this.m3y_1.length&&((s=this).m3y_1=In(s.m3y_1,Y(s.m3y_1.length,2))),function(t,n,i){var e=t.m3y_1,r=xr(0,n),s=null==i?null:Bt(i);e[r]=null==s?"":s}(this,o,t),function(t,n,i){var e=t.m3y_1,r=zr(0,n),s=null==i?null:Bt(i);e[r]=null==s?"":s}(this,o,n);var u=this.n3y_1,a=this.o3y_1,h=u[a];u[a]=h+1|0},K(Or).h40=function(t){var n,i=Bt(t);if(oe(),"xml"===i)return oe(),"http://www.w3.org/XML/1998/namespace";if(oe(),"xmlns"===i)return oe(),"http://www.w3.org/2000/xmlns/";t:{var e=Dn(this.z40()-1|0,0),r=e.y_1,s=e.z_1,o=e.a1_1;if(o>0&&r<=s||o<0&&s<=r)do{var u=r;if(r=r+o|0,Er(this,u)===i){n=u;break t}}while(u!==s);n=null}var a,h,_=null==n?null:Cr(this,n);return null==_?(0===tt(i)?(oe(),h=""):h=null,a=h):a=_,a},K(Or).s40=function(t){var n,i=Bt(t);if(oe(),"http://www.w3.org/XML/1998/namespace"===i)oe(),n="xml";else if(oe(),"http://www.w3.org/2000/xmlns/"===i)oe(),n="xmlns";else if(""===i){var e,r;t:{var s=Z(0,this.z40());if(dt(s,Yt)&&s.m())r=!0;else{var o=s.y_1,u=s.z_1;if(o<=u)do{var a=o;o=o+1|0;var h=Er(this,a);if(0===tt(h)){r=!1;break t}}while(a!==u);r=!0}}r?(oe(),e=""):e=null,n=e}else{var _;t:{var l=Dn(this.z40()-1|0,0),f=l.y_1,c=l.z_1,v=l.a1_1;if(v>0&&f<=c||v<0&&c<=f)do{var w,d=f;if(f=f+v|0,Cr(this,d)===i){var p;n:{var m=Z(d+1|0,this.z40());if(dt(m,Yt)&&m.m())p=!0;else{var g=m.y_1,$=m.z_1;if(g<=$)do{var y=g;if(g=g+1|0,Er(this,d)===Er(this,y)){p=!1;break n}}while(y!==$);p=!0}}w=p}else w=!1;if(w){_=d;break t}}while(d!==c);_=null}n=null==_?null:Er(this,_)}return n},K(Or).d=function(){return new qr(this)},K(Or).o40=function(){var t;do{t="n"+this.l3y_1}while(null!=this.h40(t));return t},K(Or).q40=function(t){var n=kr(this,this.o3y_1),i=n.y_1,e=n.z_1,r=i,s=Mn(i,e,2);if(r<=s)do{var o=r;if(r=r+2|0,this.m3y_1[xr(0,o)]===t)return this.m3y_1[zr(0,o)]}while(o!==s);return null},K(Ar).b41=function(t){for(var n=mt(),i=ht(),e=0,r=t,s=0,o=r.length;s");break;default:i.k7(u)}else switch(e){case 1:case 2:case 3:i.ig("\x3c!----\x3e",0,e),e=0,i.k7(u);break;case 0:case 4:i.k7(u);break;case 5:e=4,i.k7(ot(45)).k7(u);break;case 6:throw ze("-- is not allowed to occur inside xml comment text")}}if(e>0)throw ze("Indent can not contain unclosed comment");return Ir(i,n),n},K(Dr).v3z=function(t){this.y3t_1=Tr().b41(t)},K(Pr).e=function(){return this.p41_1=0){if(!ft(new vn(cn(t,0)),new vn(ot(123))))throw fn("Not a valid qname literal");e=Bt(wn(t,1,r));var s=r+1|0,o=tt(t);i=Bt(wn(t,s,o))}else e=n.e3t(),i=Bt(t);return Hr(e,i)},t})?e.apply(n,r):e)||(t.exports=s)},520:function(t,n,i){var e,r,s;r=[n,i(744),i(885),i(645)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,f,c,v,w,d,p,m,g,$,y,b,k,j,x,z,E,C=Math.imul,S=n.$_$.l,q=n.$_$.u4,O=i.$_$.i,I=i.$_$.g1,A=n.$_$.ea,T=n.$_$.l4,D=n.$_$.uf,M=n.$_$.a,N=e.$_$.t2,R=n.$_$.hf,P=e.$_$.p2,L=i.$_$.o,F=e.$_$.u,U=e.$_$.m1,H=n.$_$.ta,V=n.$_$.sa,B=n.$_$.ng,Y=n.$_$.ua,W=n.$_$.l9,G=n.$_$.ue,K=n.$_$.u9,J=n.$_$.o9,X=e.$_$.l2,Z=n.$_$.ra,Q=n.$_$.v9,tt=e.$_$.n2,nt=i.$_$.r,it=i.$_$.h1,et=i.$_$.e1,rt=i.$_$.w,st=i.$_$.m,ot=i.$_$.l,ut=n.$_$.x4,at=e.$_$.o,ht=e.$_$.m2,_t=i.$_$.v,lt=n.$_$.d,ft=i.$_$.p,ct=e.$_$.m,vt=e.$_$.l,wt=n.$_$.td,dt=n.$_$.ud,pt=n.$_$.ee,mt=n.$_$.a3,gt=n.$_$.be,$t=n.$_$.he,yt=n.$_$.w3,bt=n.$_$.yd,kt=n.$_$.fe,jt=n.$_$.i3,xt=n.$_$.ae,zt=n.$_$.ge,Et=n.$_$.p3,Ct=n.$_$.wd,St=n.$_$.id,qt=e.$_$.v1,Ot=e.$_$.w1,It=i.$_$.c,At=i.$_$.f,Tt=i.$_$.f1,Dt=e.$_$.c,Mt=i.$_$.a1,Nt=i.$_$.b1,Rt=n.$_$.eg,Pt=n.$_$.j9,Lt=n.$_$.h1,Ft=n.$_$.j2,Ut=e.$_$.d1,Ht=n.$_$.ha,Vt=e.$_$.a,Bt=e.$_$.k1,Yt=e.$_$.l1,Wt=e.$_$.t1,Gt=e.$_$.u1,Kt=n.$_$.e9,Jt=n.$_$.j,Xt=n.$_$.u,Zt=n.$_$.v1,Qt=e.$_$.o2,tn=i.$_$.j,nn=e.$_$.x1,en=i.$_$.d,rn=n.$_$.k,sn=n.$_$.k7,on=i.$_$.q,un=n.$_$.i4,an=n.$_$.i6,hn=e.$_$.h,_n=i.$_$.c1,ln=i.$_$.y,fn=e.$_$.s1,cn=n.$_$.ld,vn=n.$_$.sb,wn=i.$_$.d1,dn=i.$_$.s,pn=n.$_$.ya,mn=i.$_$.t,gn=n.$_$.lg,$n=n.$_$.v6,yn=i.$_$.b,bn=i.$_$.e,kn=i.$_$.g,jn=n.$_$.xf,xn=i.$_$.x,zn=n.$_$.m2,En=n.$_$.od,Cn=i.$_$.j1,Sn=n.$_$.nd,qn=n.$_$.dd,On=i.$_$.h,In=i.$_$.a,An=n.$_$.f9,Tn=e.$_$.r2,Dn=e.$_$.d,Mn=n.$_$.t9,Nn=e.$_$.f,Rn=e.$_$.n,Pn=e.$_$.j,Ln=e.$_$.k,Fn=e.$_$.c1,Un=n.$_$.q5,Hn=n.$_$.f7,Vn=n.$_$.fb,Bn=n.$_$.t,Yn=n.$_$.r,Wn=n.$_$.q9,Gn=n.$_$.a8,Kn=n.$_$.o5,Jn=n.$_$.ec,Xn=n.$_$.zb,Zn=n.$_$.xb,Qn=n.$_$.bc,ti=n.$_$.hc,ni=n.$_$.g9,ii=n.$_$.kd,ei=n.$_$.vc,ri=i.$_$.z,si=n.$_$.qe,oi=n.$_$.af,ui=e.$_$.e1,ai=n.$_$.aa,hi=n.$_$.le,_i=n.$_$.dg,li=n.$_$.z1,fi=n.$_$.c,ci=n.$_$.e1,vi=n.$_$.w,wi=e.$_$.q1,di=e.$_$.g,pi=e.$_$.o1,mi=i.$_$.k,gi=n.$_$.o7,$i=n.$_$.b8,yi=n.$_$.u6,bi=i.$_$.i1,ki=n.$_$.q4,ji=e.$_$.a1,xi=n.$_$.t4,zi=e.$_$.y,Ei=n.$_$.r4,Ci=e.$_$.z,Si=n.$_$.s4,qi=e.$_$.b1,Oi=n.$_$.r5,Ii=n.$_$.r1,Ai=e.$_$.i,Ti=n.$_$.pd,Di=i.$_$.n,Mi=n.$_$.oc,Ni=n.$_$.qc,Ri=n.$_$.ub,Pi=n.$_$.s9,Li=n.$_$.ef,Fi=n.$_$.d8,Ui=n.$_$.m9,Hi=e.$_$.k2,Vi=e.$_$.s2,Bi=i.$_$.u,Yi=n.$_$.hd;function Wi(){return this.w44().f33()}function Gi(){return this.w44().n33()}function Ki(t){return this.w44().s33(t)}function Ji(t,n,i,e){return t=t===B?this.t4i():t,n=n===B?this.l4j():n,i=i===B?this.l4k():i,e===B?this.d4l(t,n,i):e.d4l.call(this,t,n,i)}function Xi(t){var n;t.s32("namespaces",Qi().e42_1.i32());var i=N(M(T().xf(),D([]),!1));return n=(A(i,P)?i:R()).i32(),t.s32("content",n),q()}function Zi(){r=this,this.e42_1=F(L()),this.f42_1=U("compactFragment",[],Xi)}function Qi(){return null==r&&new Zi,r}function te(){re.call(this,"Element",0),s=this}function ne(){re.call(this,"Attribute",1),o=this}function ie(){re.call(this,"Text",2),u=this}function ee(){if(a)return q();a=!0,s=new te,o=new ne,u=new ie}function re(t,n){G.call(this,t,n)}function se(){return ee(),o}function oe(){he.call(this,"Attribute",1),_=this}function ue(){he.call(this,"Text",2),l=this}function ae(){if(c)return q();c=!0,h=new he("Element",0),_=new oe,l=new ue,f=new he("Mixed",3),new he("Inline",4)}function he(t,n){G.call(this,t,n)}function _e(){return ae(),h}function le(){return ae(),_}function fe(){return ae(),l}function ce(){return ae(),f}function ve(t,n){this.z42_1=t,this.a43_1=n}function we(t){return q()}function de(t,n,i){return n=n===B?X():n,ye.call(i,function(t,n){var i,e=(t=t===B?new ur:t).c4h_1,r=t.d4h_1,s=t.e4h_1,o=t.g4h_1;if(null==o){var u=t.n4h(),a=null!=u&&u,h=t.i4h_1,_=t.f4h_1;i=new Er(!1,a,h,null==_?hr().o4h_1:_)}else i=o;return _r.call(n,e,r,s,i,t.k4h_1,t.l4h_1),n.f49_1=t.j4h_1,n.g49_1=t.m4h_1,n}(t,Z(H(_r))),n),i}function pe(t,n){return function(t,n,i){t=t===B?X():t,n=n===B?$e:n;var e=new ur;return n(e),de(e,t,i),i}(t,n,Z(H(ye)))}function me(){w=this,this.c43_1=pe(B,we)}function ge(){}function $e(t){return q()}function ye(t,n){null==w&&new me,n=n===B?X():n,this.d43_1=t,this.e43_1=tt(n,(Ee(),v))}function be(t,n,i){var e;if(Ee(),t.u44_1===Sr()){var r;if(t.t44_1===Sr()){var s=null==i?null:st(i.e3t(),n);r=null==s?ot(n):s}else{var o=null==i?null:st(i.e3t(),t.t44_1);r=null==o?ot(t.t44_1):o}e=r}else e=t.t44_1===Sr()?t.v44_1===Sr()?st(n,t.u44_1):new rt(n,t.u44_1,t.v44_1):t.v44_1===Sr()?st(t.u44_1,t.t44_1):new rt(t.u44_1,t.t44_1,t.v44_1);return e}function ke(t){Ee();var n=0,i=t.l33();if(n":e)+" ("+n+")",r);return an()}function rr(t,n,i,e,r){return an()}function sr(t,n,i,e,r){var s;if(t.e3t()!==i.l44().p3w())s=!0;else{var o;if(n.equals(se())){var u=null==e?null:e.p3w();on(),o="http://www.w3.org/2001/XMLSchema-instance"===u}else o=!1;s=o}if(!s)throw new lr(t.m3t(),"("+i.w44().j33()+") "+i.l44()+"/"+pn(null==e?"":e)+" ("+n+")",r);return an()}function or(t,n,i,e){var r=t.m3t(),s=null==i?null:i.toString();throw new lr(r,null==s?"":s,e)}function ur(t,n,i,e,r,s){t=t===B||t,n=n===B?On():n,i=i===B?"":i,e=e===B?null:e,r=r===B?hr().o4h_1:r,s=s===B?null:s,this.c4h_1=t,this.d4h_1=n,this.e4h_1=i,this.f4h_1=r,this.g4h_1=s,this.h4h_1=e,this.i4h_1=mr(),this.j4h_1=!0,this.k4h_1=null,this.l4h_1=In(),this.m4h_1=!1}function ar(){m=this;var t=er;this.o4h_1=new tr(t);var n=rr;this.p4h_1=new nr(n);var i=sr;this.q4h_1=new ir(i),this.r4h_1=or}function hr(){return null==m&&new ar,m}function _r(t,n,i,e,r,s){hr(),t=t===B||t,n=n===B?On():n,i=i===B?"":i,r=r===B?null:r,s=s===B?In():s,this.z48_1=t,this.a49_1=n,this.b49_1=i,this.c49_1=e,this.d49_1=r,this.e49_1=s,this.f49_1=!0,this.g49_1=!1}function lr(t,n,i){var e=function(t){return!0===t.d().e()?$n(t,B,"\n candidates: ",B,B,B,vr):""}(i=i===B?an():i),r=null==t?null:" at position "+t;fr.call(this,"Could not find a field for name "+n+e+(null==r?"":r)),An(this,lr)}function fr(t,n){Dn(t,n=n===B?null:n,this),An(this,fr)}function cr(t,n,i){i=i===B?null:i,fr.call(this,"Invalid XML value at position: "+t+": "+n,i),An(this,cr)}function vr(t){return t instanceof Ge?t.z46_1+" ("+t.b47_1.r42()+")":pn(t)}function wr(t,n){this.y4h_1=t,this.z4h_1=n}function dr(t,n){this.a4i_1=t,this.b4i_1=n}function pr(t,n){G.call(this,t,n)}function mr(){return function(){if($)return q();$=!0,new pr("ALWAYS",0),g=new pr("ANNOTATED",1),new pr("NEVER",2)}(),g}function gr(){}function $r(t){return function(t,n){return br.call(n,t.s4h_1,t.t4h_1,t.u4h_1,t.v4h_1,t.w4h_1),n}(t,Z(H(br)))}function yr(t){return function(t,n){return Er.call(n,t.d4j_1,t.e4j_1,t.f4j_1,t.g4j_1,t.h4j_1),n}(t,Z(H(Er)))}function br(t,n,i,e,r){t=t!==B&&t,n=n!==B&&n,i=i===B?mr():i,e=e===B?hr().o4h_1:e,r=r===B?null:r,this.d4j_1=t,this.e4j_1=n,this.f4j_1=i,this.g4j_1=e,this.h4j_1=r}function kr(t,n,i){var e=n.g2(t);if(null==e)throw new fr("Could not find the attribute in "+i.j33()+" with the name: "+t+"\n Candidates were: "+$n(n.h2()));return e}function jr(){return"Type name info should match"}function xr(t){return t instanceof Lr}function zr(t){return function(t){for(var n=ii(t.d4k_1,ni([zn(59)])),i=rn(Un(n,10)),e=n.d();e.e();){var r,s,o=e.f(),u=ei(o,zn(61));if(-1===u)s=new ri("",o);else{var a,h=o.substring(0,u),_=u+1|0;a=o.substring(_),s=new ri(h,a)}r=s,i.a(r)}return i}(t)}function Er(t,n,i,e,r){n=n!==B&&n,i=i===B?mr():i,r=r===B?null:r,this.s4h_1=t,this.t4h_1=n,this.u4h_1=i,this.v4h_1=e,this.w4h_1=r}function Cr(t,n,i){t=t===B?"ZXCVBNBVCXZ":t,n=n===B?"ZXCVBNBVCXZ":n,i=i===B?"ZXCVBNBVCXZ":i,this.t44_1=t,this.u44_1=n,this.v44_1=i}function Sr(){return y}function qr(){}function Or(){}function Ir(t){t=t===B||t,this.b4k_1=t}function Ar(t){t=t===B||t,this.s4c_1=t}function Tr(t,n,i){n=n===B?"ZXCVBNBVCXZ":n,i=i===B?"ZXCVBNBVCXZ":i,this.x44_1=t,this.y44_1=n,this.z44_1=i}function Dr(t){this.c4k_1=t}function Mr(){}function Nr(){}function Rr(){}function Pr(){}function Lr(){}function Fr(t){this.e4k_1=t}function Ur(){b=this,this.u4g_1=ui("javax.xml.namespace.QName",hn())}function Hr(){return null==b&&new Ur,b}function Vr(t){return Pi("element",1,Ri,(function(t){return Vr(t)}),null),t.o43_1.s()}function Br(t,n,i){var e,r;Gr.call(this,t,gs(n,i,!0,null)),this.o43_1=_i((e=t,r=this,function(){return Wr().f4k(e,r.f44_1,B,!1)}))}function Yr(){k=this}function Wr(){return null==k&&new Yr,k}function Gr(t,n,i){var e,r;Wr(),i=i===B?n:i,this.e44_1=t,this.f44_1=i,this.g44_1=n.l4k(),this.h44_1=n.t4i(),this.i44_1=n.m4j(),this.j44_1=this.h4k().b4j(n),this.k44_1=_i((e=this,r=n,function(){return e.h4k().h4i(r,e.f44_1,e.r42(),e.h44_1)}))}function Kr(t){return Pi("children",1,Ri,(function(t){return Kr(t)}),null),t.d44_1.s()}function Jr(t,n,i){var e;Qr.call(this,t,n,i),this.z43_1=t.h47_1.c49_1.p4i(n,i,!1);t:{for(var r=i.j4j().d();r.e();){var s=r.f();if(s instanceof qr){e=s;break t}}e=null}var o=e,u=t.h47_1.c49_1.k4i(n,i);this.a44_1=t.h47_1.c49_1.j4i(n,i)?fs():null==u?vs():new ws(u);var a,h,_=Xt(),l=this.a44_1;J(l,fs())?h=null:J(l,vs())?h=Wr().f4k(t,new Cs(this,1),B,!1).l44():l instanceof ws?h=this.l44():Rt();var f=h;if(null!=o)for(var c=i.i32(),v=null==c?null:c.w44(),w=null==v?null:v.j33(),d=null==w?"":w,p=i.i32(),m=null==p?null:p.l44(),g=new dr(d,null==m?st("",""):m),$=pi(this.w44()),y=null==$?T().nf():$,b=o.m4k_1,k=0,j=b.length;k0&&(F=L,B=J),L=L+1|0}while(L=0){var _=h.h(n);if(!J(_.r4j(),vt())||!J(_.p33(0).w44(),Qi().f42_1)){var l;t:{var f=yi(h),c=f.y_1,v=f.z_1;if(c<=v)do{var w=c;if(c=c+1|0,w!==n&&h.h(w).r42().equals(_e())){l=w;break t}}while(w!==v);l=null}var d=l;if(null!=d)throw new fr("Types with an @XmlValue member may not contain other child elements ("+r.w44().p33(d))}}return h})),this.c4l_1=_i(hs(this))}function ls(){x=this,ds.call(this)}function fs(){return null==x&&new ls,x}function cs(){z=this,ds.call(this)}function vs(){return null==z&&new cs,z}function ws(t){ds.call(this),this.t4g_1=t}function ds(){}function ps(){}function ms(){}function gs(t,n,i,e){return function(t,n,i,e,r){var s;e=e===B?null:e;var o=pi(t),u=null==o?null:Bs(o);return s=null==u?t.j33():u,$s.call(r,t,new wr(s,n),i,e),r}(t,n,i,e,Z(H($s)))}function $s(t,n,i,e,r){e=e===B?null:e,r=r===B?null:r,this.e4l_1=t,this.f4l_1=n,this.g4l_1=i,this.h4l_1=r,this.i4l_1=e}function ys(t,n,i,e,r){Qr.call(this,t,n,i),this.t4l_1=r,this.u4l_1=t.h47_1.c49_1.p4i(n,i,e)}function bs(t,n,i){var e,r,s;Qr.call(this,t,n,i),this.p4a_1=_i((e=t,r=this,s=i,function(){return Wr().j4k(e,new Cs(r,0,B,fe()),s,!0)})),this.q4a_1=_i(function(t,n,i){return function(){return Wr().j4k(t,new Cs(n,1,B,fe()),i,!0)}}(t,this,i))}function ks(t){return Pi("child",1,Ri,(function(t){return ks(t)}),null),t.g4m_1.s()}function js(){E=this;var t;t=[ji(ki()).i32(),zi(xi()).i32(),Ci(Ei()).i32(),qi(Si()).i32()],this.i4m_1=t}function xs(){return null==E&&new js,E}function zs(t,n,i,e){if(xs(),Qr.call(this,t,n,i),!n.k4j().m33())throw Lt("InlineDescriptors are only valid for inline classes");var r,s,o,u;this.g4m_1=_i((r=this,s=i,o=t,u=e,function(){var t;if(null!=r.h44_1.z4h_1)t=r.h44_1;else if(null!=r.a4k().o4j_1.z4h_1)t=r.a4k().o4j_1;else{var n,i=r.a4k().n4j_1.r33(0);t:{for(var e=r.a4k().n4j_1.o33(0).d();e.e();){var a=e.f();if(a instanceof Cr){n=a;break t}}n=null}var h=new wr(i,null==n?null:be(n,i,s.z4i()));t=null!=h.z4h_1?h:r.h44_1}var _=new Cs(r,0,t);return Wr().j4k(o,_,s,u)})),this.h4m_1=Oi(xs().i4m_1,this.w44())}function Es(t,n,i){i=i===B?n:i,Gr.call(this,t,n,i);var e;e=!(i instanceof $s&&i.g4l_1)&&t.h47_1.c49_1.i4i(n,i),this.h45_1=e}function Cs(t,n,i,e,r){i=i===B?null:i,e=e===B?null:e,r=r===B?null:r,this.j4m_1=t,this.k4m_1=n,this.l4m_1=r;var s,o=i;s=null==o?-1===this.k4m_1?new wr(this.j4m_1.w44().j33(),null):function(t,n,i){var e,r=t.r33(n);t:{for(var s=t.o33(n).d();s.e();){var o=s.f();if(o instanceof Cr){e=o;break t}}e=null}return new wr(r,null==e?null:be(e,r,i))}(this.j4m_1.w44(),this.k4m_1,bi(this.j4m_1.l44())):o,this.m4m_1=s;var u,a=e;u=null==a?-1===this.k4m_1?null:function(t){for(var n=null,i=t.d();i.e();){var e=i.f(),r=e instanceof Ar?e:null;if(!0===(null==r?null:r.s4c_1))return ce();if(e instanceof Mr)return le();if(e instanceof Ir)return e.b4k_1?_e():le();if(e instanceof qr||e instanceof Tr)return _e();e instanceof Or&&(n=e)}return!0===(null==n?null:n.n4k_1)?_e():null}(this.j4m_1.w44().o33(this.k4m_1)):a,this.n4m_1=u}function Ss(t,n,i,e){var r,s,o,u,a,h,_=Ti(n.a4i_1,zn(46),""),l=n.b4i_1,f=ei(i,zn(61));if(f<0){var c;if(o=i,r=qn(i,zn(46)),s=-1,u=l.r3w(),r<0)c=i;else{var v=r+1|0;c=i.substring(v)}a=c}else{var w=i.substring(0,f);if(o=pn(hi(ai(w)?w:R())),r=qn(i,zn(46),f-1|0),(s=ei(i,zn(58),f+1|0))<0){u=l.r3w();var d=f+1|0,p=i.substring(d);a=pn(hi(ai(p)?p:R()))}else{var m=f+1|0,g=i.substring(m,s);u=pn(hi(ai(g)?g:R()));var $=s+1|0,y=i.substring($);a=pn(hi(ai(y)?y:R()))}}if(s>=0){var b=t.n3t().k3s(u);h=null==b?l.p3w():b}else h=l.p3w();var k=h,j=0!==r||0===Pt(_)?o:_+"."+o.substring(1),x=t.g47_1.e36(e,j),z=null==x?null:x.i32();if(null==z)throw Di("Missing descriptor for "+j+" in the serial context");var E=z;return new ve(f<0?Je().x4g(E,new ri(u,k)):new rt(k,a,u),E)}function qs(t){var n;t:{for(var i=t.d();i.e();){var e=i.f();if(e instanceof Dr){n=e;break t}}n=null}return null==n?null:n.c4k_1}function Os(t,n,i,e,r,s){r=r===B?null:r,s=s===B?null:s,this.o4m_1=t,this.p4m_1=n,this.q4m_1=i,this.r4m_1=e,this.s4m_1=r,this.t4m_1=s,this.u4m_1=null}function Is(t,n){var i=0;if(in&&(n=e)}return n}function Ls(t,n,i){for(var e=t.w4j_1,r=S(),s=e.d();s.e();){var o=s.f();!n[o.u4j_1]&&r.a(o)}for(var u=r,a=u.d();a.e();){var h=a.f();i.a(h),n[h.u4j_1]=!0}for(var _=u.d();_.e();)Ls(_.f(),n,i)}function Fs(t,n){if(null==t[n.u4j_1]){t[n.u4j_1]=n;for(var i=n.w4j_1.d();i.e();)Fs(t,i.f())}}function Us(t){return t.v4j_1.m()}function Hs(t){return Pi("children",1,Ri,(function(t){return Hs(t)}),null),t.q4j_1.s()}function Vs(t,n){var i,e;this.n4j_1=t,this.o4j_1=function(t,n){var i;if(t.f33()&&Ni(t.j33(),zn(63)))i=Mi(t.j33(),1);else{var e=pi(t),r=null==e?null:Bs(e);i=null==r?t.j33():r}var s,o=i;t:{for(var u=t.k33().d();u.e();){var a=u.f();if(a instanceof Cr){s=a;break t}}s=null}return new wr(o,null==s?null:be(s,o,n))}(this.n4j_1,n),this.p4j_1=this.o4j_1.z4h_1,this.q4j_1=_i((i=this,e=n,function(){for(var t=0,n=i.n4j_1.l33(),r=Wn(Array(n),null);t=0;){var u=o;0===u?r=n.w35(t.f42_1,o,t.e42_1):1===u&&(s=n.t35(t.f42_1,o)),o=n.a36(t.f42_1)}i=O(r,s)}return i}(Qi(),i);return i.k35(n),e},H(te).j42=function(t){return t.equals(_e())},H(ne).j42=function(t){return t.equals(le())},H(ie).j42=function(t){return t.equals(fe())},H(re).m42=function(t){return this.j42(t.r42())},H(oe).u42=function(){return!0},H(ue).u42=function(){return!0},H(he).u42=function(){return!1},H(ve).b43=function(){return this.a43_1.j33()},H(ve).toString=function(){return"PolyBaseInfo(tagName="+this.z42_1+", descriptor="+this.a43_1+")"},H(ve).hashCode=function(){var t=this.z42_1.hashCode();return C(t,31)+K(this.a43_1)|0},H(ve).equals=function(t){if(this===t)return!0;if(!(t instanceof ve))return!1;var n=t instanceof ve?t:R();return!!this.z42_1.equals(n.z42_1)&&!!J(this.a43_1,n.a43_1)},H(me).y35=function(){return this.c43_1.e43_1},H(me).s3j=function(t,n){return this.c43_1.s3j(t,n)},H(ye).y35=function(){return this.e43_1},H(ye).s3j=function(t,n){return this.f43(t,nt().s41(n))},H(ye).g43=function(t,n,i){var e,r=i;if(null==r){var s;t:{for(var o=t.i32().k33().d();o.e();){var u=o.f();if(u instanceof Cr){s=u;break t}}s=null}e=null==s?null:be(s,t.i32().j33(),null)}else e=r;var a=e;it(n);var h,_=new We(this.e43_1,this.d43_1,n),l=new Br(_,t.i32(),a).p33(0),f=l instanceof Jr?l:null;if(null==f)h=null;else{var c,v=n.w3t();t:{for(var w=null,d=!1,p=f.b44_1.i2().d();p.e();){var m=p.f();if(et(v,m.l44())){if(d){c=null;break t}w=m,d=!0}}c=d?w:null}h=null==c?null:new Ge(v,0,c)}return new Te(_,l,h).i35(t)},H(ye).f43=function(t,n,i,e){return i=i===B?null:i,e===B?this.g43(t,n,i):e.g43.call(this,t,n,i)},H(Ae).y35=function(){return this.f47_1.g47_1},H(Ae).g42=function(){return this.f47_1.k47_1},H(Ae).w34=function(){return null},H(Ae).x34=function(){return wt(this.l47())},H(Ae).y34=function(){var t;if(this.m47_1.o47()){var n=pt(this.l47());t=mt(n)}else t=dt(this.l47());return t},H(Ae).z34=function(){var t;if(this.m47_1.o47()){var n=$t(this.l47());t=yt(n)}else t=gt(this.l47());return t},H(Ae).a35=function(){var t;if(this.m47_1.o47()){var n=kt(this.l47());t=jt(n)}else t=bt(this.l47());return t},H(Ae).b35=function(){var t;if(this.m47_1.o47()){var n=zt(this.l47());t=Et(n)}else t=xt(this.l47());return t},H(Ae).c35=function(){var t=this.l47();return Ct(t)},H(Ae).d35=function(){return Ct(this.l47())},H(Ae).e35=function(){return St(this.l47())},H(Ae).l47=function(t,n){return t=t===B||t,n===B?this.p47(t):n.p47.call(this,t)},H(Ae).f35=function(){return this.p47(!1)},H(Te).q47=function(){return null},H(Te).v34=function(){return!this.s44_1.r47()&&!this.g42().l3t().equals(It())},H(Te).g35=function(t){return this.r44_1=!0,this},H(Te).p47=function(t){var n,i=this.m47_1,e=i instanceof Qr?i:null,r=null==e?null:e.x46_1,s=this.m47_1.r42();if(this.q44_1>=0)n=this.g42().u3t(this.q44_1);else{var o;switch(s.l6_1){case 0:var u,a=this.g42(),h=At(),_=this.j33().p3w();u=this.j33().q3w(),a.x3t(h,_,u),o=Tt(this.g42());break;case 1:throw Dt("Attribute parsing without a concrete index is unsupported");case 4:throw Dt("Inline classes can not be decoded directly");case 3:o=Mt(this.g42());break;case 2:o=this.m47_1.s47()?Mt(this.g42()):Nt(this.g42());break;default:Rt()}n=o}var l=n;return t&&0===Pt(l)&&null!=r?r:l},H(Te).j35=function(t){throw Lt("This should not happen as decodeSerializableValue should be called first")},H(Te).i35=function(t){var n=this.m47_1.t47(t),i=this.r44_1&&this.m47_1 instanceof zs?this.m47_1.p33(0):this.m47_1;return n.j32(new Me(this.s44_1,i,this.p44_1,this.q44_1,this.q47()))},H(De).j35=function(t){throw Ft("Strings cannot be decoded to structures")},H(De).v34=function(){return!0},H(De).g35=function(t){return new De(this.y47_1,this.m47_1.p33(0),this.x47_1)},H(De).p47=function(t){var n,i=this.m47_1,e=i instanceof Qr?i:null,r=null==e?null:e.x46_1;if(t&&null!=r){var s=this.x47_1;n=0===Pt(s)}else n=!1;return n?r:this.x47_1},H(De).i35=function(t){return this.m47_1.t47(t).j32(this)},H(Me).q47=function(){return this.g48_1},H(Me).j48=function(t){this.h48_1.a(t)},H(Me).j35=function(t){if(t.f33())return new Re(this.i48_1,this.m47_1,this.q47());if(this.m47_1.n33()instanceof Ut)throw Lt("A primitive is not a composite");for(var n=this.m47_1 instanceof Jr?new Ye(this.i48_1,this.m47_1,this.p44_1):this.m47_1 instanceof rs?this.m47_1.r42().equals(le())?new Le(this.i48_1,this.m47_1,this.q44_1):this.m47_1.i45()?new Fe(this.i48_1,this.m47_1,this.p44_1,this.q47()):new Ue(this.i48_1,this.m47_1,this.q47()):this.m47_1 instanceof is?this.m47_1.i45()?new Ve(this.i48_1,this.m47_1,this.p44_1,this.q47()):new Be(this.i48_1,this.m47_1,this.p44_1,this.q47()):new Re(this.i48_1,this.m47_1,this.q47()),i=this.h48_1.d();i.e();){var e=i.f();n.j48(e)}return n},H(Ne).v34=function(){return!1},H(Ne).v35=function(t,n,i,e){var r=this.m47_1,s=r instanceof Qr?r:null,o=null==s?null:s.s48(i),u=null==o?e:o;return null==u||Ht(u)?u:R()},H(Ne).x35=function(t,n,i,e){return null},H(Ne).j35=function(t){return this},H(Ne).k35=function(t){},H(Ne).a36=function(t){var n=t.n33();if(n instanceof Yt||n instanceof Bt)return at(),-1;throw Lt("Null objects have no members")},H(Ne).l35=function(t,n){throw Lt("Null objects have no members")},H(Ne).m35=function(t,n){throw Lt("Null objects have no members")},H(Ne).n35=function(t,n){throw Lt("Null objects have no members")},H(Ne).o35=function(t,n){throw Lt("Null objects have no members")},H(Ne).b36=function(t){return 0},H(Ne).p35=function(t,n){throw Lt("Null objects have no members")},H(Ne).q35=function(t,n){throw Lt("Null objects have no members")},H(Ne).r35=function(t,n){throw Lt("Null objects have no members")},H(Ne).s35=function(t,n){throw Lt("Null objects have no members")},H(Ne).t35=function(t,n){throw Lt("Null objects have no members")},H(Ne).u35=function(t,n){throw Lt("Null objects have no members")},H(Re).g42=function(){return this.m46_1.k47_1},H(Re).v48=function(t,n,i){var e=this.n46_1.p33(n),r=e.t47(i);return this.g46_1>=0?null:r.i32().n33()instanceof Ut?new Te(this.m46_1,e,this.i46_1,this.h46_1):new Me(this.m46_1,e,this.i46_1,this.h46_1,null)},H(Re).v35=function(t,n,i,e){if(!this.k46_1.m()){var r=this.k46_1.x2();if(r.w48_1!==n)throw Zt("Recovery state is inconsistent");var s=r.x48_1,o=null==s||Ht(s)?s:R();return null==o||Ht(o)?o:R()}var u,a=this.n46_1.p33(n),h=a.t47(i);if(J(A(h,Qt)?h:R(),Qi())&&ke(this.n46_1)===n){var _=I(this.g42());this.g42().u3x();var l=_ instanceof _t?_:null,f=null==l?tn(_):l;return Ht(f)?f:R()}if(this.h46_1>=0&&a instanceof bs)u=new Pe(this.m46_1,a,this.h46_1);else{var c=this.v48(t,n,h);u=null==c?new Ne(this.m46_1,a):c}var v=u,w=h instanceof nn?h.q37(v,e):h.j32(v);return this.f46_1[n]=!0,w},H(Re).x35=function(t,n,i,e){if(!this.k46_1.m()){var r=this.k46_1.x2();if(r.w48_1!==n)throw Zt("Recovery state is inconsistent");var s=r.x48_1,o=null==s||Ht(s)?s:R();return Ht(o)?o:R()}if(this.m46_1.r47()){if(!this.g42().f3y().equals(en()))throw Dt("Elements with nill tags may not have content");return null}var u=this.v48(t,n,i);if(null==u)return null;var a=u,h=this.n46_1.p33(n).t47(i),_=h instanceof nn?h.q37(a,e):h.j32(a);return this.f46_1[n]=!0,_},H(Re).u35=function(t,n){if(!this.k46_1.m()){var i=this.k46_1.x2();if(i.w48_1!==n)throw Zt("Recovery state is inconsistent");var e=i.x48_1;return new Fr(null==e||Ht(e)?e:R())}var r=this.n46_1.p33(n);return t.n33()instanceof Ut?new Te(this.m46_1,r,this.i46_1,this.h46_1):new Me(this.m46_1,r,this.i46_1,this.h46_1,this.y45_1)},H(Re).y48=function(t,n){var i=n.equals(se());this.i46_1=null;var e=this.b46_1,r=this.a46_1,s=this.u48(t),o=r.g2(s),u=null==o?null:qe(o,n,this);if(null!=u)return u;var a=e.g2(s),h=null==a?null:Oe(a,n);if(null!=h)return this.i46_1=h,h.a47_1;var _,l=this.j33().p3w();if(i){var f,c;if(f=t.p3w(),0===Pt(f)){var v=xe(s,l),w=r.g2(v),d=null==w?null:qe(w,n,this);if(null!=d)return d;var p=e.g2(v),m=null==p?null:Oe(p,n);if(null!=m)return this.i46_1=m,m.a47_1}if(c=t.r3w(),0===Pt(c)){var g=this.g42().k3s("");if(null!=g){var $=xe(s,g),y=r.g2($),b=null==y?null:qe(y,n,this);if(null!=b)return b;var k=e.g2($),j=null==k?null:Oe(k,n);if(null!=j)return j.a47_1}}}if(Pt(l)>0&&l===t.p3w()){var x=r.g2(ot(t.q3w())),z=null==x?null:qe(x,n,this);if(null!=z)return z}if(n.equals(se())){var E=this.d46_1,C=this.h46_1;_=0<=C&&C=0?q:null))return S}else{var O=ke(this.n46_1),I=O>=0?O:null;if(null==I);else{for(var A=this.n46_1.p33(I);A instanceof rs&&A.i45()||A instanceof zs;)A=A.p33(0);if(J(A.w44(),Qi().f42_1))return I}}for(var T,D=this.q27().c49_1,M=this.g42(),N=rn(r.g()),R=r.q().d();R.e();){var P,L=R.f(),F=L.r(),U=L.s();P=new Ge(F,U,this.n46_1.p33(U)),N.a(P)}T=N;var H=D.h49(M,n,this.n46_1,t,sn(T,e.i2()));return this.k46_1.l(H),at(),-3},H(Re).a36=function(t){if(!this.l46_1&&this.g42().i3t()=0){if(this.g42().i3y(en(),this.n46_1.l44()),this.g46_1>=this.f46_1.length)return at(),-1;var n=this.g46_1;return Se(this),n}var i=this.h46_1;this.h46_1=i+1|0;t:for(;;){var e,r=this.d46_1,o=this.h46_1;if(0<=o&&o"),an());this.k46_1.l(q),S=this.a36(t)}return S}break;case 10:var O=this.y48(this.g42().w3t(),se());return at(),-3!==O?O:this.a36(t);case 1:var I=this.y48(this.g42().w3t(),(ee(),s));if(at(),-3!==I)return I;_n(this.g42());break;case 7:throw new fr("End document in unexpected location")}return at(),-1},H(Re).k35=function(t){if(!this.l46_1){var n=this.a36(t);if(at(),-1!==n)throw new fr("Unexpected content in end structure")}null==this.y45_1?this.g42().i3y(en(),this.j33()):this.g42().i3y(en(),null)},H(Re).i49=function(t){var n;return Se(this),this.g46_1=0)return this.j49(this.h46_1);if(this.g46_1>=0){var o=s instanceof Qr?s:null,u=null==o?null:o.x46_1;if(null==u)throw new fr("Missing child "+t.r33(n)+":"+n);return u}switch(s.r42().l6_1){case 4:throw new fr("Inline elements can not be directly decoded");case 0:r=Tt(this.g42());break;case 3:case 2:var a,h=Mt(this.g42()),_=this.g42().d3y();if(!(_ instanceof ln))throw new fr("Missing end tag after text only content (found: "+_+")");if(a=this.j33().q3w(),_.b3z_1!==a)throw new fr("Expected end tag local name "+this.j33().q3w()+", found "+_.b3z_1);r=h;break;case 1:throw Zt("Attributes should already be read now");default:Rt()}return r},H(Re).o35=function(t,n){return bt(this.t35(t,n))},H(Re).l35=function(t,n){return wt(this.t35(t,n))},H(Re).m35=function(t,n){return dt(this.t35(t,n))},H(Re).n35=function(t,n){return gt(this.t35(t,n))},H(Re).p35=function(t,n){return xt(this.t35(t,n))},H(Re).q35=function(t,n){var i=this.t35(t,n);return Ct(i)},H(Re).r35=function(t,n){return Ct(this.t35(t,n))},H(Re).s35=function(t,n){return St(this.t35(t,n))},H(Re).j48=function(t){this.z45_1.a(t)},H(Pe).z35=function(){return!0},H(Pe).b36=function(t){return 1},H(Pe).a36=function(t){var n;switch(this.d4a_1){case 0:case 1:var i=this.d4a_1;this.d4a_1=i+1|0,n=i;break;default:at(),n=-1}return n},H(Pe).v35=function(t,n,i,e){this.c4a_1<0&&(this.c4a_1=n);var r=(n-this.c4a_1|0)%2|0,s=this.n46_1.p33(r).t47(i);if(0===r&&J(s,Hr())){var o=this.g42().j3y(this.b4a_1);return Ht(o)?o:R()}return s.j32(new De(this.e4a_1,this.n46_1.r4a(),this.g42().u3t(this.b4a_1)))},H(Pe).t35=function(t,n){var i;if(0==(n%2|0)){var e,r,s,o=this.g42().j3y(this.b4a_1);if(r=o.r3w(),0===Pt(r)?e=!0:(s=o.p3w(),e=0===Pt(s)),!e)throw new fr("A QName in a namespace cannot be converted to a string");i=o.q3w()}else i=this.g42().u3t(this.b4a_1);return i},H(Pe).k35=function(t){},H(Pe).j35=function(t){return this},H(Pe).x34=function(){throw Ft("Expect map structure")},H(Pe).y34=function(){throw Ft("Expect map structure")},H(Pe).e35=function(){throw Ft("Expect map structure")},H(Pe).d35=function(){throw Ft("Expect map structure")},H(Pe).c35=function(){throw Ft("Expect map structure")},H(Pe).g35=function(t){return this},H(Pe).a35=function(){throw Ft("Expect map structure")},H(Pe).b35=function(){throw Ft("Expect map structure")},H(Pe).v34=function(){throw Ft("Expect map structure")},H(Pe).w34=function(){throw Ft("Expect map structure")},H(Pe).z34=function(){throw Ft("Expect map structure")},H(Pe).f35=function(){throw Ft("Expect map structure")},H(Le).z35=function(){return!0},H(Le).b36=function(t){return this.k4b_1.g()},H(Le).v35=function(t,n,i,e){var r=this.n46_1.p33(n),s=this.j4b_1;return this.j4b_1=s+1|0,new De(this.l4b_1,r,this.k4b_1.h(s)).i35(i)},H(Le).t35=function(t,n){var i=this.j4b_1;return this.j4b_1=i+1|0,this.k4b_1.h(i)},H(Le).k35=function(t){},H(Fe).a36=function(t){var n;return this.q4c_1?(at(),n=-1):(this.q4c_1=!0,n=0),n},H(Fe).v35=function(t,n,i,e){var r=this.n46_1.p33(0),s=r.t47(i);if(J(A(s,Qt)?s:R(),Qi())&&ke(Ie(this))===this.p4c_1){var o=wn(this.g42()),u=o instanceof _t?o:null,a=null==u?tn(o):u;return Ht(a)?a:R()}var h=new Me(this.r4c_1,r,this.o4c_1,un().MIN_VALUE,this.y45_1);return i.j32(h)},H(Fe).k35=function(t){},H(Fe).b36=function(t){return 1},H(Ue).a36=function(t){var n;if(this.l46_1=!0,2===this.g42().f3y().l6_1)at(),n=-1;else{var i=this.k4d_1;this.k4d_1=i+1|0,n=i}return n},H(Ue).v35=function(t,n,i,e){var r=this.n46_1.p33(0),s=new Me(this.l4d_1,r,this.i46_1,this.h46_1,null);return i instanceof nn?i.q37(s,e):i.j32(s)},H(He).v35=function(t,n,i,e){this.e4e_1=n;var r=this.n46_1.p33(0);if(0==(n%2|0)){if(r.g4e().equals(le())){var s=this.g42().h3y(r.l44());if(null==s)throw new fr("Missing key attribute on "+this.g42().w3t()+"@"+this.g42().m3t());var o=s;return i.j32(new De(this.f4e_1,r,o))}var u;if(dn(!this.n46_1.v45()),!et(this.g42().w3t(),r.l44()))throw u=this.g42().w3t()+" != "+this.n46_1.c47(),Zt(pn(u));return H(Re).v35.call(this,t,n%2|0,i,e)}var a=this.n46_1.p33(1),h=new Me(this.f4e_1,a,this.d4e_1,un().MIN_VALUE,this.y45_1);return this.n46_1.v45()&&h.j48(r.l44()),i.j32(h)},H(Ve).a36=function(t){if(this.n46_1.v45()){var n;if(this.e4e_1>=0&&1==(this.e4e_1%2|0))at(),n=-1;else{this.e4e_1=this.e4e_1+1|0,n=this.e4e_1}return n}if(this.e4e_1<0){if(!this.g42().l3t().equals(At()))throw Zt(pn("Check failed."));if(!et(this.n46_1.c47(),this.g42().w3t()))throw new fr("Map entry not found. Found "+this.g42().w3t()+"@"+this.g42().m3t()+" instead")}if(0==(this.e4e_1%2|0)){var i=et(this.n46_1.c47(),this.g42().w3t());mn(i,(e=this,function(){return e.n46_1.c47()+" != "+e.g42().w3t()}))}var e,r=H(He).a36.call(this,t);return r<0?r:(this.e4e_1=(this.e4e_1-(this.e4e_1%2|0)|0)+(r%2|0)|0,this.e4e_1)},H(Ve).k35=function(t){if(!this.n46_1.v45()&&!this.g42().l3t().equals(en()))throw Zt(pn("Check failed."));if(!et(this.g42().w3t(),this.n46_1.c47()))throw Zt(pn("Check failed."))},H(Ve).b36=function(t){return 2},H(Be).a36=function(t){if(this.n46_1.v45()){var n=this.e4e_1%2|0;if(1==(n+(2&((2^n)&(0|n|-n))>>31)|0)&&H(He).a36.call(this,t)<0)return at(),-1}else{var i,e=this.e4e_1%2|0;if(1==(e+(2&((2^e)&(0|e|-e))>>31)|0)){var r=this.g42().d3y();i=J(null==r?null:r.l3t(),At())}else i=!1;if(i&&this.g42().f3y(),H(He).a36.call(this,t)<0)return at(),-1}return this.e4e_1=this.e4e_1+1|0,this.e4e_1},H(Be).v35=function(t,n,i,e){var r=H(He).v35.call(this,t,n,i,e);if(1==(n%2|0)&&!this.n46_1.v45()){if(!this.g42().f3y().equals(en()))throw Zt(pn("Check failed."));dn(et(this.n46_1.c47(),this.g42().w3t()))}return r},H(Be).k35=function(t){dn(et(this.n46_1.l44(),this.g42().w3t())),H(He).k35.call(this,t)},H(Be).b36=function(t){return-1},H(Ye).a36=function(t){var n,i,e,r,s=this.n46_1.a44_1;if(J(s,fs())){var o;switch(this.p4g_1){case 0:case 1:var u=this.p4g_1;this.p4g_1=u+1|0,o=u;break;default:at(),o=-1}return o}if(null!=this.q4g_1)return 1===this.p4g_1?n=1:(at(),n=-1),n;if(0===this.p4g_1){var a=0,h=this.d46_1;if(a("),this.p33(0).g4k(t,n+4|0,i),t.b(")")},H(Br).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Gr).equals.call(this,t)&&(t instanceof Br||R(),!!Vr(this).equals(Vr(t)))},H(Br).hashCode=function(){var t=H(Gr).hashCode.call(this);return C(31,t)+Vr(this).hashCode()|0},H(Yr).j4k=function(t,n,i,e){var r,s,o,u=t.h47_1.c49_1.r4i(n,i);null==u?(r=n.k4j(),s=n,o=i):(r=u.i32(),s=n.k4k(B,B,u),o=i.k4k(B,B,u));var a=t.h47_1.c49_1.v4i(n,i),h=r.n33();return J(h,Pn())||h instanceof Ut?new ys(t,s,o,e,a):J(h,vt())?new rs(t,s,o):J(h,ct())?J(n.l4j(),le())?new bs(t,s,o):new is(t,s,o):h instanceof Fn?new Jr(t,s,o):t.h47_1.f49_1&&r.m33()?new zs(t,s,o,e):new _s(t,s,o,a)},H(Yr).f4k=function(t,n,i,e,r){return i=i===B?n:i,r===B?this.j4k(t,n,i,e):r.j4k.call(this,t,n,i,e)},H(Gr).g4e=function(){return 4===this.r42().l6_1?this.p33(0).g4e():this.r42()},H(Gr).h4k=function(){return this.e44_1.h47_1.c49_1},H(Gr).a4k=function(){return this.i44_1},H(Gr).o47=function(){return!1},H(Gr).l44=function(){return Pi("tagName",1,Ri,(function(t){return t.l44()}),null),this.k44_1.s()},H(Gr).t47=function(t){var n=this.g44_1,i=null==n?t:n;return A(i,Qt)?i:R()},H(Gr).w44=function(){return this.a4k().n4j_1},H(Gr).l33=function(){return this.a4k().n4j_1.l33()},H(Gr).r4j=function(){return this.a4k().n4j_1.n33()},H(Gr).p33=function(t){throw li("There are no children")},H(Gr).i4k=function(t,n,i){return this instanceof rs||this instanceof ys?this.g4k(t,n,i):i.n(this.w44().j33())?t.b(this.l44().toString()).b("<...> = ").b(this.r42().k6_1):(i.a(this.w44().j33()),this.g4k(t,n,i)),t},H(Gr).toString=function(){var t,n=ci();return t=vi(),this.i4k(n,0,t).toString()},H(Gr).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&(t instanceof Gr||R(),!!(J(this.e44_1,t.e44_1)&&J(this.g44_1,t.g44_1)&&this.h44_1.equals(t.h44_1)&&J(this.a4k(),t.a4k())))},H(Gr).hashCode=function(){var t=K(this.e44_1),n=C(31,t),i=this.g44_1,e=null==i?null:K(i);return t=C(31,t=n+(null==e?0:e)|0)+this.h44_1.hashCode()|0,C(31,t)+K(this.a4k())|0},H(Jr).s47=function(){return!1},H(Jr).r42=function(){return this.z43_1},H(Jr).t48=function(){return J(this.a44_1,fs())},H(Jr).p33=function(t){return Kr(this).h(t)},H(Jr).w4g=function(t){var n=this.b44_1.g2(t);if(null==n)throw new fr("Missing polymorphic information for "+t);return n},H(Jr).g4k=function(t,n,i){if(t.b(this.l44().toString()),this.t48()){t.b(" <~(");for(var e=this.b44_1.i2().d();e.e();)e.f().i4k(t,n+4|0,i).k7(zn(44)).k7(zn(10))}else{t.b(" ("),t.b(" [");for(var r=this.b44_1.i2().d();r.e();)r.f().i4k(t,n+4|0,i).k7(zn(44)).k7(zn(10));t.k7(zn(93))}},H(Jr).equals=function(t){return!!(this===t||null!=t&&fi(this).equals(fi(t))&&H(Qr).equals.call(this,t)&&(t instanceof Jr||R(),this.z43_1.equals(t.z43_1)&&J(this.a44_1,t.a44_1)&&J(this.b44_1,t.b44_1)&&this.c44_1==t.c44_1))},H(Jr).hashCode=function(){var t=H(Qr).hashCode.call(this);t=C(31,t)+this.z43_1.hashCode()|0,t=C(31,t)+K(this.a44_1)|0,t=C(31,t)+K(this.b44_1)|0;var n=C(31,t),i=this.c44_1,e=null==i?null:Mn(i);return n+(null==e?0:e)|0},H(Qr).s48=function(t){var n,i=this.y46_1;if(!J(i,Zr()))return null==i||Ht(i)?i:R();if(null==this.x46_1)n=null;else{var e=new Te(new We(this.e44_1.g47_1,this.e44_1.h47_1,mi(this.x46_1).w41()),this);n=t.j32(e)}var r=n;return this.y46_1=r,null==r||Ht(r)?r:R()},H(Qr).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Gr).equals.call(this,t)&&(t instanceof Qr||R(),this.w46_1===t.w46_1&&this.x46_1==t.x46_1&&!!J(this.y46_1,t.y46_1))},H(Qr).hashCode=function(){var t=H(Gr).hashCode.call(this);t=C(31,t)+(0|this.w46_1)|0;var n=C(31,t),i=this.x46_1,e=null==i?null:Mn(i),r=C(31,t=n+(null==e?0:e)|0),s=this.y46_1,o=null==s?null:K(s);return r+(null==o?0:o)|0},H(is).r42=function(){return _e()},H(is).v45=function(){return Pi("isValueCollapsed",1,Ri,(function(t){return t.v45()}),null),this.r45_1.s()},H(is).c47=function(){return Pi("entryName",1,Ri,(function(t){return t.c47()}),null),this.s45_1.s()},H(is).p33=function(t){return 0==(t%2|0)?ts(this):ns(this)},H(is).g4k=function(t,n,i){t.b(this.l44().toString()).b(this.i45()?": TransparentMap<":": ExplicitMap<"),this.p33(0).g4k(t,n+4|0,i),t.b(", "),this.p33(1).g4k(t,n+4|0,i),t.k7(zn(62))},H(rs).r42=function(){return this.u4b_1},H(rs).p33=function(t){return es(this)},H(rs).g4k=function(t,n,i){t.b(this.l44().toString()),this.i45()?(t.b(": EludedList<"),es(this).i4k(t,n,i),t.k7(zn(62))):(t.b(": ExplicitList<"),es(this).i4k(t,n,i),t.k7(zn(62)))},H(rs).equals=function(t){return!!(this===t||null!=t&&fi(this).equals(fi(t))&&H(Es).equals.call(this,t)&&(t instanceof rs||R(),this.i45()===t.i45()&&this.u4b_1.equals(t.u4b_1)&&es(this).equals(es(t))))},H(rs).hashCode=function(){var t=H(Es).hashCode.call(this);return t=C(31,t)+(0|this.i45())|0,t=C(31,t)+this.u4b_1.hashCode()|0,C(31,t)+es(this).hashCode()|0},H(_s).s47=function(){return this.z4k_1},H(_s).r42=function(){return _e()},H(_s).p33=function(t){return ss(this).h(t)},H(_s).g4k=function(t,n,i){t.b(this.l44().toString()).b(" (").k7(zn(10));for(var e=!0,r=ss(this).d();r.e();){var s=r.f();e?e=!1:t.k7(zn(44)).k7(zn(10)),Is(t,n),s.i4k(t,n+4|0,i)}Is(t.k7(zn(10)),n-4|0).k7(zn(41))},H(_s).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Qr).equals.call(this,t)&&(t instanceof _s||R(),!!J(this.a4l_1,t.a4l_1))},H(_s).hashCode=function(){var t=H(Qr).hashCode.call(this),n=C(31,t),i=this.a4l_1,e=null==i?null:K(i);return n+(null==e?0:e)|0},H($s).t4i=function(){return this.f4l_1},H($s).l4k=function(){return this.h4l_1},H($s).d4l=function(t,n,i){return new $s(this.e4l_1,t,this.g4l_1,n,i)},H($s).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&(t instanceof $s||R(),!!(J(this.e4l_1,t.e4l_1)&&this.f4l_1.equals(t.f4l_1)&&this.g4l_1===t.g4l_1&&J(this.h4l_1,t.h4l_1)&&J(this.i4l_1,t.i4l_1)))},H($s).hashCode=function(){var t=K(this.e4l_1);t=C(31,t)+this.f4l_1.hashCode()|0,t=C(31,t)+(0|this.g4l_1)|0;var n=C(31,t),i=this.h4l_1,e=null==i?null:K(i),r=C(31,t=n+(null==e?0:e)|0),s=this.i4l_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},H($s).i32=function(){return null},H($s).m4j=function(){var t=this.h4l_1,n=null==t?null:t.i32();return new Vs(null==n?this.e4l_1:n,this.z4i())},H($s).j4j=function(){return an()},H($s).k4j=function(){var t=this.h4l_1,n=null==t?null:t.i32();return null==n?this.e4l_1:n},H($s).l4j=function(){return this.i4l_1},H($s).z4i=function(){var t=this.f4l_1.z4h_1,n=null==t?null:bi(t);return null==n?new ri("",""):n},H(ys).s47=function(){return this.t4l_1},H(ys).r42=function(){return this.u4l_1},H(ys).g4k=function(t,n,i){t.b(this.l44().toString()).k7(zn(58)).b(this.n33().toString()).b(" = ").b(this.u4l_1.toString())},H(ys).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Qr).equals.call(this,t)&&(t instanceof ys||R(),!!this.u4l_1.equals(t.u4l_1))},H(ys).hashCode=function(){var t=H(Qr).hashCode.call(this);return C(31,t)+this.u4l_1.hashCode()|0},H(bs).s47=function(){return!0},H(bs).r42=function(){return le()},H(bs).v4l=function(){return Pi("keyDescriptor",1,Ri,(function(t){return t.v4l()}),null),this.p4a_1.s()},H(bs).r4a=function(){return Pi("valueDescriptor",1,Ri,(function(t){return t.r4a()}),null),this.q4a_1.s()},H(bs).l33=function(){return 2},H(bs).p33=function(t){return 0==(t%2|0)?this.v4l():this.r4a()},H(bs).g4k=function(t,n,i){t.b(this.l44().toString()).b(" (").k7(zn(10)),Is(t,n),this.v4l().i4k(t,n+4|0,i).b(",").k7(zn(10)),Is(t,n),this.r4a().i4k(t,n+4|0,i).k7(zn(41))},H(zs).s47=function(){return ks(this).s47()},H(zs).r42=function(){return ks(this).r42()},H(zs).l44=function(){return ks(this).l44()},H(zs).p33=function(t){if(0!==t)throw Ii("Inline classes only have one child");return ks(this)},H(zs).o47=function(){return this.h4m_1},H(zs).g4k=function(t,n,i){t.b(this.l44().toString()),t.b(": Inline ("),ks(this).i4k(t,n+4|0,i),t.k7(zn(41))},H(zs).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Qr).equals.call(this,t)&&(t instanceof zs||R(),this.h4m_1===t.h4m_1)},H(zs).hashCode=function(){var t=H(Qr).hashCode.call(this);return C(31,t)+(0|this.h4m_1)|0},H(Es).i45=function(){return this.h45_1},H(Es).o4k=function(){return!1},H(Es).s47=function(){return!1},H(Es).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&!!H(Gr).equals.call(this,t)&&(t instanceof Es||R(),this.i45()===t.i45()&&this.o4k()===t.o4k()&&this.s47()===t.s47())},H(Es).hashCode=function(){var t=H(Gr).hashCode.call(this);return t=C(31,t)+(0|this.i45())|0,t=C(31,t)+(0|this.o4k())|0,C(31,t)+(0|this.s47())|0},H(Cs).i32=function(){return this.j4m_1},H(Cs).l4k=function(){return this.l4m_1},H(Cs).d4l=function(t,n,i){return new Cs(this.j4m_1,this.k4m_1,t,n,i)},H(Cs).equals=function(t){return this===t||!(null==t||!fi(this).equals(fi(t)))&&(t instanceof Cs||R(),!!(this.j4m_1.equals(t.j4m_1)&&this.k4m_1===t.k4m_1&&J(this.l4m_1,t.l4m_1)&&this.m4m_1.equals(t.m4m_1)&&J(this.n4m_1,t.n4m_1)))},H(Cs).hashCode=function(){var t=this.j4m_1.hashCode();t=C(31,t)+this.k4m_1|0;var n=C(31,t),i=this.l4m_1,e=null==i?null:K(i);t=C(31,t=n+(null==e?0:e)|0)+this.m4m_1.hashCode()|0;var r=C(31,t),s=this.n4m_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},H(Cs).z4i=function(){return bi(this.j4m_1.l44())},H(Cs).m4j=function(){return null!=this.l4m_1?new Vs(this.l4m_1.i32(),bi(this.j4m_1.l44())):-1===this.k4m_1||J(this.k4j().n33(),Ai())?this.j4m_1.a4k():new Vs(this.k4j(),this.j4m_1.f44_1.z4i())},H(Cs).t4i=function(){return this.m4m_1},H(Cs).j4j=function(){return-1===this.k4m_1?an():this.j4m_1.w44().o33(this.k4m_1)},H(Cs).k4j=function(){return null!=this.l4m_1?this.l4m_1.i32():J(this.j4m_1.r4j(),Ai())||-1===this.k4m_1?this.j4m_1.w44():this.j4m_1.w44().p33(this.k4m_1)},H(Cs).l4j=function(){return this.n4m_1},H(Os).m4j=function(){return this.p4m_1},H(Os).t4i=function(){return this.q4m_1},H(Os).z4i=function(){return this.r4m_1},H(Os).l4j=function(){return this.s4m_1},H(Os).l4k=function(){return this.t4m_1},H(Os).i32=function(){return this.u4m_1},H(Os).j4j=function(){return an()},H(Os).k4j=function(){return this.p4m_1.n4j_1},H(Os).d4l=function(t,n,i){return new Os(this.o4m_1,this.p4m_1,t,this.r4m_1,n,i)},H(Ts).toString=function(){return"XmlOrderConstraint(before="+this.v4m_1+", after="+this.w4m_1+")"},H(Ts).hashCode=function(){var t=this.v4m_1;return C(t,31)+this.w4m_1|0},H(Ts).equals=function(t){if(this===t)return!0;if(!(t instanceof Ts))return!1;var n=t instanceof Ts?t:R();return this.v4m_1===n.v4m_1&&this.w4m_1===n.w4m_1},H(Ns).x4j=function(t){for(var n=t,i=0,e=n.length;i{"use strict";t.exports=i.p+"a1015df118c0009bbaae.json"},897:(t,n,i)=>{"use strict";t.exports=i.p+"4e1313da42287d18ad5a.png"},760:(t,n,i)=>{"use strict";t.exports=i.p+"5de21dc9a6671d378dbe.png"},245:(t,n,i)=>{"use strict";t.exports=i.p+"b52705ec61511efb27b9.png"},939:(t,n,i)=>{"use strict";t.exports=i.p+"21c6d0bc8e5465644f8b.png"},954:(t,n,i)=>{"use strict";t.exports=i.p+"33c2ca54c6adbcd6a2e3.png"},959:(t,n,i)=>{"use strict";t.exports=i.p+"dd554b8af1ab5e3bc726.png"},523:(t,n,i)=>{"use strict";t.exports=i.p+"791bfb510d74390a8d5a.png"},481:(t,n,i)=>{"use strict";t.exports=i.p+"fbab3596911513c77182.png"},49:(t,n,i)=>{"use strict";t.exports=i.p+"4f486d36fd4835ea883d.png"}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,n)=>{for(var i in n)__webpack_require__.o(n,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;__webpack_require__.g.importScripts&&(t=__webpack_require__.g.location+"");var n=__webpack_require__.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");i.length&&(t=i[i.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=t})();var __webpack_exports__=__webpack_require__(960);return __webpack_exports__})())); //# sourceMappingURL=worldwind-tutorials.js.map \ No newline at end of file diff --git a/worldwind-tutorials.js.map b/worldwind-tutorials.js.map index 271b188e5..2f7c21c82 100644 --- a/worldwind-tutorials.js.map +++ b/worldwind-tutorials.js.map @@ -1 +1 @@ -{"version":3,"file":"worldwind-tutorials.js","mappings":"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","sources":["webpack://worldwind-tutorials/webpack/universalModuleDefinition","webpack://worldwind-tutorials/../../node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Clock.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Preconditions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/internal/dateCalculations.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/InstantSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/TimeZoneSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/dynamic.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Standard.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/long.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/FloorDivMod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/internal/mathJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/time/Duration.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/build/generated/moko/jsMain/src/earth/worldwind/tutorials/MR.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/AbstractTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/BasicTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/CameraViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/EllipsesTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Angle.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LabelsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LookAtViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/MGRSGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PathsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PlacemarksTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PolygonsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShowTessellationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SightlineTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SurfaceImageTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmtsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/jsMain/kotlin/earth/worldwind/tutorials/Main.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/math.kt","webpack://worldwind-tutorials/../../../../worldwind/build/generated/moko/jsMain/src/earth/worldwind/MR.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/GoToAnimator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObjectList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Maps.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/WorldWind.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/BasicDrawableTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/builtins/Library.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Collections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawShapeState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableGroup.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLambda.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLines.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableQueue.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableScreenTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceColor.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableTessellation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/BasicFrameController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/Frame.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/AltitudeMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingSphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Camera.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Ellipsoid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Frustum.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Line.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Location.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/LookAt.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix3.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_ArraysJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix4.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Offset.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/OffsetMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Plane.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Position.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Range.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Sector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec2.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec3.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Viewport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/Hemisphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/PolarCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/GestureState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/Globe.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/ElevationModel.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractTiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Sets.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/BasicElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/Wgs84Projection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTerrain.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/comparisons/Comparisons.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTessellator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/TerrainTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/BackgroundLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/LayerList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/RenderableLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/ShowTessellationLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AbstractAtmosphereProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AtmosphereLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableGroundAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableSkyAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/GroundProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/SkyProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractUTMGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleRenderingParams.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridElement.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/MGRSGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/MGRSGridZone.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/string.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/MGRSOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMMetricScaleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMSquareGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMSquareSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMSquareZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/AbstractMercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/google/GoogleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSet.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsLayerFactory.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/regex/RegexExtensions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAttribution.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAuthorityUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapability.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactInformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactPersonPrimary.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDcpType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsException.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsGeographicBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsIdentifier.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsInfoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLogoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsMetadataUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequest.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequestOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsService.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsConstraint.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsContactInfo.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDcp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDescription.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttpMethod.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperationsMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsPhone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceContact.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceIdentification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceProvider.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsContents.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLegendURL.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsResourceUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTheme.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixLimits.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSetLink.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractSurfaceRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Color.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/FontWeight.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Framebuffer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/RenderContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Texture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/AbstractBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/FloatBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/IntBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/ShortBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageOptions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ResamplingMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/WrapMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/AbstractShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/BasicShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SightlineProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SurfaceTextureProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/AbstractShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Ellipse.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Label.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OmnidirectionalSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OrientationMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Path.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PathType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Placemark.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PlacemarkAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Polygon.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/ShapeAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/SurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TextAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/Font.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbsentResourceList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/BasicPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Level.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSetConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LruMemoryCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/MessageTable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/SunPosition.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Tile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/ExponentFormatter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/Specification.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Lazy.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/StringFormat.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLU.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLUtessellatorCallbackAdapter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/error/Error.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/ActiveRegion.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/CachedVertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Dict.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/DictNode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUface.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUhalfEdge.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUmesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUtessellatorImpl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUvertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Geom.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Mesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Normal.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQ.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQHeap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQSort.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Render.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Sweep.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessMono.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/http/DefaultHttpClient.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/kgl/Kgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/math/WWMath.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/BasicWorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/KeyboardControls.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindow.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/ClickRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/DragRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/GestureRecognizer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/MutableCollections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PanRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PinchRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/RotationRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/SelectDragDetector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TapRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TiltRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TouchWrapper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/ElevationSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/coverage/TiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/AbstractTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/TiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/mercator/MercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/RenderResourceCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/TextRenderer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/CanvasTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/Logger.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/SynchronizedPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/kgl/WebKgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/locale/Locale.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/kotlinHacks.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/format/ConvertToInstant.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/SelectDragCallback.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/js/math.polyfills.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/ArrayBuffer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/js.arrays/fill.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_OneToManyTitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_TitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/CharCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Iterables.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/kotlin/ExceptionsH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/ArrayDeque.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/IndexedValue.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Iterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/SequenceBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/ContinuationInterceptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/CoroutineContextImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/intrinsics/Intrinsics.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/internal/progressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/PrimitiveRanges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/ProgressionIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/Progressions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Appendable.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Indent.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/StringNumberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringsCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/StringBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/DeepRecursive.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Result.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Tuples.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UByte.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UInt.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UIntRange.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UProgressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/ULong.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UnsignedUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UShort.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UStrings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/core/builtins/native/kotlin/Number.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/core/builtins/src/kotlin/Unit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArraySorting.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/EqualityComparator.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalHashCodeMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/coroutines/cancellation/CancellationException.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/numbers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KClassImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/primitives.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/reflection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/sequence.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/CharacterCodingExceptionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/StringBuilderJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_WhitespaceChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/numberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_DigitChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/regex.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_ComparisonsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/utf8Encoding.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/throwableExtensions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/org.w3c/EventListener.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/builtins/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/builtins/Enum.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/BitMask.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/noPackageHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/bitUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/runtimeForStdLib.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/charSequence.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/collectionsHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/compareTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/coreRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/hacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/longjs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/numberConversion.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/rangeTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/reflectRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/typeCheckUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_CharCategories.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_LetterChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_OtherLowercaseChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines_13/CoroutineImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines_13/IntrinsicsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/exceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/numberConversions_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/Continuation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/regexp.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/kotlin/MathH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/reflection_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Maps.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/MapWithDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Sets.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_CollectionsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/JsClass.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/ContextAware.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializationExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializersCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/BuiltInSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NothingSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/HashCode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModuleBuilders.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/AssociatedObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_UArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonConfiguration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/AbstractJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonPath.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonTreeReader.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/SchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/StringJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsMain/src/kotlinx/serialization/json/JsonSchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsMain/src/kotlinx/serialization/json/internal/createMapForCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Job.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/AbstractCoroutine.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Builders.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CompletionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuationImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletableDeferred.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionState.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineName.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineScope.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineStart.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/EventLoop.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Exceptions.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/JobSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/Concurrent.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/LinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/MainCoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Supervisor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Unconfined.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/AbstractChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/InlineList.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ArrayChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferOverflow.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/SystemProps.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/SystemProps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channels.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ConflatedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/LinkedListChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/RendezvousChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/SharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/AbstractSharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/SafeCollector.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/operators/Share.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/ArrayQueue.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/ThreadContext.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/OnUndeliveredElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Scopes.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Symbol.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Cancellable.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Undispatched.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Window.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Debug.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Dispatchers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/EventLoop.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/SchedulerTask.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/flow/internal/SafeCollector.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/StackTraceRecovery.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/ThreadLocal.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/ProbesSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionHandler.common.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/coroutineInternalJS.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Promise.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Delay.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/content/ObservableContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineCapability.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/BodyProgress.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultResponseValidation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultTransform.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpClientPlugin.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpPlainText.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRequestLifecycle.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpSend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/observer/DelegatedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/RequestBody.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ByteChannelUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ClientEvents.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/DefaultTransformJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/websocket/JsWebSocketSession.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/utils/ExceptionUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-events/common/src/io/ktor/events/Events.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Query.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/UrlDecodedParametersBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Url.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteReadChannelJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/CloseElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/BufferUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferAppend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/EncodeResult.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/Memory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/ByteArrayPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ExceptionUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Win1252Table.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/collections/CopyOnWriteHashMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/PipelineContext.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/StackTraceRecoverJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/reflect/Type.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/KtorSimpleLoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/reflect/TypeInfoJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/CloseReason.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameCommon.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameType.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/js/src/io/ktor/websocket/FrameJs.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/FileResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ImageResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/internal/ioUtil.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/Uri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/NotCachedHolder.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/PathSegments.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriCodec.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriSyntaxException.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/constants.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/AbstractPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/Part.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/PathPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/AbstractHierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/HierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/OpaqueUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/StringUri.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/NamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/commondomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/EventType.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/Namespace.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/SimpleNamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XMLConstants.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReaderBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlDelegatingReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlEvent.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/_IOException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlUtil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/KtXmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/XmlVersion.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/NamespaceHolder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/PlatformXmlWriterBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NamedNodeMap.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlReaderExt.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/jsMultiplatform.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/JSCompactFragment.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/XMLFragmentStreamReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/impl/jsDomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReaderNS.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/InputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/OutputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/PolyBaseInfo.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XML.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/defaultPlatformModule.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XMLDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlCodecBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlExceptions.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlSerializationPolicy.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/DummyDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/XmlQNameSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderNode.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderConstraint.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/compatJs.kt","webpack://worldwind-tutorials/webpack/bootstrap","webpack://worldwind-tutorials/webpack/runtime/define property getters","webpack://worldwind-tutorials/webpack/runtime/global","webpack://worldwind-tutorials/webpack/runtime/hasOwnProperty shorthand","webpack://worldwind-tutorials/webpack/runtime/make namespace object","webpack://worldwind-tutorials/webpack/runtime/publicPath","webpack://worldwind-tutorials/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"worldwind-tutorials\"] = factory();\n\telse\n\t\troot[\"worldwind-tutorials\"] = factory();\n})(this, () => {\nreturn ","//! @version @js-joda/core - 3.2.0\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction createErrorType(name, init, superErrorClass) {\n if (superErrorClass === void 0) {\n superErrorClass = Error;\n }\n\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = new Error().stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.message = message;\n init && init.apply(this, arguments);\n\n this.toString = function () {\n return this.name + \": \" + this.message;\n };\n }\n\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause) {\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text, index, cause) {\n if (text === void 0) {\n text = '';\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n msg += ': ' + text + ', at index: ' + index;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n\n this.parsedString = function () {\n return text;\n };\n\n this.errorIndex = function () {\n return index;\n };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n if (!assertion) {\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\nfunction requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(parameterName + ' must not be null');\n }\n\n return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(parameterName + ' must be an instance of ' + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ', but is ' + value.constructor.name : ''));\n }\n\n return value;\n}\nfunction abstractMethodFail(methodName) {\n throw new TypeError('abstract method \"' + methodName + '\" is not implemented');\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n requireNonNull: requireNonNull,\n requireInstance: requireInstance,\n abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n function MathUtil() {}\n\n MathUtil.intDiv = function intDiv(x, y) {\n var r = x / y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.intMod = function intMod(x, y) {\n var r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.roundDown = function roundDown(r) {\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n };\n\n MathUtil.floorDiv = function floorDiv(x, y) {\n var r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.floorMod = function floorMod(x, y) {\n var r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n };\n\n MathUtil.safeAdd = function safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n var r = MathUtil.safeToInt(x + y);\n\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n\n return r;\n };\n\n MathUtil.safeSubtract = function safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n return MathUtil.safeToInt(x - y);\n };\n\n MathUtil.safeMultiply = function safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n\n if (x === 0 || y === 0) {\n return 0;\n }\n\n var r = MathUtil.safeToInt(x * y);\n\n if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n throw new ArithmeticException('Multiplication overflows: ' + x + ' * ' + y);\n }\n\n return r;\n };\n\n MathUtil.parseInt = function (_parseInt) {\n function parseInt(_x) {\n return _parseInt.apply(this, arguments);\n }\n\n parseInt.toString = function () {\n return _parseInt.toString();\n };\n\n return parseInt;\n }(function (value) {\n var r = parseInt(value);\n return MathUtil.safeToInt(r);\n });\n\n MathUtil.safeToInt = function safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n };\n\n MathUtil.verifyInt = function verifyInt(value) {\n if (value == null) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n }\n\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n\n if (value % 1 !== 0) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n }\n\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException('Calculation overflows an int: ' + value);\n }\n };\n\n MathUtil.safeZero = function safeZero(value) {\n return value === 0 ? 0 : +value;\n };\n\n MathUtil.compareNumbers = function compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n };\n\n MathUtil.smi = function smi(int) {\n return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n };\n\n MathUtil.hash = function hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n\n var result = number;\n\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n\n return MathUtil.smi(result);\n };\n\n MathUtil.hashCode = function hashCode() {\n var result = 17;\n\n for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n numbers[_key] = arguments[_key];\n }\n\n for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n var n = _numbers[_i];\n result = (result << 5) - result + MathUtil.hash(n);\n }\n\n return MathUtil.hash(result);\n };\n\n return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar Enum = function () {\n function Enum(name) {\n this._name = name;\n }\n\n var _proto = Enum.prototype;\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n function TemporalAmount() {}\n\n var _proto = TemporalAmount.prototype;\n\n _proto.get = function get(unit) {\n abstractMethodFail('get');\n };\n\n _proto.units = function units() {\n abstractMethodFail('units');\n };\n\n _proto.addTo = function addTo(temporal) {\n abstractMethodFail('addTo');\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n };\n\n return TemporalAmount;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n function TemporalUnit() {}\n\n var _proto = TemporalUnit.prototype;\n\n _proto.duration = function duration() {\n abstractMethodFail('duration');\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n };\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.addTo = function addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n };\n\n _proto.between = function between(temporal1, temporal2) {\n abstractMethodFail('between');\n };\n\n return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n _inheritsLoose(Duration, _TemporalAmount);\n\n function Duration(seconds, nanos) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanos);\n return _this;\n }\n\n Duration.ofDays = function ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n Duration.ofHours = function ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n Duration.ofMinutes = function ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n };\n\n Duration.ofMillis = function ofMillis(millis) {\n var secs = MathUtil.intDiv(millis, 1000);\n var mos = MathUtil.intMod(millis, 1000);\n\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n\n return Duration._create(secs, mos * 1000000);\n };\n\n Duration.ofNanos = function ofNanos(nanos) {\n var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n\n return this._create(secs, nos);\n };\n\n Duration.of = function of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n };\n\n Duration.from = function from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n var duration = Duration.ZERO;\n amount.units().forEach(function (unit) {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n };\n\n Duration.between = function between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n var nanos = 0;\n\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {}\n }\n\n return this.ofSeconds(secs, nanos);\n };\n\n Duration.parse = function parse(text) {\n requireNonNull(text, 'text');\n var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n var matches = PATTERN.exec(text);\n\n if (matches !== null) {\n if ('T' === matches[3] === false) {\n var negate = '-' === matches[1];\n var dayMatch = matches[2];\n var hourMatch = matches[4];\n var minuteMatch = matches[5];\n var secondMatch = matches[6];\n var fractionMatch = matches[7];\n\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n\n var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n\n var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n\n var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n\n var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n\n var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n };\n\n Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n if (parsed == null) {\n return 0;\n }\n\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: ' + errorText, text, 0, ex);\n }\n };\n\n Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n\n parsed = (parsed + '000000000').substring(0, 9);\n return parseFloat(parsed) * negate;\n };\n\n Duration._create = function _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n };\n\n Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n\n return Duration.ofSeconds(seconds, nanos);\n };\n\n Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n\n return new Duration(seconds, nanoAdjustment);\n };\n\n var _proto = Duration.prototype;\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n };\n\n _proto.units = function units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n };\n\n _proto.isZero = function isZero() {\n return this._seconds === 0 && this._nanos === 0;\n };\n\n _proto.isNegative = function isNegative() {\n return this._seconds < 0;\n };\n\n _proto.seconds = function seconds() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withSeconds = function withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n };\n\n _proto.withNanos = function withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n };\n\n _proto.plusDuration = function plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n };\n\n _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n\n if (amountToAdd === 0) {\n return this;\n }\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n }\n\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n\n var duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n };\n\n _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n };\n\n _proto.minus = function minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n };\n\n _proto.minusDuration = function minusDuration(duration) {\n requireNonNull(duration, 'duration');\n var secsToSubtract = duration.seconds();\n var nanosToSubtract = duration.nano();\n\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n\n return this.plus(-secsToSubtract, -nanosToSubtract);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n\n if (multiplicand === 1) {\n return this;\n }\n\n var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.dividedBy = function dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n\n if (divisor === 1) {\n return this;\n }\n\n var secs = MathUtil.intDiv(this._seconds, divisor);\n var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.abs = function abs() {\n return this.isNegative() ? this.negated() : this;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.toDays = function toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n };\n\n _proto.toHours = function toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n };\n\n _proto.toMinutes = function toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n };\n\n _proto.toMillis = function toMillis() {\n var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n };\n\n _proto.toNanos = function toNanos() {\n var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n };\n\n _proto.compareTo = function compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherDuration.nano();\n };\n\n _proto.equals = function equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n\n var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n var rval = 'PT';\n\n if (hours !== 0) {\n rval += hours + 'H';\n }\n\n if (minutes !== 0) {\n rval += minutes + 'M';\n }\n\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n\n if (this._nanos > 0) {\n rval += '.';\n var nanoString;\n\n if (secs < 0) {\n nanoString = '' + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n } else {\n nanoString = '' + (LocalTime.NANOS_PER_SECOND + this._nanos);\n }\n\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n\n rval += 'S';\n return rval;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Duration;\n}(TemporalAmount);\nfunction _init() {\n Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\nvar YearConstants = function YearConstants() {};\nfunction _init$1() {\n YearConstants.MIN_VALUE = -999999;\n YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n _inheritsLoose(ChronoUnit, _TemporalUnit);\n\n function ChronoUnit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto = ChronoUnit.prototype;\n\n _proto.duration = function duration() {\n return this._duration;\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n };\n\n _proto.isDateBased = function isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n };\n\n _proto.addTo = function addTo(temporal, amount) {\n return temporal.plus(amount, this);\n };\n\n _proto.between = function between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n return this.duration().compareTo(other.duration());\n };\n\n return ChronoUnit;\n}(TemporalUnit);\nfunction _init$2() {\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar TemporalField = function () {\n function TemporalField() {}\n\n var _proto = TemporalField.prototype;\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.baseUnit = function baseUnit() {\n abstractMethodFail('baseUnit');\n };\n\n _proto.rangeUnit = function rangeUnit() {\n abstractMethodFail('rangeUnit');\n };\n\n _proto.range = function range() {\n abstractMethodFail('range');\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n };\n\n _proto.getFrom = function getFrom(temporal) {\n abstractMethodFail('getFrom');\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.displayName = function displayName() {\n abstractMethodFail('displayName');\n };\n\n _proto.equals = function equals(other) {\n abstractMethodFail('equals');\n };\n\n _proto.name = function name() {\n abstractMethodFail('name');\n };\n\n return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), 'Smallest minimum value \\'' + minSmallest + '\\' must be less than largest minimum value \\'' + minLargest + '\\'', IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), 'Smallest maximum value \\'' + maxSmallest + '\\' must be less than largest maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n assert(!(minLargest > maxLargest), 'Minimum value \\'' + minLargest + '\\' must be less than maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n var _proto = ValueRange.prototype;\n\n _proto.isFixed = function isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n };\n\n _proto.minimum = function minimum() {\n return this._minSmallest;\n };\n\n _proto.largestMinimum = function largestMinimum() {\n return this._minLargest;\n };\n\n _proto.maximum = function maximum() {\n return this._maxLargest;\n };\n\n _proto.smallestMaximum = function smallestMaximum() {\n return this._maxSmallest;\n };\n\n _proto.isValidValue = function isValidValue(value) {\n return this.minimum() <= value && value <= this.maximum();\n };\n\n _proto.checkValidValue = function checkValidValue(value, field) {\n var msg;\n\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = 'Invalid value for ' + field + ' (valid values ' + this.toString() + '): ' + value;\n } else {\n msg = 'Invalid value (valid values ' + this.toString() + '): ' + value;\n }\n\n return assert(false, msg, DateTimeException);\n }\n\n return value;\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException('Invalid int value for ' + field + ': ' + value);\n }\n\n return value;\n };\n\n _proto.isValidIntValue = function isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n };\n\n _proto.isIntValue = function isIntValue() {\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n };\n\n _proto.toString = function toString() {\n var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? '/' + this.largestMinimum() : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? '/' + this.maximum() : '');\n return str;\n };\n\n ValueRange.of = function of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, 'Invalid number of arguments ' + arguments.length, IllegalArgumentException);\n }\n };\n\n return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n _inheritsLoose(ChronoField, _TemporalField);\n\n ChronoField.byName = function byName(fieldName) {\n for (var prop in ChronoField) {\n if (ChronoField[prop]) {\n if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n };\n\n function ChronoField(name, baseUnit, rangeUnit, range) {\n var _this;\n\n _this = _TemporalField.call(this) || this;\n _this._name = name;\n _this._baseUnit = baseUnit;\n _this._rangeUnit = rangeUnit;\n _this._range = range;\n return _this;\n }\n\n var _proto = ChronoField.prototype;\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.baseUnit = function baseUnit() {\n return this._baseUnit;\n };\n\n _proto.rangeUnit = function rangeUnit() {\n return this._rangeUnit;\n };\n\n _proto.range = function range() {\n return this._range;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.checkValidValue = function checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n };\n\n _proto.isDateBased = function isDateBased() {\n var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n return dateBased;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return temporal.range(this);\n };\n\n _proto.getFrom = function getFrom(temporal) {\n return temporal.getLong(this);\n };\n\n _proto.toString = function toString() {\n return this.name();\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(this);\n };\n\n return ChronoField;\n}(TemporalField);\nfunction _init$3() {\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(Math.floor(YearConstants.MIN_VALUE * 365.25), Math.floor(YearConstants.MAX_VALUE * 365.25)));\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalQueries = function () {\n function TemporalQueries() {}\n\n TemporalQueries.zoneId = function zoneId() {\n return TemporalQueries.ZONE_ID;\n };\n\n TemporalQueries.chronology = function chronology() {\n return TemporalQueries.CHRONO;\n };\n\n TemporalQueries.precision = function precision() {\n return TemporalQueries.PRECISION;\n };\n\n TemporalQueries.zone = function zone() {\n return TemporalQueries.ZONE;\n };\n\n TemporalQueries.offset = function offset() {\n return TemporalQueries.OFFSET;\n };\n\n TemporalQueries.localDate = function localDate() {\n return TemporalQueries.LOCAL_DATE;\n };\n\n TemporalQueries.localTime = function localTime() {\n return TemporalQueries.LOCAL_TIME;\n };\n\n return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n function TemporalAccessor() {}\n\n var _proto = TemporalAccessor.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n _inheritsLoose(TemporalQuery, _Enum);\n\n function TemporalQuery() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TemporalQuery.prototype;\n\n _proto.queryFrom = function queryFrom(temporal) {\n abstractMethodFail('queryFrom');\n };\n\n return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n var ExtendedTemporalQuery = function (_TemporalQuery) {\n _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n\n function ExtendedTemporalQuery() {\n return _TemporalQuery.apply(this, arguments) || this;\n }\n\n return ExtendedTemporalQuery;\n }(TemporalQuery);\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n _inheritsLoose(DayOfWeek, _TemporalAccessor);\n\n function DayOfWeek(ordinal, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._ordinal = ordinal;\n _this._name = name;\n return _this;\n }\n\n var _proto = DayOfWeek.prototype;\n\n _proto.ordinal = function ordinal() {\n return this._ordinal;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n DayOfWeek.values = function values() {\n return ENUMS.slice();\n };\n\n DayOfWeek.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < ENUMS.length; ordinal++) {\n if (ENUMS[ordinal].name() === name) {\n break;\n }\n }\n\n return DayOfWeek.of(ordinal + 1);\n };\n\n DayOfWeek.of = function of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException('Invalid value for DayOfWeek: ' + dayOfWeek);\n }\n\n return ENUMS[dayOfWeek - 1];\n };\n\n DayOfWeek.from = function from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n throw new DateTimeException('Unable to obtain DayOfWeek from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n } else {\n throw ex;\n }\n }\n };\n\n _proto.value = function value() {\n return this._ordinal + 1;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(days) {\n var amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n };\n\n _proto.minus = function minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n assert(_query != null, 'query', NullPointerException);\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$4() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n return DayOfWeek.from(temporal);\n });\n ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n _inheritsLoose(Month, _TemporalAccessor);\n\n function Month(value, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._value = MathUtil.safeToInt(value);\n _this._name = name;\n return _this;\n }\n\n var _proto = Month.prototype;\n\n _proto.value = function value() {\n return this._value;\n };\n\n _proto.ordinal = function ordinal() {\n return this._value - 1;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (null === field) {\n return false;\n }\n\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(months) {\n var amount = MathUtil.intMod(months, 12) + 12;\n var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n };\n\n _proto.minus = function minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n };\n\n _proto.length = function length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return leapYear ? 29 : 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.minLength = function minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.maxLength = function maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n var leap = leapYear ? 1 : 0;\n\n switch (this) {\n case Month.JANUARY:\n return 1;\n\n case Month.FEBRUARY:\n return 32;\n\n case Month.MARCH:\n return 60 + leap;\n\n case Month.APRIL:\n return 91 + leap;\n\n case Month.MAY:\n return 121 + leap;\n\n case Month.JUNE:\n return 152 + leap;\n\n case Month.JULY:\n return 182 + leap;\n\n case Month.AUGUST:\n return 213 + leap;\n\n case Month.SEPTEMBER:\n return 244 + leap;\n\n case Month.OCTOBER:\n return 274 + leap;\n\n case Month.NOVEMBER:\n return 305 + leap;\n\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n };\n\n _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n };\n\n _proto.query = function query(_query) {\n assert(_query != null, 'query() parameter must not be null', DateTimeException);\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n\n case Month.FEBRUARY:\n return 'FEBRUARY';\n\n case Month.MARCH:\n return 'MARCH';\n\n case Month.APRIL:\n return 'APRIL';\n\n case Month.MAY:\n return 'MAY';\n\n case Month.JUNE:\n return 'JUNE';\n\n case Month.JULY:\n return 'JULY';\n\n case Month.AUGUST:\n return 'AUGUST';\n\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n\n case Month.OCTOBER:\n return 'OCTOBER';\n\n case Month.NOVEMBER:\n return 'NOVEMBER';\n\n case Month.DECEMBER:\n return 'DECEMBER';\n\n default:\n return 'unknown Month, value: ' + this.value();\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n Month.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < MONTHS.length; ordinal++) {\n if (MONTHS[ordinal].name() === name) {\n break;\n }\n }\n\n return Month.of(ordinal + 1);\n };\n\n Month.values = function values() {\n return MONTHS.slice();\n };\n\n Month.of = function of(month) {\n if (month < 1 || month > 12) {\n assert(false, 'Invalid value for MonthOfYear: ' + month, DateTimeException);\n }\n\n return MONTHS[month - 1];\n };\n\n Month.from = function from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n\n try {\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Month from TemporalAccessor: ' + temporal + ' of type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n }\n };\n\n return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$5() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n _inheritsLoose(Period, _TemporalAmount);\n\n function Period(years, months, days) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n\n var _years = MathUtil.safeToInt(years);\n\n var _months = MathUtil.safeToInt(months);\n\n var _days = MathUtil.safeToInt(days);\n\n if (_years === 0 && _months === 0 && _days === 0) {\n if (!Period.ZERO) {\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n Period.ZERO = _assertThisInitialized(_this);\n }\n\n return Period.ZERO || _assertThisInitialized(_this);\n }\n\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n return _this;\n }\n\n Period.ofYears = function ofYears(years) {\n return Period.create(years, 0, 0);\n };\n\n Period.ofMonths = function ofMonths(months) {\n return Period.create(0, months, 0);\n };\n\n Period.ofWeeks = function ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n };\n\n Period.ofDays = function ofDays(days) {\n return Period.create(0, 0, days);\n };\n\n Period.of = function of(years, months, days) {\n return Period.create(years, months, days);\n };\n\n Period.from = function from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n\n requireNonNull(amount, 'amount');\n var years = 0;\n var months = 0;\n var days = 0;\n var units = amount.units();\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var unitAmount = amount.get(unit);\n\n if (unit === ChronoUnit.YEARS) {\n years = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.MONTHS) {\n months = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.DAYS) {\n days = MathUtil.safeToInt(unitAmount);\n } else {\n throw new DateTimeException('Unit must be Years, Months or Days, but was ' + unit);\n }\n }\n\n return Period.create(years, months, days);\n };\n\n Period.between = function between(startDate, endDate) {\n requireNonNull(startDate, 'startDate');\n requireNonNull(endDate, 'endDate');\n requireInstance(startDate, LocalDate, 'startDate');\n requireInstance(endDate, LocalDate, 'endDate');\n return startDate.until(endDate);\n };\n\n Period.parse = function parse(text) {\n requireNonNull(text, 'text');\n\n try {\n return Period._parse(text);\n } catch (ex) {\n if (ex instanceof ArithmeticException) {\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n };\n\n Period._parse = function _parse(text) {\n var matches = PATTERN.exec(text);\n\n if (matches != null) {\n var negate = '-' === matches[1] ? -1 : 1;\n var yearMatch = matches[2];\n var monthMatch = matches[3];\n var weekMatch = matches[4];\n var dayMatch = matches[5];\n\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n var years = Period._parseNumber(text, yearMatch, negate);\n\n var months = Period._parseNumber(text, monthMatch, negate);\n\n var weeks = Period._parseNumber(text, weekMatch, negate);\n\n var days = Period._parseNumber(text, dayMatch, negate);\n\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n };\n\n Period._parseNumber = function _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n\n var val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n };\n\n Period.create = function create(years, months, days) {\n return new Period(years, months, days);\n };\n\n var _proto = Period.prototype;\n\n _proto.units = function units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n };\n\n _proto.isZero = function isZero() {\n return this === Period.ZERO;\n };\n\n _proto.isNegative = function isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n };\n\n _proto.years = function years() {\n return this._years;\n };\n\n _proto.months = function months() {\n return this._months;\n };\n\n _proto.days = function days() {\n return this._days;\n };\n\n _proto.withYears = function withYears(years) {\n if (years === this._years) {\n return this;\n }\n\n return Period.create(years, this._months, this._days);\n };\n\n _proto.withMonths = function withMonths(months) {\n if (months === this._months) {\n return this;\n }\n\n return Period.create(this._years, months, this._days);\n };\n\n _proto.withDays = function withDays(days) {\n if (days === this._days) {\n return this;\n }\n\n return Period.create(this._years, this._months, days);\n };\n\n _proto.plus = function plus(amountToAdd) {\n var amount = Period.from(amountToAdd);\n return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n };\n\n _proto.minus = function minus(amountToSubtract) {\n var amount = Period.from(amountToSubtract);\n return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n\n return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.normalized = function normalized() {\n var totalMonths = this.toTotalMonths();\n var splitYears = MathUtil.intDiv(totalMonths, 12);\n var splitMonths = MathUtil.intMod(totalMonths, 12);\n\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n };\n\n _proto.toTotalMonths = function toTotalMonths() {\n return this._years * 12 + this._months;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof Period) {\n var other = obj;\n return this._years === other._years && this._months === other._months && this._days === other._days;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n };\n\n _proto.toString = function toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n var buf = 'P';\n\n if (this._years !== 0) {\n buf += '' + this._years + 'Y';\n }\n\n if (this._months !== 0) {\n buf += '' + this._months + 'M';\n }\n\n if (this._days !== 0) {\n buf += '' + this._days + 'D';\n }\n\n return buf;\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Period;\n}(TemporalAmount);\nfunction _init$6() {\n Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ParsePosition = function () {\n function ParsePosition(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n var _proto = ParsePosition.prototype;\n\n _proto.getIndex = function getIndex() {\n return this._index;\n };\n\n _proto.setIndex = function setIndex(index) {\n this._index = index;\n };\n\n _proto.getErrorIndex = function getErrorIndex() {\n return this._errorIndex;\n };\n\n _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n this._errorIndex = errorIndex;\n };\n\n return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar EnumMap = function () {\n function EnumMap() {\n this._map = {};\n }\n\n var _proto = EnumMap.prototype;\n\n _proto.putAll = function putAll(otherMap) {\n for (var key in otherMap._map) {\n this._map[key] = otherMap._map[key];\n }\n\n return this;\n };\n\n _proto.containsKey = function containsKey(key) {\n return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n };\n\n _proto.get = function get(key) {\n return this._map[key.name()];\n };\n\n _proto.put = function put(key, val) {\n return this.set(key, val);\n };\n\n _proto.set = function set(key, val) {\n this._map[key.name()] = val;\n return this;\n };\n\n _proto.retainAll = function retainAll(keyList) {\n var map = {};\n\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i].name();\n map[key] = this._map[key];\n }\n\n this._map = map;\n return this;\n };\n\n _proto.remove = function remove(key) {\n var keyName = key.name();\n var val = this._map[keyName];\n this._map[keyName] = undefined;\n return val;\n };\n\n _proto.keySet = function keySet() {\n return this._map;\n };\n\n _proto.clear = function clear() {\n this._map = {};\n };\n\n return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n _inheritsLoose(ResolverStyle, _Enum);\n\n function ResolverStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n function TemporalAdjuster() {}\n\n var _proto = TemporalAdjuster.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n abstractMethodFail('adjustInto');\n };\n\n return TemporalAdjuster;\n}();\n\nvar Temporal = function (_TemporalAccessor) {\n _inheritsLoose(Temporal, _TemporalAccessor);\n\n function Temporal() {\n return _TemporalAccessor.apply(this, arguments) || this;\n }\n\n var _proto = Temporal.prototype;\n\n _proto.isSupported = function isSupported(unit) {\n abstractMethodFail('isSupported');\n };\n\n _proto.minus = function minus(p1, p2) {\n if (arguments.length < 2) {\n return this.minusAmount(p1);\n } else {\n return this.minusAmountUnit(p1, p2);\n }\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n abstractMethodFail('minusAmount');\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n abstractMethodFail('minusAmountUnit');\n };\n\n _proto.plus = function plus(p1, p2) {\n if (arguments.length < 2) {\n return this.plusAmount(p1);\n } else {\n return this.plusAmountUnit(p1, p2);\n }\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n abstractMethodFail('plusAmount');\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n abstractMethodFail('plusAmountUnit');\n };\n\n _proto.until = function until(endTemporal, unit) {\n abstractMethodFail('until');\n };\n\n _proto.with = function _with(p1, p2) {\n if (arguments.length < 2) {\n return this.withAdjuster(p1);\n } else {\n return this.withFieldValue(p1, p2);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n abstractMethodFail('withAdjuster');\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n abstractMethodFail('withFieldValue');\n };\n\n return Temporal;\n}(TemporalAccessor);\n\nvar DefaultInterfaceTemporal = function (_Temporal) {\n _inheritsLoose(DefaultInterfaceTemporal, _Temporal);\n\n function DefaultInterfaceTemporal() {\n return _Temporal.apply(this, arguments) || this;\n }\n\n var _proto = DefaultInterfaceTemporal.prototype;\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n requireInstance(adjuster, TemporalAdjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmount(-amountToSubtract, unit);\n };\n\n return DefaultInterfaceTemporal;\n}(Temporal);\n\nvar ChronoLocalDate = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDate, _DefaultInterfaceTemp);\n\n function ChronoLocalDate() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDate.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return ChronoLocalDate;\n}(DefaultInterfaceTemporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n function StringUtil() {}\n\n StringUtil.startsWith = function startsWith(text, pattern) {\n return text.indexOf(pattern) === 0;\n };\n\n StringUtil.hashCode = function hashCode(text) {\n var len = text.length;\n\n if (len === 0) {\n return 0;\n }\n\n var hash = 0;\n\n for (var i = 0; i < len; i++) {\n var chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n\n return MathUtil.smi(hash);\n };\n\n return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n function ZoneId() {}\n\n ZoneId.systemDefault = function systemDefault() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.of = function of(zoneId) {\n throw new DateTimeException('not supported operation' + zoneId);\n };\n\n ZoneId.ofOffset = function ofOffset(prefix, offset) {\n throw new DateTimeException('not supported operation' + prefix + offset);\n };\n\n ZoneId.from = function from(temporal) {\n throw new DateTimeException('not supported operation' + temporal);\n };\n\n var _proto = ZoneId.prototype;\n\n _proto.id = function id() {\n abstractMethodFail('ZoneId.id');\n };\n\n _proto.rules = function rules() {\n abstractMethodFail('ZoneId.rules');\n };\n\n _proto.normalized = function normalized() {\n var rules = this.rules();\n\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n\n return this;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return StringUtil.hashCode(this.id());\n };\n\n _proto.toString = function toString() {\n return this.id();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneId;\n}();\n\nvar ZoneRules = function () {\n function ZoneRules() {}\n\n ZoneRules.of = function of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n };\n\n var _proto = ZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n abstractMethodFail('ZoneRules.isFixedOffset');\n };\n\n _proto.offset = function offset(instantOrLocalDateTime) {\n if (instantOrLocalDateTime instanceof Instant) {\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n abstractMethodFail('ZoneRules.offsetInstant');\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n abstractMethodFail('ZoneRules.validOffsets');\n };\n\n _proto.transition = function transition(localDateTime) {\n abstractMethodFail('ZoneRules.transition');\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n abstractMethodFail('ZoneRules.standardOffset');\n };\n\n _proto.daylightSavings = function daylightSavings(instant) {\n abstractMethodFail('ZoneRules.daylightSavings');\n };\n\n _proto.isDaylightSavings = function isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n };\n\n _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n abstractMethodFail('ZoneRules.isValidOffset');\n };\n\n _proto.nextTransition = function nextTransition(instant) {\n abstractMethodFail('ZoneRules.nextTransition');\n };\n\n _proto.previousTransition = function previousTransition(instant) {\n abstractMethodFail('ZoneRules.previousTransition');\n };\n\n _proto.transitions = function transitions() {\n abstractMethodFail('ZoneRules.transitions');\n };\n\n _proto.transitionRules = function transitionRules() {\n abstractMethodFail('ZoneRules.transitionRules');\n };\n\n _proto.toString = function toString() {\n abstractMethodFail('ZoneRules.toString');\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneRules;\n}();\n\nvar Fixed = function (_ZoneRules) {\n _inheritsLoose(Fixed, _ZoneRules);\n\n function Fixed(offset) {\n var _this;\n\n _this = _ZoneRules.call(this) || this;\n _this._offset = offset;\n return _this;\n }\n\n var _proto2 = Fixed.prototype;\n\n _proto2.isFixedOffset = function isFixedOffset() {\n return true;\n };\n\n _proto2.offsetOfInstant = function offsetOfInstant() {\n return this._offset;\n };\n\n _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n return this._offset;\n };\n\n _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n return this._offset;\n };\n\n _proto2.validOffsets = function validOffsets() {\n return [this._offset];\n };\n\n _proto2.transition = function transition() {\n return null;\n };\n\n _proto2.standardOffset = function standardOffset() {\n return this._offset;\n };\n\n _proto2.daylightSavings = function daylightSavings() {\n return Duration.ZERO;\n };\n\n _proto2.isDaylightSavings = function isDaylightSavings() {\n return false;\n };\n\n _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n };\n\n _proto2.nextTransition = function nextTransition() {\n return null;\n };\n\n _proto2.previousTransition = function previousTransition() {\n return null;\n };\n\n _proto2.transitions = function transitions() {\n return [];\n };\n\n _proto2.transitionRules = function transitionRules() {\n return [];\n };\n\n _proto2.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto2.toString = function toString() {\n return 'FixedRules:' + this._offset.toString();\n };\n\n return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n _inheritsLoose(ZoneOffset, _ZoneId);\n\n function ZoneOffset(totalSeconds) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n\n ZoneOffset._validateTotalSeconds(totalSeconds);\n\n _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n _this._id = ZoneOffset._buildId(totalSeconds);\n return _this;\n }\n\n var _proto = ZoneOffset.prototype;\n\n _proto.totalSeconds = function totalSeconds() {\n return this._totalSeconds;\n };\n\n _proto.id = function id() {\n return this._id;\n };\n\n ZoneOffset._buildId = function _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n var absTotalSeconds = Math.abs(totalSeconds);\n var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var buf = '' + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n }\n\n return buf;\n }\n };\n\n ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException('Zone offset hours not in valid range: value ' + hours + ' is not in the range -18 to 18');\n }\n\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException('Zone offset minutes not in valid range: abs(value) ' + Math.abs(minutes) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException('Zone offset seconds not in valid range: abs(value) ' + Math.abs(seconds) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset.of = function of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n var offset = ID_CACHE[offsetId];\n\n if (offset != null) {\n return offset;\n }\n\n var hours, minutes, seconds;\n\n switch (offsetId.length) {\n case 2:\n offsetId = offsetId[0] + '0' + offsetId[1];\n\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n\n default:\n throw new DateTimeException('Invalid ID for ZoneOffset, invalid format: ' + offsetId);\n }\n\n var first = offsetId[0];\n\n if (first !== '+' && first !== '-') {\n throw new DateTimeException('Invalid ID for ZoneOffset, plus/minus not found when expected: ' + offsetId);\n }\n\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n };\n\n ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException('Invalid ID for ZoneOffset, colon not found when expected: ' + offsetId);\n }\n\n var ch1 = offsetId[pos];\n var ch2 = offsetId[pos + 1];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException('Invalid ID for ZoneOffset, non numeric characters found: ' + offsetId);\n }\n\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n };\n\n ZoneOffset.ofHours = function ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n };\n\n ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n };\n\n ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n\n var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n var totalSecs = totalSeconds;\n var result = SECONDS_CACHE[totalSecs];\n\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._totalSeconds;\n };\n\n _proto.toString = function toString() {\n return this._id;\n };\n\n return ZoneOffset;\n}(ZoneId);\nfunction _init$7() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n\n DateTimeBuilder.create = function create(field, value) {\n var dtb = new DateTimeBuilder();\n\n dtb._addFieldValue(field, value);\n\n return dtb;\n };\n\n function DateTimeBuilder() {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this.fieldValues = new EnumMap();\n _this.chrono = null;\n _this.zone = null;\n _this.date = null;\n _this.time = null;\n _this.leapSecond = false;\n _this.excessDays = null;\n return _this;\n }\n\n var _proto = DateTimeBuilder.prototype;\n\n _proto.getFieldValue0 = function getFieldValue0(field) {\n return this.fieldValues.get(field);\n };\n\n _proto._addFieldValue = function _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n var old = this.getFieldValue0(field);\n\n if (old != null && old !== value) {\n throw new DateTimeException('Conflict found: ' + field + ' ' + old + ' differs from ' + field + ' ' + value + ': ' + this);\n }\n\n return this._putFieldValue0(field, value);\n };\n\n _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n };\n\n _proto.resolve = function resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n\n this._mergeDate(resolverStyle);\n\n this._mergeTime(resolverStyle);\n\n this._resolveTimeInferZeroes(resolverStyle);\n\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n\n this._resolveInstant();\n\n return this;\n };\n\n _proto._mergeDate = function _mergeDate(resolverStyle) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n };\n\n _proto._checkDate = function _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n\n for (var fieldName in this.fieldValues.keySet()) {\n var field = ChronoField.byName(fieldName);\n\n if (field) {\n if (this.fieldValues.get(field) !== undefined) {\n if (field.isDateBased()) {\n var val1 = void 0;\n\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n\n var val2 = this.fieldValues.get(field);\n\n if (val1 !== val2) {\n throw new DateTimeException('Conflict found: Field ' + field + ' ' + val1 + ' differs from ' + field + ' ' + val2 + ' derived from ' + date);\n }\n }\n }\n }\n }\n }\n };\n\n _proto._mergeTime = function _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n }\n };\n\n _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n if (hod == null) {\n return;\n }\n\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n\n if (moh != null && som == null && nos != null) {\n return;\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n\n var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n\n if (moh != null) {\n var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n\n if (som != null) {\n var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n\n if (nos != null) {\n var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n var _hodVal = hod;\n\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n\n var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n\n this._addObject(LocalTime.ofNanoOfDay(nod));\n\n this.excessDays = Period.ofDays(excessDays);\n } else {\n var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n\n var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n\n var sod = MathUtil.floorMod(totalSecs, 86400);\n\n this._addObject(LocalTime.ofSecondOfDay(sod));\n\n this.excessDays = Period.ofDays(_excessDays);\n }\n } else {\n var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n\n _hodVal = MathUtil.floorMod(_hodVal, 24);\n\n this._addObject(LocalTime.of(_hodVal, 0));\n\n this.excessDays = Period.ofDays(_excessDays2);\n }\n }\n }\n\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n };\n\n _proto._addObject = function _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate) {\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime) {\n this.time = dateOrTime;\n }\n };\n\n _proto._resolveInstant = function _resolveInstant() {\n if (this.date != null && this.time != null) {\n var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs != null) {\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n }\n }\n };\n\n _proto.build = function build(type) {\n return type.queryFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field == null) {\n return false;\n }\n\n return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n var value = this.getFieldValue0(field);\n\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n\n throw new DateTimeException('Field not found: ' + field);\n }\n\n return value;\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (_query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (_query === TemporalQueries.localTime()) {\n return this.time;\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return _query.queryFrom(this);\n } else if (_query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n function DateTimeParseContext() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DateTimeParseContext) {\n this._constructorSelf.apply(this, arguments);\n\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n var _proto = DateTimeParseContext.prototype;\n\n _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n };\n\n _proto._constructorFormatter = function _constructorFormatter(formatter) {\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n };\n\n _proto._constructorSelf = function _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n };\n\n _proto.copy = function copy() {\n return new DateTimeParseContext(this);\n };\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.isStrict = function isStrict() {\n return this._strict;\n };\n\n _proto.setStrict = function setStrict(strict) {\n this._strict = strict;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n _proto.startOptional = function startOptional() {\n this._parsed.push(this.currentParsed().copy());\n };\n\n _proto.endOptional = function endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n };\n\n _proto.isCaseSensitive = function isCaseSensitive() {\n return this._caseSensitive;\n };\n\n _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n };\n\n _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n\n if (!this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n\n for (var i = 0; i < length; i++) {\n var ch1 = cs1[offset1 + i];\n var ch2 = cs2[offset2 + i];\n\n if (ch1 !== ch2) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.charEquals = function charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n\n return this.charEqualsIgnoreCase(ch1, ch2);\n };\n\n _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n };\n\n _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n var currentParsedFieldValues = this.currentParsed().fieldValues;\n var old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return old != null && old !== value ? ~errorPos : successPos;\n };\n\n _proto.setParsedZone = function setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n };\n\n _proto.getParsed = function getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n };\n\n _proto.toParsed = function toParsed() {\n return this.currentParsed();\n };\n\n _proto.currentParsed = function currentParsed() {\n return this._parsed[this._parsed.length - 1];\n };\n\n _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n };\n\n _proto.getEffectiveChronology = function getEffectiveChronology() {\n var chrono = this.currentParsed().chrono;\n\n if (chrono == null) {\n chrono = this._overrideChronology;\n\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n\n return chrono;\n };\n\n return DateTimeParseContext;\n}();\n\nvar Parsed = function (_Temporal) {\n _inheritsLoose(Parsed, _Temporal);\n\n function Parsed(dateTimeParseContext) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this.chrono = null;\n _this.zone = null;\n _this.fieldValues = new EnumMap();\n _this.leapSecond = false;\n _this.dateTimeParseContext = dateTimeParseContext;\n return _this;\n }\n\n var _proto2 = Parsed.prototype;\n\n _proto2.copy = function copy() {\n var cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n };\n\n _proto2.toString = function toString() {\n return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n };\n\n _proto2.isSupported = function isSupported(field) {\n return this.fieldValues.containsKey(field);\n };\n\n _proto2.get = function get(field) {\n var val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n };\n\n _proto2.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto2.toBuilder = function toBuilder() {\n var builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n };\n\n return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n\n this._optional = 0;\n }\n\n DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n return temporal;\n };\n\n var _proto = DateTimePrintContext.prototype;\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.startOptional = function startOptional() {\n this._optional++;\n };\n\n _proto.endOptional = function endOptional() {\n this._optional--;\n };\n\n _proto.getValueQuery = function getValueQuery(query) {\n var result = this._temporal.query(query);\n\n if (result == null && this._optional === 0) {\n throw new DateTimeException('Unable to extract value: ' + this._temporal);\n }\n\n return result;\n };\n\n _proto.getValue = function getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException && this._optional > 0) {\n return null;\n }\n\n throw ex;\n }\n };\n\n _proto.temporal = function temporal() {\n return this._temporal;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setDateTime = function setDateTime(temporal) {\n this._temporal = temporal;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\nvar Field = function (_TemporalField) {\n _inheritsLoose(Field, _TemporalField);\n\n function Field() {\n return _TemporalField.apply(this, arguments) || this;\n }\n\n var _proto = Field.prototype;\n\n _proto.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto._isIso = function _isIso() {\n return true;\n };\n\n Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n var wby = Field._getWeekBasedYear(date);\n\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n };\n\n Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n var date = LocalDate.of(wby, 1, 1);\n\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n return 53;\n }\n\n return 52;\n };\n\n Field._getWeek = function _getWeek(date) {\n var dow0 = date.dayOfWeek().ordinal();\n var doy0 = date.dayOfYear() - 1;\n var doyThu0 = doy0 + (3 - dow0);\n var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n var firstMonDoy0 = firstThuDoy0 - 3;\n\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n\n var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n\n if (week === 53) {\n if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n week = 1;\n }\n }\n\n return week;\n };\n\n Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n var year = date.year();\n var doy = date.dayOfYear();\n\n if (doy <= 3) {\n var dow = date.dayOfWeek().ordinal();\n\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n var _dow = date.dayOfWeek().ordinal();\n\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n\n if (doy - _dow >= 0) {\n year++;\n }\n }\n\n return year;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.resolve = function resolve() {\n return null;\n };\n\n _proto.name = function name() {\n return this.toString();\n };\n\n return Field;\n}(TemporalField);\n\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n\n function DAY_OF_QUARTER_FIELD() {\n return _Field.apply(this, arguments) || this;\n }\n\n var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n\n _proto2.toString = function toString() {\n return 'DayOfQuarter';\n };\n\n _proto2.baseUnit = function baseUnit() {\n return ChronoUnit.DAYS;\n };\n\n _proto2.rangeUnit = function rangeUnit() {\n return QUARTER_YEARS;\n };\n\n _proto2.range = function range() {\n return ValueRange.of(1, 90, 92);\n };\n\n _proto2.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n };\n\n _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var qoy = temporal.getLong(QUARTER_OF_YEAR);\n\n if (qoy === 1) {\n var year = temporal.getLong(ChronoField.YEAR);\n return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n }\n\n return this.range();\n };\n\n _proto2.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n var year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n };\n\n _proto2.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n };\n\n _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var yearLong = fieldValues.get(ChronoField.YEAR);\n var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n\n var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n var doq = fieldValues.get(DAY_OF_QUARTER);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var max = 92;\n\n if (_qoy === 1) {\n max = IsoChronology.isLeapYear(y) ? 91 : 90;\n } else if (_qoy === 2) {\n max = 91;\n }\n\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this);\n }\n\n date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n };\n\n return DAY_OF_QUARTER_FIELD;\n}(Field);\n\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n\n function QUARTER_OF_YEAR_FIELD() {\n return _Field2.apply(this, arguments) || this;\n }\n\n var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n\n _proto3.toString = function toString() {\n return 'QuarterOfYear';\n };\n\n _proto3.baseUnit = function baseUnit() {\n return QUARTER_YEARS;\n };\n\n _proto3.rangeUnit = function rangeUnit() {\n return ChronoUnit.YEARS;\n };\n\n _proto3.range = function range() {\n return ValueRange.of(1, 4);\n };\n\n _proto3.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n };\n\n _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return this.range();\n };\n\n _proto3.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n\n var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv(moy + 2, 3);\n };\n\n _proto3.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n };\n\n return QUARTER_OF_YEAR_FIELD;\n}(Field);\n\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n\n function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n return _Field3.apply(this, arguments) || this;\n }\n\n var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto4.toString = function toString() {\n return 'WeekOfWeekBasedYear';\n };\n\n _proto4.baseUnit = function baseUnit() {\n return ChronoUnit.WEEKS;\n };\n\n _proto4.rangeUnit = function rangeUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto4.range = function range() {\n return ValueRange.of(1, 52, 53);\n };\n\n _proto4.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n };\n\n _proto4.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeek(LocalDate.from(temporal));\n };\n\n _proto4.adjustInto = function adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n };\n\n _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n\n var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var dow = dowLong;\n var weeks = 0;\n\n if (dow > 7) {\n weeks = MathUtil.intDiv(dow - 1, 7);\n dow = MathUtil.intMod(dow - 1, 7) + 1;\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var temp = LocalDate.of(wby, 1, 4);\n\n var range = Field._getWeekRangeByLocalDate(temp);\n\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this);\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n };\n\n _proto4.displayName = function displayName() {\n return 'Week';\n };\n\n return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n\n function WEEK_BASED_YEAR_FIELD() {\n return _Field4.apply(this, arguments) || this;\n }\n\n var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto5.toString = function toString() {\n return 'WeekBasedYear';\n };\n\n _proto5.baseUnit = function baseUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto5.rangeUnit = function rangeUnit() {\n return ChronoUnit.FOREVER;\n };\n\n _proto5.range = function range() {\n return ChronoField.YEAR.range();\n };\n\n _proto5.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n };\n\n _proto5.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n };\n\n _proto5.adjustInto = function adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n var date = LocalDate.from(temporal);\n var dow = date.get(ChronoField.DAY_OF_WEEK);\n\n var week = Field._getWeek(date);\n\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n\n var resolved = LocalDate.of(newWby, 1, 4);\n var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n };\n\n return WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar Unit = function (_TemporalUnit) {\n _inheritsLoose(Unit, _TemporalUnit);\n\n function Unit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto6 = Unit.prototype;\n\n _proto6.duration = function duration() {\n return this._duration;\n };\n\n _proto6.isDurationEstimated = function isDurationEstimated() {\n return true;\n };\n\n _proto6.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto6.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto6.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n };\n\n _proto6.addTo = function addTo(temporal, periodToAdd) {\n switch (this) {\n case WEEK_BASED_YEARS:\n {\n var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n\n case QUARTER_YEARS:\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.between = function between(temporal1, temporal2) {\n switch (this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.toString = function toString() {\n return name;\n };\n\n return Unit;\n}(TemporalUnit);\n\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$8() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DecimalStyle = function () {\n function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n var _proto = DecimalStyle.prototype;\n\n _proto.positiveSign = function positiveSign() {\n return this._positiveSign;\n };\n\n _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.negativeSign = function negativeSign() {\n return this._negativeSign;\n };\n\n _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n };\n\n _proto.zeroDigit = function zeroDigit() {\n return this._zeroDigit;\n };\n\n _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.decimalSeparator = function decimalSeparator() {\n return this._decimalSeparator;\n };\n\n _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n };\n\n _proto.convertToDigit = function convertToDigit(char) {\n var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n\n return val >= 0 && val <= 9 ? val : -1;\n };\n\n _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n\n var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n var convertedText = '';\n\n for (var i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n\n return convertedText;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof DecimalStyle) {\n return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n };\n\n _proto.toString = function toString() {\n return 'DecimalStyle[' + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + ']';\n };\n\n DecimalStyle.of = function of() {\n throw new Error('not yet supported');\n };\n\n DecimalStyle.availableLocales = function availableLocales() {\n throw new Error('not yet supported');\n };\n\n return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n _inheritsLoose(SignStyle, _Enum);\n\n function SignStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SignStyle.prototype;\n\n _proto.parse = function parse(positive, strict, fixedWidth) {\n switch (this) {\n case SignStyle.NORMAL:\n return !positive || !strict;\n\n case SignStyle.ALWAYS:\n case SignStyle.EXCEEDS_PAD:\n return true;\n\n default:\n return !strict && !fixedWidth;\n }\n };\n\n return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n _inheritsLoose(TextStyle, _Enum);\n\n function TextStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TextStyle.prototype;\n\n _proto.isStandalone = function isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n\n default:\n return false;\n }\n };\n\n _proto.asStandalone = function asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n\n default:\n return this;\n }\n };\n\n _proto.asNormal = function asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n\n default:\n return this;\n }\n };\n\n return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n function CharLiteralPrinterParser(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException('invalid literal, too long: \"' + literal + '\"');\n }\n\n this._literal = literal;\n }\n\n var _proto = CharLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n var ch = text.charAt(position);\n\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n\n return \"'\" + this._literal + \"'\";\n };\n\n return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CompositePrinterParser = function () {\n function CompositePrinterParser(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n var _proto = CompositePrinterParser.prototype;\n\n _proto.withOptional = function withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n\n return new CompositePrinterParser(this._printerParsers, optional);\n };\n\n _proto.print = function print(context, buf) {\n var length = buf.length();\n\n if (this._optional) {\n context.startOptional();\n }\n\n try {\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n\n if (pp.print(context, buf) === false) {\n buf.setLength(length);\n return true;\n }\n }\n } finally {\n if (this._optional) {\n context.endOptional();\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n if (this._optional) {\n context.startOptional();\n var pos = position;\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n pos = pp.parse(context, text, pos);\n\n if (pos < 0) {\n context.endOptional(false);\n return position;\n }\n }\n\n context.endOptional(true);\n return pos;\n } else {\n for (var _i = 0; _i < this._printerParsers.length; _i++) {\n var _pp = this._printerParsers[_i];\n position = _pp.parse(context, text, position);\n\n if (position < 0) {\n break;\n }\n }\n\n return position;\n }\n };\n\n _proto.toString = function toString() {\n var buf = '';\n\n if (this._printerParsers != null) {\n buf += this._optional ? '[' : '(';\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n buf += pp.toString();\n }\n\n buf += this._optional ? ']' : ')';\n }\n\n return buf;\n };\n\n return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n requireNonNull(field, 'field');\n\n if (field.range().isFixed() === false) {\n throw new IllegalArgumentException('Field must have a fixed set of values: ' + field);\n }\n\n if (minWidth < 0 || minWidth > 9) {\n throw new IllegalArgumentException('Minimum width must be from 0 to 9 inclusive but was ' + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException('Maximum width must be from 1 to 9 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException('Maximum width must exceed or equal the minimum width but ' + maxWidth + ' < ' + minWidth);\n }\n\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n var _proto = FractionPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var value = context.getValue(this.field);\n\n if (value === null) {\n return false;\n }\n\n var symbols = context.symbols();\n\n if (value === 0) {\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n for (var i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n var fraction = this.convertToFraction(value, symbols.zeroDigit());\n var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n\n if (fraction * 1 > 0) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n\n var str = fraction;\n str = symbols.convertNumberToI18N(str);\n\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n buf.append(str);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var effectiveMin = context.isStrict() ? this.minWidth : 0;\n var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n var length = text.length;\n\n if (position === length) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n position++;\n }\n\n var minEndPos = position + effectiveMin;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var maxEndPos = Math.min(position + effectiveMax, length);\n var total = 0;\n var pos = position;\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position;\n }\n\n pos--;\n break;\n }\n\n total = total * 10 + digit;\n }\n\n var moveLeft = pos - position;\n var scale = Math.pow(10, moveLeft);\n var value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n };\n\n _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n var range = this.field.range();\n range.checkValidValue(value, this.field);\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = value - _min;\n\n var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n\n var fraction = '' + _scaled;\n\n while (fraction.length < 9) {\n fraction = zeroDigit + fraction;\n }\n\n return fraction;\n };\n\n _proto.convertFromFraction = function convertFromFraction(total, scale) {\n var range = this.field.range();\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = MathUtil.intDiv(total * _range, scale);\n\n return _value;\n };\n\n _proto.toString = function toString() {\n var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n return 'Fraction(' + this.field + ',' + this.minWidth + ',' + this.maxWidth + decimal + ')';\n };\n\n return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n if (subsequentWidth === void 0) {\n subsequentWidth = 0;\n }\n\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n var _proto = NumberPrinterParser.prototype;\n\n _proto.field = function field() {\n return this._field;\n };\n\n _proto.minWidth = function minWidth() {\n return this._minWidth;\n };\n\n _proto.maxWidth = function maxWidth() {\n return this._maxWidth;\n };\n\n _proto.signStyle = function signStyle() {\n return this._signStyle;\n };\n\n _proto.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n };\n\n _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n };\n\n _proto._isFixedWidth = function _isFixedWidth() {\n return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n };\n\n _proto.print = function print(context, buf) {\n var contextValue = context.getValue(this._field);\n\n if (contextValue == null) {\n return false;\n }\n\n var value = this._getValue(context, contextValue);\n\n var symbols = context.symbols();\n var str = '' + Math.abs(value);\n\n if (str.length > this._maxWidth) {\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' exceeds the maximum print width of ' + this._maxWidth);\n }\n\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n\n break;\n\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' cannot be negative according to the SignStyle');\n }\n }\n\n for (var i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n\n buf.append(str);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n assert(position >= 0 && position < length);\n var sign = text.charAt(position);\n var negative = false;\n var positive = false;\n\n if (sign === context.symbols().positiveSign()) {\n if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n positive = true;\n position++;\n } else if (sign === context.symbols().negativeSign()) {\n if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n negative = true;\n position++;\n } else {\n if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n return ~position;\n }\n }\n\n var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n var minEndPos = position + effMinWidth;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n var total = 0;\n var pos = position;\n\n for (var pass = 0; pass < 2; pass++) {\n var maxEndPos = Math.min(pos + effMaxWidth, length);\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n pos--;\n\n if (pos < minEndPos) {\n return ~position;\n }\n\n break;\n }\n\n if (pos - position > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n\n if (this._subsequentWidth > 0 && pass === 0) {\n var parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1);\n }\n\n if (total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n var _parseLen = pos - position;\n\n if (positive) {\n if (_parseLen <= this._minWidth) {\n return ~(position - 1);\n }\n } else {\n if (_parseLen > this._minWidth) {\n return ~position;\n }\n }\n }\n\n return this._setValue(context, total, position, pos);\n };\n\n _proto._getValue = function _getValue(context, value) {\n return value;\n };\n\n _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto.toString = function toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return 'Value(' + this._field + ')';\n }\n\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return 'Value(' + this._field + ',' + this._minWidth + ')';\n }\n\n return 'Value(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + this._signStyle + ')';\n };\n\n return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n\n function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n var _this;\n\n _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException('The width must be from 1 to 10 inclusive but was ' + width);\n }\n\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException('The maxWidth must be from 1 to 10 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n\n if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n\n _this._baseValue = baseValue;\n _this._baseDate = baseDate;\n return _this;\n }\n\n var _proto2 = ReducedPrinterParser.prototype;\n\n _proto2._getValue = function _getValue(context, value) {\n var absValue = Math.abs(value);\n var baseValue = this._baseValue;\n\n if (this._baseDate !== null) {\n context.temporal();\n var chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n\n return absValue % EXCEED_POINTS[this._maxWidth];\n };\n\n _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n var baseValue = this._baseValue;\n\n if (this._baseDate != null) {\n var chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n var parseLen = successPos - errorPos;\n\n if (parseLen === this._minWidth && value >= 0) {\n var range = EXCEED_POINTS[this._minWidth];\n var lastPart = baseValue % range;\n var basePart = baseValue - lastPart;\n\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n\n if (value < baseValue) {\n value += range;\n }\n }\n\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto2.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n };\n\n _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n };\n\n _proto2.isFixedWidth = function isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n\n return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n };\n\n _proto2.toString = function toString() {\n return 'ReducedValue(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + (this._baseDate != null ? this._baseDate : this._baseValue) + ')';\n };\n\n return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n function OffsetIdPrinterParser(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n var _proto = OffsetIdPrinterParser.prototype;\n\n _proto._checkPattern = function _checkPattern(pattern) {\n for (var i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n\n throw new IllegalArgumentException('Invalid zone offset pattern: ' + pattern);\n };\n\n _proto.print = function print(context, buf) {\n var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs == null) {\n return false;\n }\n\n var totalSecs = MathUtil.safeToInt(offsetSecs);\n\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n var bufPos = buf.length();\n var output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + '0').appendChar(MathUtil.intMod(absHours, 10) + '0');\n\n if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + '0').appendChar(absMinutes % 10 + '0');\n output += absMinutes;\n\n if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + '0').appendChar(absSeconds % 10 + '0');\n output += absSeconds;\n }\n }\n\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n var noOffsetLen = this.noOffsetText.length;\n\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n var sign = text[position];\n\n if (sign === '+' || sign === '-') {\n var negative = sign === '-' ? -1 : 1;\n var array = [0, 0, 0, 0];\n array[0] = position + 1;\n\n if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n\n return ~position;\n };\n\n _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false;\n }\n\n var pos = array[0];\n\n if (this.type % 2 === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n\n pos++;\n }\n\n if (pos + 2 > parseText.length) {\n return required;\n }\n\n var ch1 = parseText[pos++];\n var ch2 = parseText[pos++];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n\n var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n\n if (value < 0 || value > 59) {\n return required;\n }\n\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n };\n\n _proto.toString = function toString() {\n var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return 'Offset(' + PATTERNS[this.type] + ',\\'' + converted + '\\')';\n };\n\n return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n var _proto = PadPrinterParserDecorator.prototype;\n\n _proto.print = function print(context, buf) {\n var preLen = buf.length();\n\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n\n var len = buf.length() - preLen;\n\n if (len > this._padWidth) {\n throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n }\n\n for (var i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var strict = context.isStrict();\n var caseSensitive = context.isCaseSensitive();\n assert(!(position > text.length));\n assert(position >= 0);\n\n if (position === text.length) {\n return ~position;\n }\n\n var endPos = position + this._padWidth;\n\n if (endPos > text.length) {\n if (strict) {\n return ~position;\n }\n\n endPos = text.length;\n }\n\n var pos = position;\n\n while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n\n text = text.substring(0, endPos);\n\n var resultPos = this._printerParser.parse(context, text, pos);\n\n if (resultPos !== endPos && strict) {\n return ~(position + pos);\n }\n\n return resultPos;\n };\n\n _proto.toString = function toString() {\n return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : ',\\'' + this._padChar + '\\')');\n };\n\n return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n _inheritsLoose(SettingsParser, _Enum);\n\n function SettingsParser() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SettingsParser.prototype;\n\n _proto.print = function print() {\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n switch (this) {\n case SettingsParser.SENSITIVE:\n context.setCaseSensitive(true);\n break;\n\n case SettingsParser.INSENSITIVE:\n context.setCaseSensitive(false);\n break;\n\n case SettingsParser.STRICT:\n context.setStrict(true);\n break;\n\n case SettingsParser.LENIENT:\n context.setStrict(false);\n break;\n }\n\n return position;\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case SettingsParser.SENSITIVE:\n return 'ParseCaseSensitive(true)';\n\n case SettingsParser.INSENSITIVE:\n return 'ParseCaseSensitive(false)';\n\n case SettingsParser.STRICT:\n return 'ParseStrict(true)';\n\n case SettingsParser.LENIENT:\n return 'ParseStrict(false)';\n }\n };\n\n return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n function StringLiteralPrinterParser(literal) {\n this._literal = literal;\n }\n\n var _proto = StringLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n var converted = this._literal.replace(\"'\", \"''\");\n\n return '\\'' + converted + '\\'';\n };\n\n return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n function ZoneRulesProvider() {}\n\n ZoneRulesProvider.getRules = function getRules(zoneId) {\n throw new DateTimeException('unsupported ZoneId:' + zoneId);\n };\n\n ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n return [];\n };\n\n return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n _inheritsLoose(ZoneRegion, _ZoneId);\n\n ZoneRegion.ofId = function ofId(zoneId) {\n var rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n };\n\n function ZoneRegion(id, rules) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._id = id;\n _this._rules = rules;\n return _this;\n }\n\n var _proto = ZoneRegion.prototype;\n\n _proto.id = function id() {\n return this._id;\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n function ZoneIdPrinterParser(query, description) {\n this.query = query;\n this.description = description;\n }\n\n var _proto = ZoneIdPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var zone = context.getValueQuery(this.query);\n\n if (zone == null) {\n return false;\n }\n\n buf.append(zone.id());\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position > length) {\n return ~position;\n }\n\n if (position === length) {\n return ~position;\n }\n\n var nextChar = text.charAt(position);\n\n if (nextChar === '+' || nextChar === '-') {\n var newContext = context.copy();\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n return endPos;\n }\n\n var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n var nextNextChar = text.charAt(position + 1);\n\n if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n\n if (text.substr(position, 6) === 'SYSTEM') {\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n var maxParseLength = length - position;\n var treeMap = zoneIdTree.treeMap;\n var parsedZoneId = null;\n var parseLength = 0;\n\n while (treeMap != null) {\n var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n };\n\n _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n var prefix = text.substring(prefixPos, position).toUpperCase();\n var newContext = context.copy();\n\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n };\n\n _proto.toString = function toString() {\n return this.description;\n };\n\n return ZoneIdPrinterParser;\n}();\n\nvar ZoneIdTree = function () {\n ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n return a.length - b.length;\n });\n var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n\n for (var i = 0; i < sortedZoneIds.length; i++) {\n treeMap.add(sortedZoneIds[i]);\n }\n\n return new ZoneIdTree(sortedZoneIds.length, treeMap);\n };\n\n function ZoneIdTree(size, treeMap) {\n this.size = size;\n this.treeMap = treeMap;\n }\n\n return ZoneIdTree;\n}();\n\nvar ZoneIdTreeMap = function () {\n function ZoneIdTreeMap(length, isLeaf) {\n if (length === void 0) {\n length = 0;\n }\n\n if (isLeaf === void 0) {\n isLeaf = false;\n }\n\n this.length = length;\n this.isLeaf = isLeaf;\n this._treeMap = {};\n }\n\n var _proto2 = ZoneIdTreeMap.prototype;\n\n _proto2.add = function add(zoneId) {\n var idLength = zoneId.length;\n\n if (idLength === this.length) {\n this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n } else if (idLength > this.length) {\n var subZoneId = zoneId.substr(0, this.length);\n var subTreeMap = this._treeMap[subZoneId];\n\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n\n subTreeMap.add(zoneId);\n }\n };\n\n _proto2.get = function get(zoneId) {\n return this._treeMap[zoneId];\n };\n\n return ZoneIdTreeMap;\n}();\n\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH$1 = 15;\nvar DateTimeFormatterBuilder = function () {\n function DateTimeFormatterBuilder() {\n this._active = this;\n this._parent = null;\n this._printerParsers = [];\n this._optional = false;\n this._padNextWidth = 0;\n this._padNextChar = null;\n this._valueParserIndex = -1;\n }\n\n DateTimeFormatterBuilder._of = function _of(parent, optional) {\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n var dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n return dtFormatterBuilder;\n };\n\n var _proto = DateTimeFormatterBuilder.prototype;\n\n _proto.parseCaseSensitive = function parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n\n return this;\n };\n\n _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n\n return this;\n };\n\n _proto.parseStrict = function parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n\n return this;\n };\n\n _proto.parseLenient = function parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n\n return this;\n };\n\n _proto.appendValue = function appendValue() {\n if (arguments.length === 1) {\n return this._appendValue1.apply(this, arguments);\n } else if (arguments.length === 2) {\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n };\n\n _proto._appendValue1 = function _appendValue1(field) {\n requireNonNull(field);\n\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH$1, SignStyle.NORMAL));\n\n return this;\n };\n\n _proto._appendValue2 = function _appendValue2(field, width) {\n requireNonNull(field);\n\n if (width < 1 || width > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + width);\n }\n\n var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n\n if (minWidth < 1 || minWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n }\n\n var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto.appendValueReduced = function appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n var activeValueParser = this._active._valueParserIndex;\n var basePP = this._active._printerParsers[activeValueParser];\n\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n\n this._appendInternal(pp.withFixedWidth());\n\n this._active._valueParserIndex = activeValueParser;\n } else {\n basePP = basePP.withFixedWidth();\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n return this;\n };\n\n _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n\n return this;\n };\n\n _proto.appendInstant = function appendInstant(fractionalDigits) {\n if (fractionalDigits === void 0) {\n fractionalDigits = -2;\n }\n\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException('Invalid fractional digits: ' + fractionalDigits);\n }\n\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n\n return this;\n };\n\n _proto.appendOffsetId = function appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n\n return this;\n };\n\n _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n\n return this;\n };\n\n _proto.appendZoneId = function appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n\n return this;\n };\n\n _proto.appendPattern = function appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n\n this._parsePattern(pattern);\n\n return this;\n };\n\n _proto.appendZoneText = function appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendText = function appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendWeekField = function appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto._parsePattern = function _parsePattern(pattern) {\n var FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (var pos = 0; pos < pattern.length; pos++) {\n var cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n var start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n var count = pos - start;\n\n if (cur === 'p') {\n var pad = 0;\n\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n pad = count;\n start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n count = pos - start;\n }\n }\n\n if (pad === 0) {\n throw new IllegalArgumentException('Pad letter \\'p\\' must be followed by valid pad pattern: ' + pattern);\n }\n\n this.padNext(pad);\n }\n\n var field = FIELD_MAP[cur];\n\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException('Pattern letter count must be 2: ' + cur);\n }\n\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException('Pattern letter count must be 1 or 4: ' + cur);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException('Unknown pattern letter: ' + cur);\n }\n\n pos--;\n } else if (cur === '\\'') {\n var _start = pos++;\n\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break;\n }\n }\n }\n\n if (pos >= pattern.length) {\n throw new IllegalArgumentException('Pattern ends with an incomplete string literal: ' + pattern);\n }\n\n var str = pattern.substring(_start + 1, pos);\n\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n } else if (cur === '[') {\n this.optionalStart();\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n\n this.optionalEnd();\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException('Pattern includes reserved character: \\'' + cur + '\\'');\n } else {\n this.appendLiteral(cur);\n }\n }\n };\n\n _proto._parseField = function _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.EXCEEDS_PAD);\n }\n\n break;\n\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n\n case 2:\n throw new IllegalArgumentException('Invalid number of pattern letters: ' + cur);\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n\n break;\n }\n };\n\n _proto.padNext = function padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n };\n\n _proto._padNext1 = function _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n };\n\n _proto._padNext2 = function _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException('The pad width must be at least one but was ' + padWidth);\n }\n\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n };\n\n _proto.optionalStart = function optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n };\n\n _proto.optionalEnd = function optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n\n if (this._active._printerParsers.length > 0) {\n var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n\n return this;\n };\n\n _proto._appendInternal = function _appendInternal(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.appendLiteral = function appendLiteral(literal) {\n assert(literal != null);\n\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n\n return this;\n };\n\n _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.append = function append(formatter) {\n requireNonNull(formatter, 'formatter');\n\n this._appendInternal(formatter._toPrinterParser(false));\n\n return this;\n };\n\n _proto.toFormatter = function toFormatter(resolverStyle) {\n if (resolverStyle === void 0) {\n resolverStyle = ResolverStyle.SMART;\n }\n\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n\n var pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n };\n\n return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\n\nvar InstantPrinterParser = function () {\n function InstantPrinterParser(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n var _proto2 = InstantPrinterParser.prototype;\n\n _proto2.print = function print(context, buf) {\n var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n var inNanos = 0;\n\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n\n if (inSecs == null) {\n return false;\n }\n\n var inSec = inSecs;\n var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n\n if (inSec >= -SECONDS_0000_TO_1970) {\n var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n\n buf.append(ldt);\n\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n\n var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n var pos = buf.length();\n buf.append(_ldt);\n\n if (_ldt.second() === 0) {\n buf.append(':00');\n }\n\n if (_hi < 0) {\n if (_ldt.year() === -10000) {\n buf.replace(pos, pos + 2, '' + (_hi - 1));\n } else if (_lo === 0) {\n buf.insert(pos, _hi);\n } else {\n buf.insert(pos + 1, Math.abs(_hi));\n }\n }\n }\n\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n } else {\n buf.append(('' + (inNano + 1000000000)).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n buf.append('.');\n var div = 100000000;\n\n for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n var digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - digit * div;\n div = MathUtil.intDiv(div, 10);\n }\n }\n\n buf.append('Z');\n return true;\n };\n\n _proto2.parse = function parse(context, text, position) {\n var newContext = context.copy();\n var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n\n var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n\n var pos = parser.parse(newContext, text, position);\n\n if (pos < 0) {\n return pos;\n }\n\n var yearParsed = newContext.getParsed(ChronoField.YEAR);\n var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n var sec = secVal != null ? secVal : 0;\n var nano = nanoVal != null ? nanoVal : 0;\n var year = MathUtil.intMod(yearParsed, 10000);\n var days = 0;\n\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n\n var instantSecs;\n\n try {\n var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n\n var successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n };\n\n _proto2.toString = function toString() {\n return 'Instant()';\n };\n\n return InstantPrinterParser;\n}();\n\nfunction _init$9() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringBuilder = function () {\n function StringBuilder() {\n this._str = '';\n }\n\n var _proto = StringBuilder.prototype;\n\n _proto.append = function append(str) {\n this._str += str;\n return this;\n };\n\n _proto.appendChar = function appendChar(str) {\n this._str += str[0];\n return this;\n };\n\n _proto.insert = function insert(offset, str) {\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n };\n\n _proto.replace = function replace(start, end, str) {\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n };\n\n _proto.length = function length() {\n return this._str.length;\n };\n\n _proto.setLength = function setLength(length) {\n this._str = this._str.slice(0, length);\n return this;\n };\n\n _proto.toString = function toString() {\n return this._str;\n };\n\n return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n };\n\n DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n };\n\n DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n };\n\n function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n if (chrono === void 0) {\n chrono = IsoChronology.INSTANCE;\n }\n\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n this._printerParser = printerParser;\n this._locale = locale;\n this._decimalStyle = decimalStyle;\n this._resolverStyle = resolverStyle;\n this._resolverFields = resolverFields;\n this._chrono = chrono;\n this._zone = zone;\n }\n\n var _proto = DateTimeFormatter.prototype;\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.decimalStyle = function decimalStyle() {\n return this._decimalStyle;\n };\n\n _proto.chronology = function chronology() {\n return this._chrono;\n };\n\n _proto.withChronology = function withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n };\n\n _proto.withLocale = function withLocale() {\n return this;\n };\n\n _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n };\n\n _proto.format = function format(temporal) {\n var buf = new StringBuilder(32);\n\n this._formatTo(temporal, buf);\n\n return buf.toString();\n };\n\n _proto._formatTo = function _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n var context = new DateTimePrintContext(temporal, this);\n\n this._printerParser.print(context, appendable);\n };\n\n _proto.parse = function parse(text, type) {\n if (arguments.length === 1) {\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n };\n\n _proto.parse1 = function parse1(text) {\n requireNonNull(text, 'text');\n\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto.parse2 = function parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n\n try {\n var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n\n return builder.build(type);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto._createError = function _createError(text, ex) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substring(0, 64) + '...';\n } else {\n abbr = text;\n }\n\n return new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed: ' + ex.message, text, 0, ex);\n };\n\n _proto._parseToBuilder = function _parseToBuilder(text, position) {\n var pos = position != null ? position : new ParsePosition(0);\n\n var result = this._parseUnresolved0(text, pos);\n\n if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substr(0, 64).toString() + '...';\n } else {\n abbr = text;\n }\n\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed at index ' + pos.getErrorIndex(), text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed, unparsed text found at index ' + pos.getIndex(), text, pos.getIndex());\n }\n }\n\n return result.toBuilder();\n };\n\n _proto.parseUnresolved = function parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n };\n\n _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n var context = new DateTimeParseContext(this);\n var pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n\n if (pos < 0) {\n position.setErrorIndex(~pos);\n return null;\n }\n\n position.setIndex(pos);\n return context.toParsed();\n };\n\n _proto._toPrinterParser = function _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n };\n\n _proto.toString = function toString() {\n var pattern = this._printerParser.toString();\n\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n };\n\n return DateTimeFormatter;\n}();\nfunction _init$a() {\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n _inheritsLoose(MonthDay, _TemporalAccessor);\n\n MonthDay.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n };\n\n MonthDay.now0 = function now0() {\n return this.nowClock(Clock.systemDefaultZone());\n };\n\n MonthDay.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n };\n\n MonthDay.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n var now = LocalDate.now(clock);\n return MonthDay.of(now.month(), now.dayOfMonth());\n };\n\n MonthDay.of = function of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n };\n\n MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException('Illegal value for DayOfMonth field, value ' + dayOfMonth + ' is not valid for month ' + month.toString());\n }\n\n return new MonthDay(month.value(), dayOfMonth);\n };\n\n MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n };\n\n MonthDay.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n\n try {\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain MonthDay from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n MonthDay.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n };\n\n MonthDay.parseString = function parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n };\n\n MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n };\n\n function MonthDay(month, dayOfMonth) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n return _this;\n }\n\n var _proto = MonthDay.prototype;\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n\n return _TemporalAccessor.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isValidYear = function isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n };\n\n _proto.withMonth = function withMonth(month) {\n return this.with(Month.of(month));\n };\n\n _proto.with = function _with(month) {\n requireNonNull(month, 'month');\n\n if (month.value() === this._month) {\n return this;\n }\n\n var day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n\n return MonthDay.of(this._month, dayOfMonth);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n };\n\n _proto.atYear = function atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n var cmp = this._month - other.monthValue();\n\n if (cmp === 0) {\n cmp = this._day - other.dayOfMonth();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof MonthDay) {\n var other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '--' + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return MonthDay;\n}(TemporalAccessor);\nvar PARSER;\nfunction _init$b() {\n PARSER = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n return MonthDay.from(temporal);\n });\n}\n\nvar YearMonth = function (_Temporal) {\n _inheritsLoose(YearMonth, _Temporal);\n\n YearMonth.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n };\n\n YearMonth.now0 = function now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n };\n\n YearMonth.nowZoneId = function nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n };\n\n YearMonth.nowClock = function nowClock(clock) {\n var now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n };\n\n YearMonth.of = function of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n };\n\n YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n };\n\n YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n };\n\n YearMonth.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n\n try {\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain YearMonth from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n YearMonth.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n };\n\n YearMonth.parseString = function parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER$1);\n };\n\n YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n };\n\n function YearMonth(year, month) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n return _this;\n }\n\n var _proto = YearMonth.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._getProlepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._getProlepticMonth = function _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.isValidDay = function isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.with = function _with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this.withAdjuster(adjusterOrField);\n } else {\n return this.withFieldValue(adjusterOrField, value);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n };\n\n _proto.withMonth = function withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return this.withYear(newYear);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusAmountUnit(MathUtil.MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n var end = YearMonth.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n\n switch (unit) {\n case ChronoUnit.MONTHS:\n return monthsUntil;\n\n case ChronoUnit.YEARS:\n return monthsUntil / 12;\n\n case ChronoUnit.DECADES:\n return monthsUntil / 120;\n\n case ChronoUnit.CENTURIES:\n return monthsUntil / 1200;\n\n case ChronoUnit.MILLENNIA:\n return monthsUntil / 12000;\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDay = function atDay(dayOfMonth) {\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.atEndOfMonth = function atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n var cmp = this._year - other.year();\n\n if (cmp === 0) {\n cmp = this._month - other.monthValue();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof YearMonth) {\n var other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return PARSER$1.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$c() {\n PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n return YearMonth.from(temporal);\n });\n}\n\nvar Year = function (_Temporal) {\n _inheritsLoose(Year, _Temporal);\n\n function Year(value) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(value);\n return _this;\n }\n\n var _proto = Year.prototype;\n\n _proto.value = function value() {\n return this._year;\n };\n\n Year.now = function now(zoneIdOrClock) {\n if (zoneIdOrClock === void 0) {\n zoneIdOrClock = undefined;\n }\n\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n };\n\n Year.now0 = function now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n };\n\n Year.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n };\n\n Year.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n var now = LocalDate.now(clock);\n return Year.of(now.year());\n };\n\n Year.of = function of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n };\n\n Year.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof Year) {\n return temporal;\n }\n\n try {\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Year from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n Year.parse = function parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n };\n\n Year.parseText = function parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER$2);\n };\n\n Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n if (formatter === void 0) {\n formatter = PARSER$2;\n }\n\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n };\n\n Year.isLeap = function isLeap(year) {\n return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isLeap = function isLeap() {\n return Year.isLeap(this._year);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return Year.of(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plus(MathUtil.MAX_SAFE_INTEGER, unit).plus(1, unit) : this.plus(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.YEAR, this._year);\n };\n\n _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n };\n\n _proto.length = function length() {\n return this.isLeap() ? 366 : 365;\n };\n\n _proto.atDay = function atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.atMonth = function atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n };\n\n _proto.atMonthMonth = function atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthNumber = function atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthDay = function atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query()');\n requireInstance(_query, TemporalQuery, 'query()');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '' + this._year;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var yearsUntil = end.value() - this.value();\n\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n return Year;\n}(Temporal);\nvar PARSER$2;\nfunction _init$d() {\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n PARSER$2 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n return Year.from(temporal);\n });\n}\n\nvar TemporalAdjusters = function () {\n function TemporalAdjusters() {}\n\n TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n };\n\n TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n };\n\n TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n };\n\n TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n };\n\n TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n };\n\n TemporalAdjusters.next = function next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n };\n\n TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n };\n\n TemporalAdjusters.previous = function previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n };\n\n TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n };\n\n return TemporalAdjusters;\n}();\n\nvar Impl = function (_TemporalAdjuster) {\n _inheritsLoose(Impl, _TemporalAdjuster);\n\n function Impl(ordinal) {\n var _this;\n\n _this = _TemporalAdjuster.call(this) || this;\n _this._ordinal = ordinal;\n return _this;\n }\n\n var _proto = Impl.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n switch (this._ordinal) {\n case 0:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n\n case 1:\n return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n case 2:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n\n case 3:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n\n case 4:\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n\n case 5:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n\n throw new IllegalStateException('Unreachable');\n };\n\n return Impl;\n}(TemporalAdjuster);\n\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n\n function DayOfWeekInMonth(ordinal, dow) {\n var _this2;\n\n _this2 = _TemporalAdjuster2.call(this) || this;\n _this2._ordinal = ordinal;\n _this2._dowValue = dow.value();\n return _this2;\n }\n\n var _proto2 = DayOfWeekInMonth.prototype;\n\n _proto2.adjustInto = function adjustInto(temporal) {\n if (this._ordinal >= 0) {\n var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n dowDiff += (this._ordinal - 1) * 7;\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n\n var daysDiff = this._dowValue - _curDow;\n daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n daysDiff -= (-this._ordinal - 1) * 7;\n return _temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return DayOfWeekInMonth;\n}(TemporalAdjuster);\n\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n\n function RelativeDayOfWeek(relative, dayOfWeek) {\n var _this3;\n\n _this3 = _TemporalAdjuster3.call(this) || this;\n requireNonNull(dayOfWeek, 'dayOfWeek');\n _this3._relative = relative;\n _this3._dowValue = dayOfWeek.value();\n return _this3;\n }\n\n var _proto3 = RelativeDayOfWeek.prototype;\n\n _proto3.adjustInto = function adjustInto(temporal) {\n var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n\n if ((this._relative & 1) === 0) {\n var daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n var _daysDiff = this._dowValue - calDow;\n\n return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n _inheritsLoose(IsoChronology, _Enum);\n\n function IsoChronology() {\n return _Enum.apply(this, arguments) || this;\n }\n\n IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n };\n\n var _proto = IsoChronology.prototype;\n\n _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n var current = fieldValues.get(field);\n\n if (current != null && current !== value) {\n throw new DateTimeException('Invalid state, field: ' + field + ' ' + current + ' conflicts with ' + field + ' ' + value);\n }\n\n fieldValues.put(field, value);\n };\n\n _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n\n var era = fieldValues.remove(ChronoField.ERA);\n\n if (era == null) {\n var year = fieldValues.get(ChronoField.YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n } else {\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException('Invalid value for era: ' + era);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n }\n\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var months = moy - 1;\n var days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART) {\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n\n return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n }\n\n var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(_y, doy);\n }\n\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n\n return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n }\n\n var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n\n return date;\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n\n return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n }\n\n var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n\n var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n\n if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n\n return _date;\n }\n }\n }\n\n return null;\n };\n\n _proto.date = function date(temporal) {\n return LocalDate.from(temporal);\n };\n\n return IsoChronology;\n}(Enum);\nfunction _init$e() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetTime, _DefaultInterfaceTemp);\n\n OffsetTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n\n try {\n var time = LocalTime.from(temporal);\n var offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n };\n\n OffsetTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n var now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n };\n\n OffsetTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n };\n\n function OffsetTime(time, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._time = time;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.atDate = function atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n };\n\n _proto.get = function get(field) {\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n\n return this._time.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localTime()) {\n return this._time;\n } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._time.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = OffsetTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end._toEpochNano() - this._toEpochNano();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return Math.floor(nanosUntil / 1000);\n\n case ChronoUnit.MILLIS:\n return Math.floor(nanosUntil / 1000000);\n\n case ChronoUnit.SECONDS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return Math.floor(nanosUntil / (12 * LocalTime.NANOS_PER_HOUR));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._time.plusSeconds(difference);\n\n return new OffsetTime(adjusted, offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n };\n\n _proto._toEpochNano = function _toEpochNano() {\n var nod = this._time.toNanoOfDay();\n\n var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetTime(time, offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n\n var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n\n return compare;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._time.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return OffsetTime;\n}(DefaultInterfaceTemporal);\nfunction _init$f() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n return OffsetTime.from(temporal);\n });\n}\n\nvar ChronoZonedDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoZonedDateTime, _DefaultInterfaceTemp);\n\n function ChronoZonedDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoZonedDateTime.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone();\n } else if (_query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.toInstant = function toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n\n return false;\n };\n\n return ChronoZonedDateTime;\n}(DefaultInterfaceTemporal);\n\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n\n ZonedDateTime.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n ZonedDateTime.of = function of() {\n if (arguments.length <= 2) {\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n };\n\n ZonedDateTime.of3 = function of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n };\n\n ZonedDateTime.of2 = function of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n };\n\n ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n };\n\n ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n\n var offset = null;\n var rules = zone.rules();\n var validOffsets = rules.validOffsets(localDateTime);\n\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n var trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null && validOffsets.some(function (validOffset) {\n return validOffset.equals(preferredOffset);\n })) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset');\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofInstant = function ofInstant() {\n if (arguments.length === 2) {\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n };\n\n ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n };\n\n ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n };\n\n ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n var rules = zone.rules();\n var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n };\n\n ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n\n if (rules.isValidOffset(localDateTime, offset) === false) {\n var trans = rules.transition(localDateTime);\n\n if (trans != null && trans.isGap()) {\n throw new DateTimeException('LocalDateTime ' + localDateTime + ' does not exist in zone ' + zone + ' due to a gap in the local time-line, typically caused by daylight savings');\n }\n\n throw new DateTimeException('ZoneOffset \"' + offset + '\" is not valid for LocalDateTime \"' + localDateTime + '\" in zone \"' + zone + '\"');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n\n var zone = ZoneId.from(temporal);\n\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n var zdt = ZonedDateTime._from(temporal, zone);\n\n if (zdt != null) return zdt;\n }\n\n var ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n };\n\n ZonedDateTime._from = function _from(temporal, zone) {\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if (!(ex instanceof DateTimeException)) throw ex;\n }\n };\n\n ZonedDateTime.__from = function __from(temporal, zone) {\n var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n };\n\n ZonedDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n };\n\n function ZonedDateTime(dateTime, offset, zone) {\n var _this;\n\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n _this = _ChronoZonedDateTime.call(this) || this;\n _this._dateTime = dateTime;\n _this._offset = offset;\n _this._zone = zone;\n return _this;\n }\n\n var _proto = ZonedDateTime.prototype;\n\n _proto._resolveLocal = function _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n };\n\n _proto._resolveInstant = function _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n };\n\n _proto._resolveOffset = function _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n\n return this;\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this._offset.totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n requireNonNull(field, 'field');\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this._dateTime);\n\n if (trans != null && trans.isOverlap()) {\n var earlierOffset = trans.offsetBefore();\n\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this.toLocalDateTime());\n\n if (trans != null) {\n var laterOffset = trans.offsetAfter();\n\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.zone = function zone() {\n return this._zone;\n };\n\n _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n };\n\n _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n var instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return ZonedDateTime._create(newValue, this.nano(), this._zone);\n\n case ChronoField.OFFSET_SECONDS:\n {\n var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n };\n\n _proto.withHour = function withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this.plusHours(-1 * hours);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n requireNonNull(_query, 'query');\n return _ChronoZonedDateTime.prototype.query.call(this, _query);\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = ZonedDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n\n var adjustedEnd = end._dateTime.plusSeconds(difference);\n\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n\n return unit.between(this, end);\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetDateTime = function toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n };\n\n _proto.toString = function toString() {\n var str = this._dateTime.toString() + this._offset.toString();\n\n if (this._offset !== this._zone) {\n str += '[' + this._zone.toString() + ']';\n }\n\n return str;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n };\n\n return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$g() {\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n return ZonedDateTime.from(temporal);\n });\n}\n\nvar OffsetDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetDateTime, _DefaultInterfaceTemp);\n\n OffsetDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n\n try {\n var offset = ZoneOffset.from(temporal);\n\n try {\n var ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n var instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetDateTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n var now = clockOrZone.instant();\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n };\n\n OffsetDateTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n };\n\n OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n var dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n };\n\n OffsetDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n };\n\n function OffsetDateTime(dateTime, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._dateTime = dateTime;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetDateTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = OffsetDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n };\n\n _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n throw new DateTimeException('Field too large for an int: ' + field);\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.get(field);\n }\n\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetTime = function toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n };\n\n _proto.toZonedDateTime = function toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.toInstant = function toInstant() {\n return this._dateTime.toInstant(this._offset);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster);\n\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field);\n\n if (field instanceof ChronoField) {\n var f = field;\n\n switch (f) {\n case ChronoField.INSTANT_SECONDS:\n return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n\n case ChronoField.OFFSET_SECONDS:\n {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetDateTime(dateTime, offset);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._dateTime.plusSeconds(difference);\n\n return new OffsetDateTime(adjusted, offset);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._dateTime.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return OffsetDateTime;\n}(DefaultInterfaceTemporal);\nfunction _init$h() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n return OffsetDateTime.from(temporal);\n });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n _inheritsLoose(LocalDate, _ChronoLocalDate);\n\n LocalDate.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone == null) {\n clock = Clock.systemDefaultZone();\n } else if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDate.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n var offset = zone.rules().offset(instant);\n var epochSec = instant.epochSecond() + offset.totalSeconds();\n var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n };\n\n LocalDate.of = function of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n };\n\n LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n var leap = IsoChronology.isLeapYear(year);\n\n if (dayOfYear === 366 && leap === false) {\n assert(false, 'Invalid date \\'DayOfYear 366\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n }\n\n var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n\n var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n };\n\n LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n if (epochDay === void 0) {\n epochDay = 0;\n }\n\n var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n\n yearEst += adjust;\n var marchDoy0 = doyEst;\n var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n var month = (marchMonth0 + 2) % 12 + 1;\n var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n var year = yearEst;\n return new LocalDate(year, month, dom);\n };\n\n LocalDate.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var date = temporal.query(TemporalQueries.localDate());\n\n if (date == null) {\n throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return date;\n };\n\n LocalDate.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n }\n\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n };\n\n LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n\n return LocalDate.of(year, month, day);\n };\n\n function LocalDate(year, month, dayOfMonth) {\n var _this;\n\n _this = _ChronoLocalDate.call(this) || this;\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n\n LocalDate._validate(_this._year, _this._month, _this._day);\n\n return _this;\n }\n\n LocalDate._validate = function _validate(year, month, dayOfMonth) {\n var dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, 'Invalid date \\'February 29\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n } else {\n assert(false, 'Invalid date \\'' + year + '\\' \\'' + month + '\\' \\'' + dayOfMonth + '\\'', DateTimeException);\n }\n }\n }\n };\n\n var _proto = LocalDate.prototype;\n\n _proto.isSupported = function isSupported(field) {\n return _ChronoLocalDate.prototype.isSupported.call(this, field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return ValueRange.of(1, this.lengthOfMonth());\n\n case ChronoField.DAY_OF_YEAR:\n return ValueRange.of(1, this.lengthOfYear());\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n\n case ChronoField.YEAR_OF_ERA:\n return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n assert(field != null, '', NullPointerException);\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK:\n return this.dayOfWeek().value();\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return MathUtil.intMod(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.DAY_OF_YEAR:\n return this.dayOfYear();\n\n case ChronoField.EPOCH_DAY:\n return this.toEpochDay();\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return MathUtil.intDiv(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._prolepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year >= 1 ? this._year : 1 - this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year >= 1 ? 1 : 0;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto._prolepticMonth = function _prolepticMonth() {\n return this._year * 12 + (this._month - 1);\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n switch (this._month) {\n case 2:\n return this.isLeapYear() ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.DAY_OF_WEEK:\n return this.plusDays(newValue - this.dayOfWeek().value());\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n\n case ChronoField.DAY_OF_MONTH:\n return this.withDayOfMonth(newValue);\n\n case ChronoField.DAY_OF_YEAR:\n return this.withDayOfYear(newValue);\n\n case ChronoField.EPOCH_DAY:\n return LocalDate.ofEpochDay(newValue);\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n if (this._year === year) {\n return this;\n }\n\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n };\n\n _proto.withMonth = function withMonth(month) {\n var m = month instanceof Month ? month.value() : month;\n\n if (this._month === m) {\n return this;\n }\n\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.plusDays(amountToAdd);\n\n case ChronoUnit.WEEKS:\n return this.plusWeeks(amountToAdd);\n\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n };\n\n _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n };\n\n _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this;\n }\n\n return _ChronoLocalDate.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(p1, p2) {\n if (arguments.length < 2) {\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n };\n\n _proto.until2 = function until2(endExclusive, unit) {\n var end = LocalDate.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.daysUntil(end);\n\n case ChronoUnit.WEEKS:\n return MathUtil.intDiv(this.daysUntil(end), 7);\n\n case ChronoUnit.MONTHS:\n return this._monthsUntil(end);\n\n case ChronoUnit.YEARS:\n return MathUtil.intDiv(this._monthsUntil(end), 12);\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(this._monthsUntil(end), 120);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(this._monthsUntil(end), 1200);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(this._monthsUntil(end), 12000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.daysUntil = function daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay();\n };\n\n _proto._monthsUntil = function _monthsUntil(end) {\n var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n return MathUtil.intDiv(packed2 - packed1, 32);\n };\n\n _proto.until1 = function until1(endDate) {\n var end = LocalDate.from(endDate);\n\n var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n\n var days = end._day - this._day;\n\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n var calcDate = this.plusMonths(totalMonths);\n days = end.toEpochDay() - calcDate.toEpochDay();\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n\n var years = MathUtil.intDiv(totalMonths, 12);\n var months = MathUtil.intMod(totalMonths, 12);\n return Period.of(years, months, days);\n };\n\n _proto.atTime = function atTime() {\n if (arguments.length === 1) {\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n };\n\n _proto.atTime1 = function atTime1(time) {\n requireNonNull(time, 'time');\n\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException('time must be an instance of LocalTime or OffsetTime' + (time && time.constructor && time.constructor.name ? ', but is ' + time.constructor.name : ''));\n }\n };\n\n _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n };\n\n _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n };\n\n _proto.atStartOfDay = function atStartOfDay(zone) {\n if (zone != null) {\n return this.atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n };\n\n _proto.atStartOfDayWithZone = function atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n var ldt = this.atTime(LocalTime.MIDNIGHT);\n\n if (zone instanceof ZoneOffset === false) {\n var trans = zone.rules().transition(ldt);\n\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n\n return ZonedDateTime.of(ldt, zone);\n };\n\n _proto.toEpochDay = function toEpochDay() {\n var y = this._year;\n var m = this._month;\n var total = 0;\n total += 365 * y;\n\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n\n if (m > 2) {\n total--;\n\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n\n return total - DAYS_0000_TO_1970;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(otherDate) {\n var cmp = this._year - otherDate._year;\n\n if (cmp === 0) {\n cmp = this._month - otherDate._month;\n\n if (cmp === 0) {\n cmp = this._day - otherDate._day;\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n };\n\n _proto.toString = function toString() {\n var dayString, monthString, yearString;\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n var absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = '-' + ('' + (yearValue - 10000)).slice(-4);\n } else {\n yearString = ('' + (yearValue + 10000)).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = '+' + yearValue;\n } else {\n yearString = '' + yearValue;\n }\n }\n\n if (monthValue < 10) {\n monthString = '-0' + monthValue;\n } else {\n monthString = '-' + monthValue;\n }\n\n if (dayValue < 10) {\n dayString = '-0' + dayValue;\n } else {\n dayString = '-' + dayValue;\n }\n\n return yearString + monthString + dayString;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return _ChronoLocalDate.prototype.format.call(this, formatter);\n };\n\n return LocalDate;\n}(ChronoLocalDate);\nfunction _init$i() {\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n return LocalDate.from(temporal);\n });\n}\n\nvar ChronoLocalDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDateTime, _DefaultInterfaceTemp);\n\n function ChronoLocalDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDateTime.prototype;\n\n _proto.chronology = function chronology() {\n return this.toLocalDate().chronology();\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n };\n\n _proto.toInstant = function toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n };\n\n return ChronoLocalDateTime;\n}(DefaultInterfaceTemporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n\n LocalDateTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalDateTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.of = function of() {\n if (arguments.length <= 2) {\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var date = LocalDate.of(year, month, dayOfMonth);\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n var offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n };\n\n LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n if (epochSecond === void 0) {\n epochSecond = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n\n requireNonNull(offset, 'offset');\n var localSecond = epochSecond + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n\n try {\n var date = LocalDate.from(temporal);\n var time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n LocalDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n };\n\n function LocalDateTime(date, time) {\n var _this;\n\n _this = _ChronoLocalDateTime.call(this) || this;\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n _this._date = date;\n _this._time = time;\n return _this;\n }\n\n var _proto = LocalDateTime.prototype;\n\n _proto._withDateTime = function _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n\n return new LocalDateTime(newDate, newTime);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n }\n\n return _ChronoLocalDateTime.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.year = function year() {\n return this._date.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._date.monthValue();\n };\n\n _proto.month = function month() {\n return this._date.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._date.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._date.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._date.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n };\n\n _proto.withHour = function withHour(hour) {\n var newTime = this._time.withHour(hour);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withMinute = function withMinute(minute) {\n var newTime = this._time.withMinute(minute);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withSecond = function withSecond(second) {\n var newTime = this._time.withSecond(second);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n var newTime = this._time.withNano(nanoOfSecond);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n }\n\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n var newDate = this._date.plusYears(years);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n var newDate = this._date.plusMonths(months);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n var newDate = this._date.plusWeeks(weeks);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusDays = function plusDays(days) {\n var newDate = this._date.plusDays(days);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n };\n\n _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n\n var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n totDays *= sign;\n var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n\n var curNoD = this._time.toNanoOfDay();\n\n totNanos = totNanos * sign + curNoD;\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n return _ChronoLocalDateTime.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n var daysUntil = this._date.daysUntil(end._date);\n\n var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n\n var amount = daysUntil;\n\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n var endDate = end._date;\n var endTime = end._time;\n\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n\n return this._date.until(endDate, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.of(this, zone);\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._date;\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(other) {\n var cmp = this._date.compareTo(other.toLocalDate());\n\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._date.toString() + 'T' + this._time.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$j() {\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n return LocalDateTime.from(temporal);\n });\n}\n\nvar LocalTime = function (_Temporal) {\n _inheritsLoose(LocalTime, _Temporal);\n\n LocalTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalTime._now = function _now(clock) {\n if (clock === void 0) {\n clock = Clock.systemDefaultZone();\n }\n\n requireNonNull(clock, 'clock');\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n var offset = zone.rules().offset(instant);\n var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n };\n\n LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n };\n\n LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n if (secondOfDay === void 0) {\n secondOfDay = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n };\n\n LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n if (nanoOfDay === void 0) {\n nanoOfDay = 0;\n }\n\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n };\n\n LocalTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var time = temporal.query(TemporalQueries.localTime());\n\n if (time == null) {\n throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return time;\n };\n\n LocalTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n };\n\n function LocalTime(hour, minute, second, nanoOfSecond) {\n var _this;\n\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n _this = _Temporal.call(this) || this;\n\n var _hour = MathUtil.safeToInt(hour);\n\n var _minute = MathUtil.safeToInt(minute);\n\n var _second = MathUtil.safeToInt(second);\n\n var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n }\n\n return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n }\n\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n return _this;\n }\n\n LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n };\n\n var _proto = LocalTime.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n requireNonNull(field);\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nano;\n\n case ChronoField.NANO_OF_DAY:\n return this.toNanoOfDay();\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this._second;\n\n case ChronoField.SECOND_OF_DAY:\n return this.toSecondOfDay();\n\n case ChronoField.MINUTE_OF_HOUR:\n return this._minute;\n\n case ChronoField.MINUTE_OF_DAY:\n return this._hour * 60 + this._minute;\n\n case ChronoField.HOUR_OF_AMPM:\n return MathUtil.intMod(this._hour, 12);\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n {\n var ham = MathUtil.intMod(this._hour, 12);\n return ham % 12 === 0 ? 12 : ham;\n }\n\n case ChronoField.HOUR_OF_DAY:\n return this._hour;\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this._hour === 0 ? 24 : this._hour;\n\n case ChronoField.AMPM_OF_DAY:\n return MathUtil.intDiv(this._hour, 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto.hour = function hour() {\n return this._hour;\n };\n\n _proto.minute = function minute() {\n return this._minute;\n };\n\n _proto.second = function second() {\n return this._second;\n };\n\n _proto.nano = function nano() {\n return this._nano;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this.withNano(newValue);\n\n case ChronoField.NANO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue);\n\n case ChronoField.MICRO_OF_SECOND:\n return this.withNano(newValue * 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return this.withNano(newValue * 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this.withSecond(newValue);\n\n case ChronoField.SECOND_OF_DAY:\n return this.plusSeconds(newValue - this.toSecondOfDay());\n\n case ChronoField.MINUTE_OF_HOUR:\n return this.withMinute(newValue);\n\n case ChronoField.MINUTE_OF_DAY:\n return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n\n case ChronoField.HOUR_OF_AMPM:\n return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.HOUR_OF_DAY:\n return this.withHour(newValue);\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this.withHour(newValue === 24 ? 0 : newValue);\n\n case ChronoField.AMPM_OF_DAY:\n return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withHour = function withHour(hour) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (this._hour === hour) {\n return this;\n }\n\n return new LocalTime(hour, this._minute, this._second, this._nano);\n };\n\n _proto.withMinute = function withMinute(minute) {\n if (minute === void 0) {\n minute = 0;\n }\n\n if (this._minute === minute) {\n return this;\n }\n\n return new LocalTime(this._hour, minute, this._second, this._nano);\n };\n\n _proto.withSecond = function withSecond(second) {\n if (second === void 0) {\n second = 0;\n }\n\n if (this._second === second) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, second, this._nano);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (this._nano === nanoOfSecond) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n\n var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n\n if (mofd === newMofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n\n var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n\n if (sofd === newSofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n\n var nofd = this.toNanoOfDay();\n var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n\n if (nofd === newNofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localTime()) {\n return this;\n }\n\n if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(nanosUntil, 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.intDiv(nanosUntil, 1000000);\n\n case ChronoUnit.SECONDS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDate = function atDate(date) {\n return LocalDateTime.of(date, this);\n };\n\n _proto.toSecondOfDay = function toSecondOfDay() {\n var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n };\n\n _proto.toNanoOfDay = function toNanoOfDay() {\n var total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n };\n\n _proto.toString = function toString() {\n var buf = '';\n var hourValue = this._hour;\n var minuteValue = this._minute;\n var secondValue = this._second;\n var nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n\n if (nanoValue > 0) {\n buf += '.';\n\n if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n } else {\n buf += ('' + (nanoValue + 1000000000)).substring(1);\n }\n }\n }\n\n return buf;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalTime;\n}(Temporal);\nfunction _init$k() {\n LocalTime.HOURS = [];\n\n for (var hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n LocalTime.MIN = LocalTime.HOURS[0];\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n LocalTime.NOON = LocalTime.HOURS[12];\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n return LocalTime.from(temporal);\n });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n _inheritsLoose(Instant, _Temporal);\n\n Instant.now = function now(clock) {\n if (clock === void 0) {\n clock = Clock.systemUTC();\n }\n\n return clock.instant();\n };\n\n Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n };\n\n Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n var secs = MathUtil.floorDiv(epochMilli, 1000);\n var mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n };\n\n Instant.from = function from(temporal) {\n try {\n var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Instant from TemporalAccessor: ' + temporal + ', type ' + typeof temporal, ex);\n }\n };\n\n Instant.parse = function parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n };\n\n Instant._create = function _create(seconds, nanoOfSecond) {\n if (seconds === 0 && nanoOfSecond === 0) {\n return Instant.EPOCH;\n }\n\n return new Instant(seconds, nanoOfSecond);\n };\n\n Instant._validate = function _validate(seconds, nanoOfSecond) {\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n };\n\n function Instant(seconds, nanoOfSecond) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n\n Instant._validate(seconds, nanoOfSecond);\n\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n return _this;\n }\n\n var _proto = Instant.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nanos;\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nanos, 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n\n case ChronoField.INSTANT_SECONDS:\n return this._seconds;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.epochSecond = function epochSecond() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.MILLI_OF_SECOND:\n {\n var nval = newValue * NANOS_PER_MILLI;\n return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n }\n\n case ChronoField.MICRO_OF_SECOND:\n {\n var _nval = newValue * 1000;\n\n return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n }\n\n case ChronoField.NANO_OF_SECOND:\n return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n\n case ChronoField.INSTANT_SECONDS:\n return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n\n var result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this._plus(MathUtil.intDiv(amountToAdd, 1000000), MathUtil.intMod(amountToAdd, 1000000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n\n case ChronoUnit.DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n };\n\n _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n\n if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = Instant.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this._nanosUntil(end);\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(this._nanosUntil(end), 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n\n case ChronoUnit.SECONDS:\n return this._secondsUntil(end);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto._nanosUntil = function _nanosUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n };\n\n _proto._secondsUntil = function _secondsUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var nanosDiff = end.nano() - this.nano();\n\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n\n return secsDiff;\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n var millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n };\n\n _proto.compareTo = function compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherInstant._nanos;\n };\n\n _proto.isAfter = function isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n };\n\n _proto.isBefore = function isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Instant) {\n return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n };\n\n _proto.toString = function toString() {\n return DateTimeFormatter.ISO_INSTANT.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Instant;\n}(Temporal);\nfunction _init$l() {\n Instant.MIN_SECONDS = -31619119219200;\n Instant.MAX_SECONDS = 31494816403199;\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n return Instant.from(temporal);\n });\n}\n\nvar Clock = function () {\n function Clock() {}\n\n Clock.systemUTC = function systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n };\n\n Clock.systemDefaultZone = function systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n };\n\n Clock.system = function system(zone) {\n return new SystemClock(zone);\n };\n\n Clock.fixed = function fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n };\n\n Clock.offset = function offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration);\n };\n\n var _proto = Clock.prototype;\n\n _proto.millis = function millis() {\n abstractMethodFail('Clock.millis');\n };\n\n _proto.instant = function instant() {\n abstractMethodFail('Clock.instant');\n };\n\n _proto.zone = function zone() {\n abstractMethodFail('Clock.zone');\n };\n\n _proto.withZone = function withZone() {\n abstractMethodFail('Clock.withZone');\n };\n\n return Clock;\n}();\n\nvar SystemClock = function (_Clock) {\n _inheritsLoose(SystemClock, _Clock);\n\n function SystemClock(zone) {\n var _this;\n\n requireNonNull(zone, 'zone');\n _this = _Clock.call(this) || this;\n _this._zone = zone;\n return _this;\n }\n\n var _proto2 = SystemClock.prototype;\n\n _proto2.zone = function zone() {\n return this._zone;\n };\n\n _proto2.millis = function millis() {\n return new Date().getTime();\n };\n\n _proto2.instant = function instant() {\n return Instant.ofEpochMilli(this.millis());\n };\n\n _proto2.equals = function equals(obj) {\n if (obj instanceof SystemClock) {\n return this._zone.equals(obj._zone);\n }\n\n return false;\n };\n\n _proto2.withZone = function withZone(zone) {\n if (zone.equals(this._zone)) {\n return this;\n }\n\n return new SystemClock(zone);\n };\n\n _proto2.toString = function toString() {\n return 'SystemClock[' + this._zone.toString() + ']';\n };\n\n return SystemClock;\n}(Clock);\n\nvar FixedClock = function (_Clock2) {\n _inheritsLoose(FixedClock, _Clock2);\n\n function FixedClock(fixedInstant, zoneId) {\n var _this2;\n\n _this2 = _Clock2.call(this) || this;\n _this2._instant = fixedInstant;\n _this2._zoneId = zoneId;\n return _this2;\n }\n\n var _proto3 = FixedClock.prototype;\n\n _proto3.instant = function instant() {\n return this._instant;\n };\n\n _proto3.millis = function millis() {\n return this._instant.toEpochMilli();\n };\n\n _proto3.zone = function zone() {\n return this._zoneId;\n };\n\n _proto3.toString = function toString() {\n return 'FixedClock[]';\n };\n\n _proto3.equals = function equals(obj) {\n if (obj instanceof FixedClock) {\n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n\n return false;\n };\n\n _proto3.withZone = function withZone(zone) {\n if (zone.equals(this._zoneId)) {\n return this;\n }\n\n return new FixedClock(this._instant, zone);\n };\n\n return FixedClock;\n}(Clock);\n\nvar OffsetClock = function (_Clock3) {\n _inheritsLoose(OffsetClock, _Clock3);\n\n function OffsetClock(baseClock, offset) {\n var _this3;\n\n _this3 = _Clock3.call(this) || this;\n _this3._baseClock = baseClock;\n _this3._offset = offset;\n return _this3;\n }\n\n var _proto4 = OffsetClock.prototype;\n\n _proto4.zone = function zone() {\n return this._baseClock.zone();\n };\n\n _proto4.withZone = function withZone(zone) {\n if (zone.equals(this._baseClock.zone())) {\n return this;\n }\n\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n };\n\n _proto4.millis = function millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n };\n\n _proto4.instant = function instant() {\n return this._baseClock.instant().plus(this._offset);\n };\n\n _proto4.equals = function equals(obj) {\n if (obj instanceof OffsetClock) {\n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n\n return false;\n };\n\n _proto4.toString = function toString() {\n return 'OffsetClock[' + this._baseClock + ',' + this._offset + ']';\n };\n\n return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n };\n\n function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n\n if (transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n var _proto = ZoneOffsetTransition.prototype;\n\n _proto.instant = function instant() {\n return this._transition.toInstant(this._offsetBefore);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n };\n\n _proto.dateTimeBefore = function dateTimeBefore() {\n return this._transition;\n };\n\n _proto.dateTimeAfter = function dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n };\n\n _proto.offsetBefore = function offsetBefore() {\n return this._offsetBefore;\n };\n\n _proto.offsetAfter = function offsetAfter() {\n return this._offsetAfter;\n };\n\n _proto.duration = function duration() {\n return Duration.ofSeconds(this.durationSeconds());\n };\n\n _proto.durationSeconds = function durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n };\n\n _proto.isGap = function isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n };\n\n _proto.isOverlap = function isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n };\n\n _proto.isValidOffset = function isValidOffset(offset) {\n return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n };\n\n _proto.validOffsets = function validOffsets() {\n if (this.isGap()) {\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n };\n\n _proto.compareTo = function compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ZoneOffsetTransition) {\n var d = other;\n return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n };\n\n _proto.toString = function toString() {\n return 'Transition[' + (this.isGap() ? 'Gap' : 'Overlap') + ' at ' + this._transition.toString() + this._offsetBefore.toString() + ' to ' + this._offsetAfter + ']';\n };\n\n return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$m() {\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n return temporal.query(TemporalQueries.CHRONO);\n });\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n return temporal.query(TemporalQueries.PRECISION);\n });\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n\n return null;\n });\n TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n var zone = temporal.query(TemporalQueries.ZONE_ID);\n return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n });\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n\n return null;\n });\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n\n return null;\n });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n\n function SystemDefaultZoneRules() {\n return _ZoneRules.apply(this, arguments) || this;\n }\n\n var _proto = SystemDefaultZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n return false;\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n return [this.offsetOfLocalDateTime(localDateTime)];\n };\n\n _proto.transition = function transition() {\n return null;\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n return this.offsetOfInstant(instant);\n };\n\n _proto.daylightSavings = function daylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isDaylightSavings = function isDaylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n };\n\n _proto.nextTransition = function nextTransition() {\n this._throwNotSupported();\n };\n\n _proto.previousTransition = function previousTransition() {\n this._throwNotSupported();\n };\n\n _proto.transitions = function transitions() {\n this._throwNotSupported();\n };\n\n _proto.transitionRules = function transitionRules() {\n this._throwNotSupported();\n };\n\n _proto._throwNotSupported = function _throwNotSupported() {\n throw new DateTimeException('not supported operation');\n };\n\n _proto.equals = function equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.toString = function toString() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n\n function SystemDefaultZoneId() {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._rules = new SystemDefaultZoneRules();\n return _this;\n }\n\n var _proto = SystemDefaultZoneId.prototype;\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n return false;\n };\n\n _proto.id = function id() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n function ZoneIdFactory() {}\n\n ZoneIdFactory.systemDefault = function systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n };\n\n ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n };\n\n ZoneIdFactory.of = function of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n\n if (zoneId.length === 1) {\n throw new DateTimeException('Invalid zone: ' + zoneId);\n }\n\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n var offset = ZoneOffset.of(zoneId.substring(3));\n\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n var _offset = ZoneOffset.of(zoneId.substring(2));\n\n if (_offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', _offset.rules());\n }\n\n return new ZoneRegion('UT' + _offset.id(), _offset.rules());\n }\n\n if (zoneId === 'SYSTEM') {\n return ZoneId.systemDefault();\n }\n\n return ZoneRegion.ofId(zoneId);\n };\n\n ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n\n if (prefix.length === 0) {\n return offset;\n }\n\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n\n throw new IllegalArgumentException('Invalid prefix, must be GMT, UTC or UT: ' + prefix);\n };\n\n ZoneIdFactory.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var obj = temporal.query(TemporalQueries.zone());\n\n if (obj == null) {\n throw new DateTimeException('Unable to obtain ZoneId from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return obj;\n };\n\n return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init$n() {\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\n\nfunction init() {\n if (isInit) {\n return;\n }\n\n isInit = true;\n _init$1();\n _init();\n _init$2();\n _init$3();\n _init$k();\n _init$8();\n _init$m();\n _init$4();\n _init$l();\n _init$i();\n _init$j();\n _init$d();\n _init$5();\n _init$c();\n _init$b();\n _init$6();\n _init$7();\n _init$g();\n _init$n();\n _init$e();\n _init$a();\n _init$9();\n _init$h();\n _init$f();\n}\n\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar ToNativeJsConverter = function () {\n function ToNativeJsConverter(temporal, zone) {\n var zonedDateTime;\n\n if (temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException('unsupported instance for convert operation:' + temporal);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n var _proto = ToNativeJsConverter.prototype;\n\n _proto.toDate = function toDate() {\n return new Date(this.instant.toEpochMilli());\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n return this.instant.toEpochMilli();\n };\n\n return ToNativeJsConverter;\n}();\n\nfunction convert(temporal, zone) {\n return new ToNativeJsConverter(temporal, zone);\n}\n\nvar NativeJsTemporal = function (_TemporalAccessor) {\n _inheritsLoose(NativeJsTemporal, _TemporalAccessor);\n\n function NativeJsTemporal(date, zone) {\n var _this;\n\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n _this = _TemporalAccessor.call(this) || this;\n _this._zone = zone;\n\n if (date instanceof Date) {\n _this._epochMilli = date.getTime();\n return _assertThisInitialized(_this);\n } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n _this._epochMilli = date.toDate().getTime();\n return _assertThisInitialized(_this);\n }\n\n assert(false, 'date must be either a javascript date or a moment');\n return _this;\n }\n\n var _proto = NativeJsTemporal.prototype;\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.localTime()) {\n return LocalTime.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.zone()) {\n return this._zone;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return MathUtil.floorMod(this._epochMilli, 1000) * 1000000;\n\n case ChronoField.INSTANT_SECONDS:\n return MathUtil.floorDiv(this._epochMilli, 1000);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n return field === ChronoField.INSTANT_SECONDS || field === ChronoField.NANO_OF_SECOND;\n };\n\n return NativeJsTemporal;\n}(TemporalAccessor);\n\nfunction nativeJs(date, zone) {\n return new NativeJsTemporal(date, zone);\n}\n\nfunction bindUse(jsJoda) {\n var used = [];\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n\n return jsJoda;\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n assert: assert$1,\n DateTimeBuilder: DateTimeBuilder,\n DateTimeParseContext: DateTimeParseContext,\n DateTimePrintContext: DateTimePrintContext,\n MathUtil: MathUtil,\n StringUtil: StringUtil,\n StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n _: _,\n convert: convert,\n nativeJs: nativeJs,\n ArithmeticException: ArithmeticException,\n DateTimeException: DateTimeException,\n DateTimeParseException: DateTimeParseException,\n IllegalArgumentException: IllegalArgumentException,\n IllegalStateException: IllegalStateException,\n UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n NullPointerException: NullPointerException,\n Clock: Clock,\n DayOfWeek: DayOfWeek,\n Duration: Duration,\n Instant: Instant,\n LocalDate: LocalDate,\n LocalTime: LocalTime,\n LocalDateTime: LocalDateTime,\n OffsetTime: OffsetTime,\n OffsetDateTime: OffsetDateTime,\n Month: Month,\n MonthDay: MonthDay,\n Period: Period,\n Year: Year,\n YearConstants: YearConstants,\n YearMonth: YearMonth,\n ZonedDateTime: ZonedDateTime,\n ZoneOffset: ZoneOffset,\n ZoneId: ZoneId,\n ZoneRegion: ZoneRegion,\n ZoneOffsetTransition: ZoneOffsetTransition,\n ZoneRules: ZoneRules,\n ZoneRulesProvider: ZoneRulesProvider,\n ChronoLocalDate: ChronoLocalDate,\n ChronoLocalDateTime: ChronoLocalDateTime,\n ChronoZonedDateTime: ChronoZonedDateTime,\n IsoChronology: IsoChronology,\n ChronoField: ChronoField,\n ChronoUnit: ChronoUnit,\n IsoFields: IsoFields,\n Temporal: Temporal,\n TemporalAccessor: TemporalAccessor,\n TemporalAdjuster: TemporalAdjuster,\n TemporalAdjusters: TemporalAdjusters,\n TemporalAmount: TemporalAmount,\n TemporalField: TemporalField,\n TemporalQueries: TemporalQueries,\n TemporalQuery: TemporalQuery,\n TemporalUnit: TemporalUnit,\n ValueRange: ValueRange,\n DateTimeFormatter: DateTimeFormatter,\n DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n DecimalStyle: DecimalStyle,\n ResolverStyle: ResolverStyle,\n SignStyle: SignStyle,\n TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package earth.worldwind.tutorials\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.AssetResource\nimport dev.icerock.moko.resources.ColorResource\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.FontResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.PluralsResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.StringResource\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"5b523fff23bca4fe61ec3c86ce4b025e\"\n\n public actual object strings : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object plurals : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object images : ResourceContainer {\n public actual val aircraft_fighter: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fighter.png\\\")\") as String, fileName = \"aircraft_fighter.png\")\n\n public actual val aircraft_fixwing: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fixwing.png\\\")\") as String, fileName = \"aircraft_fixwing.png\")\n\n public actual val airport_terminal: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/airport_terminal.png\\\")\") as String, fileName = \"airport_terminal.png\")\n\n public actual val ehipcc: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/ehipcc.png\\\")\") as String, fileName = \"ehipcc.png\")\n\n public actual val pattern_sample_houndstooth: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/pattern_sample_houndstooth.png\\\")\") as String, fileName =\n \"pattern_sample_houndstooth.png\")\n\n public actual val worldwind_logo: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_logo.png\\\")\") as String, fileName = \"worldwind_logo.png\")\n\n public override fun values(): List = listOf(aircraft_fighter, aircraft_fixwing,\n airport_terminal, ehipcc, pattern_sample_houndstooth, worldwind_logo)\n }\n\n public actual object fonts : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object files : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object colors : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object assets : ResourceContainer {\n public override fun values(): List = listOf()\n }\n}\n","package earth.worldwind.tutorials\n\nabstract class AbstractTutorial {\n\n /**\n * Defines a list of custom actions\n */\n open val actions: ArrayList? = null\n\n /**\n * Runs any of custom actions listed in [actions]\n */\n open fun runAction(actionName: String) {}\n\n /**\n * Runs after switching to this example\n */\n open fun start() {}\n\n /**\n * Runs before switching to another example\n */\n open fun stop() {}\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport kotlinx.datetime.Clock\n\nclass BasicTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n var starFieldLayer: StarFieldLayer? = null\n var atmosphereLayer: AtmosphereLayer? = null\n\n override fun start() {\n super.start()\n engine.layers.run {\n val time = Clock.System.now()\n starFieldLayer = (getLayer(indexOfLayerNamed(\"StarField\")) as StarFieldLayer).apply { this.time = time }\n atmosphereLayer = (getLayer(indexOfLayerNamed(\"Atmosphere\")) as AtmosphereLayer).apply { this.time = time }\n }\n }\n\n override fun stop() {\n super.stop()\n starFieldLayer?.time = null\n atmosphereLayer?.time = null\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\n\nclass CameraViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setCameraAction()\n }\n\n private fun setCameraAction() {\n // Create a view of Point Mugu airport as seen from an aircraft above Oxnard, CA.\n val aircraft = Position.fromDegrees(34.2, -119.2, 3000.0) // Above Oxnard CA, altitude in meters\n val airport = Position.fromDegrees(34.1192744, -119.1195850, 4.0) // KNTD airport, Point Mugu CA, altitude MSL\n\n // Compute heading and tilt angles from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply the camera view\n engine.camera.set(\n aircraft.latitude, aircraft.longitude, aircraft.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Ellipse\n\nclass EllipsesTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Ellipses\").apply {\n // Create a surface ellipse with the default attributes, a 500km major-radius and a 300km minor-radius. Surface\n // ellipses are configured with a CLAMP_TO_GROUND altitudeMode and followTerrain set to true.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with custom attributes that make the interior 50% transparent and increase the\n // outline width.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -100.0, 0.0), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with a heading of 45 degrees, causing the semi-major axis to point Northeast and the\n // semi-minor axis to point Southeast.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n heading = 45.0.degrees\n }\n )\n\n // Create a surface circle with the default attributes and 400km radius.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -100.0, 0.0), 400000.0, 400000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create an ellipse with the default attributes, an altitude of 200 km, and a 500km major-radius and a 300km\n // minor-radius.\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -120.0, 200e3), 500000.0, 300000.0)\n )\n\n // Create an ellipse with custom attributes that make the interior 50% transparent and an extruded outline with\n // vertical lines\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -100.0, 200e3), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n isDrawVerticals = true\n }\n isExtrude = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-110.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmInline\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n@JvmInline\nvalue class Angle private constructor(\n /**\n * Size of this angle in degrees.\n */\n val inDegrees: Double\n): Comparable {\n /**\n * Size of this angle in radians. This may be useful for functions, which\n * generally take radians as trigonometric arguments.\n */\n val inRadians get() = toRadians(inDegrees)\n /**\n * Size of this angle in minutes.\n */\n val inMinutes get() = toMinutes(inDegrees)\n /**\n * Size of this angle in seconds.\n */\n val inSeconds get() = toSeconds(inDegrees)\n /**\n * Size of this angle in milliradians.\n */\n val inMrad get() = toMrad(inDegrees)\n /**\n * Size of this angle in mil NATO.\n */\n val inMilNATO get() = toMilNATO(inDegrees)\n /**\n * Size of this angle in mil Warsaw Pact.\n */\n val inMilWP get() = toMilWP(inDegrees)\n /**\n * Size of this angle in Streck.\n */\n val inStreck get() = toStreck(inDegrees)\n /**\n * Size of this angle in minute of angle (MOA).\n */\n val inMOA get() = toMOA(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of latitude, [-90, 90].\n */\n val isValidLatitude get() = isValidLatitude(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of longitude, [-180, 180].\n */\n val isValidLongitude get() = isValidLongitude(inDegrees)\n /**\n * Returns North or South notation depends on sign\n */\n val latitudeLetter get() = if (inDegrees < 0.0) \"S\" else \"N\"\n /**\n * Returns West or East notation depends on sign\n */\n val longitudeLetter get() = if (inDegrees < 0.0) \"W\" else \"E\"\n\n companion object {\n /** Represents an angle of zero degrees */\n @JvmStatic val ZERO = 0.0.degrees\n /** Represents a right angle of positive 90 degrees */\n @JvmStatic val POS90 = 90.0.degrees\n /** Represents a right angle of negative 90 degrees */\n @JvmStatic val NEG90 = (-90.0).degrees\n /** Represents an angle of positive 180 degrees */\n @JvmStatic val POS180 = 180.0.degrees\n /** Represents an angle of negative 180 degrees */\n @JvmStatic val NEG180 = (-180.0).degrees\n /** Represents an angle of positive 360 degrees */\n @JvmStatic val POS360 = 360.0.degrees\n /** Represents an angle of negative 360 degrees */\n @JvmStatic val NEG360 = (-360.0).degrees\n /** Represents an angle of 1 minute */\n @JvmStatic val MINUTE = (1.0 / 60.0).degrees\n /** Represents an angle of 1 second */\n @JvmStatic val SECOND = (1.0 / 3600.0).degrees\n /**\n * Conversion factor for degrees to radians.\n */\n const val DEGREES_TO_RADIANS = PI / 180.0\n /**\n * Conversion factor for radians to degrees.\n */\n const val RADIANS_TO_DEGREES = 180.0 / PI\n /**\n * Conversion factor for degrees to minutes.\n */\n const val DEGREES_TO_MINUTES = 60.0\n /**\n * Conversion factor for minutes to degrees.\n */\n const val MINUTES_TO_DEGREES = 1.0 / 60.0\n /**\n * Conversion factor for degrees to seconds.\n */\n const val DEGREES_TO_SECONDS = 3600.0\n /**\n * Conversion factor for seconds to degrees.\n */\n const val SECONDS_TO_DEGREES = 1.0 / 3600.0\n /**\n * Conversion factor for degrees to milliradians.\n */\n const val DEGREES_TO_MRAD = PI * 2.0 / 360.0\n /**\n * Conversion factor for milliradians to degrees.\n */\n const val MRAD_TO_DEGREES = 360.0 / PI / 2.0\n /**\n * Conversion factor for degrees to milliradians (NATO).\n */\n const val DEGREES_TO_MIL_NATO = 6400.0 / 360.0\n /**\n * Conversion factor for milliradians (NATO) to degrees.\n */\n const val MIL_NATO_TO_DEGREES = 360.0 / 6400.0\n /**\n * Conversion factor for degrees to milliradians (Warsaw Pact).\n */\n const val DEGREES_TO_MIL_WP = 6000.0 / 360.0\n /**\n * Conversion factor for milliradians (Warsaw Pact) to degrees.\n */\n const val MIL_WP_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to milliradians (Sweden).\n */\n const val DEGREES_TO_STRECK = 6300.0 / 360.0\n /**\n * Conversion factor for milliradians (Sweden) to degrees.\n */\n const val STRECK_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to minute of angle (MOA).\n */\n const val DEGREES_TO_MOA = 21600.0 / 360.0\n /**\n * Conversion factor for minute of angle (MOA) to degrees.\n */\n const val MOA_TO_DEGREES = 360.0 / 21600.0\n\n /**\n * Returns an Angle equal to this Double number in degrees.\n */\n inline val Double.degrees get() = fromDegrees(this)\n\n /**\n * Returns an Angle equal to this Double number in radians.\n */\n inline val Double.radians get() = fromRadians(this)\n\n /**\n * Returns an Angle equal to this Double number in minutes.\n */\n inline val Double.minutes get() = fromMinutes(this)\n\n /**\n * Returns an Angle equal to this Double number in seconds.\n */\n inline val Double.seconds get() = fromSeconds(this)\n\n /**\n * Returns an Angle equal to this Double number in milliradians.\n */\n inline val Double.mrad get() = fromMrad(this)\n\n /**\n * Returns an Angle equal to this Double number in mil NATO.\n */\n inline val Double.milNATO get() = fromMilNATO(this)\n\n /**\n * Returns an Angle equal to this Double number in mil Warsaw Pact.\n */\n inline val Double.milWP get() = fromMilWP(this)\n\n /**\n * Returns an Angle equal to this Double number in Streck.\n */\n inline val Double.streck get() = fromStreck(this)\n\n /**\n * Returns an Angle equal to this Double number in minute of angle (MOA).\n */\n inline val Double.MOA get() = fromMOA(this)\n\n /**\n * Convert radians to degrees\n *\n * @param radians value in radians\n *\n * @return value in degrees\n */\n @JvmStatic fun toDegrees(radians: Double) = radians * RADIANS_TO_DEGREES\n\n /**\n * Convert degrees to radians\n *\n * @param degrees value in degrees\n *\n * @return value in radians\n */\n @JvmStatic fun toRadians(degrees: Double) = degrees * DEGREES_TO_RADIANS\n\n /**\n * Convert degrees to minutes\n *\n * @param degrees value in degrees\n *\n * @return value in minutes\n */\n @JvmStatic fun toMinutes(degrees: Double) = degrees * DEGREES_TO_MINUTES\n\n /**\n * Convert degrees to seconds\n *\n * @param degrees value in degrees\n *\n * @return value in seconds\n */\n @JvmStatic fun toSeconds(degrees: Double) = degrees * DEGREES_TO_SECONDS\n\n /**\n * Convert degrees to milliradians\n *\n * @param degrees value in degrees\n *\n * @return value in milliradians\n */\n @JvmStatic fun toMrad(degrees: Double) = degrees * DEGREES_TO_MRAD\n\n /**\n * Convert degrees to mil NATO\n *\n * @param degrees value in degrees\n *\n * @return value in mil NATO\n */\n @JvmStatic fun toMilNATO(degrees: Double) = degrees * DEGREES_TO_MIL_NATO\n\n /**\n * Convert degrees to mil Warsaw Pact\n *\n * @param degrees value in degrees\n *\n * @return value in mil Warsaw Pact\n */\n @JvmStatic fun toMilWP(degrees: Double) = degrees * DEGREES_TO_MIL_WP\n\n /**\n * Convert degrees to Streck\n *\n * @param degrees value in degrees\n *\n * @return value in mil Streck\n */\n @JvmStatic fun toStreck(degrees: Double) = degrees * DEGREES_TO_STRECK\n\n /**\n * Convert degrees to minute of angle (MOA)\n *\n * @param degrees value in degrees\n *\n * @return value in minute of angle (MOA)\n */\n @JvmStatic fun toMOA(degrees: Double) = degrees * DEGREES_TO_MOA\n\n /**\n * Obtains an angle from a specified number of degrees.\n *\n * @param degrees the size in degrees of the angle to be obtained\n *\n * @return a new angle, whose size in degrees is given by [degrees]\n */\n @JvmStatic fun fromDegrees(degrees: Double) = Angle(degrees)\n\n /**\n * Obtains an angle from a specified number of radians.\n *\n * @param radians the size in radians of the angle to be obtained.\n *\n * @return a new angle, whose size in radians is given by [radians].\n */\n @JvmStatic fun fromRadians(radians: Double) = Angle(radians * RADIANS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minutes.\n *\n * @param minutes the size in minutes of the angle to be obtained.\n *\n * @return a new angle, whose size in minutes is given by [minutes].\n */\n @JvmStatic fun fromMinutes(minutes: Double) = Angle(minutes * MINUTES_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of seconds.\n *\n * @param seconds the size in seconds of the angle to be obtained.\n *\n * @return a new angle, whose size in seconds is given by [seconds].\n */\n @JvmStatic fun fromSeconds(seconds: Double) = Angle(seconds * SECONDS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of milliradians.\n *\n * @param mrad the size in milliradians of the angle to be obtained.\n *\n * @return a new angle, whose size in milliradians is given by [mrad].\n */\n @JvmStatic fun fromMrad(mrad: Double) = Angle(mrad * MRAD_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil NATO.\n *\n * @param milNATO the size in mil NATO of the angle to be obtained.\n *\n * @return a new angle, whose size in mil NATO is given by [milNATO].\n */\n @JvmStatic fun fromMilNATO(milNATO: Double) = Angle(milNATO * MIL_NATO_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil Warsaw Pact.\n *\n * @param milWP the size in mil WP of the angle to be obtained.\n *\n * @return a new angle, whose size in mil WP is given by [milWP].\n */\n @JvmStatic fun fromMilWP(milWP: Double) = Angle(milWP * MIL_WP_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of Streck.\n *\n * @param streck the size in Streck of the angle to be obtained.\n *\n * @return a new angle, whose size in Streck is given by [streck].\n */\n @JvmStatic fun fromStreck(streck: Double) = Angle(streck * STRECK_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minute of angle (MOA).\n *\n * @param moa the size in MOA of the angle to be obtained.\n *\n * @return a new angle, whose size in MOA is given by [moa].\n */\n @JvmStatic fun fromMOA(moa: Double) = Angle(moa * MOA_TO_DEGREES)\n\n /**\n * Obtains an angle from rectangular coordinates.\n *\n * @param x the abscissa coordinate.\n * @param y the ordinate coordinate.\n *\n * @return a new angle, whose size is determined from `x` and `y`.\n */\n @JvmStatic fun fromXY(x: Double, y: Double) = atan2(y, x).radians\n\n /**\n * Obtain an angle from a given number of positive degrees, minutes and seconds.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes integer number of minutes, positive only between 0 and 60.\n * @param seconds integer number of seconds, positive only between 0 and 60.\n *\n * @return a new angle whose size in degrees is given by `degrees`, `minutes` and `seconds`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDMS(degrees: Int, minutes: Int, seconds: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidDegrees\")\n }\n require(minutes in 0 until 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidMinutes\")\n }\n require(seconds >= 0 && seconds < 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidSeconds\")\n }\n return fromDegrees(degrees + minutes / 60.0 + seconds / 3600.0)\n }\n\n /**\n * Obtain an angle from a given number of positive degrees and decimal minutes.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes double representing the decimal representation of minutes and seconds.\n *\n * @return a new angle whose size in degrees is given by `degrees` and decimal `minutes`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDM(degrees: Int, minutes: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidDegrees\")\n }\n require(minutes >= 0 && minutes < 60) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidMinutes\")\n }\n return fromDegrees(degrees + minutes / 60.0)\n }\n\n /**\n * Obtain an angle from a degrees, minute and seconds character string.\n *\n * eg:
\n         * 123 34 42\n         * -123* 34' 42\" (where * stands for the degree symbol)\n         * +45* 12' 30\" (where * stands for the degree symbol)\n         * 45 12 30 S\n         * 45 12 30 N\n         * 
\n * For a string containing both a sign and compass direction, the compass direction will take precedence.\n *\n * @param dmsString the degrees, minute and second character string.\n *\n * @return the corresponding angle.\n *\n * @throws IllegalArgumentException if dmsString is not properly formatted.\n */\n @JvmStatic\n fun fromDMS(dmsString: String): Angle {\n var dms = dmsString\n // Check for string format validity\n val regex = Regex(\"([-+]?\\\\d{1,3}[dD°\\\\s](\\\\s*\\\\d{1,2}['’\\\\s])?(\\\\s*\\\\d{1,2}[\\\"”\\\\s])?\\\\s*([NnSsEeWw])?\\\\s?)\")\n require(regex.matches(\"$dms \")) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidFormat\")\n }\n // Replace degree, min and sec signs with space\n dms = dms.replace(\"[Dd°'’\\\"”]\".toRegex(), \" \")\n // Replace multiple spaces with single ones\n dms = dms.replace(\"\\\\s+\".toRegex(), \" \")\n dms = dms.trim { it <= ' ' }\n\n // Check for sign prefix and suffix\n var sign = 1\n val suffix = dms.uppercase()[dms.length - 1]\n val prefix = dms[0]\n if (!suffix.isDigit()) {\n sign = if (suffix == 'S' || suffix == 'W') -1 else 1\n dms = dms.substring(0, dms.length - 1)\n dms = dms.trim { it <= ' ' }\n\n // check and trim the prefix if it is erroneously included\n if (!prefix.isDigit()) {\n dms = dms.substring(1, dms.length)\n dms = dms.trim { it <= ' ' }\n }\n } else if (!prefix.isDigit()) {\n sign *= if (prefix == '-') -1 else 1\n dms = dms.substring(1, dms.length)\n }\n\n // Extract degrees, minutes and seconds\n val dmsArray = dms.split(\" \").toTypedArray()\n val d = dmsArray[0].toInt()\n val m = if (dmsArray.size > 1) dmsArray[1].toInt() else 0\n val s = if (dmsArray.size > 2) dmsArray[2].toDouble() else 0.0\n return fromDMS(d, m, s) * sign.toDouble()\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than -180 wrap back to +180, while angles greater than\n * +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeAngle180(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle > 180) angle - 360 else if (angle < -180) 360 + angle else angle\n }\n\n /**\n * Restricts an angle to the range [0, 360] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than 0 wrap back to 360, while angles greater than 360\n * wrap back to 0.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [0, 360] degrees\n */\n @JvmStatic\n fun normalizeAngle360(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle >= 0) angle else 360 + angle\n }\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, wrapping angles outside the range. Wrapping takes place along\n * a line of constant longitude which may pass through the poles. In which case, 135 degrees normalizes to 45\n * degrees; 181 degrees normalizes to -1 degree.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun normalizeLatitude(degrees: Double): Double {\n val lat = degrees % 180\n val normalizedLat = if (lat > 90) 180 - lat else if (lat < -90) -180 - lat else lat\n // Determine whether the latitude is in the north or south hemisphere\n val numEquatorCrosses = (degrees / 180).toInt()\n return if (numEquatorCrosses % 2 == 0) normalizedLat else -normalizedLat\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing a line of constant latitude which may pass through the antimeridian; angles less than -180 wrap\n * back to +180, while angles greater than +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeLongitude(degrees: Double): Double {\n val lon = degrees % 360\n return if (lon > 180) lon - 360 else if (lon < -180) 360 + lon else lon\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as -180, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampAngle180(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Restricts an angle to the range [0, 360] degrees, clamping angles outside the range. Angles less than 0 are\n * returned as 0, and angles greater than 360 are returned as 360. Angles within the range are returned unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [0, 360] degrees\n */\n @JvmStatic\n fun clampAngle360(degrees: Double) = degrees.coerceIn(0.0, 360.0)\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, clamping angles outside the range. Angles less than -90 are\n * returned as -90, and angles greater than +90 are returned as +90. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun clampLatitude(degrees: Double) = degrees.coerceIn(-90.0, 90.0)\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as 0, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampLongitude(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Computes the linear interpolation of two angles in the range [-180, +180] degrees according to a specified\n * fractional amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0\n * indicates the first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second\n * angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle in degrees\n * @param angle2 the second angle in degrees\n *\n * @return the interpolated angle in the range [-180, +180] degrees\n */\n @JvmStatic\n fun interpolateAngle180(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle180(angle).degrees\n }\n\n /**\n * Computes the linear interpolation of two angles in the range [0, 360] degrees according to a specified fractional\n * amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0 indicates the\n * first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle\n * @param angle2 the second angle\n *\n * @return the interpolated angle in the range [0, 360] degrees\n */\n @JvmStatic\n fun interpolateAngle360(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle360(angle).degrees\n }\n\n /**\n * Obtains the average of two angles. This method is commutative, so `midAngle(m, n)` and\n * `midAngle(n, m)` are equivalent.\n *\n * @param a1 the first angle.\n * @param a2 the second angle.\n *\n * @return the average of `a1` and `a2`\n */\n @JvmStatic\n fun average(a1: Angle, a2: Angle) = fromDegrees(0.5 * (a1.inDegrees + a2.inDegrees))\n\n @JvmStatic\n fun max(a: Angle, b: Angle) = if (a.inDegrees >= b.inDegrees) a else b\n\n @JvmStatic\n fun min(a: Angle, b: Angle) = if (a.inDegrees <= b.inDegrees) a else b\n\n /**\n * Indicates whether a specified value is within the normal range of latitude, [-90, 90].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of latitude, otherwise false.\n */\n @JvmStatic\n fun isValidLatitude(degrees: Double) = degrees >= -90 && degrees <= 90\n\n /**\n * Indicates whether a specified value is within the normal range of longitude, [-180, 180].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of longitude, otherwise false.\n */\n @JvmStatic\n fun isValidLongitude(degrees: Double) = degrees >= -180 && degrees <= 180\n }\n\n init {\n // NaN value is not suppoted due to unpredictable `compareTo(NaN)` behavior\n require(!inDegrees.isNaN()) {\n logMessage(ERROR, \"Angle\", \"init\", \"NaN is not supported!\")\n }\n }\n\n /**\n * Obtains the sum of these two angles.\n * This method is commutative, so `a.add(b)` and `b.add(a)` are equivalent.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to add to this one.\n *\n * @return an angle whose size is the total of these angles and angles size.\n */\n operator fun plus(angle: Angle) = fromDegrees(inDegrees + angle.inDegrees)\n fun plusDegrees(degrees: Double) = fromDegrees(this.inDegrees + degrees)\n fun plusRadians(radians: Double) = fromRadians(this.inRadians + radians)\n\n /**\n * Obtains the difference of these two angles. This method is not commutative.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to subtract from this angle.\n *\n * @return a new angle corresponding to this angle's size minus angle's size.\n */\n operator fun minus(angle: Angle) = fromDegrees(inDegrees - angle.inDegrees)\n fun minusDegrees(degrees: Double) = fromDegrees(this.inDegrees - degrees)\n fun minusRadians(radians: Double) = fromRadians(this.inRadians - radians)\n\n /**\n * Multiplies this angle by another angle.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to multiply.\n *\n * @return a new angle whose size equals this angle's size multiplied by angle's size.\n */\n operator fun times(angle: Angle) = this * angle.inDegrees\n\n /**\n * Multiplies this angle by `multiplier`.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param multiplier a scalar by which this angle is multiplied.\n *\n * @return a new angle whose size equals this angle's size multiplied by `multiplier`.\n */\n operator fun times(multiplier: Double) = fromDegrees(inDegrees * multiplier)\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to divide.\n *\n * @return this angle's degrees divided by angle's degrees.\n */\n operator fun div(angle: Angle) = this / angle.inDegrees\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param divisor a scalar by which to divide.\n *\n * @return this angle's degrees divided by divisor.\n */\n operator fun div(divisor: Double): Angle {\n require(divisor != 0.0) {\n logMessage(ERROR, \"Angle\", \"div\", \"divideByZero\")\n }\n return fromDegrees(inDegrees / divisor)\n }\n\n /**\n * Returns new angle with opposite sign.\n */\n operator fun unaryMinus() = Angle(-inDegrees)\n\n /**\n * Computes the shortest distance between this and angle, as an angle.\n *\n * @param angle the angle to measure angular distance to.\n *\n * @return the angular distance between this and `value`.\n */\n fun distanceTo(angle: Angle): Angle {\n var distance = angle.inDegrees - inDegrees\n if (distance < -180) distance += 360.0 else if (distance > 180) distance -= 360.0\n return abs(distance).degrees\n }\n\n fun normalize180() = if (inDegrees in -180.0..180.0) this else normalizeAngle180(inDegrees).degrees\n\n fun normalize360() = if (inDegrees in 0.0..360.0) this else normalizeAngle360(inDegrees).degrees\n\n fun normalizeLatitude() = if (inDegrees in -90.0..90.0) this else normalizeLatitude(inDegrees).degrees\n\n fun normalizeLongitude() = if (inDegrees in -180.0..180.0) this else normalizeLongitude(inDegrees).degrees\n\n fun clampAngle180() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun clampAngle360() = inDegrees.coerceIn(0.0, 360.0).degrees\n\n fun clampLatitude() = inDegrees.coerceIn(-90.0, 90.0).degrees\n\n fun clampLongitude() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun toDMS(): DoubleArray {\n var angle = inDegrees\n val sign = sign(angle)\n angle *= sign\n var d = floor(angle)\n angle = (angle - d) * 60.0\n var m = floor(angle)\n angle = (angle - m) * 60.0\n var s = round(angle * 100) / 100 // keep two decimals for seconds\n if (s == 60.0) {\n m++\n s = 0.0\n }\n if (m == 60.0) {\n d++\n m = 0.0\n }\n return doubleArrayOf(sign, d, m, s)\n }\n\n /**\n * Forms a decimal degrees [String] representation of this [Angle].\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in decimal degrees as a string with the specified number of digits beyond the\n * decimal point. The string is padded with trailing zeros to fill the number of post-decimal point\n * positions requested.\n */\n fun toDDString(digits: Int = 6): String {\n require(digits in 0..15) {\n logMessage(ERROR, \"Angle\", \"toDecimalDegreesString\", \"outOfRange\")\n }\n return \"%.${digits}f°\".format(inDegrees)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees and decimal minutes.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees and decimal minutes as a string.\n */\n fun toDMString(digits: Int = 3): String {\n val dms = toDMS()\n val mf = if (dms[3] == 0.0) dms[2] else dms[2] + dms[3] / 60.0\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2.${digits}f’\".format(dms[1], mf)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees, minutes and seconds.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees, minutes and seconds as a string.\n */\n fun toDMSString(digits: Int = 1): String {\n val dms = toDMS()\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2d’ %2.${digits}f”\".format(dms[1], dms[2], dms[3])\n }\n\n /**\n * Compares this [Angle] with another. Returns a negative integer if this is the smaller angle, a positive\n * integer if this is the larger, and zero if both angles are equal.\n *\n * @param other the angle to compare against.\n *\n * @return -1 if this angle is smaller, 0 if both are equal and +1 if this angle is larger.\n */\n override operator fun compareTo(other: Angle) = inDegrees.compareTo(other.inDegrees)\n\n override fun toString() = \"$inDegrees°\"\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.OrientationMode\n\nclass LabelsTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Labels\").apply {\n // Create a basic label with the default attributes, including the default text color (white), the default text\n // size (24 pixels), the system default font, and the default alignment (bottom center).\n addRenderable(\n Label(Position.fromDegrees(38.8977, -77.0365, 0.0), \"The White House\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create a label with a black text color, the default text size, the system default font, the default\n // alignment, and a thick white text outline.\n addRenderable(\n Label(Position.fromDegrees(38.881389, -77.036944, 0.0), \"Thomas Jefferson Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply {\n textColor = Color(0f, 0f, 0f, 1f) // black text via r,g,b,a\n outlineColor = Color(1f, 1f, 1f, 1f) // white outline via r,g,b,a\n outlineWidth = 5f // thicken the white outline\n }\n }\n )\n\n // Create a right-aligned label using a bottom-right offset.\n addRenderable(\n Label(Position.fromDegrees(38.8893, -77.050111, 0.0), \"Lincoln Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomRight() }\n }\n )\n\n // Create a left-aligned label using a bottom-left offset.\n addRenderable(\n Label(Position.fromDegrees(38.889803, -77.009114, 0.0), \"United States Capitol\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomLeft() }\n }\n )\n\n // Create a label with a 48 pixel text size and a bold font.\n addRenderable(\n Label(Position.fromDegrees(38.907192, -77.036871, 0.0), \"Washington\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { font = Font(\"arial\", FontWeight.BOLD, 28) }\n }\n )\n\n // Create a label with its orientation fixed relative to the globe.\n addRenderable(\n Label(Position.fromDegrees(38.89, -77.023611, 0.0), \"National Mall\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n rotationMode = OrientationMode.RELATIVE_TO_GLOBE\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 38.89.degrees, (-77.023611).degrees, 10e3,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass LookAtViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setLookAtAction()\n }\n\n private fun setLookAtAction() {\n // Create a view of LAX airport as seen from an aircraft above Santa Monica, CA.\n val aircraft = Position.fromDegrees(34.0158333, -118.4513056, 2500.0)\n // Aircraft above Santa Monica airport, altitude in meters\n val airport = Position.fromDegrees(33.9424368, -118.4081222, 38.7)\n\n // Compute heading and distance from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n\n // Compute camera settings\n val altitude = aircraft.altitude - airport.altitude\n val range = sqrt(altitude * altitude + distanceMeters * distanceMeters)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply new \"look at\" view\n engine.cameraFromLookAt(LookAt(airport, AltitudeMode.ABSOLUTE, range, heading, tilt, roll = Angle.ZERO))\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.MGRSGraticuleLayer\n\nclass MGRSGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = MGRSGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Path\n\nclass PathsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Paths\").apply {\n // Create a basic path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(50.0, -180.0, 1e5),\n Position.fromDegrees(30.0, -100.0, 1e6),\n Position.fromDegrees(50.0, -40.0, 1e5)\n )\n )\n )\n\n // Create a terrain following path with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(40.0, -180.0, 0.0),\n Position.fromDegrees(20.0, -100.0, 0.0),\n Position.fromDegrees(40.0, -40.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the path vertices to the ground\n isFollowTerrain = true // follow the ground between path vertices\n }\n )\n\n // Create an extruded path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(30.0, -180.0, 1e5),\n Position.fromDegrees(10.0, -100.0, 1e6),\n Position.fromDegrees(30.0, -40.0, 1e5)\n )\n ).apply {\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n\n // Create an extruded path with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the path line with.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(20.0, -180.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e6),\n Position.fromDegrees(20.0, -40.0, 1e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-100.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Placemark\nimport earth.worldwind.shape.PlacemarkAttributes\n\nclass PlacemarksTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Placemarks\").apply {\n // Create a simple placemark at downtown Ventura, CA. This placemark is a 20x20 cyan square centered on the\n // geographic position. This placemark demonstrates the creation with a convenient factory method.\n addRenderable(\n Placemark.createWithColorAndSize(\n Position.fromDegrees(34.281, -119.293, 0.0), Color(0f, 1f, 1f, 1f), 20\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create an image-based placemark of an aircraft above the ground with a leader-line to the surface.\n // This placemark demonstrates creation via a constructor and a convenient PlacemarkAttributes factory method.\n // The image is scaled to 1.5 times its original size.\n addRenderable(\n Placemark(Position.fromDegrees(34.260, -119.2, 5000.0)).apply {\n attributes = PlacemarkAttributes.createWithImageAndLeader(ImageSource.fromResource(MR.images.aircraft_fixwing)).apply {\n imageScale = 1.5\n }\n }\n )\n\n // Create an image-based placemark with a label at Oxnard Airport, CA. This placemark demonstrates creation\n // with a constructor and a convenient PlacemarkAttributes factory method. The image is scaled to 2x\n // its original size, with the bottom center of the image anchored at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.200, -119.208, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.airport_terminal)).apply {\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n }\n displayName = \"Oxnard Airport\"\n }\n )\n\n // Create an image-based placemark from a bitmap. This placemark demonstrates creation with a\n // constructor and a convenient PlacemarkAttributes factory method. First, a 64x64 bitmap is loaded,\n // and then it is passed into the placemark attributes. The bottom center of the image anchored\n // at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.300, -119.25, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.ehipcc)).apply {\n imageOffset = Offset.bottomCenter()\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(34.200, -119.208, 0.0),\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 80.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Polygon\n\nclass PolygonsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Polygons\").apply {\n // Create a basic polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -135.0, 5.0e5),\n Position.fromDegrees(45.0, -140.0, 7.0e5),\n Position.fromDegrees(50.0, -130.0, 9.0e5),\n Position.fromDegrees(45.0, -120.0, 7.0e5),\n Position.fromDegrees(40.0, -125.0, 5.0e5)\n )\n )\n )\n\n // Create a terrain following polygon with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -105.0, 0.0),\n Position.fromDegrees(45.0, -110.0, 0.0),\n Position.fromDegrees(50.0, -100.0, 0.0),\n Position.fromDegrees(45.0, -90.0, 0.0),\n Position.fromDegrees(40.0, -95.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the polygon vertices to the ground\n isFollowTerrain = true // follow the ground between polygon vertices\n }\n )\n\n // Create an extruded polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -135.0, 5.0e5),\n Position.fromDegrees(25.0, -140.0, 7.0e5),\n Position.fromDegrees(30.0, -130.0, 9.0e5),\n Position.fromDegrees(25.0, -120.0, 7.0e5),\n Position.fromDegrees(20.0, -125.0, 5.0e5)\n )\n ).apply {\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create an extruded polygon with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -105.0, 5.0e5),\n Position.fromDegrees(25.0, -110.0, 7.0e5),\n Position.fromDegrees(30.0, -100.0, 9.0e5),\n Position.fromDegrees(25.0, -90.0, 7.0e5),\n Position.fromDegrees(20.0, -95.0, 5.0e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create a polygon with an inner hole by specifying multiple polygon boundaries\n addRenderable(\n Polygon().apply {\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -135.0, 5.0e5),\n Position.fromDegrees(5.0, -140.0, 7.0e5),\n Position.fromDegrees(10.0, -130.0, 9.0e5),\n Position.fromDegrees(5.0, -120.0, 7.0e5),\n Position.fromDegrees(0.0, -125.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -130.0, 6.0e5),\n Position.fromDegrees(5.0, -135.0, 7.0e5),\n Position.fromDegrees(7.5, -130.0, 8.0e5),\n Position.fromDegrees(5.0, -125.0, 7.0e5)\n )\n )\n }\n )\n\n // Create an extruded polygon with an inner hole and custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(emptyList()).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -105.0, 5.0e5),\n Position.fromDegrees(5.0, -110.0, 7.0e5),\n Position.fromDegrees(10.0, -100.0, 9.0e5),\n Position.fromDegrees(5.0, -90.0, 7.0e5),\n Position.fromDegrees(0.0, -95.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -100.0, 6.0e5),\n Position.fromDegrees(5.0, -105.0, 7.0e5),\n Position.fromDegrees(7.5, -100.0, 8.0e5),\n Position.fromDegrees(5.0, -95.0, 7.0e5)\n )\n )\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-115.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.ShowTessellationLayer\n\nclass ShowTessellationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = ShowTessellationLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.OmnidirectionalSightline\nimport earth.worldwind.shape.Placemark\n\nclass SightlineTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Sightline\").apply {\n // Specify the sightline position, which is the origin of the line of sight calculation\n val position = Position.fromDegrees(46.230, -122.190, 2500.0)\n // Create the sightline, specifying the range of the sightline (meters)\n addRenderable(\n OmnidirectionalSightline(position, 10000.0).apply {\n // Create attributes for the visible terrain\n attributes.apply { interiorColor = Color(0f, 1f, 0f, 0.5f) }\n // Create attributes for the occluded terrain\n occludeAttributes.apply { interiorColor = Color(0.1f, 0.1f, 0.1f, 0.8f) }\n }\n )\n // Create a Placemark to visualize the position of the sightline\n addRenderable(\n Placemark(position).apply {\n attributes.apply {\n imageSource = earth.worldwind.render.image.ImageSource.fromResource(MR.images.aircraft_fixwing)\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n isDrawLeader = true\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position(46.230.degrees, (-122.190).degrees, 500.0), altitudeMode = AltitudeMode.ABSOLUTE,\n range = 1.5e4, heading = 45.0.degrees, tilt = 70.0.degrees, roll = 0.0.degrees\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\n\nclass SurfaceImageTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Surface image\").apply {\n // Configure a Surface Image to display an Android resource showing the WorldWindEarth logo.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46, 15.5, 0.5, 0.6),\n ImageSource.fromResource(MR.images.worldwind_logo)\n )\n )\n\n // Configure a Surface Image to display a remote image showing Mount Etna erupting on July 13th, 2001.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46543388598137, 14.60128369746704, 0.45360804083528, 0.75704283995502),\n ImageSource.fromUrlString(\"https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg\")\n )\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 37.46543388598137.degrees, 14.97980511744455.degrees, 4.0e5,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Service (WMS) layer to display the\n // surface temperature layer from NASA's Near Earth Observations WMS.\n WmsLayerFactory.createLayer(\"https://neo.gsfc.nasa.gov/wms/wms\", listOf(\"MOD_LSTD_CLIM_M\")).also {\n if (isActive) {\n wmsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMS layer creation succeeded\")\n } catch (e: Exception) {\n Logger.log(Logger.ERROR, \"WMS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmsLayer?.let { engine.layers.removeLayer(it) }.also { wmsLayer = null }\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmtsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmtsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Tile Service (WMTS) layer to display Global Hillshade based on GMTED2010\n WmtsLayerFactory.createLayer(\"https://tiles.geoservice.dlr.de/service/wmts\", \"hillshade\").also {\n if (isActive) {\n wmtsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMTS layer creation succeeded\")\n } catch (e: Exception) {\n Logger.log(Logger.ERROR, \"WMTS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmtsLayer?.let { engine.layers.removeLayer(it) }.also { wmtsLayer = null }\n }\n\n}","@file:JsExport\n\npackage earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.gesture.SelectDragCallback\nimport earth.worldwind.globe.elevation.coverage.BasicElevationCoverage\nimport earth.worldwind.layer.BackgroundLayer\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.mercator.google.GoogleLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Movable\nimport kotlinx.browser.document\nimport kotlinx.browser.window\nimport org.w3c.dom.*\n\nfun main() {\n // Register an event listener to be called when the page is loaded.\n window.onload = {\n // Create a WorldWindow for the canvas.\n val wwd = WorldWindow(document.getElementById(\"WorldWindow\") as HTMLCanvasElement)\n val select = document.getElementById(\"Tutorials\") as HTMLSelectElement\n val actionsContainer = document.getElementById(\"Actions\") as HTMLDivElement\n val tutorials = mapOf (\n \"Basic globe\" to BasicTutorial(wwd.engine),\n \"Set camera view\" to CameraViewTutorial(wwd.engine),\n \"Set Look At\" to LookAtViewTutorial(wwd.engine),\n \"Placemarks\" to PlacemarksTutorial(wwd.engine),\n \"Paths\" to PathsTutorial(wwd.engine),\n \"Polygons\" to PolygonsTutorial(wwd.engine),\n \"Ellipses\" to EllipsesTutorial(wwd.engine),\n // TODO Uncomment when ImageSource.fromLineStipple will be implemented\n //\"Dash and fill\" to ShapeDashAndFillTutorial(wwd.engine),\n \"Labels\" to LabelsTutorial(wwd.engine),\n \"Sight line\" to SightlineTutorial(wwd.engine),\n \"Surface image\" to SurfaceImageTutorial(wwd.engine),\n \"Show tessellation\" to ShowTessellationTutorial(wwd.engine),\n \"MGRS Graticule\" to MGRSGraticuleTutorial(wwd.engine),\n // TODO Uncomment when TIFF elevation data parsing will be implemented\n //\"WCS Elevation\" to WcsElevationTutorial(wwd.engine),\n \"WMS Layer\" to WmsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WMTS Layer\" to WmtsLayerTutorial(wwd.engine, wwd.mainScope),\n )\n var currentTutorial: String? = null\n\n // Add some image layers to the WorldWindow's globe.\n wwd.engine.layers.apply {\n addLayer(BackgroundLayer())\n addLayer(GoogleLayer(GoogleLayer.Type.SATELLITE))\n addLayer(StarFieldLayer())\n addLayer(AtmosphereLayer())\n }\n\n // Add elevation coverage source\n wwd.engine.globe.elevationModel.addCoverage(BasicElevationCoverage())\n\n // Allow pick and move any movable object\n wwd.selectDragDetector.callback = object : SelectDragCallback {\n override fun canPickRenderable(renderable: Renderable) = renderable is Movable\n override fun canMoveRenderable(renderable: Renderable) = renderable is Movable\n }\n\n fun callAction(actionName: String) { currentTutorial?.let { tutorials[it]?.runAction(actionName) } }\n\n fun createAction(actionName: String) {\n (document.createElement(\"button\") as HTMLButtonElement).apply {\n innerHTML = actionName\n actionsContainer.append(this)\n onclick = { callAction(actionName) }\n }\n }\n\n fun selectTutorial(tutorial: String) {\n currentTutorial?.let { tutorials[it]?.stop() }\n currentTutorial = tutorial\n tutorials[tutorial]?.run {\n start()\n //TODO actions\n actionsContainer.innerHTML = \"\"\n actions?.forEach { action -> createAction(action) }\n actionsContainer.hidden = actions?.isEmpty() != false\n }\n wwd.requestRedraw()\n }\n\n tutorials.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n select.append(this)\n }\n }\n select.onchange = { event -> selectTutorial((event.target as HTMLSelectElement).value) }\n\n selectTutorial(tutorials.keys.first())\n }\n}",null,null,"package earth.worldwind\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.AssetResource\nimport dev.icerock.moko.resources.ColorResource\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.FontResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.PluralsResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.StringResource\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"13528c7360f87ff150ff0843a0370ee0\"\n\n public actual object strings : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object plurals : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object images : ResourceContainer {\n public actual val dnb_land_ocean_ice_2012: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/dnb_land_ocean_ice_2012.png\\\")\") as String, fileName =\n \"dnb_land_ocean_ice_2012.png\")\n\n public actual val sun_texture: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/sun_texture.png\\\")\") as String, fileName = \"sun_texture.png\")\n\n public actual val worldwind_worldtopobathy2004053: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_worldtopobathy2004053.png\\\")\") as String, fileName =\n \"worldwind_worldtopobathy2004053.png\")\n\n public override fun values(): List = listOf(dnb_land_ocean_ice_2012, sun_texture,\n worldwind_worldtopobathy2004053)\n }\n\n public actual object fonts : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object files : ResourceContainer {\n public actual val stars: FileResource = FileResource(fileUrl =\n js(\"require(\\\"files/stars.json\\\")\") as String)\n\n public override fun values(): List = listOf(stars)\n }\n\n public actual object colors : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object assets : ResourceContainer {\n public override fun values(): List = listOf()\n }\n}\n","package earth.worldwind\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.min\nimport kotlin.math.roundToInt\n\n/**\n * Incrementally and smoothly moves the Camera to a specified position.\n */\nopen class GoToAnimator(\n /**\n * The [WorldWind] engine associated with this animator.\n */\n protected val engine: WorldWind\n) {\n /**\n * The frequency in milliseconds at which to animate the position change.\n */\n var animationFrequency = 20L\n /**\n * The animation's duration, in milliseconds. When the distance is short, less than twice the viewport\n * size, the travel time is reduced proportionally to the distance to travel. It therefore takes less\n * time to move shorter distances.\n */\n var travelTime = 3000\n /**\n * Main scope to launch animation\n */\n protected val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * A temp variable used to hold the current view as a look at during calculations. Using an object level temp\n * property negates the need for ad-hoc allocations and reduces load on the garbage collector.\n */\n protected val lookAt = LookAt()\n protected var animationJob: Job? = null\n protected var completionCallback: ((GoToAnimator) -> Unit)? = null\n protected var targetPosition: Position? = null\n protected var startPosition: Position? = null\n protected var startTime = Instant.DISTANT_PAST\n protected var maxAltitude = 0.0\n protected var maxAltitudeReachedTime = Instant.DISTANT_PAST\n protected var panVelocity = 0.0\n protected var rangeVelocity = 0.0\n\n /**\n * Stop the current animation.\n */\n fun cancel() { animationJob?.cancel() }\n\n /**\n * Moves the camera to a specified look at location or position.\n *\n * @param position The [Location] or [Position] to move the camera to. If this\n * argument contains an \"altitude\" property, as [Position] does, the end point of the navigation is\n * at the specified altitude. Otherwise, the end point is at the current altitude of the camera.\n * @param completionCallback If not null, specifies a function to call when the animation completes.\n * The completion callback is called with a single argument, this animator.\n */\n open fun goTo(position: Location, completionCallback: ((GoToAnimator) -> Unit)? = null) {\n if (engine.viewport.isEmpty) return\n\n this.completionCallback = completionCallback\n\n engine.cameraAsLookAt(lookAt)\n // Capture the target position and determine its altitude.\n val targetPosition = Position(\n position.latitude, position.longitude, if(position is Position) position.altitude else lookAt.range\n ).also { targetPosition = it }\n\n // Capture the start position and start time.\n val startPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range).also { startPosition = it }\n startTime = Clock.System.now()\n\n // Determination of the pan and range velocities requires the distance to be travelled.\n var animationDuration = travelTime\n val panDistance = startPosition.greatCircleDistance(targetPosition)\n\n // Determine how high we need to go to give the user context. The max altitude computed is approximately\n // that needed to fit the start and end positions in the same viewport assuming a 45 degree field of view.\n val pA = engine.globe.geographicToCartesian(startPosition.latitude, startPosition.longitude, 0.0, Vec3())\n val pB = engine.globe.geographicToCartesian(targetPosition.latitude, targetPosition.longitude, 0.0, Vec3())\n maxAltitude = pA.distanceTo(pB)\n\n // Determine an approximate viewport size in radians in order to determine whether we actually change\n // the range as we pan to the new location. We don't want to change the range if the distance between\n // the start and target positions is small relative to the current viewport.\n val viewportSize = engine.pixelSizeAtDistance(startPosition.altitude) *\n engine.viewport.width / engine.globe.equatorialRadius\n\n // Start and target positions are close, so don't back out.\n if (panDistance <= 2 * viewportSize) maxAltitude = startPosition.altitude\n\n // We need to capture the time the max altitude is reached in order to begin decreasing the range\n // midway through the animation. If we're already above the max altitude, then that time is now since\n // we don't back out if the current altitude is above the computed max altitude.\n maxAltitudeReachedTime = if (maxAltitude <= lookAt.range) Clock.System.now() else Instant.DISTANT_PAST\n\n // Compute the total range to travel since we need that to compute the range velocity.\n // Note that the range velocity and pan velocity are computed so that the respective animations, which\n // operate independently, finish at the same time.\n val rangeDistance = if (maxAltitude > startPosition.altitude) {\n max(0.0, maxAltitude - startPosition.altitude) + abs(targetPosition.altitude - maxAltitude)\n } else {\n abs(targetPosition.altitude - startPosition.altitude)\n }\n\n // Determine which distance governs the animation duration.\n val animationDistance = max(panDistance, rangeDistance / engine.globe.equatorialRadius)\n if (animationDistance == 0.0) return // current and target positions are the same\n\n if (animationDistance < 2 * viewportSize) {\n // Start and target positions are close, so reduce the travel time based on the\n // distance to travel relative to the viewport size.\n animationDuration = min(((animationDistance / viewportSize) * travelTime).roundToInt(), travelTime)\n }\n\n // Don't let the animation duration go to 0.\n animationDuration = max(1, animationDuration)\n\n // Determine the pan velocity, in radians per millisecond.\n panVelocity = panDistance / animationDuration\n\n // Determine the range velocity, in meters per millisecond.\n rangeVelocity = rangeDistance / animationDuration // meters per millisecond\n\n // Set up the animation timer.\n setUpAnimationTimer()\n }\n\n protected open fun setUpAnimationTimer() {\n animationJob?.cancel()\n animationJob = mainScope.launch {\n delay(animationFrequency)\n if (!isActive || !update()) completionCallback?.invoke(this@GoToAnimator) else setUpAnimationTimer()\n }\n }\n\n /**\n * This is the timer callback function. It invokes the range animator and the pan animator.\n */\n protected open fun update(): Boolean {\n val currentPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range)\n val continueUpdateRange = updateRange(currentPosition)\n val continueUpdateLocation = updateLocation(currentPosition)\n WorldWind.requestRedraw()\n return continueUpdateRange || continueUpdateLocation\n }\n\n /**\n * This function animates the range.\n */\n protected open fun updateRange(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n\n // If we haven't reached the maximum altitude, then step-wise increase it. Otherwise, step-wise change\n // the range towards the target altitude.\n val continueAnimation = if (maxAltitudeReachedTime == Instant.DISTANT_PAST) {\n val elapsedTime = Clock.System.now() - startTime\n val nextRange = min(startPosition.altitude + rangeVelocity * elapsedTime.inWholeMilliseconds, maxAltitude)\n // We're done if we get withing 1 meter of the desired range.\n if (abs(lookAt.range - nextRange) < 1) maxAltitudeReachedTime = Clock.System.now()\n lookAt.range = nextRange\n true\n } else {\n val elapsedTime = Clock.System.now() - maxAltitudeReachedTime\n val nextRange = if (maxAltitude > targetPosition.altitude) {\n max(maxAltitude - (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n } else {\n min(maxAltitude + (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n }\n lookAt.range = nextRange\n // We're done if we get withing 1 meter of the desired range.\n abs(lookAt.range - targetPosition.altitude) > 1\n }\n\n engine.cameraFromLookAt(lookAt)\n\n return continueAnimation\n }\n\n /**\n * This function animates the pan to the desired location.\n */\n protected open fun updateLocation(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n val elapsedTime = Clock.System.now() - startTime\n val distanceTravelled = startPosition.greatCircleDistance(currentPosition)\n val distanceRemaining = currentPosition.greatCircleDistance(targetPosition)\n val azimuthToTarget = currentPosition.greatCircleAzimuth(targetPosition)\n val distanceForNow = panVelocity * elapsedTime.inWholeMilliseconds\n val nextDistance = min(distanceForNow - distanceTravelled, distanceRemaining)\n val nextLocation = currentPosition.greatCircleLocation(azimuthToTarget, nextDistance, Location())\n var locationReached = false\n\n lookAt.position.latitude = nextLocation.latitude\n lookAt.position.longitude = nextLocation.longitude\n engine.cameraFromLookAt(lookAt)\n\n // We're done if we're within a meter of the desired location.\n if (nextDistance < 1.0 / engine.globe.equatorialRadius) locationReached = true\n\n return !locationReached\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Renderable\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.roundToInt\n\nopen class PickedObject protected constructor(\n val identifier: Int, val userObject: Any, val layer: Layer? = null, val terrainPosition: Position? = null\n) {\n var isOnTop = false\n protected set\n val isTerrain get() = terrainPosition != null\n\n companion object {\n @JvmStatic\n fun fromRenderable(identifier: Int, renderable: Renderable, layer: Layer) =\n PickedObject(identifier, renderable.pickDelegate ?: renderable, layer)\n\n @JvmStatic\n fun fromTerrain(identifier: Int, position: Position): PickedObject {\n val positionCopy = Position(position)\n return PickedObject(identifier, positionCopy, terrainPosition = positionCopy)\n }\n\n @JvmStatic\n fun identifierToUniqueColor(identifier: Int, result: Color): Color {\n val r8 = identifier shr 16 and 0xFF\n val g8 = identifier shr 8 and 0xFF\n val b8 = identifier and 0xFF\n result.red = r8 / 0xFF.toFloat()\n result.green = g8 / 0xFF.toFloat()\n result.blue = b8 / 0xFF.toFloat()\n result.alpha = 1f\n return result\n }\n\n @JvmStatic\n fun uniqueColorToIdentifier(color: Color): Int {\n val r8 = (color.red * 0xFF).roundToInt()\n val g8 = (color.green * 0xFF).roundToInt()\n val b8 = (color.blue * 0xFF).roundToInt()\n return r8 shl 16 or (g8 shl 8) or b8\n }\n }\n\n internal fun markOnTop() { isOnTop = true }\n\n override fun toString() = \"PickedObject(isOnTop=$isOnTop, identifier=$identifier, userObject=$userObject, layer=$layer, terrainPosition=$terrainPosition)\"\n}","package earth.worldwind\n\nopen class PickedObjectList {\n protected val objectsById = mutableMapOf()\n val objects get() = objectsById.values\n val count get() = objectsById.size\n val topPickedObject get() = objects.firstOrNull { po -> po.isOnTop }\n val terrainPickedObject get() = objects.firstOrNull { po -> po.isTerrain }\n val hasNonTerrainObjects get() = objects.firstOrNull { po -> !po.isTerrain } != null\n\n fun offerPickedObject(pickedObject: PickedObject) { objectsById[pickedObject.identifier] = pickedObject }\n\n fun pickedObjectWithId(identifier: Int) = objectsById[identifier]\n\n fun clearPickedObjects() = objectsById.clear()\n\n fun keepTopAndTerrainObjects() = objectsById.entries.removeAll { e -> !e.value.isOnTop && !e.value.isTerrain }\n\n override fun toString() = objects.joinToString(\", \", \"PickedObjectList{\", \"}\") { po -> po.toString() }\n}",null,"package earth.worldwind\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.frame.BasicFrameController\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.frame.FrameController\nimport earth.worldwind.frame.FrameMetrics\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport earth.worldwind.globe.terrain.BasicTessellator\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.kgl.*\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.asSharedFlow\nimport kotlinx.datetime.TimeZone\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Main WorldWind model, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\nopen class WorldWind @JvmOverloads constructor(\n /**\n * Platform-dependent OpenGL implementation\n */\n gl: Kgl,\n /**\n * Platform-dependent GPU resource cache manager.\n */\n var renderResourceCache: RenderResourceCache,\n /**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models.\n */\n var globe: Globe = Globe(Ellipsoid.WGS84, Wgs84Projection()),\n /**\n * Terrain model tessellator.\n */\n var tessellator: Tessellator = BasicTessellator(),\n /**\n * Frame rendering and drawing logic implementation.\n */\n var frameController: FrameController = BasicFrameController(),\n /**\n * Helper class implementing [FrameMetrics] to measure performance.\n */\n var frameMetrics: FrameMetrics? = null\n) {\n /**\n * List of renderable object layers to be displayed by this WorldWind.\n */\n var layers = LayerList()\n /**\n * Current user view point parameters: location, altitude, orientation and field of view.\n */\n var camera = Camera()\n /**\n * The [GoToAnimator] used by this WorldWindow to respond to its goTo method.\n */\n val goToAnimator = GoToAnimator(this)\n /**\n * Screen area occupied by this WorldWind.\n */\n val viewport = Viewport()\n /**\n * Keep pixel scale when changing the height of viewport by adapting field of view\n */\n var isKeepScale = true\n /**\n * Scale of logical pixel size to hardware display pixel size. Used to adopt general level of details to screen density.\n */\n var densityFactor = 1f\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setDensityFactor\", \"invalidDensityFactor\"\n )\n }\n field = value\n }\n /**\n * Vertical exaggeration (VE) is a scale that is used to emphasize vertical features, which might be too small\n * to identify relative to the horizontal scale.\n */\n var verticalExaggeration = 1.0\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setVerticalExaggeration\", \"invalidVerticalExaggeration\"\n )\n }\n field = value\n }\n /**\n * Atmosphere altitude above ellipsoid. Used to control when objects are clipped by the far plain behind the globe.\n */\n var atmosphereAltitude = 160000.0\n /**\n * Context related to frame rendering phase\n */\n protected val rc = RenderContext()\n /**\n * Context related to frame drawing phase\n */\n protected val dc = DrawContext(gl)\n /**\n * The number of bits in the depth buffer associated with this WorldWind.\n */\n protected var depthBits = 0\n private val scratchModelview = Matrix4()\n private val scratchProjection = Matrix4()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n init {\n // Initialize default camera location based on user time zone\n val initLocation = Location.fromTimeZone(TimeZone.currentSystemDefault())\n // Fit globe to screen vertically with 10% margin.\n val initAltitude = distanceToViewGlobeExtents * 1.1\n camera.position.set(initLocation.latitude, initLocation.longitude, initAltitude)\n }\n\n /**\n * Reset internal WorldWind state to initial values.\n */\n open fun reset() {\n // Cancel all async jobs\n renderResourceCache.cancel()\n\n // Clear the render resource cache; it's entries are now invalid.\n renderResourceCache.clear()\n\n // Invalidate elevation model.\n globe.elevationModel.invalidate()\n\n // Clear the viewport dimensions.\n viewport.setEmpty()\n\n // Reset screen density factor.\n densityFactor = 1f\n }\n\n /**\n * Specify the default WorldWind OpenGL state.\n */\n open fun setupDrawContext() {\n dc.gl.enable(GL_BLEND)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.enableVertexAttribArray(0)\n dc.gl.disable(GL_DITHER)\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.depthFunc(GL_LEQUAL)\n\n // Clear any cached OpenGL resources and state, which are now invalid.\n dc.contextLost()\n\n // Set the WorldWindow's depth bits.\n depthBits = dc.gl.getParameteri(GL_DEPTH_BITS)\n }\n\n /**\n * Apply new viewport dimensions.\n */\n open fun setupViewport(width: Int, height: Int) {\n dc.gl.viewport(0, 0, width, height)\n\n // Keep pixel scale by adapting field of view on view port resize\n if (isKeepScale && viewport.height != 0) {\n try {\n camera.fieldOfView *= height / viewport.height.toDouble()\n } catch (ignore: IllegalArgumentException) {\n // Keep original field of view in case new one does not fit requirements\n }\n }\n\n viewport.set(0, 0, width, height)\n }\n\n /**\n * Get look at orientation and range based on current camera position and specified geographic position\n *\n * @param result Pre-allocated look at object\n * @param lookAtPosition Custom \"look at\" position. Terrain position on viewport center will be used by default.\n * @return Look at orientation and range based on current camera position and specified geographic position\n */\n open fun cameraAsLookAt(result: LookAt, lookAtPosition: Position? = null): LookAt {\n if (lookAtPosition != null) {\n cameraToViewingTransform(scratchModelview)\n globe.geographicToCartesian(lookAtPosition.latitude, lookAtPosition.longitude, lookAtPosition.altitude, scratchPoint)\n result.position.copy(lookAtPosition)\n } else if (viewport.isEmpty || !pickTerrainPosition(viewport.width / 2.0, viewport.height / 2.0, result.position)) {\n // Use point on horizon as a backup\n cameraToViewingTransform(scratchModelview)\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n scratchRay.pointAt(globe.horizonDistance(cameraPosition.altitude), scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result.position)\n }\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n result.range = -scratchModelview.m[11]\n result.heading = scratchModelview.extractHeading(camera.roll) // disambiguate heading and roll\n result.tilt = scratchModelview.extractTilt()\n result.roll = camera.roll // roll passes straight through\n return result\n }\n\n /**\n * Translate the original view's modelview matrix to account for the gesture's change.\n *\n * @param lookAt the look at position, orientation and range to be modified by translation.\n * @param fromPoint the start point of translation.\n * @param toPoint the finish point of translation.\n */\n open fun moveLookAt(lookAt: LookAt, fromPoint: Vec2, toPoint: Vec2) {\n // Convert screen points to points on the globe ellipsoid. Do not transform if any point is outside the globe.\n val from = Vec3()\n if (!rayThroughScreenPoint(fromPoint.x, fromPoint.y, scratchRay) || !globe.intersect(scratchRay, from)) return\n val to = Vec3()\n if (!rayThroughScreenPoint(toPoint.x, toPoint.y, scratchRay) || !globe.intersect(scratchRay, to)) return\n\n // Transform the original modelview matrix according to specified points.\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.multiplyByTranslation(to.x - from.x, to.y - from.y, to.z - from.z)\n\n // Compute the globe point at the screen center from the perspective of the transformed view.\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n if (!globe.intersect(scratchRay, scratchPoint)) return\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, lookAt.position)\n\n // Convert the transformed modelview matrix to view properties.\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n lookAt.range = -scratchModelview.m[11]\n lookAt.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n lookAt.tilt = scratchModelview.extractTilt()\n lookAt.roll = lookAt.roll // roll passes straight through\n }\n\n /**\n * Set camera position and orientation, based on look at position, orientation and range\n *\n * @param lookAt Look at position, orientation and range\n */\n open fun cameraFromLookAt(lookAt: LookAt) {\n applyLookAtLimits(lookAt)\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.extractEyePoint(scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, camera.position)\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n camera.altitudeMode = AltitudeMode.ABSOLUTE // Calculated position is absolute\n camera.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n camera.tilt = scratchModelview.extractTilt()\n camera.roll = lookAt.roll // roll passes straight through\n\n // Check if camera altitude is not under the surface\n val position = camera.position\n val elevation = globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration + COLLISION_THRESHOLD\n if (elevation > position.altitude) {\n // Set camera altitude above the surface\n position.altitude = elevation\n // Compute new camera point\n globe.geographicToCartesian(position.latitude, position.longitude, position.altitude, scratchPoint)\n // Compute look at point\n globe.geographicToCartesian(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude, scratchRay.origin\n )\n // Compute normal to globe in look at point\n globe.geographicToCartesianNormal(lookAt.position.latitude, lookAt.position.longitude, scratchRay.direction)\n // Calculate tilt angle between new camera point and look at point\n scratchPoint.subtract(scratchRay.origin).normalize()\n val dot = scratchRay.direction.dot(scratchPoint)\n if (dot >= -1 && dot <= 1) camera.tilt = acos(dot).radians\n }\n }\n\n /**\n * More efficient way to determine terrain position at screen point using terrain from last rendered frame.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return true if the screen point could be converted; false if the screen point is not on the terrain\n */\n open fun pickTerrainPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && tessellator.lastTerrain.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param point the Cartesian point in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun cartesianToScreenPoint(point: Vec3, result: Vec2) = cartesianToScreenPoint(point.x, point.y, point.z, result)\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param x the Cartesian point's x component in meters\n * @param y the Cartesian point's y component in meters\n * @param z the Cartesian point's z component in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun cartesianToScreenPoint(x: Double, y: Double, z: Double, result: Vec2): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the WorldWindow's modelview-projection matrix.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview)\n\n // Transform the Cartesian point to OpenGL screen coordinates. Complete the transformation by converting to\n // viewport coordinates and discarding the screen Z component.\n if (scratchProjection.project(x, y, z, viewport, scratchPoint)) {\n result.x = scratchPoint.x\n result.y = viewport.height - scratchPoint.y\n return true\n }\n return false\n }\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param position the geographic position\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun geographicToScreenPoint(position: Position, result: Vec2) =\n geographicToScreenPoint(position.latitude, position.longitude, position.altitude, result)\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun geographicToScreenPoint(\n latitude: Angle, longitude: Angle, altitude: Double, result: Vec2\n ): Boolean {\n // Convert the position from geographic coordinates to Cartesian coordinates.\n globe.geographicToCartesian(latitude, longitude, altitude, scratchPoint)\n\n // Convert the position from Cartesian coordinates to screen coordinates.\n return cartesianToScreenPoint(scratchPoint, result)\n }\n\n /**\n * Converts a screen point to the geographic coordinates on the globe ellipsoid, ignoring terrain altitude.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result Pre-allocated Position receives the geographic coordinates\n *\n * @return true if the screen point could be converted; false if the screen point is not on the globe\n */\n open fun screenPointToGroundPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && globe.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Computes a Cartesian coordinate ray that passes through a screen point.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated Line in which to return the computed ray\n *\n * @return the result set to the computed ray in Cartesian coordinates\n */\n open fun rayThroughScreenPoint(x: Double, y: Double, result: Line): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the inverse modelview-projection matrix corresponding to the WorldWindow's current Camera state.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview).invert()\n\n // Convert from viewport coordinates to OpenGL screen coordinates by inverting the Y axis.\n // Transform the screen point to Cartesian coordinates at the near and far clip planes, store the result in the\n // ray's origin and direction, respectively. Complete the ray direction by subtracting the near point from the\n // far point and normalizing.\n if (scratchProjection.unProject(x, viewport.height - y, viewport, result.origin, result.direction)) {\n result.direction.subtract(result.origin).normalize()\n return true\n }\n return false\n }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n open fun pixelSizeAtDistance(distance: Double): Double {\n val tanFovY2 = tan(camera.fieldOfView.inRadians * 0.5)\n val frustumHeight = 2 * distance * tanFovY2\n return frustumHeight / viewport.height\n }\n\n /**\n * Returns the minimum distance from the globe's surface necessary to make the globe's extents visible in this World\n * Window.\n */\n val distanceToViewGlobeExtents get(): Double {\n val sinFovY2 = sin(camera.fieldOfView.inRadians * 0.5)\n val radius = globe.equatorialRadius\n return radius / sinFovY2 - radius\n }\n\n open fun renderFrame(frame: Frame): Boolean {\n // Mark the beginning of a frame render.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginRendering(rc)\n\n // Set up the render context according to the WorldWindow's current state.\n rc.globe = globe\n rc.terrainTessellator = tessellator\n rc.layers = layers\n rc.camera = camera\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n rc.horizonDistance = globe.horizonDistance(cameraPosition.altitude)\n globe.geographicToCartesian(\n cameraPosition.latitude, cameraPosition.longitude, cameraPosition.altitude, rc.cameraPoint\n )\n rc.renderResourceCache = renderResourceCache\n rc.verticalExaggeration = verticalExaggeration\n rc.densityFactor = densityFactor\n rc.atmosphereAltitude = atmosphereAltitude\n rc.elevationModelTimestamp = globe.elevationModel.timestamp\n\n // Configure the frame's Cartesian modelview matrix and eye coordinate projection matrix.\n computeViewingTransform(frame.projection, frame.modelview)\n frame.viewport.copy(viewport)\n// frame.infiniteProjection.setToInfiniteProjection(viewport.width, viewport.height, camera.fieldOfView, 1.0)\n// frame.infiniteProjection.multiplyByMatrix(frame.modelview)\n rc.viewport.copy(frame.viewport)\n rc.projection.copy(frame.projection)\n rc.modelview.copy(frame.modelview)\n rc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n if (pickMode) rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport, frame.pickViewport!!)\n else rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport)\n\n // Accumulate the Drawables in the frame's drawable queue and drawable terrain data structures.\n rc.drawableQueue = frame.drawableQueue\n rc.drawableTerrain = frame.drawableTerrain\n rc.pickedObjects = frame.pickedObjects\n rc.pickDeferred = frame.pickDeferred\n rc.pickViewport = frame.pickViewport\n rc.pickPoint = frame.pickPoint\n rc.pickRay = frame.pickRay\n rc.isPickMode = frame.isPickMode\n\n // Let the frame controller render the WorldWindow's current state.\n frameController.renderFrame(rc)\n\n // Propagate redraw requests submitted during rendering.\n val isRedrawRequested = !pickMode && rc.isRedrawRequested\n\n // Mark the end of a frame render.\n if (!pickMode) frameMetrics?.endRendering(rc)\n\n // Reset the render context's state in preparation for the next frame.\n rc.reset()\n\n return isRedrawRequested\n }\n\n open fun drawFrame(frame: Frame) {\n // Mark the beginning of a frame draw.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginDrawing(dc)\n\n // Set up the draw context according to the frame's current state.\n dc.eyePoint.copy(frame.modelview.extractEyePoint(dc.eyePoint))\n dc.viewport.copy(frame.viewport)\n dc.projection.copy(frame.projection)\n dc.modelview.copy(frame.modelview)\n dc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n// dc.infiniteProjection.copy(frame.infiniteProjection)\n dc.screenProjection.setToScreenProjection(\n frame.viewport.width.toDouble(), frame.viewport.height.toDouble()\n )\n\n // Process the drawables in the frame's drawable queue and drawable terrain data structures.\n dc.drawableQueue = frame.drawableQueue\n dc.drawableTerrain = frame.drawableTerrain\n dc.pickedObjects = frame.pickedObjects\n dc.pickViewport = frame.pickViewport\n dc.pickPoint = frame.pickPoint\n dc.isPickMode = frame.isPickMode\n\n // Let the frame controller draw the frame.\n frameController.drawFrame(dc)\n\n // Increment render resource cache age on each frame\n renderResourceCache.incAge()\n\n // Release resources evicted during the previous frame.\n renderResourceCache.releaseEvictedResources(dc)\n\n // Mark the end of a frame draw.\n if (!pickMode) frameMetrics?.endDrawing(dc)\n\n // Reset the draw context's state in preparation for the next frame.\n dc.reset()\n }\n\n protected open fun computeViewingTransform(projection: Matrix4, modelview: Matrix4) {\n // Compute the clip plane distances. The near distance is set to a large value that does not clip the globe's\n // surface. The far distance is set to the smallest value that does not clip the atmosphere.\n val eyeAltitude = globe.getAbsolutePosition(camera.position, camera.altitudeMode).altitude\n val eyeHorizon = globe.horizonDistance(eyeAltitude)\n val atmosphereHorizon = globe.horizonDistance(atmosphereAltitude)\n\n // The far distance is set to the smallest value that does not clip the atmosphere.\n var far = eyeHorizon + atmosphereHorizon\n if (far < 1e3) far = 1e3\n\n //The near distance is set to a large value that does not clip the globe's surface.\n val maxDepthValue = (1 shl depthBits) - 1\n val farResolution = 10.0\n var near = far / (maxDepthValue / (1 - farResolution / far) - maxDepthValue + 1)\n\n // Prevent the near clip plane from intersecting the terrain.\n val distanceToSurface = eyeAltitude - globe.getElevation(\n camera.position.latitude, camera.position.longitude\n ) * verticalExaggeration\n if (distanceToSurface > 0) {\n val tanHalfFov = tan(0.5 * camera.fieldOfView.inRadians)\n val maxNearDistance = distanceToSurface / (2 * sqrt(2 * tanHalfFov * tanHalfFov + 1))\n if (near > maxNearDistance) near = maxNearDistance\n }\n if (near < 1) near = 1.0\n\n // Compute a perspective projection matrix given the WorldWindow's viewport, field of view, and clip distances.\n projection.setToPerspectiveProjection(viewport.width, viewport.height, camera.fieldOfView, near, far)\n\n // Compute a Cartesian transform matrix from the Camera.\n cameraToViewingTransform(modelview)\n }\n\n protected open fun cameraToViewingTransform(result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the camera's position.\n geographicToCartesianTransform(camera.position, camera.altitudeMode, result)\n\n // Transform by the heading, tilt and roll.\n result.multiplyByRotation(0.0, 0.0, 1.0, -camera.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, camera.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, camera.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun lookAtToViewingTransform(lookAt: LookAt, result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the look-at's position.\n geographicToCartesianTransform(lookAt.position, lookAt.altitudeMode, result)\n\n // Transform by the heading and tilt.\n result.multiplyByRotation(0.0, 0.0, 1.0, -lookAt.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, lookAt.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, lookAt.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Transform by the range.\n result.multiplyByTranslation(0.0, 0.0, lookAt.range)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun geographicToCartesianTransform(position: Position, altitudeMode: AltitudeMode, result: Matrix4): Matrix4 {\n when (altitudeMode) {\n AltitudeMode.ABSOLUTE -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, position.altitude, result\n )\n AltitudeMode.CLAMP_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration, result\n )\n AltitudeMode.RELATIVE_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, (position.altitude + globe.getElevation(\n position.latitude, position.longitude\n )) * verticalExaggeration, result\n )\n }\n return result\n }\n\n protected open fun applyLookAtLimits(lookAt: LookAt) {\n // Clamp latitude to between -90 and +90, and normalize longitude to between -180 and +180.\n lookAt.position.latitude = lookAt.position.latitude.clampLatitude()\n lookAt.position.longitude = lookAt.position.longitude.normalizeLongitude()\n\n // Clamp range to values greater than 1 in order to prevent degenerating to a first-person lookAt when\n // range is zero.\n lookAt.range = lookAt.range.coerceIn(10.0, distanceToViewGlobeExtents * 2)\n\n // Normalize heading to between -180 and +180.\n lookAt.heading = lookAt.heading.normalize180()\n\n // Clamp tilt to between 0 and +90 to prevent the viewer from going upside down.\n lookAt.tilt = lookAt.tilt.inDegrees.coerceIn(0.0, 90.0).degrees\n\n // Normalize heading to between -180 and +180.\n lookAt.roll = lookAt.roll.normalize180()\n\n // Apply 2D limits when the globe is 2D.\n if (globe.is2D) {\n // Clamp range to prevent more than 360 degrees of visible longitude. Assumes a 45 degree horizontal\n // field of view.\n lookAt.range = lookAt.range.coerceIn(1.0, 2.0 * PI * globe.equatorialRadius)\n\n // Force tilt to 0 when in 2D mode to keep the viewer looking straight down.\n lookAt.tilt = Angle.ZERO\n }\n }\n\n companion object {\n protected const val COLLISION_THRESHOLD = 10.0 // 10m above surface\n\n private val _events = MutableSharedFlow(extraBufferCapacity = 1)\n\n /**\n * Provides a global mechanism for broadcasting notifications within the WorldWind library.\n */\n @JvmStatic\n val events = _events.asSharedFlow()\n\n /**\n * Requests that all WorldWindow instances update their display. Internally, this dispatches a REQUEST_REDRAW\n * message to the WorldWind message center.\n */\n @JvmStatic\n fun requestRedraw() { _events.tryEmit(Event.RequestRedraw) }\n\n /**\n * Requests render resource cache to remove specified resource ID from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n @JvmStatic\n suspend fun unmarkResourceAbsent(resourceId: Int) { _events.emit(Event.UnmarkResourceAbsent(resourceId)) }\n }\n\n sealed interface Event {\n /**\n * Event requesting WorldWindow instances to update their display.\n */\n object RequestRedraw : Event\n /**\n * Event requesting RenderResourceCache to un-mark resource from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n data class UnmarkResourceAbsent(val resourceId: Int) : Event\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport earth.worldwind.util.kgl.GL_UNSIGNED_SHORT\nimport kotlin.jvm.JvmStatic\n\nopen class BasicDrawableTerrain protected constructor(): DrawableTerrain {\n override val sector = Sector()\n override val vertexOrigin = Vec3()\n val lineElementRange = Range()\n val triStripElementRange = Range()\n var vertexPoints: FloatBufferObject? = null\n var vertexTexCoords: FloatBufferObject? = null\n var elements: ShortBufferObject? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): BasicDrawableTerrain {\n val instance = pool.acquire() ?: BasicDrawableTerrain()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n vertexPoints = null\n vertexTexCoords = null\n elements = null\n pool?.release(this)\n pool = null\n }\n\n override fun useVertexPointAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexPoints?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 3, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexTexCoordAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexTexCoords?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 2, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun drawLines(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.drawElements(\n GL_LINES, lineElementRange.length,\n GL_UNSIGNED_SHORT, lineElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun drawTriangles(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.drawElements(\n GL_TRIANGLE_STRIP, triStripElementRange.length,\n GL_UNSIGNED_SHORT, triStripElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun draw(dc: DrawContext) {\n drawTriangles(dc)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Framebuffer\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.kgl.*\n\nopen class DrawContext(val gl: Kgl) {\n val eyePoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n// val infiniteProjection = Matrix4()\n val screenProjection = Matrix4()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var isPickMode = false\n private var framebuffer = KglFramebuffer.NONE\n private var program = KglProgram.NONE\n private var textureUnit = GL_TEXTURE0\n private val textures = Array(32) {KglTexture.NONE}\n private var arrayBuffer = KglBuffer.NONE\n private var elementArrayBuffer = KglBuffer.NONE\n private var scratchFramebufferCache: Framebuffer? = null\n private var unitSquareBufferCache: FloatBufferObject? = null\n private var scratchBuffer = ByteArray(4)\n private val pixelArray = ByteArray(4)\n /**\n * Returns count of terrain drawables in queue\n */\n val drawableTerrainCount get() = drawableTerrain?.count?:0\n /**\n * Returns the name of the OpenGL framebuffer object that is currently active.\n */\n val currentFramebuffer get() = framebuffer\n /**\n * Returns the name of the OpenGL program object that is currently active.\n */\n val currentProgram get() = program\n /**\n * Returns the OpenGL multitexture unit that is currently active. Returns a value from the GL_TEXTUREi enumeration,\n * where i ranges from 0 to 32.\n */\n val currentTextureUnit get() = textureUnit\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the active multitexture unit. The active\n * multitexture unit may be determined by calling currentTextureUnit.\n */\n val currentTexture get() = currentTexture(textureUnit)\n /**\n * Returns an OpenGL framebuffer object suitable for offscreen drawing. The framebuffer has a 32-bit color buffer\n * and a 32-bit depth buffer, both attached as OpenGL texture 2D objects.\n *
\n * The framebuffer may be used by any drawable and for any purpose. However, the draw context makes no guarantees\n * about the framebuffer's contents. Drawables must clear the framebuffer before use, and must assume its contents\n * may be modified by another drawable, either during the current frame or in a subsequent frame.\n *
\n * The OpenGL framebuffer object is created on first use and cached. Subsequent calls to this method return the\n * cached buffer object.\n */\n val scratchFramebuffer get() = scratchFramebufferCache ?: Framebuffer().apply {\n val colorAttachment = Texture(1024, 1024, GL_RGBA, GL_UNSIGNED_BYTE, true)\n val depthAttachment = Texture(1024, 1024, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, true)\n // TODO consider modifying Texture's tex parameter behavior in order to make this unnecessary\n depthAttachment.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n depthAttachment.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n attachTexture(this@DrawContext, colorAttachment, GL_COLOR_ATTACHMENT0)\n attachTexture(this@DrawContext, depthAttachment, GL_DEPTH_ATTACHMENT)\n }.also { scratchFramebufferCache = it }\n /**\n * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and\n * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order\n * required by a triangle strip.\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val unitSquareBuffer get() = unitSquareBufferCache ?: FloatBufferObject(\n GL_ARRAY_BUFFER, floatArrayOf(0f, 1f, 0f, 0f, 1f, 1f, 1f, 0f)\n ).also { unitSquareBufferCache = it }\n /**\n * Returns a scratch list suitable for accumulating entries during drawing. The list is cleared before each frame,\n * otherwise its contents are undefined.\n */\n val scratchList = mutableListOf()\n\n fun reset() {\n eyePoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n screenProjection.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickViewport = null\n pickPoint = null\n isPickMode = false\n scratchBuffer.fill(0)\n scratchList.clear()\n }\n\n fun contextLost() {\n // Clear objects and values associated with the current OpenGL context.\n framebuffer = KglFramebuffer.NONE\n program = KglProgram.NONE\n textureUnit = GL_TEXTURE0\n arrayBuffer = KglBuffer.NONE\n elementArrayBuffer = KglBuffer.NONE\n scratchFramebufferCache = null\n unitSquareBufferCache = null\n textures.fill(KglTexture.NONE)\n }\n\n fun peekDrawable() = drawableQueue?.peekDrawable()\n\n fun pollDrawable() = drawableQueue?.pollDrawable()\n\n fun rewindDrawables() { drawableQueue?.rewindDrawables() }\n\n fun getDrawableTerrain(index: Int) = drawableTerrain?.getDrawable(index) as DrawableTerrain? ?: error(\"Invalid index\")\n\n /**\n * Makes an OpenGL framebuffer object active. The active framebuffer becomes the target of all OpenGL commands that\n * render to the framebuffer or read from the framebuffer. This has no effect if the specified framebuffer object is\n * already active. The default is framebuffer 0, indicating that the default framebuffer provided by the windowing\n * system is active.\n *\n * @param framebuffer the name of the OpenGL framebuffer object to make active, or 0 to make the default\n * framebuffer provided by the windowing system active\n */\n fun bindFramebuffer(framebuffer: KglFramebuffer) {\n if (this.framebuffer != framebuffer) {\n this.framebuffer = framebuffer\n gl.bindFramebuffer(GL_FRAMEBUFFER, framebuffer)\n }\n }\n\n /**\n * Makes an OpenGL program object active as part of current rendering state. This has no effect if the specified\n * program object is already active. The default is program 0, indicating that no program is active.\n *\n * @param program the name of the OpenGL program object to make active, or 0 to make no program active\n */\n fun useProgram(program: KglProgram) {\n if (this.program != program) {\n this.program = program\n gl.useProgram(program)\n }\n }\n\n /**\n * Specifies the OpenGL multitexture unit to make active. This has no effect if the specified multitexture unit is\n * already active. The default is GL_TEXTURE0.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n */\n fun activeTextureUnit(textureUnit: Int) {\n if (this.textureUnit != textureUnit) {\n this.textureUnit = textureUnit\n gl.activeTexture(textureUnit)\n }\n }\n\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the specified multitexture unit.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n *\n * @return the currently bound texture 2D object, or 0 if no texture object is bound\n */\n fun currentTexture(textureUnit: Int) = textures[textureUnit - GL_TEXTURE0]\n\n /**\n * Makes an OpenGL texture 2D object bound to the current multitexture unit. This has no effect if the specified\n * texture object is already bound. The default is texture 0, indicating that no texture is bound.\n *\n * @param texture the name of the OpenGL texture 2D object to make active, or 0 to make no texture active\n */\n fun bindTexture(texture: KglTexture) {\n val textureUnitIndex = textureUnit - GL_TEXTURE0\n if (textures[textureUnitIndex] != texture) {\n textures[textureUnitIndex] = texture\n gl.bindTexture(GL_TEXTURE_2D, texture)\n }\n }\n\n /**\n * Returns the name of the OpenGL buffer object bound to the specified target buffer.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n *\n * @return the currently bound buffer object, or 0 if no buffer object is bound\n */\n fun currentBuffer(target: Int): KglBuffer {\n return when (target) {\n GL_ARRAY_BUFFER -> arrayBuffer\n GL_ELEMENT_ARRAY_BUFFER -> elementArrayBuffer\n else -> KglBuffer.NONE\n }\n }\n\n /**\n * Makes an OpenGL buffer object bound to a specified target buffer. This has no effect if the specified buffer\n * object is already bound. The default is buffer 0, indicating that no buffer object is bound.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n * @param buffer the name of the OpenGL buffer object to make active\n */\n fun bindBuffer(target: Int, buffer: KglBuffer) {\n if (target == GL_ARRAY_BUFFER && arrayBuffer != buffer) {\n arrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else if (target == GL_ELEMENT_ARRAY_BUFFER && elementArrayBuffer != buffer) {\n elementArrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else {\n gl.bindBuffer(target, buffer)\n }\n }\n\n /**\n * Reads the fragment color at a screen point in the currently active OpenGL frame buffer. The X and Y components\n * indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param result an optional pre-allocated Color in which to return the fragment color, or null to return a new\n * color\n *\n * @return the result argument set to the fragment color, or a new color if the result is null\n */\n fun readPixelColor(x: Int, y: Int, result: Color): Color {\n // Read the fragment pixel as an RGBA 8888 color.\n gl.readPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelArray)\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelArray[0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelArray[1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelArray[2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelArray[3].toInt() and 0xFF) / 0xFF.toFloat()\n return result\n }\n\n /**\n * Reads the unique fragment colors within a screen rectangle in the currently active OpenGL frame buffer. The\n * components indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen rectangle's X component\n * @param y the screen rectangle's Y component\n * @param width the screen rectangle's width\n * @param height the screen rectangle's height\n *\n * @return a set containing the unique fragment colors\n */\n fun readPixelColors(x: Int, y: Int, width: Int, height: Int): Set {\n // Read the fragment pixels as a tightly packed array of RGBA 8888 colors.\n val pixelCount = width * height\n val pixelBuffer = scratchBuffer(pixelCount * 4)\n gl.readPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBuffer)\n val resultSet = mutableSetOf()\n var result = Color()\n for (idx in 0 until pixelCount step 4) {\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelBuffer[idx + 0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelBuffer[idx + 1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelBuffer[idx + 2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelBuffer[idx + 3].toInt() and 0xFF) / 0xFF.toFloat()\n\n // Accumulate the unique colors in a set.\n if (resultSet.add(result)) result = Color()\n }\n return resultSet\n }\n\n /**\n * Returns a scratch NIO buffer suitable for use during drawing. The returned buffer has capacity at least equal to\n * the specified capacity. The buffer is cleared before each frame, otherwise its contents, position, limit and mark\n * are undefined.\n *\n * @param capacity the buffer's minimum capacity in bytes\n *\n * @return the draw context's scratch buffer\n */\n fun scratchBuffer(capacity: Int): ByteArray {\n if (scratchBuffer.size < capacity) scratchBuffer = ByteArray(capacity)\n return scratchBuffer\n }\n}",null,null,"package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.BasicShaderProgram\n\nopen class DrawShapeState internal constructor() {\n companion object {\n const val MAX_DRAW_ELEMENTS = 4\n }\n\n var program: BasicShaderProgram? = null\n var vertexBuffer: FloatBufferObject? = null\n var elementBuffer: AbstractBufferObject? = null\n val vertexOrigin = Vec3()\n var vertexStride = 0\n var enableCullFace = true\n var enableDepthTest = true\n var enableDepthWrite = true\n var depthOffset = 0.0\n protected val color = Color()\n protected var opacity: Float = 1.0f\n protected var lineWidth = 1f\n protected var texture: Texture? = null\n protected val texCoordMatrix = Matrix3()\n private val texCoordAttrib = VertexAttrib()\n internal var primCount = 0\n internal val prims = Array(MAX_DRAW_ELEMENTS) { DrawElements() }\n\n open fun reset() {\n program = null\n vertexBuffer = null\n elementBuffer = null\n vertexOrigin.set(0.0, 0.0, 0.0)\n vertexStride = 0\n enableCullFace = true\n enableDepthTest = true\n depthOffset = 0.0\n color.set(1f, 1f, 1f, 1f)\n opacity = 1.0f\n lineWidth = 1f\n texture = null\n texCoordMatrix.setToIdentity()\n texCoordAttrib.size = 0\n texCoordAttrib.offset = 0\n primCount = 0\n for (idx in 0 until MAX_DRAW_ELEMENTS) prims[idx].texture = null\n }\n\n fun color(color: Color) = apply { this.color.copy(color) }\n\n fun opacity(opacity: Float) = apply { this.opacity = opacity }\n\n fun lineWidth(width: Float) = apply { lineWidth = width }\n\n fun texture(texture: Texture?) = apply { this.texture = texture }\n\n fun texCoordMatrix(matrix: Matrix3) = apply { texCoordMatrix.copy(matrix) }\n\n fun texCoordAttrib(size: Int, offset: Int) = apply {\n texCoordAttrib.size = size\n texCoordAttrib.offset = offset\n }\n\n open fun drawElements(mode: Int, count: Int, type: Int, offset: Int) {\n val prim = prims[primCount++]\n prim.mode = mode\n prim.count = count\n prim.type = type\n prim.offset = offset\n prim.color.copy(color)\n prim.opacity = opacity\n prim.lineWidth = lineWidth\n prim.texture = texture\n prim.texCoordMatrix.copy(texCoordMatrix)\n prim.texCoordAttrib.size = texCoordAttrib.size\n prim.texCoordAttrib.offset = texCoordAttrib.offset\n }\n\n internal open class DrawElements {\n var mode = 0\n var count = 0\n var type = 0\n var offset = 0\n val color = Color()\n var opacity: Float = 1.0f\n var lineWidth = 0f\n var texture: Texture? = null\n val texCoordMatrix = Matrix3()\n val texCoordAttrib = VertexAttrib()\n }\n\n internal open class VertexAttrib {\n var size = 0\n var offset = 0\n }\n}","package earth.worldwind.draw\n\n/**\n * Drawable group provides a standard set of group IDs for organizing WorldWindow drawing into four phases:\n * background, surface, shape, and screen.\n * Accepted values are [BACKGROUND], [SURFACE], [SHAPE] and [SCREEN].\n */\nenum class DrawableGroup {\n /**\n * Indicating drawables displayed before everything else. This group is typically\n * used to display atmosphere and stars before all other drawables.\n */\n BACKGROUND,\n /**\n * Indicating drawables displayed on the globe's surface. Surface drawables are\n * displayed beneath shapes and screen drawables.\n */\n SURFACE,\n /**\n * Indicating shape drawables, such as placemarks, polygons and polylines. Shape\n * drawables are displayed on top of surface drawables, but beneath screen drawables.\n */\n SHAPE,\n /**\n * Indicating drawables displayed in the plane of the screen. Screen drawables are\n * displayed on top of everything else.\n */\n SCREEN;\n}","package earth.worldwind.draw\n\nopen class DrawableLambda(protected val lambda: (dc: DrawContext) -> Unit): Drawable {\n override fun recycle() { }\n /**\n * Performs the actual rendering in OpenGL.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) = lambda(dc)\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableLines protected constructor(): Drawable {\n var vertexPoints: FloatBufferObject? = null\n val mvpMatrix = Matrix4()\n val color = Color()\n var lineWidth = 1f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableLines {\n val instance = pool.acquire() ?: DrawableLines()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n pool?.release(this)\n pool = null\n }\n\n /**\n * Performs the actual rendering of the Placemark.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n\n // Disable texturing.\n program.enableTexture(false)\n\n // Use the leader's color.\n program.loadColor(color)\n\n // Use the leader's modelview-projection matrix.\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable depth testing if requested.\n if (!enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Apply the leader's line width in screen pixels.\n dc.gl.lineWidth(lineWidth)\n\n // Use the leader line as the vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the leader line.\n dc.gl.drawArrays(GL_LINES, 0 /*first*/, 2 /*count*/)\n\n // Restore the default WorldWind OpenGL state.\n if (!enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n\n dc.gl.lineWidth(1f)\n }\n}","package earth.worldwind.draw\n\nimport kotlin.math.max\n\nopen class DrawableQueue internal constructor(){\n protected var size = 0\n protected var position = 0\n protected var entries = arrayOfNulls(size)\n val count get() = size\n /**\n * Sorts drawables by ascending group ID, then ascending order, then by ascending ordinal.\n */\n protected open val sortComparator = Comparator { lhs, rhs ->\n // Comparator accepts only non-null Entries\n var result = lhs!!.groupId.compareTo(rhs!!.groupId)\n if (result == 0) result = lhs.order.compareTo(rhs.order)\n if (result == 0) result = lhs.ordinal.compareTo(rhs.ordinal)\n result\n }\n\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, depth: Double) {\n val capacity = entries.size\n if (capacity == size) {\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries)\n entries = newEntries\n }\n val entry = entries[size] ?: Entry().also { entries[size] = it }\n entry.set(drawable, groupId, depth, size++)\n }\n\n fun getDrawable(index: Int) = if (index < size) entries[index]?.drawable else null\n\n fun peekDrawable() = getDrawable(position)\n\n fun pollDrawable() = getDrawable(position++)\n\n fun rewindDrawables() { position = 0 }\n\n fun sortDrawables() {\n // Limit sort to non-null Entries only\n entries.sortWith(sortComparator, 0, size)\n position = 0\n }\n\n fun clearDrawables() {\n for (idx in 0 until size) {\n entries[idx]?.recycle()\n }\n size = 0\n position = 0\n }\n\n protected open class Entry {\n var drawable: Drawable? = null\n var groupId = DrawableGroup.BACKGROUND\n var order = 0.0\n var ordinal = 0\n\n fun set(drawable: Drawable, groupId: DrawableGroup, order: Double, ordinal: Int) {\n this.drawable = drawable\n this.groupId = groupId\n this.order = order\n this.ordinal = ordinal\n }\n\n fun recycle() {\n drawable?.recycle()\n drawable = null\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableScreenTexture protected constructor(): Drawable {\n val unitSquareTransform = Matrix4()\n val color = Color()\n var opacity: Float = 1.0f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n var texture: Texture? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableScreenTexture {\n val instance = pool.acquire() ?: DrawableScreenTexture()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n texture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.unitSquareBuffer.bindBuffer(dc)) return // vertex buffer failed to bind\n\n // Use the draw context's pick mode and use the drawable's color.\n program.enablePickMode(dc.isPickMode)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Disable writing to the depth buffer.\n dc.gl.depthMask(false)\n\n // Use a unit square as the vertex point and vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 2, GL_FLOAT, false, 0, 0)\n dc.gl.vertexAttribPointer(1 /*vertexTexCoord*/, 2, GL_FLOAT, false, 0, 0)\n\n // Draw this DrawableScreenTextures.\n doDraw(dc, this)\n\n // Draw all DrawableScreenTextures adjacent in the queue that share the same GLSL program.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n val drawable = dc.pollDrawable() as DrawableScreenTexture // take it off the queue\n doDraw(dc, drawable)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n\n protected open fun doDraw(dc: DrawContext, drawable: DrawableScreenTexture) {\n val program = drawable.program ?: return\n\n // Use the drawable's color.\n program.loadColor(drawable.color)\n program.loadOpacity(opacity)\n\n // Attempt to bind the drawable's texture, configuring the shader program appropriately if there is no texture\n // or if the texture failed to bind.\n val texture = drawable.texture\n if (texture?.bindTexture(dc) == true) {\n program.enableTexture(true)\n program.loadTexCoordMatrix(texture.coordTransform)\n } else {\n program.enableTexture(false)\n }\n\n // Use a modelview-projection matrix that transforms the unit square to screen coordinates.\n drawable.mvpMatrix.setToMultiply(dc.screenProjection, drawable.unitSquareTransform)\n program.loadModelviewProjection(drawable.mvpMatrix)\n\n // Disable depth testing if requested.\n if (!drawable.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Draw the unit square as triangles.\n dc.gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4)\n\n // Restore the default WorldWind OpenGL state.\n if (!drawable.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableScreenTexture && program === that.program\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_CULL_FACE\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableShape protected constructor(): Drawable {\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableShape {\n val instance = pool.acquire() ?: DrawableShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n // TODO shape batching\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (drawState.vertexBuffer?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n if (drawState.elementBuffer?.bindBuffer(dc) != true) return // element buffer unspecified or failed to bind\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Use the draw context's modelview projection matrix, transformed to shape local coordinates.\n if (drawState.depthOffset != 0.0) {\n mvpMatrix.copy(dc.projection).offsetProjectionDepth(drawState.depthOffset)\n mvpMatrix.multiplyByMatrix(dc.modelview)\n } else {\n mvpMatrix.copy(dc.modelviewProjection)\n }\n mvpMatrix.multiplyByTranslation(\n drawState.vertexOrigin.x,\n drawState.vertexOrigin.y,\n drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable triangle back face culling if requested.\n if (!drawState.enableCullFace) dc.gl.disable(GL_CULL_FACE)\n\n // Disable depth testing if requested.\n if (!drawState.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Disable depth writing if requested.\n if (!drawState.enableDepthWrite) dc.gl.depthMask(false)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0 /*offset*/)\n\n // Draw the specified primitives.\n for (idx in 0 until drawState.primCount) {\n val prim = drawState.prims[idx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Restore the default WorldWind OpenGL state.\n if (!drawState.enableCullFace) dc.gl.enable(GL_CULL_FACE)\n if (!drawState.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n if (!drawState.enableDepthWrite) dc.gl.depthMask(true)\n dc.gl.lineWidth(1f)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSightline protected constructor(): Drawable {\n val centerTransform = Matrix4()\n var range = 0f\n val visibleColor = Color(0f, 0f, 0f, 0f)\n val occludedColor = Color(0f, 0f, 0f, 0f)\n var program: SightlineProgram? = null\n private var pool: Pool? = null\n private val sightlineView = Matrix4()\n private val matrix = Matrix4()\n private val cubeMapProjection = Matrix4()\n private val cubeMapFace = arrayOf(\n Matrix4().setToRotation(0.0, 0.0, 1.0, NEG90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // positive X\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative X\n Matrix4().setToRotation(1.0, 0.0, 0.0, POS90), // positive Y\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS180).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative Y\n /*Matrix4().setToRotation(1.0, 0.0, 0.0, POS180),*/ // positive Z, intentionally omitted as terrain is never visible when looking up\n Matrix4() // negative Z\n )\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSightline {\n val instance = pool.acquire() ?: DrawableSightline()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n visibleColor.set(0f, 0f, 0f, 0f)\n occludedColor.set(0f, 0f, 0f, 0f)\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the drawable's color.\n program.loadRange(range)\n program.loadColor(visibleColor, occludedColor)\n\n // Configure the cube map projection matrix to capture one face of the cube map as far as the sightline's range.\n cubeMapProjection.setToPerspectiveProjection(1, 1, POS90, 1.0, range.toDouble())\n\n // TODO accumulate only the visible terrain, which can be used in both passes\n // TODO give terrain a bounding box, test with a frustum set using depthviewProjection\n for (i in cubeMapFace.indices) {\n sightlineView.copy(centerTransform)\n sightlineView.multiplyByMatrix(cubeMapFace[i])\n sightlineView.invertOrthonormal()\n if (drawSceneDepth(dc)) drawSceneOcclusion(dc)\n }\n }\n\n protected open fun drawSceneDepth(dc: DrawContext): Boolean {\n val program = program ?: return false\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return false // framebuffer failed to bind\n\n // Clear the framebuffer.\n val depthTexture = framebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n dc.gl.viewport(0, 0, depthTexture.width, depthTexture.height)\n dc.gl.clear(GL_DEPTH_BUFFER_BIT)\n\n // Draw only depth values offset slightly away from the viewer.\n dc.gl.colorMask(r = false, g = false, b = false, a = false)\n dc.gl.enable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(4f, 4f)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Draw the terrain onto one face of the cube map, from the sightline's point of view.\n matrix.setToMultiply(cubeMapProjection, sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Restore the default World Wind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.colorMask(r = true, g = true, b = true, a = true)\n dc.gl.disable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(0f, 0f)\n }\n return true\n }\n\n protected open fun drawSceneOcclusion(dc: DrawContext) {\n val program = program ?: return\n try {\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n val depthTexture = dc.scratchFramebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n if (!depthTexture.bindTexture(dc)) return // framebuffer texture failed to bind\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n matrix.copy(dc.modelviewProjection)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Map the terrain into one face of the cube map, from the sightline's point of view.\n matrix.copy(sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadSightlineProjection(cubeMapProjection, matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Unbind depth attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceColor protected constructor(): Drawable {\n val color = Color()\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceColor {\n val instance = pool.acquire() ?: DrawableSurfaceColor()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceShape protected constructor(): Drawable {\n val sector = Sector()\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val textureMvpMatrix = Matrix4()\n private val identityMatrix3 = Matrix3()\n private val color = Color()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceShape {\n val instance = pool.acquire() ?: DrawableSurfaceShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n\n // Accumulate shapes in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this shape.\n scratchList.add(this)\n\n // Add all shapes that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (next !is DrawableSurfaceShape) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated shapes on each drawable terrain.\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n // Draw the accumulated surface shapes to a texture representing the terrain's sector.\n if (drawShapesToTexture(dc, terrain) > 0) {\n // Draw the texture containing the rasterized shapes onto the terrain geometry.\n drawTextureToTerrain(dc, terrain)\n }\n }\n } finally {\n // Clear the accumulated shapes.\n scratchList.clear()\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n }\n\n protected open fun drawShapesToTexture(dc: DrawContext, terrain: DrawableTerrain): Int {\n // Shapes have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n\n // The terrain's sector defines the geographic region in which to draw.\n val terrainSector = terrain.sector\n\n // Keep track of the number of shapes drawn into the texture.\n var shapeCount = 0\n val program = drawState.program ?: return 0\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return 0 // framebuffer failed to bind\n\n // Clear the framebuffer and disable the depth test.\n val colorAttachment = framebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n dc.gl.viewport(0, 0, colorAttachment.width, colorAttachment.height)\n dc.gl.clear(GL_COLOR_BUFFER_BIT)\n dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Compute the tile common matrix that transforms geographic coordinates to texture fragments appropriate\n // for the terrain sector.\n // TODO capture this in a method on Matrix4\n textureMvpMatrix.setToIdentity()\n textureMvpMatrix.multiplyByTranslation(-1.0, -1.0, 0.0)\n textureMvpMatrix.multiplyByScale(\n 2.0 / terrainSector.deltaLongitude.inDegrees,\n 2.0 / terrainSector.deltaLatitude.inDegrees,\n 0.0\n )\n textureMvpMatrix.multiplyByTranslation(\n -terrainSector.minLongitude.inDegrees,\n -terrainSector.minLatitude.inDegrees,\n 0.0\n )\n for (element in scratchList) {\n // Get the shape.\n val shape = element as DrawableSurfaceShape\n if (!shape.sector.intersectsOrNextTo(terrainSector)) continue\n if (shape.drawState.vertexBuffer?.bindBuffer(dc) != true) continue // vertex buffer unspecified or failed to bind\n if (shape.drawState.elementBuffer?.bindBuffer(dc) != true) continue // element buffer unspecified or failed to bind\n\n // Transform local shape coordinates to texture fragments appropriate for the terrain sector.\n mvpMatrix.copy(textureMvpMatrix)\n mvpMatrix.multiplyByTranslation(\n shape.drawState.vertexOrigin.x,\n shape.drawState.vertexOrigin.y,\n shape.drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Use the shape's vertex point attribute.\n dc.gl.vertexAttribPointer(\n 0 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0\n )\n\n // Draw the specified primitives to the framebuffer texture.\n for (primIdx in 0 until shape.drawState.primCount) {\n val prim = shape.drawState.prims[primIdx]\n program.loadColor(prim.color)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n shape.drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Accumulate the number of shapes drawn into the texture.\n shapeCount++\n }\n } finally {\n // Restore the default WorldWind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.lineWidth(1f)\n }\n return shapeCount\n }\n\n protected open fun drawTextureToTerrain(dc: DrawContext, terrain: DrawableTerrain) {\n val program = drawState.program ?: return\n try {\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)) return // terrain vertex attribute failed to bind\n val colorAttachment = dc.scratchFramebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n if (!colorAttachment.bindTexture(dc)) return // framebuffer texture failed to bind\n\n // Configure the program to draw texture fragments unmodified and aligned with the terrain.\n // TODO consolidate pickMode and enableTexture into a single textureMode\n // TODO it's confusing that pickMode must be disabled during surface shape render-to-texture\n program.enablePickMode(false)\n program.enableTexture(true)\n program.loadTexCoordMatrix(identityMatrix3)\n program.loadColor(color)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n } finally {\n // Unbind color attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceTexture protected constructor(): Drawable {\n val sector = Sector()\n val color = Color()\n var opacity: Float = 1.0f\n val texCoordMatrix = Matrix3()\n var texture: Texture? = null\n var program: SurfaceTextureProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceTexture {\n val instance = pool.acquire() ?: DrawableSurfaceTexture()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(\n program: SurfaceTextureProgram?, sector: Sector?, texture: Texture?, texCoordMatrix: Matrix3?\n ) = apply {\n if (sector != null) this.sector.copy(sector) else this.sector.setEmpty()\n this.opacity = 1f\n this.color.set(1f, 1f, 1f, 1f)\n if (texCoordMatrix != null) this.texCoordMatrix.copy(texCoordMatrix) else this.texCoordMatrix.setToIdentity()\n this.texture = texture\n this.program = program\n }\n\n override fun recycle() {\n texture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Accumulate surface textures in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this surface texture.\n scratchList.add(this)\n\n // Add all surface textures that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated surface textures.\n drawSurfaceTextures(dc)\n } finally {\n // Clear the accumulated surface textures.\n scratchList.clear()\n }\n }\n\n protected open fun drawSurfaceTextures(dc: DrawContext) {\n val program = program ?: return // program unspecified\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Enable the program to display surface textures from multi-texture unit 0.\n program.enableTexture(true)\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Surface textures have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainSector = terrain.sector\n val terrainOrigin = terrain.vertexOrigin\n var usingTerrainAttrs = false\n for (element in scratchList) {\n // Get the surface texture and its sector.\n val texture = element as DrawableSurfaceTexture\n val textureSector = texture.sector\n if (!textureSector.intersects(terrainSector)) continue // texture does not intersect the terrain\n if (!texture.bindTexture(dc)) continue // texture failed to bind\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!usingTerrainAttrs &&\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) {\n // Suppress subsequent tile state application until the next terrain.\n usingTerrainAttrs = true\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n }\n if (!usingTerrainAttrs) continue // terrain vertex attribute failed to bind\n\n // Use tex coord matrices that register the surface texture correctly and mask terrain fragments that\n // fall outside the surface texture's sector.\n program.texCoordMatrix[0].copy(texture.texCoordMatrix)\n program.texCoordMatrix[0].multiplyByTileTransform(terrainSector, textureSector)\n program.texCoordMatrix[1].setToTileTransform(terrainSector, textureSector)\n program.loadTexCoordMatrix()\n\n // Use the surface texture's RGBA color.\n program.loadColor(texture.color)\n // Use the surface texture's opacity.\n program.loadOpacity(texture.opacity)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableSurfaceTexture && program === that.program\n\n private fun bindTexture(dc: DrawContext) = texture?.bindTexture(dc) == true\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableTessellation protected constructor(): Drawable {\n val color = Color()\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val offsetMvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableTessellation {\n val instance = pool.acquire() ?: DrawableTessellation()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(program: BasicShaderProgram?, color: Color?) = apply {\n if (color != null) this.color.copy(color) else this.color.set(1f, 1f, 1f, 1f)\n this.program = program\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n\n // Suppress writes to the OpenGL depth buffer.\n dc.gl.depthMask(false)\n\n // Compute the portion of the modelview projection matrix that remains constant for each tile.\n offsetMvpMatrix.copy(dc.projection)\n offsetMvpMatrix.offsetProjectionDepth(-1.0e-3) // offset this layer's depth values toward the eye\n offsetMvpMatrix.multiplyByMatrix(dc.modelview)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(offsetMvpMatrix)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as lines.\n terrain.drawLines(dc)\n }\n\n // Restore default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObject.Companion.fromTerrain\nimport earth.worldwind.PickedObject.Companion.identifierToUniqueColor\nimport earth.worldwind.PickedObject.Companion.uniqueColorToIdentifier\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableSurfaceColor\nimport earth.worldwind.draw.DrawableSurfaceColor.Companion.obtain\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_COLOR_BUFFER_BIT\nimport earth.worldwind.util.kgl.GL_DEPTH_BUFFER_BIT\nimport kotlin.math.roundToInt\n\nopen class BasicFrameController: FrameController {\n private var pickColor = Color()\n private val pickPoint = Vec3()\n private val pickPos = Position()\n\n override fun renderFrame(rc: RenderContext) {\n rc.terrainTessellator.tessellate(rc)\n if (rc.isPickMode) renderTerrainPickedObject(rc)\n rc.layers.render(rc)\n rc.sortDrawables()\n }\n\n protected open fun renderTerrainPickedObject(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to pick\n\n // Acquire a unique picked object ID for terrain.\n val pickedObjectId = rc.nextPickedObjectId()\n\n // Enqueue a drawable for processing on the OpenGL thread that displays terrain in the unique pick color.\n val pool = rc.getDrawablePool()\n val drawable = obtain(pool)\n identifierToUniqueColor(pickedObjectId, drawable.color)\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n rc.offerSurfaceDrawable(drawable, Double.NEGATIVE_INFINITY)\n\n // If the pick ray intersects the terrain, enqueue a picked object that associates the terrain drawable with its\n // picked object ID and the intersection position.\n val pickRay = rc.pickRay\n if (pickRay != null && rc.terrain.intersect(pickRay, pickPoint)) {\n rc.globe.cartesianToGeographic(pickPoint.x, pickPoint.y, pickPoint.z, pickPos)\n rc.offerPickedObject(fromTerrain(pickedObjectId, pickPos))\n }\n }\n\n override fun drawFrame(dc: DrawContext) {\n clearFrame(dc)\n drawDrawables(dc)\n if (dc.isPickMode) resolvePick(dc)\n }\n\n protected open fun clearFrame(dc: DrawContext) {\n dc.gl.clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)\n }\n\n protected open fun drawDrawables(dc: DrawContext) {\n dc.rewindDrawables()\n while (true) {\n val next = dc.pollDrawable() ?: break\n try {\n next.draw(dc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"BasicFrameController\", \"drawDrawables\",\n \"Exception while drawing '$next'\", e\n )\n // Keep going. Draw the remaining drawables.\n }\n }\n }\n\n protected open fun resolvePick(dc: DrawContext) {\n val pickedObjects = dc.pickedObjects ?: return\n if (pickedObjects.count == 0) return // no eligible objects; avoid expensive calls to glReadPixels\n val pickViewport = dc.pickViewport ?: return\n val pickPointOnly = dc.pickPoint != null && pickViewport.width <= 3 && pickViewport.height <= 3\n var objectFound = false\n\n dc.pickPoint?.let { pickPoint ->\n // Read the fragment color at the pick point.\n dc.readPixelColor(pickPoint.x.roundToInt(), pickPoint.y.roundToInt(), pickColor)\n\n // Convert the fragment color to a picked object ID. It returns zero if the color cannot indicate a picked\n // object ID, in which case no objects have been drawn at the pick point.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject != null) {\n if (!topObject.isTerrain) objectFound = true // Non-terrain object found in pick point\n if (pickPointOnly || objectFound) {\n topObject.markOnTop()\n // Remove picked objects except top and terrain in case of object found or point only mode\n // Using clearPickedObjects and two offerPickedObject is faster than keepTopAndTerrainObjects\n val terrainObject = pickedObjects.terrainPickedObject\n pickedObjects.clearPickedObjects()\n pickedObjects.offerPickedObject(topObject)\n // handles null objects and duplicate objects\n if (terrainObject != null) pickedObjects.offerPickedObject(terrainObject)\n }\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no eligible objects drawn at the pick point\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no objects drawn at the pick point\n }\n\n if (!pickPointOnly && !objectFound) {\n // Read the unique fragment colors in the pick rectangle.\n dc.readPixelColors(pickViewport.x, pickViewport.y, pickViewport.width, pickViewport.height).forEach { pickColor ->\n // Convert the fragment color to a picked object ID. This returns zero if the color cannot indicate a picked\n // object ID.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject?.isTerrain == false) topObject.markOnTop()\n }\n }\n\n // Remove all picked objects not marked as on top or terrain.\n pickedObjects.keepTopAndTerrainObjects()\n }\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.util.Pool\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.jvm.JvmStatic\n\nopen class Frame {\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n// val infiniteProjection = Matrix4()\n val drawableQueue = DrawableQueue()\n val drawableTerrain = DrawableQueue()\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): Frame {\n val instance = pool.acquire() ?: Frame() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n open fun recycle() {\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue.clearDrawables()\n drawableTerrain.clearDrawables()\n pickedObjects?.let{ pickDeferred?.complete(it) } // Complete deferred pick if available\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pool?.release(this) // return this instance to the pool\n pool = null\n }\n}","package earth.worldwind.geom\n\n/**\n * Altitude mode indicates how WorldWind interprets a position's altitude component.\n * Accepted values are [ABSOLUTE], [CLAMP_TO_GROUND] and [RELATIVE_TO_GROUND].\n */\nenum class AltitudeMode {\n /**\n * Indicating an altitude relative to the globe's ellipsoid. Ignores the elevation of\n * the terrain directly beneath the position's latitude and longitude.\n */\n ABSOLUTE,\n /**\n * Indicating an altitude on the terrain. Ignores a position's specified altitude, and\n * always places the position on the terrain.\n */\n CLAMP_TO_GROUND,\n /**\n * Indicating an altitude relative to the terrain. The altitude indicates height above\n * the terrain directly beneath the position's latitude and longitude.\n */\n RELATIVE_TO_GROUND;\n}","package earth.worldwind.geom\n\nimport earth.worldwind.globe.Globe\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * Represents a bounding box in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingBox {\n /**\n * The box's center point.\n */\n internal val center = Vec3(0.0, 0.0, 0.0)\n /**\n * The center point of the box's bottom. (The origin of the R axis.)\n */\n protected val bottomCenter = Vec3(-0.5, 0.0, 0.0)\n /**\n * The center point of the box's top. (The end of the R axis.)\n */\n protected val topCenter = Vec3(0.5, 0.0, 0.0)\n /**\n * The box's R axis, its longest axis.\n */\n protected val r = Vec3(1.0, 0.0, 0.0)\n /**\n * The box's S axis, its mid-length axis.\n */\n protected val s = Vec3(0.0, 1.0, 0.0)\n /**\n * The box's T axis, its shortest axis.\n */\n protected val t = Vec3(0.0, 0.0, 1.0)\n /**\n * The box's radius. (The half-length of its diagonal.)\n */\n protected var radius = sqrt(3.0)\n\n private val endPoint1 = Vec3()\n private val endPoint2 = Vec3()\n private val scratchHeights = FloatArray(NUM_LAT * NUM_LON)\n private val scratchPoints = FloatArray(NUM_LAT * NUM_LON * 3)\n private var coherentPlaneIdx = -1\n\n /**\n * Indicates whether this bounding box is a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return true if this bounding box is a unit box, otherwise false\n */\n val isUnitBox get() = center.x == 0.0 && center.y == 0.0 && center.z == 0.0 && radius == sqrt(3.0)\n\n /**\n * Sets this bounding box to a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return This bounding box set to a unit box\n */\n fun setToUnitBox() = apply {\n center.set(0.0, 0.0, 0.0)\n bottomCenter.set(-0.5, 0.0, 0.0)\n topCenter.set(0.5, 0.0, 0.0)\n\n r.set(1.0, 0.0, 0.0)\n s.set(0.0, 1.0, 0.0)\n t.set(0.0, 0.0, 1.0)\n\n radius = sqrt(3.0)\n }\n\n /**\n * Sets this bounding box such that it minimally encloses a specified array of points.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return This bounding box set to contain the specified array of points.\n */\n fun setToPoints(array: FloatArray, count: Int, stride: Int) = apply {\n // Compute this box's axes by performing a principal component analysis on the array of points.\n val matrix = Matrix4()\n matrix.setToCovarianceOfPoints(array, count, stride)\n matrix.extractEigenvectors(r, s, t)\n r.normalize()\n s.normalize()\n t.normalize()\n\n // Find the extremes along each axis.\n var rMin = Double.POSITIVE_INFINITY\n var rMax = Double.NEGATIVE_INFINITY\n var sMin = Double.POSITIVE_INFINITY\n var sMax = Double.NEGATIVE_INFINITY\n var tMin = Double.POSITIVE_INFINITY\n var tMax = Double.NEGATIVE_INFINITY\n\n val p = Vec3()\n for (idx in 0 until count step stride) {\n p.set(array[idx].toDouble(), array[idx + 1].toDouble(), array[idx + 2].toDouble())\n\n val pdr = p.dot(r)\n if (rMin > pdr) rMin = pdr\n if (rMax < pdr) rMax = pdr\n\n val pds = p.dot(s)\n if (sMin > pds) sMin = pds\n if (sMax < pds) sMax = pds\n\n val pdt = p.dot(t)\n if (tMin > pdt) tMin = pdt\n if (tMax < pdt) tMax = pdt\n }\n\n // Ensure that the extremes along each axis have nonzero separation.\n if (rMax == rMin) rMax = rMin + 1\n if (sMax == sMin) sMax = sMin + 1\n if (tMax == tMin) tMax = tMin + 1\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rMax - rMin\n val sLen = sMax - sMin\n val tLen = tMax - tMin\n\n val rSum = rMax + rMin\n val sSum = sMax + sMin\n val tSum = tMax + tMin\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Sets this bounding box such that it contains a specified sector on a specified globe with min and max terrain\n * height.\n *
\n * To create a bounding box that contains the sector at mean sea level, specify zero for the minimum and maximum\n * height. To create a bounding box that contains the terrain surface in this sector, specify the actual minimum and\n * maximum height values associated with the terrain in the sector, multiplied by the scene's vertical\n * exaggeration.\n *
\n *\n * @param sector the sector for which to create the bounding box\n * @param globe the globe associated with the sector\n * @param minHeight the minimum terrain height within the sector\n * @param maxHeight the maximum terrain height within the sector\n *\n * @return this bounding box set to contain the specified sector\n */\n fun setToSector(sector: Sector, globe: Globe, minHeight: Float, maxHeight: Float) = apply {\n // Compute the cartesian points for a 3x3 geographic grid. This grid captures enough detail to bound the\n // sector. Use minimum elevation at the corners and max elevation everywhere else.\n val heights = scratchHeights\n heights.fill(maxHeight)\n heights[0] = minHeight\n heights[2] = minHeight\n heights[6] = minHeight\n heights[8] = minHeight\n val points = scratchPoints\n globe.geographicToCartesianGrid(sector, NUM_LAT, NUM_LON, heights, 1.0f, null, points, 0, 0)\n\n // Compute the local coordinate axes. Since we know this box is bounding a geographic sector, we use the\n // local coordinate axes at its centroid as the box axes. Using these axes results in a box that has +-10%\n // the volume of a box with axes derived from a principal component analysis, but is faster to compute.\n val centroidLat = sector.centroidLatitude\n val centroidLon = sector.centroidLongitude\n val matrix = globe.geographicToCartesianTransform(centroidLat, centroidLon, 0.0, Matrix4())\n val m = matrix.m\n r.set(m[0], m[4], m[8])\n s.set(m[1], m[5], m[9])\n t.set(m[2], m[6], m[10])\n\n // Find the extremes along each axis.\n val rExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val sExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val tExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n\n val p = Vec3()\n for (idx in points.indices step 3) {\n p.set(points[idx].toDouble(), points[idx + 1].toDouble(), points[idx + 2].toDouble())\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, p)\n }\n\n // If the sector encompasses more than one hemisphere, the 3x3 grid does not capture enough detail to bound\n // the sector. The antipodal points along the parallel through the sector's centroid represent its extremes\n // in longitude. Incorporate those antipodal points into the extremes along each axis.\n if (sector.deltaLongitude.inDegrees > 180.0) {\n val altitude = maxHeight.toDouble()\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.plusDegrees(90.0), altitude, endPoint1)\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.minusDegrees(90.0), altitude, endPoint2)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint1)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint2)\n }\n\n // Sort the axes from most prominent to least prominent. The frustum intersection methods assume that the axes\n // are defined in this way.\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n if (sExtremes[1] - sExtremes[0] < tExtremes[1] - tExtremes[0]) swapAxes(s, sExtremes, t, tExtremes)\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rExtremes[1] - rExtremes[0]\n val sLen = sExtremes[1] - sExtremes[0]\n val tLen = tExtremes[1] - tExtremes[0]\n\n val rSum = rExtremes[1] + rExtremes[0]\n val sSum = sExtremes[1] + sExtremes[0]\n val tSum = tExtremes[1] + tExtremes[0]\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Translates this bounding box by specified components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this bounding box translated by the specified components\n */\n fun translate(x: Double, y: Double, z: Double) = apply {\n center.x += x\n center.y += y\n center.z += z\n\n bottomCenter.x += x\n bottomCenter.y += y\n bottomCenter.z += z\n\n topCenter.x += x\n topCenter.y += y\n topCenter.z += z\n }\n\n fun distanceTo(point: Vec3): Double {\n var minDist2 = Double.POSITIVE_INFINITY\n\n // Start with distance to the center of the box.\n var dist2 = center.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the R axis.\n dist2 = bottomCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the R axis.\n dist2 = topCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the S axis.\n endPoint1.x = center.x - 0.5 * s.x\n endPoint1.y = center.y - 0.5 * s.y\n endPoint1.z = center.z - 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the S axis.\n endPoint1.x = center.x + 0.5 * s.x\n endPoint1.y = center.y + 0.5 * s.y\n endPoint1.z = center.z + 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n return sqrt(minDist2)\n }\n\n /**\n * Indicates whether this bounding box intersects a specified frustum.\n *\n * @param frustum The frustum of interest.\n *\n * @return true if the specified frustum intersects this bounding box, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n endPoint1.copy(bottomCenter)\n endPoint2.copy(topCenter)\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { intersectsAt(it) >= 0 } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || intersectsAt(plane) >= 0).also { if (!it) coherentPlaneIdx = idx }\n }\n }\n\n private fun intersectsAt(plane: Plane): Double {\n val n = plane.normal\n val effectiveRadius = 0.5 * (abs(s.dot(n)) + abs(t.dot(n)))\n\n // Test the distance from the first end-point.\n val dq1 = plane.dot(endPoint1)\n val bq1 = dq1 <= -effectiveRadius\n\n // Test the distance from the second end-point.\n val dq2 = plane.dot(endPoint2)\n val bq2 = dq2 <= -effectiveRadius\n if (bq1 && bq2) return -1.0 // endpoints more distant from plane than effective radius; box is on neg. side of plane\n if (bq1 == bq2) return 0.0 // endpoints less distant from plane than effective radius; can't draw any conclusions\n\n // Compute and return the endpoints of the box on the positive side of the plane\n val dot = n.x * (endPoint1.x - endPoint2.x) + n.y * (endPoint1.y - endPoint2.y) + n.z * (endPoint1.z - endPoint2.z)\n val t = (effectiveRadius + dq1) / dot\n\n // Truncate the line to only that in the positive half-space, e.g., inside the frustum.\n val x = (endPoint2.x - endPoint1.x) * t + endPoint1.x\n val y = (endPoint2.y - endPoint1.y) * t + endPoint1.y\n val z = (endPoint2.z - endPoint1.z) * t + endPoint1.z\n if (bq1) endPoint1.set(x, y, z) else endPoint2.set(x, y, z)\n return t\n }\n\n override fun toString() = \"BoundingBox(center=$center, bottomCenter=$bottomCenter, topCenter=$topCenter, r=$r, s=$s, t=$t, radius=$radius)\"\n\n companion object {\n private const val NUM_LAT = 3\n private const val NUM_LON = 3\n\n private fun adjustExtremes(\n r: Vec3, rExtremes: DoubleArray, s: Vec3, sExtremes: DoubleArray, t: Vec3, tExtremes: DoubleArray, p: Vec3\n ) {\n val pdr = p.dot(r)\n if (rExtremes[0] > pdr) rExtremes[0] = pdr\n if (rExtremes[1] < pdr) rExtremes[1] = pdr\n\n val pds = p.dot(s)\n if (sExtremes[0] > pds) sExtremes[0] = pds\n if (sExtremes[1] < pds) sExtremes[1] = pds\n\n val pdt = p.dot(t)\n if (tExtremes[0] > pdt) tExtremes[0] = pdt\n if (tExtremes[1] < pdt) tExtremes[1] = pdt\n }\n\n private fun swapAxes(a: Vec3, aExtremes: DoubleArray, b: Vec3, bExtremes: DoubleArray) {\n a.swap(b)\n\n var tmp = aExtremes[0]\n aExtremes[0] = bExtremes[0]\n bExtremes[0] = tmp\n\n tmp = aExtremes[1]\n aExtremes[1] = bExtremes[1]\n bExtremes[1] = tmp\n }\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a bounding sphere in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingSphere {\n /**\n * The sphere's center point.\n */\n val center = Vec3()\n /**\n * The sphere's radius.\n */\n var radius = 1.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"BoundingSphere\", \"setRadius\", \"invalidRadius\")\n }\n field = value\n }\n private var coherentPlaneIdx = -1\n\n /**\n * Sets this bounding sphere to the specified center point and radius.\n *\n * @param center the new center point\n * @param radius the new radius\n *\n * @return This bounding sphere with its center point and radius set to the specified values\n */\n fun set(center: Vec3, radius: Double) = apply {\n this.center.copy(center)\n this.radius = radius\n }\n\n /**\n * Indicates whether this bounding sphere intersects a specified frustum.\n *\n * @param frustum the frustum of interest\n *\n * @return true if the specified frustum intersects this bounding sphere, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n // See if the extent's bounding sphere is within or intersects the frustum. The dot product of the extent's\n // center point with each plane's vector provides a distance to each plane. If this distance is less than\n // -radius, the extent is completely clipped by that plane and therefore does not intersect the space enclosed\n // by this Frustum.\n val nr = -radius\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { it.distanceToPoint(center) > nr } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || plane.distanceToPoint(center) > nr).also { if (!it) coherentPlaneIdx = idx }\n }\n\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is BoundingSphere) return false\n return center == other.center && radius == other.radius\n }\n\n override fun hashCode(): Int {\n var result = center.hashCode()\n result = 31 * result + radius.hashCode()\n return result\n }\n\n override fun toString() = \"BoundingSphere(center=$center, radius=$radius)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.AltitudeMode.ABSOLUTE\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class Camera {\n val position = Position()\n var altitudeMode = ABSOLUTE\n var heading = ZERO\n var tilt = ZERO\n var roll = ZERO\n var fieldOfView = 45.0.degrees\n set(value) {\n require(value.inDegrees > 0.0 && value.inDegrees < 180.0) {\n logMessage(ERROR, \"Camera\", \"setFieldOfView\", \"invalidFieldOfView\")\n }\n field = value\n }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle, fieldOfView: Angle\n ) = set(latitude, longitude, altitude, altitudeMode, heading, tilt, roll).apply { this.fieldOfView = fieldOfView }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(camera: Camera) = set(\n camera.position.latitude,\n camera.position.longitude,\n camera.position.altitude,\n camera.altitudeMode,\n camera.heading,\n camera.tilt,\n camera.roll,\n camera.fieldOfView\n )\n\n override fun toString() = \"Camera(position=$position, altitudeMode=$altitudeMode, heading=$heading, tilt=$tilt, roll=$roll, fieldOfView=$fieldOfView)\"\n}","package earth.worldwind.geom\n\nimport kotlin.jvm.JvmStatic\n\n/**\n * Oblate ellipsoid with semi-major axis and inverse flattening.\n */\ndata class Ellipsoid(\n /**\n * One half of the ellipsoid's major axis length in meters, which runs through the center to opposite points on the\n * equator.\n */\n val semiMajorAxis: Double,\n /**\n * Measure of the ellipsoid's compression. Indicates how much the ellipsoid's semi-minor axis is compressed relative\n * to the semi-major axis. Expressed as `1/f`, where `f = (a - b) / a`, given the semi-major axis `a` and the semi-minor axis `b`.\n */\n val inverseFlattening: Double\n) {\n /**\n * Computes this ellipsoid's semi-minor length axis in meters. The semi-minor axis is one half of the ellipsoid's\n * minor axis, which runs through the center to opposite points on the poles.\n */\n val semiMinorAxis: Double get() {\n val f = 1 / inverseFlattening\n return semiMajorAxis * (1 - f)\n }\n /**\n * Computes this ellipsoid's eccentricity squared. The returned value is equivalent to `2*f - f*f`,\n * where `f` is this ellipsoid's flattening.\n */\n val eccentricitySquared: Double get() {\n val f = 1 / inverseFlattening\n return 2 * f - f * f\n }\n\n companion object {\n /**\n * WGS 84 reference ellipsoid for Earth. The ellipsoid's semi-major axis and inverse flattening factor are\n * configured according to the WGS 84 reference system (aka WGS 1984, EPSG:4326). WGS 84 reference values taken from\n * [here](http://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf).\n */\n @JvmStatic val WGS84 = Ellipsoid(6378137.0, 298.257223563)\n /**\n * Krasovsky 1940 reference ellipsoid for Earth.\n */\n @JvmStatic val Krasovsky = Ellipsoid(6378245.0, 298.3)\n }\n}","package earth.worldwind.geom\n\n/**\n * Represents a six-sided view frustum in Cartesian coordinates with a corresponding viewport in screen coordinates.\n */\nopen class Frustum {\n internal val left = Plane(1.0, 0.0, 0.0, 1.0)\n internal val right = Plane(-1.0, 0.0, 0.0, 1.0)\n internal val bottom = Plane(0.0, 1.0, 0.0, 1.0)\n internal val top = Plane(0.0, -1.0, 0.0, 1.0)\n internal val near = Plane(0.0, 0.0, -1.0, 1.0)\n internal val far = Plane(0.0, 0.0, 1.0, 1.0)\n internal val viewport = Viewport(0, 0, 1, 1)\n internal val planes = arrayOf(near, far, left, right, top, bottom)\n private val scratchMatrix = Matrix4()\n\n /**\n * Constructs a new unit frustum with each of its planes 1 meter from the center and a viewport with width and\n * height both 1.\n */\n constructor()\n\n /**\n * Constructs a frustum from planes.\n *\n * @param left the frustum's left plane\n * @param right the frustum's right plane\n * @param bottom the frustum's bottom plane\n * @param top the frustum's top plane\n * @param near the frustum's near plane\n * @param far the frustum's far plane\n * @param viewport the frustum's viewport\n */\n constructor(left: Plane, right: Plane, bottom: Plane, top: Plane, near: Plane, far: Plane, viewport: Viewport): this() {\n this.left.copy(left)\n this.right.copy(right)\n this.bottom.copy(bottom)\n this.top.copy(top)\n this.near.copy(near)\n this.far.copy(far)\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to a unit frustum with each of its planes 1 meter from the center a viewport with width and\n * height both 1.\n *\n * @return this frustum, set to a unit frustum\n */\n fun setToUnitFrustum() = apply {\n left.set(1.0, 0.0, 0.0, 1.0)\n right.set(-1.0, 0.0, 0.0, 1.0)\n bottom.set(0.0, 1.0, 0.0, 1.0)\n top.set(0.0, -1.0, 0.0, 1.0)\n near.set(0.0, 0.0, -1.0, 1.0)\n far.set(0.0, 0.0, 1.0, 1.0)\n viewport.set(0, 0, 1, 1)\n }\n\n /**\n * Sets this frustum to one appropriate for a modelview-projection matrix. A modelview-projection matrix's view\n * frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport) = apply {\n // Compute the transpose of the modelview matrix.\n scratchMatrix.transposeMatrix(modelview)\n\n // Get the components of the projection matrix.\n val m = projection.m\n\n // Left Plane = row 4 + row 1:\n var x = m[12] + m[0]\n var y = m[13] + m[1]\n var z = m[14] + m[2]\n var w = m[15] + m[3]\n left.set(x, y, z, w) // normalizes the plane's coordinates\n left.transformByMatrix(scratchMatrix)\n\n // Right Plane = row 4 - row 1:\n x = m[12] - m[0]\n y = m[13] - m[1]\n z = m[14] - m[2]\n w = m[15] - m[3]\n right.set(x, y, z, w) // normalizes the plane's coordinates\n right.transformByMatrix(scratchMatrix)\n\n // Bottom Plane = row 4 + row 2:\n x = m[12] + m[4]\n y = m[13] + m[5]\n z = m[14] + m[6]\n w = m[15] + m[7]\n bottom.set(x, y, z, w) // normalizes the plane's coordinates\n bottom.transformByMatrix(scratchMatrix)\n\n // Top Plane = row 4 - row 2:\n x = m[12] - m[4]\n y = m[13] - m[5]\n z = m[14] - m[6]\n w = m[15] - m[7]\n top.set(x, y, z, w) // normalizes the plane's coordinates\n top.transformByMatrix(scratchMatrix)\n\n // Near Plane = row 4 + row 3:\n x = m[12] + m[8]\n y = m[13] + m[9]\n z = m[14] + m[10]\n w = m[15] + m[11]\n near.set(x, y, z, w) // normalizes the plane's coordinates\n near.transformByMatrix(scratchMatrix)\n\n // Far Plane = row 4 - row 3:\n x = m[12] - m[8]\n y = m[13] - m[9]\n z = m[14] - m[10]\n w = m[15] - m[11]\n far.set(x, y, z, w) // normalizes the plane's coordinates\n far.transformByMatrix(scratchMatrix)\n\n // Copy the specified viewport.\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to one appropriate for a subset of a modelview-projection matrix. A modelview-projection\n * matrix's view frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix. The subset is defined by the region within the original viewport that the frustum\n * contains.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n * @param subViewport the screen coordinate region the frustum should contain\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport, subViewport: Viewport) = apply {\n // Compute the sub-viewport's four edges in screen coordinates.\n val left = subViewport.x.toDouble()\n val right = (subViewport.x + subViewport.width).toDouble()\n val bottom = subViewport.y.toDouble()\n val top = (subViewport.y + subViewport.height).toDouble()\n\n // Transform the sub-viewport's four edges from screen coordinates to Cartesian coordinates.\n var bln: Vec3\n var blf: Vec3\n var brn: Vec3\n var brf: Vec3\n var tln: Vec3\n var tlf: Vec3\n var trn: Vec3\n var trf: Vec3\n val mvpInv = scratchMatrix.setToMultiply(projection, modelview).invert()\n mvpInv.unProject(left, bottom, viewport, Vec3().also { bln = it }, Vec3().also { blf = it })\n mvpInv.unProject(right, bottom, viewport, Vec3().also { brn = it }, Vec3().also { brf = it })\n mvpInv.unProject(left, top, viewport, Vec3().also { tln = it }, Vec3().also { tlf = it })\n mvpInv.unProject(right, top, viewport, Vec3().also { trn = it }, Vec3().also { trf = it })\n\n val va = Vec3(tlf.x - bln.x, tlf.y - bln.y, tlf.z - bln.z)\n val vb = Vec3(tln.x - blf.x, tln.y - blf.y, tln.z - blf.z)\n\n val nl = va.cross(vb)\n this.left.set(nl.x, nl.y, nl.z, -nl.dot(bln))\n va.set(trn.x - brf.x, trn.y - brf.y, trn.z - brf.z)\n vb.set(trf.x - brn.x, trf.y - brn.y, trf.z - brn.z)\n\n val nr = va.cross(vb)\n this.right.set(nr.x, nr.y, nr.z, -nr.dot(brn))\n va.set(brf.x - bln.x, brf.y - bln.y, brf.z - bln.z)\n vb.set(blf.x - brn.x, blf.y - brn.y, blf.z - brn.z)\n\n val nb = va.cross(vb)\n this.bottom.set(nb.x, nb.y, nb.z, -nb.dot(brn))\n va.set(tlf.x - trn.x, tlf.y - trn.y, tlf.z - trn.z)\n vb.set(trf.x - tln.x, trf.y - tln.y, trf.z - tln.z)\n\n val nt = va.cross(vb)\n this.top.set(nt.x, nt.y, nt.z, -nt.dot(tln))\n va.set(tln.x - brn.x, tln.y - brn.y, tln.z - brn.z)\n vb.set(trn.x - bln.x, trn.y - bln.y, trn.z - bln.z)\n\n val nn = va.cross(vb)\n this.near.set(nn.x, nn.y, nn.z, -nn.dot(bln))\n va.set(trf.x - blf.x, trf.y - blf.y, trf.z - blf.z)\n vb.set(tlf.x - brf.x, tlf.y - brf.y, tlf.z - brf.z)\n\n val nf = va.cross(vb)\n this.far.set(nf.x, nf.y, nf.z, -nf.dot(blf))\n\n // Copy the specified sub-viewport.\n this.viewport.copy(subViewport)\n }\n\n /**\n * See if the point is entirely within the frustum. The dot product of the point with each plane's vector\n * provides a distance to each plane. If this distance is less than 0, the point is clipped by that plane and\n * neither intersects nor is contained by the space enclosed by this Frustum.\n *\n * @param point Vector to check\n *\n * @return true if point contains in frustum\n */\n fun containsPoint(point: Vec3) = far.dot(point) > 0 && left.dot(point) > 0 && right.dot(point) > 0\n && top.dot(point) > 0 && bottom.dot(point) > 0 && near.dot(point) > 0\n\n /**\n * Determines whether a line segment intersects this frustum.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return true if the segment intersects or is contained in this frustum, otherwise false\n */\n fun intersectsSegment(pointA: Vec3, pointB: Vec3): Boolean {\n // First do a trivial accept test.\n if (containsPoint(pointA) || containsPoint(pointB)) return true\n if (pointA == pointB) return false\n for (i in planes.indices) {\n val plane = planes[i]\n // See if both points are behind the plane and therefore not in the frustum.\n if (plane.onSameSide(pointA, pointB) < 0) return false\n // See if the segment intersects the plane.\n if (plane.clip(pointA, pointB) != null) return true\n }\n return false // segment does not intersect frustum\n }\n\n /**\n * Determines whether a screen coordinate viewport intersects this frustum.\n *\n * @param viewport the viewport to test\n *\n * @return true if the viewport intersects or is contained in this frustum, otherwise false\n */\n fun intersectsViewport(viewport: Viewport) = this.viewport.intersects(viewport)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a line in Cartesian coordinates.\n */\nopen class Line {\n /**\n * This line's origin.\n */\n val origin = Vec3()\n /**\n * This line's direction.\n */\n val direction = Vec3()\n\n /**\n * Constructs a line with origin and direction both zero.\n */\n constructor()\n\n /**\n * Constructs a line with a specified origin and direction.\n *\n * @param origin the line's origin\n * @param direction the line's direction\n */\n constructor(origin: Vec3, direction: Vec3): this() { set(origin, direction) }\n\n /**\n * Constructs a line with the origin and direction from a specified line.\n *\n * @param line the line specifying origin and direction\n */\n constructor(line: Line): this(line.origin, line.direction)\n\n /**\n * Sets this line to a specified origin and direction.\n *\n * @param origin the line's new origin\n * @param direction the line's new direction\n *\n * @return this line, set to the new origin and direction\n */\n fun set(origin: Vec3, direction: Vec3) = apply {\n this.origin.copy(origin)\n this.direction.copy(direction)\n }\n\n /**\n * Sets this line to the specified segment. This line has its origin at the first endpoint and its direction\n * extending from the first endpoint to the second.\n *\n * @param pointA the segment's first endpoint\n * @param pointB the segment's second endpoint\n *\n * @return this line, set to the specified segment\n */\n fun setToSegment(pointA: Vec3, pointB: Vec3) = apply {\n origin.copy(pointA)\n direction.set(pointB.x - pointA.x, pointB.y - pointA.y, pointB.z - pointA.z)\n }\n\n /**\n * Computes a Cartesian point a specified distance along this line.\n *\n * @param distance The distance from this line's origin at which to compute the point.\n * @param result A pre-allocated [Vec3] instance in which to return the computed point.\n *\n * @return The specified result argument containing the computed point.\n */\n fun pointAt(distance: Double, result: Vec3): Vec3 {\n result.x = origin.x + direction.x * distance\n result.y = origin.y + direction.y * distance\n result.z = origin.z + direction.z * distance\n return result\n }\n\n /**\n * Computes the first intersection of a triangle strip with this line. This line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *
\n * The triangle strip is specified by a list of vertex points and a list of elements indicating the triangle strip\n * tessellation of those vertices. The triangle strip elements are interpreted in the same manner as OpenGL, where\n * each index indicates a vertex position rather than an actual index into the points array (e.g. a triangle strip\n * index of 1 indicates the XYZ tuple starting at array index 3).\n *\n * @param points an array of points containing XYZ tuples\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n * @param elements an array of indices into the points defining the triangle strip organization\n * @param count the number of indices to consider\n * @param result a pre-allocated Vec3 in which to return the nearest intersection point, if any\n *\n * @return true if this line intersects the triangle strip, otherwise false\n *\n * @throws IllegalArgumentException If array is empty, if the stride is less than 3,\n * if the count is less than 0\n */\n fun triStripIntersection(points: FloatArray, stride: Int, elements: ShortArray, count: Int, result: Vec3): Boolean {\n require(points.size >= stride) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidStride\")\n }\n require(elements.isNotEmpty()) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidCount\")\n }\n\n // Taken from Moller and Trumbore\n // http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf\n\n // Adapted from the original ray-triangle intersection algorithm to optimize for ray-triangle strip\n // intersection. We optimize by reusing constant terms, replacing use of Vec3 with inline primitives, and\n // exploiting the triangle strip organization to reuse computations common to adjacent triangles. These\n // optimizations reduced worst-case terrain picking performance for Web WorldWind by approximately 50% in\n // Chrome on a 2010 iMac and a Nexus 9.\n val vx = direction.x\n val vy = direction.y\n val vz = direction.z\n val sx = origin.x\n val sy = origin.y\n val sz = origin.z\n var tMin = Double.POSITIVE_INFINITY\n val epsilon = 0.00001\n\n // Get the triangle strip's first vertex.\n var vertex = elements[0] * stride\n var vert1x = points[vertex++]\n var vert1y = points[vertex++]\n var vert1z = points[vertex]\n\n // Get the triangle strip's second vertex.\n vertex = elements[1] * stride\n var vert2x = points[vertex++]\n var vert2y = points[vertex++]\n var vert2z = points[vertex]\n\n // Compute the intersection of each triangle with the specified ray.\n for (idx in 2 until count) {\n // Move the last two vertices into the first two vertices. This takes advantage of the triangle strip's\n // structure and avoids redundant reads from points and elements. During the first iteration this places the\n // triangle strip's first three vertices in vert0, vert1 and vert2, respectively.\n val vert0x = vert1x\n val vert0y = vert1y\n val vert0z = vert1z\n vert1x = vert2x\n vert1y = vert2y\n vert1z = vert2z\n\n // Get the triangle strip's next vertex.\n vertex = elements[idx] * stride\n vert2x = points[vertex++]\n vert2y = points[vertex++]\n vert2z = points[vertex]\n\n // find vectors for two edges sharing point a: vert1 - vert0 and vert2 - vert0\n val edge1x = vert1x - vert0x\n val edge1y = vert1y - vert0y\n val edge1z = vert1z - vert0z\n val edge2x = vert2x - vert0x\n val edge2y = vert2y - vert0y\n val edge2z = vert2z - vert0z\n\n // Compute cross product of line direction and edge2\n val px = vy * edge2z - vz * edge2y\n val py = vz * edge2x - vx * edge2z\n val pz = vx * edge2y - vy * edge2x\n\n // Get determinant\n val det = edge1x * px + edge1y * py + edge1z * pz // edge1 dot p\n // if det is near zero then ray lies in plane of triangle\n if (det > -epsilon && det < epsilon) continue\n\n val invDet = 1.0 / det\n\n // Compute distance for vertex A to ray origin: origin - vert0\n val tx = sx - vert0x\n val ty = sy - vert0y\n val tz = sz - vert0z\n\n // Calculate u parameter and test bounds: 1/det * t dot p\n val u = invDet * (tx * px + ty * py + tz * pz)\n if (u < -epsilon || u > 1 + epsilon) continue\n\n // Prepare to test v parameter: tvec cross edge1\n val qx = ty * edge1z - tz * edge1y\n val qy = tz * edge1x - tx * edge1z\n val qz = tx * edge1y - ty * edge1x\n\n // Calculate v parameter and test bounds: 1/det * dir dot q\n val v = invDet * (vx * qx + vy * qy + vz * qz)\n if (v < -epsilon || u + v > 1 + epsilon) continue\n\n // Calculate the point of intersection on the line: t = 1/det * edge2 dot q\n val t = invDet * (edge2x * qx + edge2y * qy + edge2z * qz)\n if (t >= 0 && t < tMin) tMin = t\n }\n if (tMin != Double.POSITIVE_INFINITY) result.set(sx + vx * tMin, sy + vy * tMin, sz + vz * tMin)\n return tMin != Double.POSITIVE_INFINITY\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Line) return false\n return origin == other.origin && direction == other.direction\n }\n\n override fun hashCode(): Int {\n var result = origin.hashCode()\n result = 31 * result + direction.hashCode()\n return result\n }\n\n override fun toString() = \"Line(origin=$origin, direction=$direction)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.normalizeLongitude\nimport earth.worldwind.shape.PathType\nimport earth.worldwind.shape.PathType.GREAT_CIRCLE\nimport earth.worldwind.shape.PathType.RHUMB_LINE\nimport earth.worldwind.util.format.format\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.offsetIn\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographic location with a latitude and longitude.\n */\nopen class Location(\n /**\n * The location's latitude.\n */\n var latitude: Angle,\n /**\n * The location's longitude.\n */\n var longitude: Angle\n) {\n /**\n * Constructs a location with latitude and longitude both 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO)\n\n /**\n * Constructs a location with the latitude and longitude of a specified location.\n *\n * @param location the location specifying the coordinates\n */\n constructor(location: Location): this(location.latitude, location.longitude)\n\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-15\n protected val timeZoneLatitudes = mapOf(\n -12 to -45, // GMT-12\n -11 to -30, // GMT-11\n -10 to 20, // GMT-10\n -9 to 45, // GMT-9\n -8 to 40, // GMT-8\n -7 to 35, // GMT-7\n -6 to 30, // GMT-6\n -5 to 25, // GMT-5\n -4 to -15, // GMT-4\n -3 to 0, // GMT-3\n -2 to 45, // GMT-2\n -1 to 30, // GMT-1\n 0 to 30, // GMT+0\n 1 to 20, // GMT+1\n 2 to 20, // GMT+2\n 3 to 25, // GMT+3\n 4 to 30, // GMT+4\n 5 to 35, // GMT+5\n 6 to 30, // GMT+6\n 7 to 25, // GMT+7\n 8 to -30, // GMT+8\n 9 to -30, // GMT+9\n 10 to -30, // GMT+10\n 11 to -45, // GMT+11\n 12 to -45 // GMT+12\n )\n\n /**\n * Constructs a location with a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n *\n * @return the new location\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n Location(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Constructs a location with a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n *\n * @return the new location\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double) =\n Location(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Constructs an approximate location for a specified time zone. Used when selecting an initial camera position\n * based on the device's current time zone.\n *\n * @param timeZone the time zone in question\n *\n * @return the new location\n */\n @JvmStatic\n fun fromTimeZone(timeZone: TimeZone): Location {\n val secPerHour = 3.6e3\n val offsetSec = Clock.System.now().offsetIn(timeZone).totalSeconds\n val offsetHours = (offsetSec / secPerHour).toInt()\n // use a pre-determined latitude or 0 if none is available\n val latDegrees = (timeZoneLatitudes[offsetHours]?:0).toDouble()\n val lonDegrees = 180.0 * offsetHours / 12 // center on the time zone's average longitude\n return Location(fromDegrees(latDegrees), fromDegrees(lonDegrees))\n }\n\n /**\n * Determines whether a list of locations crosses the antimeridian.\n *\n * @param locations the locations to test\n *\n * @return true if the antimeridian is crossed, false otherwise\n */\n @JvmStatic\n fun locationsCrossAntimeridian(locations: List): Boolean {\n // Check the list's length. A list with fewer than two locations does not cross the antimeridan.\n val len = locations.size\n if (len < 2) return false\n\n // Compute the longitude attributes associated with the first location.\n var lon1 = normalizeLongitude(locations[0].longitude.inDegrees)\n var sig1 = sign(lon1)\n\n // Iterate over the segments in the list. A segment crosses the antimeridian if its endpoint longitudes have\n // different signs and are more than 180 degrees apart (but not 360, which indicates the longitudes are the same).\n for (idx in 1 until len) {\n val lon2 = normalizeLongitude(locations[idx].longitude.inDegrees)\n val sig2 = sign(lon2)\n if (sig1 != sig2) {\n val delta = abs(lon1 - lon2)\n if (delta > 180 && delta < 360) return true\n }\n lon1 = lon2\n sig1 = sig2\n }\n return false\n }\n\n @JvmStatic\n fun fromString(coordinates: String): Location {\n val tokens = coordinates.replace(\"[*'\\\"NSEW;°′″,]\".toRegex(), \" \").trim { it <= ' ' }\n .split(\"\\\\s+\".toRegex()).toTypedArray()\n // Lat\n var lat = 0.0\n var exponent = 0\n var i = 0\n while (i < tokens.size / 2) {\n lat += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n // Lon\n var lon = 0.0\n exponent = 0\n while (i < tokens.size) {\n lon += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n return fromDegrees(if (coordinates.contains(\"S\")) -lat else lat, if (coordinates.contains(\"W\")) -lon else lon)\n }\n }\n\n /**\n * Sets this location to a specified latitude and longitude.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle) = apply {\n this.latitude = latitude\n this.longitude = longitude\n }\n\n /**\n * Sets this location to a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n set(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Sets this location to a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double) =\n set(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Sets this location to the latitude and longitude of a specified location.\n *\n * @param location the location specifying the new coordinates\n *\n * @return this location with its latitude and longitude set to that of the specified location\n */\n fun copy(location: Location) = set(location.latitude, location.longitude)\n\n /**\n * Compute a location along a path between two locations. The amount indicates the fraction of the path at which to\n * compute a location. This value is typically between 0 and 1, where 0 indicates the begin location (this location)\n * and 1 indicates the end location.\n *\n * @param endLocation the path's end location\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a location\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun interpolateAlongPath(endLocation: Location, pathType: PathType, amount: Double, result: Location): Location {\n return if (this == endLocation) {\n result.latitude = latitude\n result.longitude = longitude\n result\n } else when (pathType) {\n GREAT_CIRCLE -> {\n val azimuth = greatCircleAzimuth(endLocation)\n val distanceRadians = greatCircleDistance(endLocation) * amount\n greatCircleLocation(azimuth, distanceRadians, result)\n }\n RHUMB_LINE -> {\n val azimuth = rhumbAzimuth(endLocation)\n val distanceRadians = rhumbDistance(endLocation) * amount\n rhumbLocation(azimuth, distanceRadians, result)\n }\n else -> {\n val azimuth = linearAzimuth(endLocation)\n val distanceRadians = linearDistance(endLocation) * amount\n linearLocation(azimuth, distanceRadians, result)\n }\n }\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the great circle path between this location and a specified\n * location. This angle can be used as the starting azimuth for a great circle path beginning at this location, and\n * passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed azimuth\n */\n fun greatCircleAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n if (lon1 == lon2) return if (lat1 > lat2) POS180 else ZERO\n\n // Taken from \"Map Projections - A Working Manual\", page 30, equation 5-4b.\n // The atan2() function is used in place of the traditional atan(y/x) to simplify the case when x == 0.\n val y = cos(lat2) * sin(lon2 - lon1)\n val x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1)\n val azimuthRadians = atan2(y, x)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the great circle path between this location and a specified location. In\n * radians, this angle is the arc length of the segment between the two locations. To compute a distance in meters\n * from this value, multiply the return value by the radius of the globe. This function uses a spherical model, not\n * elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun greatCircleDistance(location: Location): Double {\n val lat1Radians = latitude.inRadians\n val lon1Radians = longitude.inRadians\n val lat2Radians = location.latitude.inRadians\n val lon2Radians = location.longitude.inRadians\n if (lat1Radians == lat2Radians && lon1Radians == lon2Radians) return 0.0\n\n // \"Haversine formula,\" taken from http://en.wikipedia.org/wiki/Great-circle_distance#Formul.C3.A6\n val a = sin((lat2Radians - lat1Radians) / 2.0)\n val b = sin((lon2Radians - lon1Radians) / 2.0)\n val c = a * a + cos(lat1Radians) * cos(lat2Radians) * b * b\n val distanceRadians = 2.0 * asin(sqrt(c))\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the great circle path starting at this location and traversing with the specified\n * azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun greatCircleLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n val cosLat = cos(latRadians)\n val sinLat = sin(latRadians)\n val cosAzimuth = cos(azimuthRadians)\n val sinAzimuth = sin(azimuthRadians)\n val sinDistance = sin(distanceRadians)\n val cosDistance = cos(distanceRadians)\n\n // Taken from \"Map Projections - A Working Manual\", page 31, equation 5-5 and 5-6.\n val endLatRadians = asin(sinLat * cosDistance + cosLat * sinDistance * cosAzimuth)\n val endLonRadians = lonRadians + atan2(\n sinDistance * sinAzimuth, cosLat * cosDistance - sinLat * sinDistance * cosAzimuth\n )\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the rhumb path (line of constant azimuth) between this\n * location and a specified location. This angle can be used as the starting azimuth for a rhumb path beginning at\n * this location, and passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the rhumb path's ending location\n *\n * @return the computed azimuth\n */\n fun rhumbAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the rhumb path (line of constant azimuth) between this location and a specified\n * location. In radians, this angle is the arc length of the segment between the two locations. To compute a\n * distance in meters from this value, multiply the return value by the radius of the globe. This function uses a\n * spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun rhumbDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(lat1)\n else {\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n dLat / dPhi\n }\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + q * q * dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on a rhumb path (line of constant azimuth) starting at this location and traversing with\n * the specified azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun rhumbLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n val dLat = endLatRadians - latRadians\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(latRadians)\n else {\n val dPhi = ln(tan(endLatRadians / 2 + PI / 4) / tan(latRadians / 2 + PI / 4))\n dLat / dPhi\n }\n val dLon = distanceRadians * sin(azimuthRadians) / q\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + dLon + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the linear path between this location and a specified\n * location. This angle can be used as the starting azimuth for a linear path beginning at this location, and\n * passing through the specified location. This function uses a flat-earth approximation proximal to this location.\n *\n * @param location the linear path's ending location\n *\n * @return the computed azimuth\n */\n fun linearAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = lat2 - lat1\n\n // If longitude change is over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the linear path between this location and a specified location. In radians, this\n * angle is the arc length of the segment between the two locations. To compute a distance in meters from this\n * value, multiply the return value by the radius of the globe. This function uses a flat-earth approximation\n * proximal to this location.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun linearDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n\n // If lonChange over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the linear path starting at this location and traversing with the specified azimuth and\n * angular distance. This function uses a flat-earth approximation proximal to this location.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun linearLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + distanceRadians * sin(azimuthRadians) + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Location) return false\n return latitude.inDegrees == other.latitude.inDegrees && longitude.inDegrees == other.longitude.inDegrees\n }\n\n override fun hashCode(): Int {\n var result = latitude.hashCode()\n result = 31 * result + longitude.hashCode()\n return result\n }\n\n override fun toString() = \"Location(latitude=$latitude, longitude=$longitude)\"\n\n fun toDDString() = \"%s%09.6f°, %s%010.6f°\"\n .format(latitude.latitudeLetter, abs(latitude.inDegrees), longitude.longitudeLetter, abs(longitude.inDegrees))\n\n fun toDMString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%06.3f′, %s%03d°%06.3f′\".format(\n latitude.latitudeLetter, lat[1], lat[2] + lat[3] / 60.0,\n longitude.longitudeLetter, lon[1], lon[2] + lon[3] / 60.0\n )\n }\n\n fun toDMSString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%02d′%04.1f″, %s%03d°%02d′%04.1f″\".format(\n latitude.latitudeLetter, lat[1], lat[2], lat[3],\n longitude.longitudeLetter, lon[1], lon[2], lon[3]\n )\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\n\nopen class LookAt(\n val position: Position, var altitudeMode: AltitudeMode, var range: Double, var heading: Angle, var tilt: Angle, var roll: Angle,\n) {\n constructor(): this(\n position = Position(),\n altitudeMode = AltitudeMode.ABSOLUTE,\n range = 0.0,\n heading = ZERO,\n tilt = ZERO,\n roll = ZERO)\n\n constructor(lookAt: LookAt): this(\n Position(lookAt.position),\n lookAt.altitudeMode,\n lookAt.range,\n lookAt.heading,\n lookAt.tilt,\n lookAt.roll\n )\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n range: Double, heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.range = range\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(lookAt: LookAt) = set(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude,\n lookAt.altitudeMode, lookAt.range, lookAt.heading, lookAt.tilt, lookAt.roll\n )\n\n override fun toString() = \"LookAt(position=$position, altitudeMode=$altitudeMode, range=$range, heading=$heading, tilt=$tilt, roll=$roll)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.cos\nimport kotlin.math.sin\n\n/**\n * 3 x 3 matrix in row-major order.\n */\nopen class Matrix3 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n /**\n * The components for the 3 x 3 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n )\n }\n\n /**\n * Constructs a 3 x 3 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 3 x 3 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n */\n constructor(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ): this(doubleArrayOf(m11, m12, m13, m21, m22, m23, m31, m32, m33))\n\n /**\n * Constructs a 3 x 3 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix3): this(matrix.m.copyOf())\n\n /**\n * Sets this 3 x 3 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m21\n m[4] = m22\n m[5] = m23\n m[6] = m31\n m[7] = m32\n m[8] = m33\n }\n\n /**\n * Sets this 3 x 3 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix3) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double) = apply {\n m[2] = x\n m[5] = y\n }\n\n /**\n * Sets the rotation components of this matrix to a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[3] = s\n m[4] = c\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[4] = yScale\n }\n\n /**\n * Sets this matrix to the 3 x 3 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = x\n m[3] = 0.0\n m[4] = 1.0\n m[5] = y\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[2] = 0.0\n m[3] = s\n m[4] = c\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = yScale\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that flips and shifts the y-axis. The resultant matrix maps Y=0 to Y=1 and Y=1 to Y=0.\n * All existing values are overwritten. This matrix is usually used to change the coordinate origin from an upper\n * left coordinate origin to a lower left coordinate origin.\n *
\n * This matrix is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix set to values described above\n */\n fun setToVerticalFlip() = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = -1.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that transforms normalized coordinates from a source sector to a destination sector.\n * Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner and (1, 1)\n * indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its corresponding\n * normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix set to values described above\n */\n fun setToTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n m[0] = xs\n m[1] = 0.0\n m[2] = xt\n m[3] = 0.0\n m[4] = ys\n m[5] = yt\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix3, b: Matrix3) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[3] + ma[2] * mb[6]\n m[1] = ma[0] * mb[1] + ma[1] * mb[4] + ma[2] * mb[7]\n m[2] = ma[0] * mb[2] + ma[1] * mb[5] + ma[2] * mb[8]\n m[3] = ma[3] * mb[0] + ma[4] * mb[3] + ma[5] * mb[6]\n m[4] = ma[3] * mb[1] + ma[4] * mb[4] + ma[5] * mb[7]\n m[5] = ma[3] * mb[2] + ma[4] * mb[5] + ma[5] * mb[8]\n m[6] = ma[6] * mb[0] + ma[7] * mb[3] + ma[8] * mb[6]\n m[7] = ma[6] * mb[1] + ma[7] * mb[4] + ma[8] * mb[7]\n m[8] = ma[6] * mb[2] + ma[7] * mb[5] + ma[8] * mb[8]\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double) = apply {\n multiplyByMatrix(1.0, 0.0, x, 0.0, 1.0, y, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(c, -s, 0.0, s, c, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double) = apply {\n multiplyByMatrix(xScale, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a matrix that flips and shifts the y-axis. The vertical flip matrix maps Y=0 to Y=1 and\n * Y=1 to Y=0. This matrix is usually used to change the coordinate origin from an upper left coordinate origin to a\n * lower left coordinate origin.\n *
\n * This is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix multiplied by a vertical flip matrix implied by values described above\n */\n fun multiplyByVerticalFlip() = apply {\n m[2] += m[1]\n m[5] += m[4]\n m[8] += m[7]\n m[1] = -m[1]\n m[4] = -m[4]\n m[7] = -m[7]\n }\n\n /**\n * Multiplies this matrix by a matrix that transforms normalized coordinates from a source sector to a destination\n * sector. Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner\n * and (1, 1) indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its\n * corresponding normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix multiplied by the transform matrix implied by values described above\n */\n fun multiplyByTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n\n m[2] += m[0] * xt + m[1] * yt\n m[5] += m[3] * xt + m[4] * yt\n m[8] += m[6] * xt + m[6] * yt\n m[0] *= xs\n m[1] *= ys\n m[3] *= xs\n m[4] *= ys\n m[6] *= xs\n m[7] *= ys\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n ma[0] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[1] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[2] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[3]\n ma1 = ma[4]\n ma2 = ma[5]\n ma[3] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[4] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[5] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[6]\n ma1 = ma[7]\n ma2 = ma[8]\n ma[6] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[7] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[8] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[3]\n mr2 = m[4]\n mr3 = m[5]\n m[3] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[4] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[5] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[6]\n mr2 = m[7]\n mr3 = m[8]\n m[6] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[7] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[8] = mr1 * m13 + mr2 * m23 + mr3 * m33\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[3]\n m[3] = tmp\n\n tmp = m[2]\n m[2] = m[6]\n m[6] = tmp\n\n tmp = m[5]\n m[5] = m[7]\n m[7] = tmp\n }\n\n /**\n * Transposes the specified matrix and stores the result in this matrix.\n *\n * @param matrix the matrix whose transpose is computed\n *\n * @return this matrix set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix3) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[3]\n m[2] = matrix.m[6]\n m[3] = matrix.m[1]\n m[4] = matrix.m[4]\n m[5] = matrix.m[7]\n m[6] = matrix.m[2]\n m[7] = matrix.m[5]\n m[8] = matrix.m[8]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix3fv.\n *\n * @param result a pre-allocated array of length 9 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 9) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[5].toFloat()\n result[o] = m[8].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert(): Matrix3 {\n throw UnsupportedOperationException(\"Matrix3.invert is not implemented\") // TODO\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertMatrix(matrix: Matrix3): Matrix3 { \n TODO(\"Matrix3.invertMatrix is not implemented\")\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix3) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix3([${m[0]}, ${m[1]}, ${m[2]}], [${m[3]}, ${m[4]}, ${m[5]}], [${m[6]}, ${m[7]}, ${m[8]}])\"\n}",null,"package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/**\n * 4 x 4 matrix in row-major order.\n */\nopen class Matrix4 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1.0e-8\n protected const val TINY = 1.0e-20\n protected const val EPSILON = 1.0e-10\n protected const val MAX_SWEEPS = 32\n\n /**\n * The components for the 4 x 4 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0\n )\n\n /**\n * Inverts a 4 x 4 matrix, storing the result in a destination argument. The source and destination arguments\n * represent a 4 x 4 matrix with a one-dimensional array in row-major order. The source and destination may\n * reference the same array.\n *\n * @param src the matrix components to invert in row-major order\n * @param dst the inverted components in row-major order\n *\n * @return true if the matrix was successfully inverted, false otherwise\n */\n protected fun invert(src: DoubleArray, dst: DoubleArray): Boolean {\n // Copy the specified matrix into a mutable two-dimensional array.\n val a = Array(4) { DoubleArray(4) }\n a[0][0] = src[0]\n a[0][1] = src[1]\n a[0][2] = src[2]\n a[0][3] = src[3]\n a[1][0] = src[4]\n a[1][1] = src[5]\n a[1][2] = src[6]\n a[1][3] = src[7]\n a[2][0] = src[8]\n a[2][1] = src[9]\n a[2][2] = src[10]\n a[2][3] = src[11]\n a[3][0] = src[12]\n a[3][1] = src[13]\n a[3][2] = src[14]\n a[3][3] = src[15]\n\n val index = IntArray(4)\n var d = ludcmp(a, index)\n\n // Compute the matrix's determinant.\n for (i in 0..3) d *= a[i][i]\n\n // The matrix is singular if its determinant is zero or very close to zero.\n if (abs(d) < NEAR_ZERO_THRESHOLD) return false\n\n val y = Array(4) { DoubleArray(4) }\n val col = DoubleArray(4)\n for (j in 0..3) {\n for (i in 0..3) col[i] = 0.0\n col[j] = 1.0\n lubksb(a, index, col)\n for (i in 0..3) y[i][j] = col[i]\n }\n dst[0] = y[0][0]\n dst[1] = y[0][1]\n dst[2] = y[0][2]\n dst[3] = y[0][3]\n dst[4] = y[1][0]\n dst[5] = y[1][1]\n dst[6] = y[1][2]\n dst[7] = y[1][3]\n dst[8] = y[2][0]\n dst[9] = y[2][1]\n dst[10] = y[2][2]\n dst[11] = y[2][3]\n dst[12] = y[3][0]\n dst[13] = y[3][1]\n dst[14] = y[3][2]\n dst[15] = y[3][3]\n return true\n }\n\n /**\n * Utility method to perform an LU factorization of a matrix. Algorithm derived from \"Numerical Recipes in C\", Press\n * et al., 1988.\n *\n * @param A matrix to be factored\n * @param index permutation vector\n *\n * @return condition number of matrix\n */\n protected fun ludcmp(A: Array, index: IntArray): Double {\n val vv = DoubleArray(4)\n var d = 1.0\n var temp: Double\n for (i in 0..3) {\n var big = 0.0\n for (j in 0..3) if (abs(A[i][j]).also { temp = it } > big) big = temp\n if (big == 0.0) return 0.0 // Matrix is singular if the entire row contains zero.\n else vv[i] = 1 / big\n }\n for (j in 0..3) {\n for (i in 0 until j) {\n var sum = A[i][j]\n for (k in 0 until i) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n }\n var big = 0.0\n var imax = -1\n var dum: Double\n for (i in j..3) {\n var sum = A[i][j]\n for (k in 0 until j) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n if (vv[i] * abs(sum).also { dum = it } >= big) {\n big = dum\n imax = i\n }\n }\n if (j != imax) {\n for (k in 0..3) {\n dum = A[imax][k]\n A[imax][k] = A[j][k]\n A[j][k] = dum\n }\n d = -d\n vv[imax] = vv[j]\n }\n index[j] = imax\n if (A[j][j] == 0.0) A[j][j] = TINY\n if (j != 3) {\n dum = 1.0 / A[j][j]\n for (i in (j + 1)..3) {\n A[i][j] *= dum\n }\n }\n }\n return d\n }\n\n /**\n * Utility method to solve a linear system with an LU factorization of a matrix. Solves Ax=b, where A is in LU\n * factorized form. Algorithm derived from \"Numerical Recipes in C\", Press et al., 1988\n *\n * @param A an LU factorization of a matrix\n * @param index permutation vector of that LU factorization\n * @param b vector to be solved\n */\n protected fun lubksb(A: Array, index: IntArray, b: DoubleArray) {\n var ii = -1\n for (i in 0..3) {\n val ip = index[i]\n var sum = b[ip]\n b[ip] = b[i]\n if (ii != -1) for (j in ii until i) sum -= A[i][j] * b[j]\n else if (sum != 0.0) ii = i\n b[i] = sum\n }\n for (i in 3 downTo 0) {\n var sum = b[i]\n for (j in (i + 1)..3) sum -= A[i][j] * b[j]\n b[i] = sum / A[i][i]\n }\n }\n }\n\n /**\n * Constructs a 4 x 4 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 4 x 4 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n */\n constructor(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ): this(doubleArrayOf(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))\n\n /**\n * Constructs a 4 x 4 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix4): this(matrix.m.copyOf())\n\n /**\n * Sets this 4 x 4 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m14\n m[4] = m21\n m[5] = m22\n m[6] = m23\n m[7] = m24\n m[8] = m31\n m[9] = m32\n m[10] = m33\n m[11] = m34\n m[12] = m41\n m[13] = m42\n m[14] = m43\n m[15] = m44\n }\n\n /**\n * Sets this 4 x 4 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix4) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] = x\n m[7] = y\n m[11] = z\n }\n\n /**\n * Sets the rotation components of this matrix to a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[5] = yScale\n m[10] = zScale\n }\n\n /**\n * Sets this matrix to the 4 x 4 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double, z: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = x\n m[4] = 0.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = y\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 1.0\n m[11] = z\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[3] = 0.0\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[7] = 0.0\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = yScale\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = zScale\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix4, b: Matrix4) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[4] + ma[2] * mb[8] + ma[3] * mb[12]\n m[1] = ma[0] * mb[1] + ma[1] * mb[5] + ma[2] * mb[9] + ma[3] * mb[13]\n m[2] = ma[0] * mb[2] + ma[1] * mb[6] + ma[2] * mb[10] + ma[3] * mb[14]\n m[3] = ma[0] * mb[3] + ma[1] * mb[7] + ma[2] * mb[11] + ma[3] * mb[15]\n m[4] = ma[4] * mb[0] + ma[5] * mb[4] + ma[6] * mb[8] + ma[7] * mb[12]\n m[5] = ma[4] * mb[1] + ma[5] * mb[5] + ma[6] * mb[9] + ma[7] * mb[13]\n m[6] = ma[4] * mb[2] + ma[5] * mb[6] + ma[6] * mb[10] + ma[7] * mb[14]\n m[7] = ma[4] * mb[3] + ma[5] * mb[7] + ma[6] * mb[11] + ma[7] * mb[15]\n m[8] = ma[8] * mb[0] + ma[9] * mb[4] + ma[10] * mb[8] + ma[11] * mb[12]\n m[9] = ma[8] * mb[1] + ma[9] * mb[5] + ma[10] * mb[9] + ma[11] * mb[13]\n m[10] = ma[8] * mb[2] + ma[9] * mb[6] + ma[10] * mb[10] + ma[11] * mb[14]\n m[11] = ma[8] * mb[3] + ma[9] * mb[7] + ma[10] * mb[11] + ma[11] * mb[15]\n m[12] = ma[12] * mb[0] + ma[13] * mb[4] + ma[14] * mb[8] + ma[15] * mb[12]\n m[13] = ma[12] * mb[1] + ma[13] * mb[5] + ma[14] * mb[9] + ma[15] * mb[13]\n m[14] = ma[12] * mb[2] + ma[13] * mb[6] + ma[14] * mb[10] + ma[15] * mb[14]\n m[15] = ma[12] * mb[3] + ma[13] * mb[7] + ma[14] * mb[11] + ma[15] * mb[15]\n }\n\n /**\n * Sets this matrix to an infinite perspective projection matrix for the specified viewport dimensions, vertical\n * field of view and near clip distance.\n *
\n * An infinite perspective projection matrix maps points in a manner similar to a standard projection matrix, but is\n * not bounded by depth. Objects at any depth greater than or equal to the near distance may be rendered. In\n * addition, this matrix interprets vertices with a w-coordinate of 0 as infinitely far from the camera in the\n * direction indicated by the point's coordinates.\n *
\n * The field of view must be positive and less than 180. The near distance must be positive.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near distance is\n * less than or equal to zero\n */\n fun setToInfiniteProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -1.0\n m[11] = -2 * nearDistance\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a perspective projection matrix for the specified viewport dimensions, vertical field of view\n * and clip distances.\n *
\n * A perspective projection matrix maps points in eye coordinates into clip coordinates in a way that causes distant\n * objects to appear smaller, and preserves the appropriate depth information for each point. In model coordinates,\n * a perspective projection is defined by frustum originating at the eye position and extending outward in the\n * viewer's direction. The near distance and the far distance identify the minimum and maximum distance,\n * respectively, at which an object in the scene is visible.\n *
\n * The field of view must be positive and less than 180. Near and far distances must be positive and must not be\n * equal to one another.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n * @param farDistance the far clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near and far\n * distances are equal, or if either the near or far distance are less than or\n * equal to zero\n */\n fun setToPerspectiveProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double, farDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance != farDistance) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n require(nearDistance > 0 && farDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -(farDistance + nearDistance) / (farDistance - nearDistance)\n m[11] = -(2 * nearDistance * farDistance) / (farDistance - nearDistance)\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a screen projection matrix for the specified viewport dimensions.\n *
\n * A screen projection matrix is an orthographic projection that interprets points in model coordinates as\n * representing a screen XY and a Z depth. Screen projection matrices therefore map coordinates directly into screen\n * coordinates without modification. A point's XY coordinates are interpreted as literal screen coordinates and must\n * be in the viewport to be visible. A point's Z coordinate is interpreted as a depth value that ranges from 0 to 1.\n * Additionally, the screen projection matrix preserves the depth value returned by\n * `RenderContext.project`.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero\n */\n fun setToScreenProjection(viewportWidth: Double, viewportHeight: Double) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidHeight\")\n }\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.57.\n // Simplified to assume that the viewport origin is (0, 0).\n //\n // The third row of this projection matrix is configured so that points with z coordinates representing\n // depth values ranging from 0 to 1 are not modified after transformation into window coordinates. This\n // projection matrix maps z values in the range [0, 1] to the range [-1, 1] by applying the following\n // function to incoming z coordinates:\n //\n // zp = z0 * 2 - 1\n //\n // Where 'z0' is the point's z coordinate and 'zp' is the projected z coordinate. The GPU then maps the\n // projected z coordinate into window coordinates in the range [0, 1] by applying the following function:\n //\n // zw = zp * 0.5 + 0.5\n //\n // The result is that a point's z coordinate is effectively passed to the GPU without modification.\n m[0] = 2 / viewportWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = -1.0\n m[4] = 0.0\n m[5] = 2 / viewportHeight\n m[6] = 0.0\n m[7] = -1.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 2.0\n m[11] = -1.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the symmetric covariance Matrix computed from an array of points.\n *
\n * The computed covariance matrix represents the correlation between each pair of x-, y-, and z-coordinates as\n * they're distributed about the point array's arithmetic mean. Its layout is as follows:\n *
\n * ` C(x, x) C(x, y) C(x, z)
C(x, y) C(y, y) C(y, z)
C(x, z) C(y, z) C(z, z) `\n *
\n * C(i, j) is the covariance of coordinates i and j, where i or j are a coordinate's dispersion about its mean\n * value. If any entry is zero, then there's no correlation between the two coordinates defining that entry. If the\n * returned matrix is diagonal, then all three coordinates are uncorrelated, and the specified point is distributed\n * evenly about its mean point.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return this matrix set to the covariance matrix for the specified array of points\n *\n * @throws IllegalArgumentException If the array is null or empty, if the count is less than 0, or if the stride is\n * less than 3\n */\n fun setToCovarianceOfPoints(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidCount\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidStride\")\n }\n\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var c11 = 0.0\n var c22 = 0.0\n var c33 = 0.0\n var c12 = 0.0\n var c13 = 0.0\n var c23 = 0.0\n var numPoints = 0.0\n for (idx in 0 until count step stride) {\n mx += array[idx]\n my += array[idx + 1]\n mz += array[idx + 2]\n numPoints++\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n for (idx in 0 until count step stride) {\n val dx = array[idx] - mx\n val dy = array[idx + 1] - my\n val dz = array[idx + 2] - mz\n c11 += dx * dx\n c22 += dy * dy\n c33 += dz * dz\n c12 += dx * dy // c12 = c21\n c13 += dx * dz // c13 = c31\n c23 += dy * dz // c23 = c32\n }\n m[0] = c11 / numPoints\n m[1] = c12 / numPoints\n m[2] = c13 / numPoints\n m[3] = 0.0\n m[4] = c12 / numPoints\n m[5] = c22 / numPoints\n m[6] = c23 / numPoints\n m[7] = 0.0\n m[8] = c13 / numPoints\n m[9] = c23 / numPoints\n m[10] = c33 / numPoints\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 0.0\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] += m[0] * x + m[1] * y + m[2] * z\n m[7] += m[4] * x + m[5] * y + m[6] * z\n m[11] += m[8] * x + m[9] * y + m[10] * z\n m[15] += m[12] * x + m[13] * y + m[14] * z\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis.\n *\n * @param x the X component of the rotation axis\n * @param y the Y component of the rotation axis\n * @param z the Z component of the rotation axis\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(\n c + (1 - c) * x * x,\n (1 - c) * x * y - s * z,\n (1 - c) * x * z + s * y,\n 0.0,\n (1 - c) * x * y + s * z,\n c + (1 - c) * y * y,\n (1 - c) * y * z - s * x,\n 0.0,\n (1 - c) * x * z - s * y,\n (1 - c) * y * z + s * x,\n c + (1 - c) * z * z,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n )\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] *= xScale\n m[4] *= xScale\n m[8] *= xScale\n m[12] *= xScale\n m[1] *= yScale\n m[5] *= yScale\n m[9] *= yScale\n m[13] *= yScale\n m[2] *= zScale\n m[6] *= zScale\n m[10] *= zScale\n m[14] *= zScale\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n var ma3 = ma[3]\n ma[0] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[1] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[2] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[3] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[4]\n ma1 = ma[5]\n ma2 = ma[6]\n ma3 = ma[7]\n ma[4] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[5] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[6] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[7] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[8]\n ma1 = ma[9]\n ma2 = ma[10]\n ma3 = ma[11]\n ma[8] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[9] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[10] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[11] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[12]\n ma1 = ma[13]\n ma2 = ma[14]\n ma3 = ma[15]\n ma[12] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[13] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[14] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[15] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n var mr4 = m[3]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[3] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[4]\n mr2 = m[5]\n mr3 = m[6]\n mr4 = m[7]\n m[4] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[5] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[6] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[7] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[8]\n mr2 = m[9]\n mr3 = m[10]\n mr4 = m[11]\n m[8] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[9] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[10] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[11] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[12]\n mr2 = m[13]\n mr3 = m[14]\n mr4 = m[15]\n m[12] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[13] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[14] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[15] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[3]\n m[3] = m[12]\n m[12] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n tmp = m[7]\n m[7] = m[13]\n m[13] = tmp\n\n tmp = m[11]\n m[11] = m[14]\n m[14] = tmp\n }\n\n /**\n * Sets this matrix to the transpose of a specified matrix.\n *\n * @param matrix the matrix whose transpose is to be computed\n *\n * @return this matrix with its values set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix4) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = matrix.m[12]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = matrix.m[13]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = matrix.m[14]\n m[12] = matrix.m[3]\n m[13] = matrix.m[7]\n m[14] = matrix.m[11]\n m[15] = matrix.m[15]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix4fv.\n *\n * @param result a pre-allocated array of length 16 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 16) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[8].toFloat()\n result[o++] = m[12].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[5].toFloat()\n result[o++] = m[9].toFloat()\n result[o++] = m[13].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[10].toFloat()\n result[o++] = m[14].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[11].toFloat()\n result[o] = m[15].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert() = apply {\n val success = invert(m, m) // passing the same array as src and dst is supported\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the specified matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n *\n * @throws IllegalArgumentException If the matrix cannot be inverted\n */\n fun invertMatrix(matrix: Matrix4) = apply {\n val success = invert(matrix.m, m) // store inverse of matrix in this matrix\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts this orthonormal transform matrix in place. This matrix's upper 3x3 is transposed, then its fourth column\n * is transformed by the transposed upper 3x3 and negated.\n *
\n * The result of this method is undefined if this matrix's values are not consistent with those of an orthonormal\n * transform.\n *\n * @return this matrix, inverted\n */\n fun invertOrthonormal() = apply {\n // This is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n val x = m[3]\n val y = m[7]\n val z = m[11]\n\n m[3] = -(m[0] * x) - m[1] * y - m[2] * z\n m[7] = -(m[4] * x) - m[5] * y - m[6] * z\n m[11] = -(m[8] * x) - m[9] * y - m[10] * z\n\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Inverts the specified orthonormal transform matrix and stores the result in 'this' matrix. The specified matrix's\n * upper 3x3 is transposed, then its fourth column is transformed by the transposed upper 3x3 and negated. The\n * result is stored in 'this' matrix.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert, or if the matrix's\n * values are not consistent with those of an orthonormal transform.\n *\n * @param matrix the matrix whose inverse is computed. The matrix is assumed to represent an orthonormal transform\n * matrix.\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertOrthonormalMatrix(matrix: Matrix4) = apply {\n // The matrix is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = -(matrix.m[0] * matrix.m[3]) - matrix.m[4] * matrix.m[7] - matrix.m[8] * matrix.m[11]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = -(matrix.m[1] * matrix.m[3]) - matrix.m[5] * matrix.m[7] - matrix.m[9] * matrix.m[11]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = -(matrix.m[2] * matrix.m[3]) - matrix.m[6] * matrix.m[7] - matrix.m[10] * matrix.m[11]\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Applies a specified depth offset to this projection matrix. The depth offset may be any real number and is\n * typically used to draw geometry slightly closer to the user's eye in order to give those shapes visual priority\n * over nearby or geometry. An offset of zero has no effect. An offset less than zero brings depth values closer to\n * the eye, while an offset greater than zero pushes depth values away from the eye.\n *
\n * The result of this method is undefined if this matrix is not a projection matrix. Projection matrices can be\n * created by calling `setToPerspectiveProjection` or `setToScreenProjection`\n *
\n * Depth offset may be applied to both perspective and screen projection matrices. The effect on each type is\n * outlined here:\n *
\n * **Perspective Projection**\n *
\n * The effect of depth offset on a perspective projection increases exponentially with distance from the eye. This\n * has the effect of adjusting the offset for the loss in depth precision with geometry drawn further from the eye.\n * Distant geometry requires a greater offset to differentiate itself from nearby geometry, while close geometry\n * does not.\n *
\n * **Screen Projection**\n *
\n * The effect of depth offset on an screen projection increases linearly with distance from the eye. While it is\n * reasonable to apply a depth offset to an screen projection, the effect is most appropriate when applied to the\n * projection used to draw the scene. For example, when an object's coordinates are projected by a perspective\n * projection into screen coordinates then drawn using a screen projection, it is best to apply the offset to the\n * original perspective projection. The method `RenderContext.project` performs the correct behavior for\n * the projection type used to draw the scene.\n *\n * @param depthOffset the amount of offset to apply\n *\n * @return this matrix with its components adjusted to account for the specified depth offset\n */\n fun offsetProjectionDepth(depthOffset: Double) = apply { m[10] *= 1 + depthOffset }\n\n /**\n * Returns this viewing matrix's eye point. In model coordinates, a viewing matrix's eye point is the point the\n * viewer is looking from and maps to the center of the screen.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's eye point\n */\n fun extractEyePoint(result: Vec3): Vec3 {\n // The eye point of a modelview matrix is computed by transforming the origin (0, 0, 0, 1) by the matrix's\n // inverse. This is equivalent to transforming the inverse of this matrix's translation components in the\n // rightmost column by the transpose of its upper 3x3 components.\n result.x = -(m[0] * m[3]) - m[4] * m[7] - m[8] * m[11]\n result.y = -(m[1] * m[3]) - m[5] * m[7] - m[9] * m[11]\n result.z = -(m[2] * m[3]) - m[6] * m[7] - m[10] * m[11]\n return result\n }\n\n /**\n * Returns this viewing matrix's forward vector.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's forward vector\n */\n fun extractForwardVector(result: Vec3): Vec3 {\n // The forward vector of a modelview matrix is computed by transforming the negative Z axis (0, 0, -1, 0) by the\n // matrix's inverse. We have pre-computed the result inline here to simplify this computation.\n result.x = -m[8]\n result.y = -m[9]\n result.z = -m[10]\n return result\n }\n\n /**\n * Returns this viewing matrix's heading angle. The roll argument enables the caller to disambiguate\n * heading and roll when the two rotation axes for heading and roll are parallel, causing gimbal lock.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param roll the viewing matrix's roll angle, or 0 if the roll angle is unknown\n *\n * @return the extracted heading angle\n */\n fun extractHeading(roll: Angle): Angle {\n val cr = cos(roll.inRadians)\n val sr = sin(roll.inRadians)\n val ch = cr * m[0] - sr * m[4]\n val sh = sr * m[5] - cr * m[1]\n return atan2(sh, ch).radians\n }\n\n /**\n * Returns this viewing matrix's tilt angle.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @return the extracted heading angle\n */\n fun extractTilt(): Angle {\n val ct = m[10]\n val st = sqrt(m[2] * m[2] + m[6] * m[6])\n return atan2(st, ct).radians\n }\n\n /**\n * Returns this symmetric matrix's eigenvectors. The eigenvectors are returned in the specified result arguments in\n * order of descending magnitude (most prominent to least prominent). Each eigenvector has length equal to its\n * corresponding eigenvalue.\n *
\n * This method returns false if this matrix is not a symmetric matrix.\n *\n * @param result1 a pre-allocated Vec3 in which to return the most prominent eigenvector\n * @param result2 a pre-allocated Vec3 in which to return the second most prominent eigenvector\n * @param result3 a pre-allocated Vec3 in which to return the least prominent eigenvector\n *\n * @return true if this matrix is symmetric and its eigenvectors can be determined, otherwise false\n */\n fun extractEigenvectors(result1: Vec3, result2: Vec3, result3: Vec3): Boolean {\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition,\n // listing 14.6.\n if (m[1] != m[4] || m[2] != m[8] || m[6] != m[9]) return false // matrix is not symmetric\n\n // Since the matrix is symmetric m12=m21, m13=m31 and m23=m32, therefore we can ignore the values m21,\n // m32 and m32.\n var m11 = m[0]\n var m12 = m[1]\n var m13 = m[2]\n var m22 = m[5]\n var m23 = m[6]\n var m33 = m[10]\n val r = Array(3) { DoubleArray(3) }\n r[2][2] = 1.0\n r[1][1] = r[2][2]\n r[0][0] = r[1][1]\n for (a in 0 until MAX_SWEEPS) {\n // Exit if off-diagonal entries small enough\n if (abs(m12) < EPSILON && abs(m13) < EPSILON && abs(m23) < EPSILON) break\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n val u = (m22 - m11) * 0.5 / m12\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m12\n m22 += t * m12\n m12 = 0.0\n var temp = c * m13 - s * m23\n m23 = s * m13 + c * m23\n m13 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][1]\n r[i][1] = s * r[i][0] + c * r[i][1]\n r[i][0] = temp\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n val u = (m33 - m11) * 0.5 / m13\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m13\n m33 += t * m13\n m13 = 0.0\n var temp = c * m12 - s * m23\n m23 = s * m12 + c * m23\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][2]\n r[i][2] = s * r[i][0] + c * r[i][2]\n r[i][0] = temp\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n val u = (m33 - m22) * 0.5 / m23\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m22 -= t * m23\n m33 += t * m23\n m23 = 0.0\n var temp = c * m12 - s * m13\n m13 = s * m12 + c * m13\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][1] - s * r[i][2]\n r[i][2] = s * r[i][1] + c * r[i][2]\n r[i][1] = temp\n }\n }\n }\n\n // Sort the eigenvectors by descending magnitude.\n var i1 = 0\n var i2 = 1\n var i3 = 2\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n if (m22 < m33) {\n val temp = m22\n m22 = m33\n m33 = temp\n val itemp = i2\n i2 = i3\n i3 = itemp\n }\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n result1.set(r[0][i1], r[1][i1], r[2][i1])\n result2.set(r[0][i2], r[1][i2], r[2][i2])\n result3.set(r[0][i3], r[1][i3], r[2][i3])\n result1.normalize()\n result2.normalize()\n result3.normalize()\n result1.multiply(m11)\n result2.multiply(m22)\n result3.multiply(m33)\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. This method assumes this matrix represents an inverse\n * modelview-projection matrix. The result of this method is undefined if this matrix is not an inverse\n * modelview-projection matrix.\n *
\n * The resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes\n * that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's y component\n * @param z the Cartesian point's z component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(x: Double, y: Double, z: Double, viewport: Viewport, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This inverts\n // the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n var sx = m[0] * x + m[1] * y + m[2] * z + m[3]\n var sy = m[4] * x + m[5] * y + m[6] * z + m[7]\n var sz = m[8] * x + m[9] * y + m[10] * z + m[11]\n val sw = m[12] * x + m[13] * y + m[14] * z + m[15]\n if (sw == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n sx /= sw\n sy /= sw\n sz /= sw\n\n // Clip the point against the near and far clip planes.\n if (sz < -1 || sz > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n sx = sx * 0.5 + 0.5\n sy = sy * 0.5 + 0.5\n sz = sz * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n sx = sx * viewport.width + viewport.x\n sy = sy * viewport.height + viewport.y\n result.x = sx\n result.y = sy\n result.z = sz\n return true\n }\n\n /**\n * Un-projects a screen coordinate point to Cartesian coordinates at the near clip plane and the far clip plane.\n * This method assumes this matrix represents an inverse modelview-projection matrix. The result of this method is\n * undefined if this matrix is not an inverse modelview-projection matrix.\n *
\n * The screen point is understood to be in OpenGL screen coordinates, with the origin in the bottom-left corner and\n * axes that extend up and to the right from the origin.\n *
\n * This function stores the un-projected points in the result argument, and a boolean value indicating whether the\n * un-projection is successful.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param nearResult a pre-allocated [Vec3] in which to return the un-projected near clip plane point\n * @param farResult a pre-allocated [Vec3] in which to return the un-projected far clip plane point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun unProject(x: Double, y: Double, viewport: Viewport, nearResult: Vec3, farResult: Vec3): Boolean {\n // Convert the XY screen coordinates to coordinates in the range [0, 1]. This enables the XY coordinates to\n // be converted to clip coordinates.\n var sx = (x - viewport.x) / viewport.width\n var sy = (y - viewport.y) / viewport.height\n\n // Convert from coordinates in the range [0, 1] to clip coordinates in the range [-1, 1].\n sx = sx * 2 - 1\n sy = sy * 2 - 1\n\n // Transform the screen point from clip coordinates to model coordinates. This is a partial transformation that\n // factors out the contribution from the screen point's X and Y components. The contribution from the Z\n // component, which is both -1 and +1, is included next.\n val mx = m[0] * sx + m[1] * sy + m[3]\n val my = m[4] * sx + m[5] * sy + m[7]\n val mz = m[8] * sx + m[9] * sy + m[11]\n val mw = m[12] * sx + m[13] * sy + m[15]\n\n // Transform the screen point at the near clip plane (z = -1) to model coordinates.\n val nx = mx - m[2]\n val ny = my - m[6]\n val nz = mz - m[10]\n val nw = mw - m[14]\n\n // Transform the screen point at the far clip plane (z = +1) to model coordinates.\n val fx = mx + m[2]\n val fy = my + m[6]\n val fz = mz + m[10]\n val fw = mw + m[14]\n if (nw == 0.0 || fw == 0.0) return false\n\n // Complete the conversion from near clip coordinates to model coordinates by dividing by the W component.\n nearResult.x = nx / nw\n nearResult.y = ny / nw\n nearResult.z = nz / nw\n\n // Complete the conversion from far clip coordinates to model coordinates by dividing by the W component.\n farResult.x = fx / fw\n farResult.y = fy / fw\n farResult.z = fz / fw\n return true\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix4) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix4([${m[0]}, ${m[1]}, ${m[2]}, ${m[3]}], [${m[4]}, ${m[5]}, ${m[6]}, ${m[7]}], [${m[8]}, ${m[9]}, ${m[10]}, ${m[11]}], [${m[12]}, ${m[13]}, ${m[14]}, ${m[15]}])\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.OffsetMode.FRACTION\nimport earth.worldwind.geom.OffsetMode.INSET_PIXELS\nimport kotlin.jvm.JvmStatic\n\n/**\n * Specifies an offset relative to a rectangle. Used by renderable shapes.\n */\ndata class Offset(\n /**\n * The units of this instance's X offset. See this class' constructor description for a list of the possible\n * values.\n */\n var xUnits: OffsetMode,\n /**\n * The offset in the X dimension, interpreted according to this instance's xUnits argument.\n */\n var x: Double,\n /**\n * The units of this instance's Y offset. See this class' constructor description for a list of the possible\n * values.\n */\n var yUnits: OffsetMode,\n /**\n * The offset in the Y dimension, interpreted according to this instance's yUnits argument.\n */\n var y: Double\n) {\n /**\n * Creates a new offset of this offset with identical property values.\n */\n constructor(offset: Offset): this(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n companion object {\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its center.\n */\n @JvmStatic fun center() = Offset(FRACTION, 0.5, FRACTION, 0.5)\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its bottom-left corner.\n */\n @JvmStatic fun bottomLeft() = Offset(FRACTION, 0.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its center of its bottom edge.\n */\n @JvmStatic fun bottomCenter() = Offset(FRACTION, 0.5, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its bottom-right corner.\n */\n @JvmStatic fun bottomRight() = Offset(FRACTION, 1.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle its top-left corner.\n */\n @JvmStatic fun topLeft() = Offset(FRACTION, 0.0, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to the center of its top edge.\n */\n @JvmStatic fun topCenter() = Offset(FRACTION, 0.5, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its top-right corner.\n */\n @JvmStatic fun topRight() = Offset(FRACTION, 1.0, FRACTION, 1.0)\n }\n\n /**\n * Sets this offset to specified property values.\n */\n fun set(xUnits: OffsetMode, x: Double, yUnits: OffsetMode, y: Double) = apply {\n this.xUnits = xUnits\n this.x = x\n this.yUnits = yUnits\n this.y = y\n }\n\n /**\n * Sets this offset to identical property values of the specified offset.\n */\n fun copy(offset: Offset) = set(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n /**\n * Returns this offset's absolute X and Y coordinates in pixels for a rectangle of a specified size in pixels. The\n * returned offset is in pixels relative to the rectangle's origin, and is defined in the coordinate system used by\n * the caller.\n *\n * @param width the rectangle's width in pixels\n * @param height the rectangles height in pixels\n * @param result a pre-allocated Vec2 in which to return the computed offset relative to the rectangle's origin\n *\n * @return the result argument set to the computed offset\n */\n fun offsetForSize(width: Double, height: Double, result: Vec2): Vec2 {\n val x = when (xUnits) {\n FRACTION -> width * x\n INSET_PIXELS -> width - x\n else -> x // default to OFFSET_PIXELS\n }\n val y = when (yUnits) {\n FRACTION -> height * y\n INSET_PIXELS -> height - y\n else -> y // default to OFFSET_PIXELS\n }\n return result.set(x, y)\n }\n}","package earth.worldwind.geom\n\n/**\n * Offset mode indicates how WorldWind interprets an offset's x and y values.\n * Accepted values are [FRACTION], [INSET_PIXELS] and [PIXELS].\n */\nenum class OffsetMode {\n /**\n * Indicating that the associated parameters are fractional values of the virtual\n * rectangle's width or height in the range [0, 1], where 0 indicates the rectangle's origin and 1 indicates the\n * corner opposite its origin.\n */\n FRACTION,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's corner opposite its origin corner.\n */\n INSET_PIXELS,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's origin.\n */\n PIXELS;\n}","package earth.worldwind.geom\n\n/**\n * Represents a plane in Cartesian coordinates. The plane's X, Y and Z components indicate the plane's normal vector.\n * The distance component indicates the plane's distance from the origin relative to its unit normal.\n */\nopen class Plane {\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-10\n }\n\n /**\n * The normal vector to the plane.\n */\n val normal = Vec3(0.0, 0.0, 1.0)\n /**\n * The plane's distance from the origin.\n */\n var distance = 0.0\n\n /**\n * Constructs a plane in the X-Y plane with its unit normal pointing along the Z axis.\n */\n constructor()\n\n /**\n * Constructs a plane with specified normal vector components and distance from the origin.\n * This constructor normalizes the components, ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n */\n constructor(x: Double, y: Double, z: Double, distance: Double) { set(x, y, z, distance) }\n\n /**\n * Constructs a plane with the normal vector and distance from a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n */\n constructor(plane: Plane): this() { copy(plane) }\n\n /**\n * Computes the distance between this plane and a point.\n *\n * @param point the point whose distance to compute\n *\n * @return the computed distance\n */\n fun distanceToPoint(point: Vec3) = dot(point)\n\n /**\n * Sets this plane's specified normal vector and distance to specified values. This normalizes the components,\n * ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n *\n * @return this plane with its normal vector and distance set to specified values\n */\n fun set(x: Double, y: Double, z: Double, distance: Double) = apply {\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Sets this plane's normal vector and distance to that of a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n *\n * @return this plane with its normal vector and distance set to those of the specified plane\n */\n fun copy(plane: Plane) = apply {\n // Assumes the specified plane's parameters are normalized.\n normal.copy(plane.normal)\n distance = plane.distance\n }\n\n /**\n * Transforms this plane by a specified matrix.\n *\n * @param matrix the matrix to apply to this plane\n *\n * @return this plane transformed by the specified matrix\n */\n fun transformByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * normal.x + m[1] * normal.y + m[2] * normal.z + m[3] * distance\n val y = m[4] * normal.x + m[5] * normal.y + m[6] * normal.z + m[7] * distance\n val z = m[8] * normal.x + m[9] * normal.y + m[10] * normal.z + m[11] * distance\n val distance = m[12] * normal.x + m[13] * normal.y + m[14] * normal.z + m[15] * distance\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Computes the dot product of this plane's components with a specified vector. Since the plane was defined with a\n * unit normal vector, this function returns the distance of the vector from the plane.\n *\n * @param vector the vector to dot with this plane's components\n *\n * @return the computed dot product\n */\n fun dot(vector: Vec3) = normal.dot(vector) + distance\n\n /**\n * Determines whether a specified line segment intersects this plane.\n *\n * @param endPoint1 the line segment's first end point\n * @param endPoint2 the line segment's second end point\n *\n * @return true if the line segment intersects this plane, otherwise false\n */\n fun intersectsSegment(endPoint1: Vec3, endPoint2: Vec3): Boolean {\n val distance1 = dot(endPoint1)\n val distance2 = dot(endPoint2)\n return distance1 * distance2 <= 0\n }\n\n /**\n * Determines whether two points are on the same side of this plane.\n *\n * @param pointA the first point\n * @param pointB the second point\n *\n * @return -1 if both points are on the negative side of this plane, +1 if both points are on the positive side of\n * this plane, 0 if the points are on opposite sides of this plane\n */\n fun onSameSide(pointA: Vec3, pointB: Vec3): Int {\n val da = distanceToPoint(pointA)\n val db = distanceToPoint(pointB)\n if (da < 0 && db < 0) return -1\n return if (da > 0 && db > 0) 1 else 0\n }\n\n /**\n * Clips a line segment to this plane, returning an two-point array indicating the clipped segment. If the direction\n * of the line formed by the two points is positive with respect to this plane's normal vector, the first point in\n * the array will be the intersection point on the plane, and the second point will be the original segment end\n * point. If the direction of the line is negative with respect to this plane's normal vector, the first point in\n * the array will be the original segment's begin point, and the second point will be the intersection point on the\n * plane. If the segment does not intersect the plane, null is returned. If the segment is coincident with the\n * plane, the input points are returned, in their input order.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return an array of two points both on the positive side of the plane, or null if the segment does not intersect\n * this plane\n */\n fun clip(pointA: Vec3, pointB: Vec3): Array? {\n if (pointA == pointB) return null\n\n // Get the projection of the segment onto the plane.\n val line = Line().setToSegment(pointA, pointB)\n val lDotV = normal.dot(line.direction)\n\n // Are the line and plane parallel?\n if (lDotV == 0.0) { // line and plane are parallel and may be coincident.\n val lDotS = dot(line.origin)\n return if (lDotS == 0.0) arrayOf(pointA, pointB) // line is coincident with the plane\n else null // line is not coincident with the plane.\n }\n\n // Not parallel so the line intersects. But does the segment intersect?\n val t = -dot(line.origin) / lDotV // lDotS / lDotV\n if (t < 0 || t > 1) return null // segment does not intersect\n val p = line.pointAt(t, Vec3())\n return if (lDotV > 0) arrayOf(p, pointB) else arrayOf(pointA, p)\n }\n\n protected open fun normalizeIfNeeded() {\n // Compute the plane normal's magnitude in order to determine whether or not the plane needs normalization.\n val magnitude = normal.magnitude\n\n // Don't normalize a zero vector; the result is NaN when it should be 0.0.\n if (magnitude == 0.0) return\n\n // Don't normalize a unit vector, this indicates that the caller has already normalized the vector, but floating\n // point round-off results in a length not exactly 1.0. Since we're normalizing on the caller's behalf, we want\n // to avoid unnecessary any normalization that modifies the specified values.\n if (magnitude >= 1 - NEAR_ZERO_THRESHOLD && magnitude <= 1 + NEAR_ZERO_THRESHOLD) return\n\n // Normalize the caller-specified plane coordinates.\n normal.x /= magnitude\n normal.y /= magnitude\n normal.z /= magnitude\n distance /= magnitude\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Plane) return false\n return normal == other.normal && distance == other.distance\n }\n\n override fun hashCode(): Int {\n var result = normal.hashCode()\n result = 31 * result + distance.hashCode()\n return result\n }\n\n override fun toString() = \"Plane(normal=$normal, distance=$distance)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.shape.PathType\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic position with a latitude and longitude and altitude in meters.\n */\nopen class Position(\n /**\n * The position's latitude.\n */\n latitude: Angle,\n /**\n * The position's longitude.\n */\n longitude: Angle,\n /**\n * The position's altitude in meters.\n */\n var altitude: Double\n): Location(latitude, longitude) {\n /**\n * Constructs a position with latitude, longitude and altitude all 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO, altitude = 0.0)\n\n /**\n * Constructs a position with the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the coordinates\n */\n constructor(position: Position): this(position.latitude, position.longitude, position.altitude)\n\n companion object {\n /**\n * Constructs a position with a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) =\n Position(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees), altitude)\n\n /**\n * Constructs a position with a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) =\n Position(fromRadians(latitudeRadians), fromRadians(longitudeRadians), altitude)\n }\n\n /**\n * Sets this position to a specified latitude and longitude and altitude in meters.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle, altitude: Double) = apply {\n set(latitude, longitude)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) = apply {\n setDegrees(latitudeDegrees, longitudeDegrees)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) = apply {\n setRadians(latitudeRadians, longitudeRadians)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the new coordinates\n *\n * @return this position with its latitude, longitude and altitude set to that of the specified position\n */\n fun copy(position: Position) = set(position.latitude, position.longitude, position.altitude)\n\n /**\n * Compute a position along a path between two positions. The amount indicates the fraction of the path at which to\n * compute a position. This value is typically between 0 and 1, where 0 indicates the begin position (this position)\n * and 1 indicates the end position.\n *\n * @param endPosition the path's end position\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a position\n * @param result a pre-allocated Position in which to return the computed result\n *\n * @return the result argument set to the computed position\n */\n fun interpolateAlongPath(endPosition: Position, pathType: PathType, amount: Double, result: Position): Position {\n // Interpolate latitude and longitude.\n super.interpolateAlongPath(endPosition, pathType, amount, result)\n // Interpolate altitude.\n result.altitude = (1 - amount) * altitude + amount * endPosition.altitude\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Position) return false\n if (!super.equals(other)) return false\n return altitude == other.altitude\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + altitude.hashCode()\n return result\n }\n\n override fun toString() = \"Position(latitude=$latitude, longitude=$longitude, altitude=$altitude)\"\n}","package earth.worldwind.geom\n\n/**\n * Continuous interval in a one-dimensional coordinate system expressed as a lower bound an an upper bound, inclusive.\n */\nopen class Range(\n /**\n * The range's lower bound, inclusive.\n */\n var lower: Int,\n /**\n * The range's upper bound, inclusive.\n */\n var upper: Int\n) {\n /**\n * Constructs an empty range with lower and upper both zero.\n */\n constructor(): this(lower = 0, upper = 0)\n\n /**\n * Constructs a range with the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the values\n */\n constructor(range: Range) : this(range.lower, range.upper)\n\n /**\n * Returns the length of the interval between this range's lower bound and upper bound, or 0 if this range is empty.\n */\n val length get() = if (upper > lower) upper - lower else 0\n\n /**\n * Indicates whether or not this range is empty. An range is empty when its lower bound is greater than or equal to\n * its upper bound.\n *\n * @return true if this range is empty, false otherwise\n */\n val isEmpty get() = lower >= upper\n\n /**\n * Sets this range to an empty range.\n *\n * @return this range with its lower bound and upper bound both set to zero\n */\n fun setEmpty() = set(0, 0)\n\n /**\n * Sets this range to the specified lower bound and upper bound.\n *\n * @param lower the new lower bound, inclusive\n * @param upper the new upper bound, inclusive\n *\n * @return this range set to the specified values\n */\n fun set(lower: Int, upper: Int) = apply {\n this.lower = lower\n this.upper = upper\n }\n\n /**\n * Sets this range to the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the new values\n *\n * @return this range with its lower bound and upper bound set to that of the specified range\n */\n fun copy(range: Range) = set(range.lower, range.upper)\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Range) return false\n return lower == other.lower && upper == other.upper\n }\n\n override fun hashCode(): Int {\n var result = lower\n result = 31 * result + upper\n return result\n }\n\n override fun toString() = \"Range(lower=$lower, upper=$upper)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.geom.Angle.Companion.clampLatitude\nimport earth.worldwind.geom.Angle.Companion.clampLongitude\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.max\nimport earth.worldwind.geom.Angle.Companion.min\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic rectangular region.\n */\nopen class Sector(\n /**\n * The sector's minimum latitude.\n */\n var minLatitude: Angle,\n /**\n * The sector's maximum latitude.\n */\n var maxLatitude: Angle,\n /**\n * The sector's minimum longitude.\n */\n var minLongitude: Angle,\n /**\n * The sector's maximum longitude.\n */\n var maxLongitude: Angle\n) {\n /**\n * Indicates whether this sector has no dimensions.\n */\n val isEmpty get() = minLatitude == ZERO && maxLatitude == ZERO && minLongitude == ZERO && maxLongitude == ZERO\n /**\n * Indicates whether this sector contains the full range of latitude [90 to +90] and longitude [-180 to +180].\n */\n val isFullSphere get() = minLatitude == NEG90 && maxLatitude == POS90 && minLongitude == NEG180 && maxLongitude == POS180\n /**\n * Returns the angle between this sector's minimum and maximum latitudes.\n */\n val deltaLatitude get() = maxLatitude - minLatitude\n /**\n * Returns the angle between this sector's minimum and maximum longitudes.\n */\n val deltaLongitude get() = maxLongitude - minLongitude\n /**\n * Returns the angle midway between this sector's minimum and maximum latitudes.\n */\n val centroidLatitude get() = average(minLatitude, maxLatitude)\n /**\n * Returns the angle midway between this sector's minimum and maximum longitudes.\n */\n val centroidLongitude get() = average(minLongitude, maxLongitude)\n\n /**\n * Constructs an empty sector with minimum and maximum latitudes and longitudes all 0.\n */\n constructor(): this(minLatitude = ZERO, maxLatitude = ZERO, minLongitude = ZERO, maxLongitude = ZERO)\n\n /**\n * Constructs a sector with the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the coordinates\n */\n constructor(sector: Sector): this(sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude)\n\n companion object {\n @JvmStatic\n fun fromDegrees(minLatDegrees: Double, minLonDegrees: Double, deltaLatDegrees: Double, deltaLonDegrees: Double): Sector {\n val maxLatDegrees = if (deltaLatDegrees > 0)\n clampLatitude(minLatDegrees + deltaLatDegrees) else minLatDegrees\n val maxLonDegrees = if (deltaLonDegrees > 0)\n clampLongitude(minLonDegrees + deltaLonDegrees) else minLonDegrees\n return Sector(\n fromDegrees(minLatDegrees), fromDegrees(maxLatDegrees),\n fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n }\n\n @JvmStatic\n fun fromRadians(minLatRadians: Double, minLonRadians: Double, deltaLatRadians: Double, deltaLonRadians: Double): Sector {\n val maxLatRadians = if (deltaLatRadians > 0)\n clampLatitude(minLatRadians + deltaLatRadians) else minLatRadians\n val maxLonRadians = if (deltaLonRadians > 0)\n clampLongitude(minLonRadians + deltaLonRadians) else minLonRadians\n return Sector(\n fromRadians(minLatRadians), fromRadians(maxLatRadians),\n fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n }\n }\n\n /**\n * Computes the location of the angular center of this sector, which is the mid-angle of each of this sector's\n * latitude and longitude dimensions.\n *\n * @param result a pre-allocated [Location] in which to return the computed centroid\n *\n * @return the specified result argument containing the computed centroid\n */\n fun centroid(result: Location): Location {\n result.latitude = centroidLatitude\n result.longitude = centroidLongitude\n return result\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension.\n *\n * @param minLatitude the minimum latitude, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun set(minLatitude: Angle, minLongitude: Angle, deltaLatitude: Angle, deltaLongitude: Angle) = apply {\n this.minLatitude = minLatitude\n this.minLongitude = minLongitude\n maxLatitude = if (deltaLatitude.inDegrees > 0.0) (minLatitude + deltaLatitude).clampLatitude() else minLatitude\n maxLongitude = if (deltaLongitude.inDegrees > 0.0) (minLongitude + deltaLongitude).clampLongitude() else minLongitude\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in degrees.\n *\n * @param minLatitude the minimum latitude in degrees, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in degrees, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in degrees; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in degrees; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setDegrees(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromDegrees(minLatitude), fromDegrees(minLongitude),\n fromDegrees(deltaLatitude), fromDegrees(deltaLongitude),\n )\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in radians.\n *\n * @param minLatitude the minimum latitude in radians, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in radians, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in radians; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in radians; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setRadians(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromRadians(minLatitude), fromRadians(minLongitude),\n fromRadians(deltaLatitude), fromRadians(deltaLongitude),\n )\n\n /**\n * Sets this sector to the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the new coordinates\n *\n * @return this sector with its coordinates set to that of the specified sector\n */\n fun copy(sector: Sector) = apply {\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n\n /**\n * Sets this sector to an empty sector.\n *\n * @return this sector with its coordinates set to an empty sector\n */\n fun setEmpty() = apply {\n minLatitude = ZERO\n maxLatitude = ZERO\n minLongitude = ZERO\n maxLongitude = ZERO\n }\n\n /**\n * Sets this sector to the full range of latitude [90 to +90] and longitude [-180 to +180].\n *\n * @return this sector with its coordinates set to the full range of latitude and longitude\n */\n fun setFullSphere() = apply {\n minLatitude = NEG90\n maxLatitude = POS90\n minLongitude = NEG180\n maxLongitude = POS180\n }\n\n /**\n * Indicates whether this sector intersects a specified sector. Two sectors intersect when both the latitude\n * boundaries and the longitude boundaries overlap by a non-zero amount. An empty sector never intersects another\n * sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersections this sector, false otherwise\n */\n fun intersects(sector: Sector) = minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n\n /**\n * Indicates if this sector is next to, or intersects, a specified sector. Two sectors intersect when the conditions\n * of the [Sector.intersects] methods have been met, and if the boundary or corner is shared with the\n * specified sector. This is a temporary implementation and will be deprecated in future releases.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersects or is next to this sector, false otherwise\n */\n fun intersectsOrNextTo(sector: Sector) = minLatitude.inDegrees <= sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.minLatitude.inDegrees\n && minLongitude.inDegrees <= sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.minLongitude.inDegrees\n\n /**\n * Computes the intersection of this sector and a specified sector, storing the result in this sector and returning\n * whether or not the sectors intersect. Two sectors intersect when both the latitude boundaries and the longitude\n * boundaries overlap by a non-zero amount. An empty sector never intersects another sector. When there is no\n * intersection, this returns false and leaves this sector unchanged.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to intersect with\n *\n * @return this true if this sector intersects the specified sector, false otherwise\n */\n fun intersect(sector: Sector): Boolean {\n if (minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n ) {\n if (minLatitude.inDegrees < sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees > sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees < sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees > sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n return true\n }\n return false // the two sectors do not intersect\n }\n\n /**\n * Indicates whether this sector contains a specified geographic location.\n * An empty sector never contains a location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(latitude: Angle, longitude: Angle) = latitude.inDegrees in minLatitude.inDegrees..maxLatitude.inDegrees\n && longitude.inDegrees in minLongitude.inDegrees..maxLongitude.inDegrees\n\n /**\n * Indicates whether this sector contains a specified geographic location. An empty sector never contains a\n * location.\n *\n * @param location the location\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(location: Location) = contains(location.latitude, location.longitude)\n\n /**\n * Indicates whether this sector fully contains a specified sector. This sector contains the specified sector when\n * the specified sector's boundaries are completely contained within this sector's boundaries, or are equal to this\n * sector's boundaries. An empty sector never contains another sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test containment with\n *\n * @return true if the specified sector contains this sector, false otherwise\n */\n fun contains(sector: Sector) = minLatitude.inDegrees <= sector.minLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.maxLatitude.inDegrees\n && minLongitude.inDegrees <= sector.minLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.maxLongitude.inDegrees\n\n /**\n * Sets this sector to the union of itself and a specified location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(latitude: Angle, longitude: Angle) = apply {\n if (!isEmpty) {\n minLatitude = min(minLatitude, latitude)\n maxLatitude = max(maxLatitude, latitude)\n minLongitude = min(minLongitude, longitude)\n maxLongitude = max(maxLongitude, longitude)\n } else {\n minLatitude = latitude\n maxLatitude = latitude\n minLongitude = longitude\n maxLongitude = longitude\n }\n }\n\n /**\n * Sets this sector to the union of itself and a specified location.\n *\n * @param location the location\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(location: Location) = union(location.latitude, location.longitude)\n\n /**\n * Sets this sector to the union of itself and an array of specified locations. If this sector is empty, it bounds\n * the specified locations. The array is understood to contain location of at least two coordinates organized as\n * (longitude, latitude, ...), where stride indicates the number of coordinates between longitude values.\n *\n * @param array the array of locations to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent locations - must be at least 2\n *\n * @return This bounding box set to contain the specified array of locations.\n *\n * @throws IllegalArgumentException If the array is empty, if the count is less than 0, or if the stride is\n * less than 2\n */\n fun union(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Sector\", \"union\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidCount\")\n }\n require(stride >= 2) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidStride\")\n }\n val empty = isEmpty\n var minLat = if (empty) Double.MAX_VALUE else minLatitude.inDegrees\n var maxLat = if (empty) -Double.MAX_VALUE else maxLatitude.inDegrees\n var minLon = if (empty) Double.MAX_VALUE else minLongitude.inDegrees\n var maxLon = if (empty) -Double.MAX_VALUE else maxLongitude.inDegrees\n for (idx in 0 until count step stride) {\n val lon = array[idx].toDouble()\n val lat = array[idx + 1].toDouble()\n if (maxLat < lat) maxLat = lat\n if (minLat > lat) minLat = lat\n if (maxLon < lon) maxLon = lon\n if (minLon > lon) minLon = lon\n }\n if (minLat < Double.MAX_VALUE) minLatitude = fromDegrees(minLat)\n if (maxLat > -Double.MAX_VALUE) maxLatitude = fromDegrees(maxLat)\n if (minLon < Double.MAX_VALUE) minLongitude = fromDegrees(minLon)\n if (maxLon > -Double.MAX_VALUE) maxLongitude = fromDegrees(maxLon)\n }\n\n /**\n * Sets this sector to the union of itself and a specified sector.\n * This has no effect if the specified sector is empty.\n * If this sector is empty, it is set to the specified sector.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param sector the sector to union with\n *\n * @return this sector, set to its union with the specified sector\n */\n fun union(sector: Sector) = apply {\n if (!sector.isEmpty) {\n // specified sector not empty\n if (!isEmpty) {\n // this sector not empty, make a union\n if (minLatitude.inDegrees > sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees < sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees > sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees < sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n } else {\n // this sector is empty, set to the specified sector\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n }\n }\n\n /**\n * Translates this sector by a specified geographic increment.\n *
\n * The translated sector is assumed to have normalized angles (angles within the range [-90, +90] latitude and\n * [-180, +180] longitude).\n *\n * @param deltaLatitudeDegrees the translation's latitude increment in degrees\n * @param deltaLongitudeDegrees the translation's longitude increment in degrees\n *\n * @return this sector, translated by the specified increment\n */\n fun translate(deltaLatitudeDegrees: Double, deltaLongitudeDegrees: Double) = apply {\n minLatitude = minLatitude.plusDegrees(deltaLatitudeDegrees)\n maxLatitude = maxLatitude.plusDegrees(deltaLatitudeDegrees)\n minLongitude = minLongitude.plusDegrees(deltaLongitudeDegrees)\n maxLongitude = maxLongitude.plusDegrees(deltaLongitudeDegrees)\n }\n\n override fun equals(other: Any?): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (other !is Sector) return false\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return minLatitude == other.minLatitude && maxLatitude == other.maxLatitude\n && minLongitude == other.minLongitude && maxLongitude == other.maxLongitude\n }\n\n override fun hashCode(): Int {\n var result = minLatitude.hashCode()\n result = 31 * result + maxLatitude.hashCode()\n result = 31 * result + minLongitude.hashCode()\n result = 31 * result + maxLongitude.hashCode()\n return result\n }\n\n override fun toString() = \"Sector(minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlin.math.ceil\n\nopen class TileMatrix internal constructor(\n val sector: Sector, val ordinal: Int, val matrixWidth: Int, val matrixHeight: Int, val tileWidth: Int, val tileHeight: Int\n) {\n val degreesPerPixel get() = sector.deltaLatitude.inDegrees / (matrixHeight * tileHeight)\n\n fun tileKey(row: Int, column: Int): Long {\n val lOrd = (ordinal and 0xFF).toLong() // 8 bits\n val lRow = (row and 0xFFFFFFF).toLong() // 28 bits\n val lCol = (column and 0xFFFFFFF).toLong() // 28 bits\n return lOrd.shl(56) or lRow.shl(28) or lCol\n }\n\n fun tileSector(row: Int, column: Int): Sector {\n val deltaLat = sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = sector.deltaLongitude.inDegrees / matrixWidth\n val minLat = sector.maxLatitude.inDegrees - deltaLat * (row + 1)\n val minLon = sector.minLongitude.inDegrees + deltaLon * column\n return fromDegrees(minLat, minLon, deltaLat, deltaLon)\n }\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val deltaLat = this.sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = this.sector.deltaLongitude.inDegrees / matrixWidth\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / deltaLat).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / deltaLon).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.makeMessage\nimport kotlin.jvm.JvmStatic\n\nopen class TileMatrixSet(val sector: Sector, val entries: List) {\n /**\n * Construct empty tile matrix set.\n */\n constructor(): this(Sector(), emptyList())\n\n companion object {\n @JvmStatic\n fun fromTilePyramid(\n sector: Sector, matrixWidth: Int, matrixHeight: Int, tileWidth: Int, tileHeight: Int, resolution: Angle\n ): TileMatrixSet {\n require(resolution.inDegrees > 0.0) {\n makeMessage(\"TileMatrixSet\", \"fromTilePyramid\", \"invalidResolution\")\n }\n var idx = 0\n var width = matrixWidth\n var height = matrixHeight\n val tileMatrices = mutableListOf()\n do {\n val matrix = TileMatrix(sector, idx++, width, height, tileWidth, tileHeight)\n tileMatrices.add(matrix)\n width *= 2\n height *= 2\n } while (matrix.degreesPerPixel > resolution.inDegrees)\n return TileMatrixSet(sector, tileMatrices)\n }\n }\n\n fun indexOfMatrixNearest(degreesPerPixel: Double): Int {\n var nearestIdx = -1\n var nearestDelta2 = Double.POSITIVE_INFINITY\n for (idx in entries.indices) {\n val delta = entries[idx].degreesPerPixel - degreesPerPixel\n val delta2 = delta * delta\n if (nearestDelta2 > delta2) {\n nearestDelta2 = delta2\n nearestIdx = idx\n }\n }\n return nearestIdx\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Two-component vector with X and Y coordinates.\n */\nopen class Vec2(\n /**\n * The vector's X component.\n */\n var x: Double,\n /**\n * The vector's Y component.\n */\n var y: Double\n) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n *\n * @return the squared magnitude of this vector\n */\n open val magnitudeSquared get() = x * x + y * y\n /**\n * Computes the magnitude of this vector.\n *\n * @return the magnitude of this vector\n */\n val magnitude get() = sqrt(magnitudeSquared)\n\n /**\n * Constructs a two-component vector with X and Y both 0.\n */\n constructor(): this(x = 0.0, y = 0.0)\n\n /**\n * Constructs a two-component vector with the X and Y of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec2): this(vector.x, vector.y)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform2fv.\n *\n * @param result a pre-allocated array of length 2 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n open fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 2) {\n logMessage(ERROR, \"Vec2\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o] = y.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec2) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec2): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n return dx * dx + dy * dy\n }\n\n /**\n * Sets this vector to the specified X and Y.\n *\n * @param x the new X component\n * @param y the new Y component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double) = apply {\n this.x = x\n this.y = y\n }\n\n /**\n * Sets this vector to the X and Y of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X and Y set to that of the specified vector\n */\n fun copy(vector: Vec2) = set(vector.x, vector.y)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec2) = apply {\n var tmp = x\n x = vector.x\n vector.x = tmp\n\n tmp = y\n y = vector.y\n vector.y = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec2) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec2) = Vec2(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec2) {\n x += vector.x\n y += vector.y\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec2) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec2) = Vec2(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec2) {\n x -= vector.x\n y -= vector.y\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n open fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n open operator fun times(scalar: Double) = Vec2(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n open operator fun timesAssign(scalar: Double) {\n x *= scalar\n y *= scalar\n }\n\n /**\n * Multiplies this vector by a 3x3 matrix. The multiplication is performed with an implicit Z component of 1. The\n * resultant Z component of the product is then divided through the X and Y components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2]\n val y = m[3] * this.x + m[4] * y + m[5]\n val z = m[6] * this.x + m[7] * this.y + m[8]\n this.x = x / z\n this.y = y / z\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n open fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n open operator fun div(divisor: Double) = Vec2(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n open operator fun divAssign(divisor: Double) {\n x /= divisor\n y /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n open operator fun unaryMinus() = Vec2(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n open fun negate() = apply {\n x = -x\n y = -y\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n open fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec2) = x * vector.x + y * vector.y\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec2, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec2) return false\n return x == other.x && y == other.y\n }\n\n override fun hashCode(): Int {\n var result = x.hashCode()\n result = 31 * result + y.hashCode()\n return result\n }\n\n override fun toString() = \"Vec2(x=$x, y=$y)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Three-component vector with X, Y and Z coordinates.\n */\nopen class Vec3(\n /**\n * The vector's X component.\n */\n x: Double,\n /**\n * The vector's Y component.\n */\n y: Double,\n /**\n * The vector's Z component.\n */\n var z: Double\n): Vec2(x, y) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n */\n override val magnitudeSquared get() = super.magnitudeSquared + z * z\n\n /**\n * Constructs a three-component vector with X, Y and Z all 0.\n */\n constructor(): this(x = 0.0, y = 0.0, z = 0.0)\n\n /**\n * Constructs a three-component vector with the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec3): this(vector.x, vector.y, vector.z)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform3fv.\n *\n * @param result a pre-allocated array of length 3 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n override fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 3) {\n logMessage(ERROR, \"Vec3\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o++] = y.toFloat()\n result[o] = z.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector The vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec3) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec3): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n val dz = z - vector.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Sets this vector to the specified X, Y and Z.\n *\n * @param x the new X component\n * @param y the new Y component\n * @param z the new Z component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double, z: Double) = apply {\n set(x, y)\n this.z = z\n }\n\n /**\n * Sets this vector to the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X, Y and Z set to that of the specified vector\n */\n fun copy(vector: Vec3) = set(vector.x, vector.y, vector.z)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec3) = apply {\n super.swap(vector)\n val tmp = z\n z = vector.z\n vector.z = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec3) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec3) = Vec3(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec3) {\n super.plusAssign(vector)\n z += vector.z\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec3) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec3) = Vec3(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec3) {\n super.minusAssign(vector)\n z -= vector.z\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n override fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n override fun times(scalar: Double) = Vec3(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n override fun timesAssign(scalar: Double) {\n super.timesAssign(scalar)\n z *= scalar\n }\n\n /**\n * Multiplies this vector by a 4x4 matrix. The multiplication is performed with an implicit W component of 1. The\n * resultant W component of the product is then divided through the X, Y, and Z components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2] * z + m[3]\n val y = m[4] * this.x + m[5] * y + m[6] * z + m[7]\n val z = m[8] * this.x + m[9] * this.y + m[10] * z + m[11]\n val w = m[12] * this.x + m[13] * this.y + m[14] * this.z + m[15]\n this.x = x / w\n this.y = y / w\n this.z = z / w\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n override fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n override fun div(divisor: Double) = Vec3(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n override fun divAssign(divisor: Double) {\n super.divAssign(divisor)\n z /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n override fun unaryMinus() = Vec3(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n override fun negate() = apply {\n super.negate()\n z = -z\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n override fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n z /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec3) = super.dot(vector) + z * vector.z\n\n /**\n * Computes the cross product of this vector and a specified vector, modifying this vector.\n *\n * @param vector the vector to cross with this vector\n *\n * @return this vector set to the cross product of itself and the specified vector\n */\n fun cross(vector: Vec3) = apply {\n val x = y * vector.z - z * vector.y\n val y = z * vector.x - this.x * vector.z\n val z = this.x * vector.y - this.y * vector.x\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Computes the cross product of two vectors, setting this vector to the result.\n *\n * @param a the first vector\n * @param b the second vector\n *\n * @return this vector set to the cross product of the two specified vectors\n */\n fun cross(a: Vec3, b: Vec3) = apply {\n x = a.y * b.z - a.z * b.y\n y = a.z * b.x - a.x * b.z\n z = a.x * b.y - a.y * b.x\n }\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec3, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n z = z * w0 + vector.z * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec3) return false\n if (!super.equals(other)) return false\n return z == other.z\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + z.hashCode()\n return result\n }\n\n override fun toString() = \"Vec3(x=$x, y=$y, z=$z)\"\n}","package earth.worldwind.geom\n\n/**\n * Rectangular region in a two-dimensional coordinate system expressed as an origin and dimensions extending from the\n * origin.\n */\nopen class Viewport(\n /**\n * The X component of the viewport's origin.\n */\n var x: Int,\n /**\n * The Y component of the viewport's origin.\n */\n var y: Int,\n /**\n * The viewport's width.\n */\n var width: Int,\n /**\n * The viewport's height.\n */\n var height: Int\n) {\n /**\n * Constructs an empty viewport width X, Y, width and height all zero.\n */\n constructor(): this(x = 0, y = 0, width = 0, height = 0)\n\n /**\n * Constructs a viewport with the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the values\n */\n constructor(viewport: Viewport): this(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport is empty. A viewport is empty when either its width or its height are\n * zero (or negative).\n *\n * @return true if this viewport is empty, false otherwise\n */\n val isEmpty get() = width <= 0 || height <= 0\n\n /**\n * Sets this viewport to an empty viewport.\n *\n * @return this viewport with its width and height both set to zero\n */\n fun setEmpty() = apply {\n width = 0\n height = 0\n }\n\n /**\n * Sets this viewport to the specified origin and dimensions.\n *\n * @param x the new X component of the viewport's lower left corner\n * @param y the new Y component of the viewport's lower left corner\n * @param width the viewport's new width\n * @param height the viewport's new height\n *\n * @return this viewport set to the specified values\n */\n fun set(x: Int, y: Int, width: Int, height: Int) = apply {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n /**\n * Sets this viewport to the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the new values\n *\n * @return this viewport with its origin and dimensions set to that of the specified viewport\n */\n fun copy(viewport: Viewport) = set(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param x the X component of the viewport to test intersection with\n * @param y the Y component of the viewport to test intersection with\n * @param width the viewport width to test intersection with\n * @param height the viewport height to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(x: Int, y: Int, width: Int, height: Int) =\n this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param viewport the viewport to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(viewport: Viewport) =\n width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param x the X component of the viewport to intersect with\n * @param y the Y component of the viewport to intersect with\n * @param width the viewport width to intersect with\n * @param height the viewport height to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(x: Int, y: Int, width: Int, height: Int): Boolean {\n if (this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height) {\n if (this.x < x) {\n this.width -= x - this.x\n this.x = x\n }\n if (this.y < y) {\n this.height -= y - this.y\n this.y = y\n }\n if (this.x + this.width > x + width) this.width = x + width - this.x\n if (this.y + this.height > y + height) this.height = y + height - this.y\n return true\n }\n return false\n }\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param viewport the viewport to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(viewport: Viewport): Boolean {\n if (width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height) {\n if (x < viewport.x) {\n width -= viewport.x - x\n x = viewport.x\n }\n if (y < viewport.y) {\n height -= viewport.y - y\n y = viewport.y\n }\n if (x + width > viewport.x + viewport.width) width = viewport.x + viewport.width - x\n if (y + height > viewport.y + viewport.height) height = viewport.y + viewport.height - y\n return true\n }\n return false\n }\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param point the point\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(point: Vec2) = contains(point.x, point.y)\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param x the point's X component\n * @param y the point's Y component\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(x: Number, y: Number) = x.toDouble() >= this.x && x.toDouble() < this.x + width\n && y.toDouble() >= this.y && y.toDouble() < this.y + height\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Viewport) return false\n return x == other.x && y == other.y && width == other.width && height == other.height\n }\n\n override fun hashCode(): Int {\n var result = x\n result = 31 * result + y\n result = 31 * result + width\n result = 31 * result + height\n return result\n }\n\n override fun toString() = \"Viewport(x=$x, y=$y, width=$width, height=$height)\"\n}","package earth.worldwind.geom.coords\n\nenum class Hemisphere { N, S; }","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds an immutable MGRS coordinate string along with\r\n * the corresponding latitude and longitude.\r\n */\r\nclass MGRSCoord private constructor(val latitude: Angle, val longitude: Angle, private val MGRSString: String) {\r\n companion object {\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the maximum precision of five digits (one meter).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 5)\r\n\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the given precision or number of digits (1 to 5).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @param precision the number of digits used for easting and northing (1 to 5).\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle, precision: Int): MGRSCoord {\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertGeodeticToMGRS(latitude.inRadians, longitude.inRadians, precision)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(latitude, longitude, converter.mgrsString)\r\n }\r\n\r\n /**\r\n * Create a MGRS coordinate from a standard MGRS coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * Valid examples:
\r\n * 32TLP5626635418
\r\n * 32 T LP 56266 35418
\r\n * 11S KU 528 111
\r\n *\r\n * @param MGRSString the MGRS coordinate text string.\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the [MGRSString] is empty,\r\n * the [Globe] is null, or the conversion to geodetic coordinates fails (invalid coordinate string).\r\n */\r\n @JvmStatic\r\n fun fromString(MGRSString: String): MGRSCoord {\r\n var str = MGRSString\r\n str = str.uppercase().replace(\" \", \"\")\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertMGRSToGeodetic(str)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(converter.latitude.radians, converter.longitude.radians, str)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = MGRSString\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.util.format.format\r\nimport kotlin.math.PI\r\nimport kotlin.math.floor\r\nimport kotlin.math.pow\r\n\r\n/*\r\n * Converter used to translate MGRS coordinate strings to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans mgrs.c and mgrs.h code. Contains routines to convert from Geodetic to MGRS and\r\n * the other direction.\r\n */\r\ninternal class MGRSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val STRING_ERROR = 0x0004\r\n const val PRECISION_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0040\r\n const val NORTHING_ERROR = 0x0080\r\n const val HEMISPHERE_ERROR = 0x0200\r\n const val LAT_WARNING = 0x0400\r\n const val UTM_ERROR = 0x1000\r\n const val UPS_ERROR = 0x2000\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val MAX_PRECISION = 5\r\n private const val MIN_UTM_LAT = -80 * PI / 180.0 // -80 degrees in radians\r\n private const val MAX_UTM_LAT = 84 * PI / 180.0 // 84 degrees in radians\r\n private const val DEG_TO_RAD = 0.017453292519943295 // PI/180\r\n private const val RAD_TO_DEG = 57.29577951308232 // 180/PI\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n private const val TWO_MIL = 2000000.0\r\n private const val ONE_HT = 100000.0\r\n private const val CLARKE_1866 = \"CC\"\r\n private const val CLARKE_1880 = \"CD\"\r\n private const val BESSEL_1841 = \"BR\"\r\n private const val BESSEL_1841_NAMIBIA = \"BN\"\r\n private const val LETTER_A = 0 /* ARRAY INDEX FOR LETTER A */\r\n private const val LETTER_B = 1 /* ARRAY INDEX FOR LETTER B */\r\n private const val LETTER_C = 2 /* ARRAY INDEX FOR LETTER C */\r\n private const val LETTER_D = 3 /* ARRAY INDEX FOR LETTER D */\r\n private const val LETTER_E = 4 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_F = 5 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_G = 6 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_H = 7 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_I = 8 /* ARRAY INDEX FOR LETTER I */\r\n private const val LETTER_J = 9 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_K = 10 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_L = 11 /* ARRAY INDEX FOR LETTER L */\r\n private const val LETTER_M = 12 /* ARRAY INDEX FOR LETTER M */\r\n private const val LETTER_N = 13 /* ARRAY INDEX FOR LETTER N */\r\n private const val LETTER_O = 14 /* ARRAY INDEX FOR LETTER O */\r\n private const val LETTER_P = 15 /* ARRAY INDEX FOR LETTER P */\r\n private const val LETTER_Q = 16 /* ARRAY INDEX FOR LETTER Q */\r\n private const val LETTER_R = 17 /* ARRAY INDEX FOR LETTER R */\r\n private const val LETTER_S = 18 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_T = 19 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_U = 20 /* ARRAY INDEX FOR LETTER U */\r\n private const val LETTER_V = 21 /* ARRAY INDEX FOR LETTER V */\r\n private const val LETTER_W = 22 /* ARRAY INDEX FOR LETTER W */\r\n private const val LETTER_X = 23 /* ARRAY INDEX FOR LETTER X */\r\n private const val LETTER_Y = 24 /* ARRAY INDEX FOR LETTER Y */\r\n private const val LETTER_Z = 25 /* ARRAY INDEX FOR LETTER Z */\r\n private const val MGRS_LETTERS = 3 /* NUMBER OF LETTERS IN MGRS */\r\n private const val alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\r\n\r\n // UPS Constants are in the following order:\r\n // letter representing latitude band\r\n // 2nd letter range - high number\r\n // 2nd letter range - low number\r\n // 3rd letter range - high number (UPS)\r\n // False easting based on 2nd letter\r\n // False northing based on 3rd letter\r\n private val upsConstants = arrayOf(\r\n intArrayOf(LETTER_A, LETTER_J, LETTER_Z, LETTER_Z, 800000, 800000),\r\n intArrayOf(LETTER_B, LETTER_A, LETTER_R, LETTER_Z, 2000000, 800000),\r\n intArrayOf(LETTER_Y, LETTER_J, LETTER_Z, LETTER_P, 800000, 1300000),\r\n intArrayOf(LETTER_Z, LETTER_A, LETTER_J, LETTER_P, 2000000, 1300000)\r\n )\r\n\r\n // Latitude Band Constants are in the following order:\r\n // letter representing latitude band\r\n // minimum northing for latitude band\r\n // upper latitude for latitude band\r\n // lower latitude for latitude band\r\n private val latitudeBandConstants = arrayOf(\r\n doubleArrayOf(LETTER_C.toDouble(), 1100000.0, -72.0, -80.5, 0.0),\r\n doubleArrayOf(LETTER_D.toDouble(), 2000000.0, -64.0, -72.0, 2000000.0),\r\n doubleArrayOf(LETTER_E.toDouble(), 2800000.0, -56.0, -64.0, 2000000.0),\r\n doubleArrayOf(LETTER_F.toDouble(), 3700000.0, -48.0, -56.0, 2000000.0),\r\n doubleArrayOf(LETTER_G.toDouble(), 4600000.0, -40.0, -48.0, 4000000.0),\r\n doubleArrayOf(LETTER_H.toDouble(), 5500000.0, -32.0, -40.0, 4000000.0),\r\n doubleArrayOf(LETTER_J.toDouble(), 6400000.0, -24.0, -32.0, 6000000.0),\r\n doubleArrayOf(LETTER_K.toDouble(), 7300000.0, -16.0, -24.0, 6000000.0),\r\n doubleArrayOf(LETTER_L.toDouble(), 8200000.0, -8.0, -16.0, 8000000.0),\r\n doubleArrayOf(LETTER_M.toDouble(), 9100000.0, 0.0, -8.0, 8000000.0),\r\n doubleArrayOf(LETTER_N.toDouble(), 0.0, 8.0, 0.0, 0.0),\r\n doubleArrayOf(LETTER_P.toDouble(), 800000.0, 16.0, 8.0, 0.0),\r\n doubleArrayOf(LETTER_Q.toDouble(), 1700000.0, 24.0, 16.0, 0.0),\r\n doubleArrayOf(LETTER_R.toDouble(), 2600000.0, 32.0, 24.0, 2000000.0),\r\n doubleArrayOf(LETTER_S.toDouble(), 3500000.0, 40.0, 32.0, 2000000.0),\r\n doubleArrayOf(LETTER_T.toDouble(), 4400000.0, 48.0, 40.0, 4000000.0),\r\n doubleArrayOf(LETTER_U.toDouble(), 5300000.0, 56.0, 48.0, 4000000.0),\r\n doubleArrayOf(LETTER_V.toDouble(), 6200000.0, 64.0, 56.0, 6000000.0),\r\n doubleArrayOf(LETTER_W.toDouble(), 7000000.0, 72.0, 64.0, 6000000.0),\r\n doubleArrayOf(LETTER_X.toDouble(), 7900000.0, 84.5, 72.0, 6000000.0)\r\n )\r\n }\r\n\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n var mgrsString = \"\"\r\n private set\r\n private var ltr2LowValue = 0\r\n private var ltr2HighValue = 0 // this is only used for doing MGRS to xxx conversions.\r\n private var falseNorthing = 0.0\r\n private var lastLetter = 0\r\n private var lastError = NO_ERROR\r\n private var north = 0.0\r\n private var south = 0.0\r\n private var minNorthing = 0.0\r\n private var northingOffset = 0.0\r\n private val mgrsEllipsoidCode = \"WE\"\r\n\r\n private class MGRSComponents(\r\n val zone: Int, val latitudeBand: Int, val squareLetter1: Int, val squareLetter2: Int,\r\n val easting: Double, val northing: Double, val precision: Int\r\n ) {\r\n override fun toString() = \"MGRS: \" + zone + \" \" + alphabet[latitudeBand] + \" \" +\r\n alphabet[squareLetter1] + alphabet[squareLetter2] + \" \" +\r\n easting + \" \" + northing + \" \" + \"(\" + precision + \")\"\r\n }\r\n\r\n /**\r\n * The function ConvertMGRSToGeodetic converts an MGRS coordinate string to Geodetic (latitude and longitude)\r\n * coordinates according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param MGRSString MGRS coordinate string.\r\n *\r\n * @return the error code.\r\n */\r\n fun convertMGRSToGeodetic(MGRSString: String): Int {\r\n latitude = 0.0\r\n longitude = 0.0\r\n val mgrs = breakMGRSString(MGRSString) ?: return lastError\r\n var errorCode = NO_ERROR\r\n if (mgrs.zone != 0) {\r\n val utm = convertMGRSToUTM(MGRSString)\r\n if (utm != null) {\r\n latitude = utm.latitude.inRadians\r\n longitude = utm.longitude.inRadians\r\n } else errorCode = UTM_ERROR\r\n } else {\r\n val ups = convertMGRSToUPS(MGRSString)\r\n if (ups != null) {\r\n latitude = ups.latitude.inRadians\r\n longitude = ups.longitude.inRadians\r\n } else errorCode = UPS_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Break_MGRS_String breaks down an MGRS coordinate string into its component parts. Updates\r\n * last_error.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [MGRSComponents] or null.\r\n */\r\n private fun breakMGRSString(MGRSString: String): MGRSComponents? {\r\n var str = MGRSString\r\n var i = 0\r\n var errorCode = NO_ERROR\r\n var zone = 0\r\n val letters = IntArray(3)\r\n var easting = 0L\r\n var northing = 0L\r\n var precision = 0\r\n str = str.uppercase().replace(\"\\\\s\", \"\")\r\n var j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n var numDigits = i - j\r\n if (numDigits <= 2) {\r\n if (numDigits > 0) {\r\n /* get zone */\r\n zone = str.substring(j, i).toInt()\r\n if (zone < 1 || zone > 60) errorCode = errorCode or STRING_ERROR\r\n }\r\n }\r\n j = i\r\n while (i < str.length && str[i].isLetter()) i++\r\n val numLetters = i - j\r\n if (numLetters == 3) {\r\n /* get letters */\r\n letters[0] = alphabet.indexOf(str[j].uppercaseChar())\r\n if (letters[0] == LETTER_I || letters[0] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[1] = alphabet.indexOf(str[j + 1].uppercaseChar())\r\n if (letters[1] == LETTER_I || letters[1] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[2] = alphabet.indexOf(str[j + 2].uppercaseChar())\r\n if (letters[2] == LETTER_I || letters[2] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n } else errorCode = errorCode or STRING_ERROR\r\n j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n numDigits = i - j\r\n if (numDigits <= 10 && numDigits % 2 == 0) {\r\n /* get easting, northing and precision */\r\n /* get easting & northing */\r\n val n = numDigits / 2\r\n precision = n\r\n if (n > 0) {\r\n easting = str.substring(j, j + n).toLong()\r\n northing = str.substring(j + n, j + n + n).toLong()\r\n val multiplier = 10.0.pow(5 - n).toLong()\r\n easting *= multiplier\r\n northing *= multiplier\r\n } else {\r\n easting = 0\r\n northing = 0\r\n }\r\n } else errorCode = errorCode or STRING_ERROR\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR) MGRSComponents(\r\n zone, letters[0], letters[1], letters[2],\r\n easting.toDouble(), northing.toDouble(), precision\r\n ) else null\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Band_Min_Northing receives a latitude band letter and uses the Latitude_Band_Table to\r\n * determine the minimum northing for that latitude band letter. Updates min_northing.\r\n *\r\n * @param letter Latitude band letter.\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeBandMinNorthing(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n minNorthing = latitudeBandConstants[letter - 2][1]\r\n northingOffset = latitudeBandConstants[letter - 2][4]\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n minNorthing = latitudeBandConstants[letter - 3][1]\r\n northingOffset = latitudeBandConstants[letter - 3][4]\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n minNorthing = latitudeBandConstants[letter - 4][1]\r\n northingOffset = latitudeBandConstants[letter - 4][4]\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Range receives a latitude band letter and uses the Latitude_Band_Table to determine the\r\n * latitude band boundaries for that latitude band letter. Updates north and south.\r\n *\r\n * @param letter the Latitude band letter\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeRange(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n north = latitudeBandConstants[letter - 2][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 2][3] * DEG_TO_RAD\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n north = latitudeBandConstants[letter - 3][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 3][3] * DEG_TO_RAD\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n north = latitudeBandConstants[letter - 4][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 4][3] * DEG_TO_RAD\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function convertMGRSToUTM converts an MGRS coordinate string to UTM projection (zone, hemisphere, easting and\r\n * northing) coordinates according to the current ellipsoid parameters. Updates last_error if any errors occurred.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [UTMCoord] or null.\r\n */\r\n private fun convertMGRSToUTM(MGRSString: String): UTMCoord? {\r\n var errorCode = NO_ERROR\r\n var utm: UTMCoord? = null\r\n val mgrs = breakMGRSString(MGRSString)\r\n if (mgrs == null) errorCode = errorCode or STRING_ERROR else {\r\n if (mgrs.latitudeBand == LETTER_X && (mgrs.zone == 32 || mgrs.zone == 34 || mgrs.zone == 36))\r\n errorCode = errorCode or STRING_ERROR\r\n else {\r\n val hemisphere = if (mgrs.latitudeBand < LETTER_N) Hemisphere.S else Hemisphere.N\r\n getGridValues(mgrs.zone)\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter2 > LETTER_V) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n var gridNorthing = mgrs.squareLetter2 * ONE_HT\r\n var gridEasting = (mgrs.squareLetter1 - ltr2LowValue + 1) * ONE_HT\r\n if (ltr2LowValue == LETTER_J && mgrs.squareLetter1 > LETTER_O) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n errorCode = getLatitudeBandMinNorthing(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing -= falseNorthing\r\n if (gridNorthing < 0.0) gridNorthing += TWO_MIL\r\n gridNorthing += northingOffset\r\n if (gridNorthing < minNorthing) gridNorthing += TWO_MIL\r\n val easting = gridEasting + mgrs.easting\r\n val northing = gridNorthing + mgrs.northing\r\n try {\r\n utm = UTMCoord.fromUTM(mgrs.zone, hemisphere, easting, northing)\r\n latitude = utm.latitude.inRadians\r\n val divisor = 10.0.pow(mgrs.precision)\r\n errorCode = getLatitudeRange(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n if (!(south - DEG_TO_RAD / divisor <= latitude\r\n && latitude <= north + DEG_TO_RAD / divisor)\r\n ) errorCode = errorCode or LAT_WARNING\r\n }\r\n } catch (e: Exception) {\r\n errorCode = UTM_ERROR\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR || errorCode == LAT_WARNING) utm else null\r\n }\r\n\r\n /**\r\n * The function convertGeodeticToMGRS converts Geodetic (latitude and longitude) coordinates to an MGRS coordinate\r\n * string, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned by\r\n * the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radian\r\n * @param precision Precision level of MGRS string\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToMGRS(latitude: Double, longitude: Double, precision: Int): Int {\r\n mgrsString = \"\"\r\n var errorCode = NO_ERROR\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = LAT_ERROR\r\n if (longitude < -PI || longitude > 2 * PI) errorCode = LON_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n errorCode = if (latitude < MIN_UTM_LAT || latitude > MAX_UTM_LAT) {\r\n try {\r\n val ups = UPSCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUPSToMGRS(ups.hemisphere, ups.easting, ups.northing, precision)\r\n } catch (e: Exception) {\r\n UPS_ERROR\r\n }\r\n } else {\r\n try {\r\n val utm = UTMCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUTMToMGRS(utm.zone, latitude, utm.easting, utm.northing, precision)\r\n } catch (e: Exception) {\r\n UTM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, and northing) coordinates to an MGRS\r\n * coordinate string according to the current ellipsoid parameters. If any errors occur, the error code(s) are\r\n * returned by the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n * @param precision precision level of MGRS string\r\n *\r\n * @return error value\r\n */\r\n private fun convertUPSToMGRS(hemisphere: Hemisphere, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* northing used to derive 3rd letter of MGRS */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (east < MIN_EAST_NORTH || east > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (north < MIN_EAST_NORTH || north > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = errorCode or PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n if (Hemisphere.N == hemisphere) {\r\n if (east >= TWO_MIL) letters[0] = LETTER_Z else letters[0] = LETTER_Y\r\n val index = letters[0] - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n if (east >= TWO_MIL) letters[0] = LETTER_B else letters[0] = LETTER_A\r\n ltr2LowValue = upsConstants[letters[0]][1]\r\n falseEasting = upsConstants[letters[0]][4].toDouble()\r\n falseNorthing = upsConstants[letters[0]][5].toDouble()\r\n }\r\n gridNorthing = north\r\n gridNorthing -= falseNorthing\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n gridEasting -= falseEasting\r\n letters[1] = ltr2LowValue + (gridEasting / ONE_HT).toInt()\r\n if (east < TWO_MIL) {\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n if (letters[1] > LETTER_U) letters[1] = letters[1] + 2\r\n } else {\r\n if (letters[1] > LETTER_C) letters[1] = letters[1] + 2\r\n if (letters[1] > LETTER_H) letters[1] = letters[1] + 1\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n }\r\n makeMGRSString(0, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function UTM_To_MGRS calculates an MGRS coordinate string based on the zone, latitude, easting and northing.\r\n *\r\n * @param zone Zone number\r\n * @param latitude Latitude in radians\r\n * @param easting Easting\r\n * @param northing Northing\r\n * @param precision Precision\r\n *\r\n * @return error code\r\n */\r\n private fun convertUTMToMGRS(zone: Int, latitude: Double, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n var gridEasting: Double /* Easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* Northing used to derive 3rd letter of MGRS */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n\r\n /* Round easting and northing values */\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n getGridValues(zone)\r\n val errorCode = getLatitudeLetter(latitude)\r\n letters[0] = lastLetter\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = north\r\n if (gridNorthing == 1e7) gridNorthing -= 1.0\r\n while (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n gridNorthing += falseNorthing\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n if (letters[0] == LETTER_V && zone == 31 && gridEasting == 500000.0) gridEasting -= 1.0 /* SUBTRACT 1 METER */\r\n letters[1] = ltr2LowValue + ((gridEasting / ONE_HT).toInt() - 1)\r\n if (ltr2LowValue == LETTER_J && letters[1] > LETTER_N) letters[1] = letters[1] + 1\r\n makeMGRSString(zone, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Grid_Values sets the letter range used for the 2nd letter in the MGRS coordinate string, based\r\n * on the set number of the utm zone. It also sets the false northing using a value of A for the second letter of\r\n * the grid square, based on the grid pattern and set number of the utm zone.\r\n *
\r\n * Key values that are set in this function include: ltr2_low_value, ltr2_high_value, and false_northing.\r\n *\r\n * @param zone Zone number\r\n */\r\n private fun getGridValues(zone: Int) {\r\n var setNumber = zone % 6 /* Set number (1-6) based on UTM zone number */\r\n if (setNumber == 0) setNumber = 6\r\n val aaPattern = if (mgrsEllipsoidCode.compareTo(CLARKE_1866) == 0\r\n || mgrsEllipsoidCode.compareTo(CLARKE_1880) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841_NAMIBIA) == 0\r\n ) 0 else 1 /* Pattern based on ellipsoid code */\r\n if (setNumber == 1 || setNumber == 4) {\r\n ltr2LowValue = LETTER_A\r\n ltr2HighValue = LETTER_H\r\n } else if (setNumber == 2 || setNumber == 5) {\r\n ltr2LowValue = LETTER_J\r\n ltr2HighValue = LETTER_R\r\n } else if (setNumber == 3 || setNumber == 6) {\r\n ltr2LowValue = LETTER_S\r\n ltr2HighValue = LETTER_Z\r\n }\r\n\r\n /* False northing at A for second letter of grid square */\r\n falseNorthing = if (aaPattern == 1) {\r\n if (setNumber % 2 == 0) 500000.0\r\n else 0.0\r\n } else {\r\n if (setNumber % 2 == 0) 1500000.0\r\n else 1000000.00\r\n }\r\n }\r\n\r\n /**\r\n * The function receives a latitude value and uses the Latitude_Band_Table to determine the\r\n * latitude band letter for that latitude.\r\n *\r\n * @param latitude latitude to turn into code\r\n *\r\n * @return error code\r\n */\r\n private fun getLatitudeLetter(latitude: Double): Int {\r\n var errorCode = NO_ERROR\r\n val latDeg = latitude * RAD_TO_DEG\r\n if (latDeg >= 72 && latDeg < 84.5) lastLetter = LETTER_X\r\n else if (latDeg > -80.5 && latDeg < 72) {\r\n val temp = (latitude + 80.0 * DEG_TO_RAD) / (8.0 * DEG_TO_RAD) + 1.0e-12\r\n lastLetter = latitudeBandConstants[temp.toInt()][0].toInt()\r\n } else errorCode = errorCode or LAT_ERROR\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Round_MGRS rounds the input value to the nearest integer, using the standard engineering rule. The\r\n * rounded integer value is then returned.\r\n *\r\n * @param value Value to be rounded\r\n *\r\n * @return rounded double value\r\n */\r\n private fun roundMGRS(value: Double): Double {\r\n val floorValue = floor(value)\r\n val fraction = value - floorValue\r\n var intValue = floorValue.toLong()\r\n if (fraction > 0.5 || fraction == 0.5 && intValue % 2 == 1L) intValue++\r\n return intValue.toDouble()\r\n }\r\n\r\n /**\r\n * The function Make_MGRS_String constructs an MGRS string from its component parts.\r\n *\r\n * @param zone UTM Zone\r\n * @param letters MGRS coordinate string letters\r\n * @param easting Easting value\r\n * @param northing Northing value\r\n * @param precision Precision level of MGRS string\r\n */\r\n private fun makeMGRSString(zone: Int, letters: IntArray, easting: Double, northing: Double, precision: Int) {\r\n var east = easting\r\n var north = northing\r\n mgrsString = if (zone != 0) \"%02d\".format(zone) else \" \"\r\n for (j in 0..2) {\r\n if (letters[j] < 0 || letters[j] > 26) return\r\n mgrsString += alphabet[letters[j]]\r\n }\r\n val divisor = 10.0.pow(5 - precision)\r\n east %= 100000.0\r\n if (east >= 99999.5) east = 99999.0\r\n\r\n // Here we need to only use the number requesting in the precision\r\n val iEast = (east / divisor).toInt()\r\n var sEast = StringBuilder(iEast.toString())\r\n if (sEast.length > precision) sEast = StringBuilder(sEast.substring(0, precision - 1))\r\n else for (i in 0 until precision - sEast.length) sEast.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sEast\"\r\n north %= 100000.0\r\n if (north >= 99999.5) north = 99999.0\r\n val iNorth = (north / divisor).toInt()\r\n var sNorth = StringBuilder(iNorth.toString())\r\n if (sNorth.length > precision) sNorth = StringBuilder(sNorth.substring(0, precision - 1))\r\n else for (i in 0 until precision - sNorth.length) sNorth.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sNorth\"\r\n }\r\n\r\n /**\r\n * The function Convert_MGRS_To_UPS converts an MGRS coordinate string to UPS (hemisphere, easting, and northing)\r\n * coordinates, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param MGRS the MGRS coordinate string.\r\n *\r\n * @return a corresponding [UPSCoord] instance.\r\n */\r\n private fun convertMGRSToUPS(MGRS: String): UPSCoord? {\r\n val ltr2HighValue: Int /* 2nd letter range - high number */\r\n val ltr3HighValue: Int /* 3rd letter range - high number (UPS) */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting for 100,000 meter grid square */\r\n var gridNorthing: Double /* northing for 100,000 meter grid square */\r\n var errorCode = NO_ERROR\r\n val hemisphere: Hemisphere\r\n var easting: Double\r\n var northing: Double\r\n val mgrs = breakMGRSString(MGRS)\r\n if (mgrs != null) {\r\n if (mgrs.zone > 0) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n easting = mgrs.easting\r\n northing = mgrs.northing\r\n if (mgrs.latitudeBand >= LETTER_Y) {\r\n hemisphere = Hemisphere.N\r\n val index = mgrs.latitudeBand - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n ltr2HighValue = upsConstants[index][2]\r\n ltr3HighValue = upsConstants[index][3]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n hemisphere = Hemisphere.S\r\n ltr2LowValue = upsConstants[mgrs.latitudeBand][1]\r\n ltr2HighValue = upsConstants[mgrs.latitudeBand][2]\r\n ltr3HighValue = upsConstants[mgrs.latitudeBand][3]\r\n falseEasting = upsConstants[mgrs.latitudeBand][4].toDouble()\r\n falseNorthing = upsConstants[mgrs.latitudeBand][5].toDouble()\r\n }\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter1 == LETTER_D || mgrs.squareLetter1 == LETTER_E ||\r\n mgrs.squareLetter1 == LETTER_M || mgrs.squareLetter1 == LETTER_N ||\r\n mgrs.squareLetter1 == LETTER_V || mgrs.squareLetter1 == LETTER_W ||\r\n mgrs.squareLetter2 > ltr3HighValue) errorCode = STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = mgrs.squareLetter2 * ONE_HT + falseNorthing\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n gridEasting = (mgrs.squareLetter1 - ltr2LowValue) * ONE_HT + falseEasting\r\n if (ltr2LowValue != LETTER_A) {\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n if (mgrs.squareLetter1 > LETTER_U) gridEasting -= 200000.0\r\n } else {\r\n if (mgrs.squareLetter1 > LETTER_C) gridEasting -= 200000.0\r\n if (mgrs.squareLetter1 > LETTER_I) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n }\r\n easting += gridEasting\r\n northing += gridNorthing\r\n return UPSCoord.fromUPS(hemisphere, easting, northing)\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans polarst.c and polarst.h code.\r\n */\r\ninternal class PolarCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val ORIGIN_LAT_ERROR = 0x0004\r\n const val ORIGIN_LON_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0010\r\n const val NORTHING_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val RADIUS_ERROR = 0x0100\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val PI_Over_4 = PI / 4.0\r\n private const val TWO_PI = 2.0 * PI\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private var es = 0.08181919084262188000 /* Eccentricity of ellipsoid */\r\n private var esOver2 = .040909595421311 /* es / 2.0 */\r\n private var southernHemisphere = 0.0 /* Flag variable */\r\n private var mc = 1.0\r\n private var tc = 1.0\r\n private var e4 = 1.0033565552493\r\n private var amc = 6378137.0 /* Polar_a * mc */\r\n private var twoA = 12756274.0 /* 2.0 * Polar_a */\r\n\r\n /* Polar Stereographic projection Parameters */\r\n private var originLat = PI * 90.0 / 180.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 12713601.0\r\n private var deltaNorthing = 12713601.0\r\n\r\n var easting = 0.0\r\n private set\r\n var northing = 0.0\r\n private set\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function setPolarStereographicParameters receives the ellipsoid parameters and Polar Stereographic projection\r\n * parameters as inputs, and sets the corresponding state variables. If any errors occur, error code(s) are\r\n * returned by the function, otherwise POLAR_NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude of true scale, in radians\r\n * @param longitude Longitude down from pole, in radians\r\n * @param easting Easting (X) at center of projection, in meters\r\n * @param northing Northing (Y) at center of projection, in meters\r\n * @return error code\r\n */\r\n fun setPolarStereographicParameters(\r\n a: Double, f: Double, latitude: Double, longitude: Double, easting: Double, northing: Double\r\n ): Int {\r\n var lon = longitude\r\n val invF = 1 / f\r\n val epsilon = 1.0e-2\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* Origin Latitude out of range */\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* Origin Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or ORIGIN_LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n twoA = 2.0 * this.a\r\n this.f = f\r\n if (lon > PI) lon -= TWO_PI\r\n if (latitude < 0) {\r\n southernHemisphere = 1.0\r\n originLat = -latitude\r\n originLong = -lon\r\n } else {\r\n southernHemisphere = 0.0\r\n originLat = latitude\r\n originLong = lon\r\n }\r\n falseEasting = easting\r\n falseNorthing = northing\r\n val es2 = 2 * this.f - this.f * this.f\r\n es = sqrt(es2)\r\n esOver2 = es / 2.0\r\n if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) {\r\n val sLat = sin(originLat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val cLat = cos(originLat)\r\n mc = cLat / sqrt(1.0 - esSin * esSin)\r\n amc = this.a * mc\r\n tc = tan(PI_Over_4 - originLat / 2.0) / powEs\r\n } else {\r\n val onePlusEs = 1.0 + es\r\n val oneMinusEs = 1.0 - es\r\n e4 = sqrt(onePlusEs.pow(onePlusEs) * oneMinusEs.pow(oneMinusEs))\r\n }\r\n }\r\n\r\n /* Calculate Radius */\r\n convertGeodeticToPolarStereographic(0.0, originLong)\r\n deltaNorthing = this.northing * 2 // Increased range for accepted easting and northing values\r\n deltaNorthing = abs(deltaNorthing) + epsilon\r\n deltaEasting = deltaNorthing\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic coordinates (latitude and longitude) to\r\n * Polar Stereographic coordinates (easting and northing), according to the current ellipsoid and Polar\r\n * Stereographic projection parameters. If any errors occur, error code(s) are returned by the function, otherwise\r\n * POLAR_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude, in radians\r\n * @param longitude Longitude, in radians\r\n * @return error code\r\n */\r\n fun convertGeodeticToPolarStereographic(latitude: Double, longitude: Double): Int {\r\n var lat = latitude\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (lat < -PI_OVER_2 || lat > PI_OVER_2) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat < 0 && southernHemisphere == 0.0) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat > 0 && southernHemisphere == 1.0) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (abs(abs(lat) - PI_OVER_2) < 1.0e-10) {\r\n easting = 0.0\r\n northing = 0.0\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n lon *= -1.0\r\n lat *= -1.0\r\n }\r\n var dLam = lon - originLong\r\n if (dLam > PI) dLam -= TWO_PI\r\n if (dLam < -PI) dLam += TWO_PI\r\n val sLat = sin(lat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val t = tan(PI_Over_4 - lat / 2.0) / powEs\r\n val rho = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) amc * t / tc else twoA * t / e4\r\n if (southernHemisphere != 0.0) {\r\n easting = -(rho * sin(dLam) - falseEasting)\r\n northing = rho * cos(dLam) + falseNorthing\r\n } else easting = rho * sin(dLam) + falseEasting\r\n northing = -rho * cos(dLam) + falseNorthing\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Polar_Stereographic_To_Geodetic converts Polar\r\n * Stereographic coordinates (easting and northing) to geodetic\r\n * coordinates (latitude and longitude) according to the current ellipsoid\r\n * and Polar Stereographic projection Parameters. If any errors occur, the\r\n * code(s) are returned by the function, otherwise POLAR_NO_ERROR\r\n * is returned.\r\n *\r\n * @param Easting Easting (X), in meters\r\n * @param Northing Northing (Y), in meters\r\n * @return error code\r\n */\r\n fun convertPolarStereographicToGeodetic(Easting: Double, Northing: Double): Int {\r\n var dy = 0.0\r\n var dx = 0.0\r\n var rho = 0.0\r\n var tempPhi = 0.0\r\n var errorCode = NO_ERROR\r\n val minEasting = falseEasting - deltaEasting\r\n val maxEasting = falseEasting + deltaEasting\r\n val minNorthing = falseNorthing - deltaNorthing\r\n val maxNorthing = falseNorthing + deltaNorthing\r\n /* Easting out of range */\r\n if (Easting > maxEasting || Easting < minEasting) errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (Northing > maxNorthing || Northing < minNorthing) errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n dy = Northing - falseNorthing\r\n dx = Easting - falseEasting\r\n /* Radius of point with origin of false easting, false northing */\r\n rho = sqrt(dx * dx + dy * dy)\r\n val deltaRadius = sqrt(deltaEasting * deltaEasting + deltaNorthing * deltaNorthing)\r\n /* Point is outside of projection area */\r\n if (rho > deltaRadius) errorCode = errorCode or RADIUS_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (dy == 0.0 && dx == 0.0) {\r\n latitude = PI_OVER_2\r\n longitude = originLong\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n dy *= -1.0\r\n dx *= -1.0\r\n }\r\n val t = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) rho * tc / amc else rho * e4 / twoA\r\n var phi = PI_OVER_2 - 2.0 * atan(t)\r\n while (abs(phi - tempPhi) > 1.0e-10) {\r\n tempPhi = phi\r\n val sinPhi = sin(phi)\r\n val esSin = es * sinPhi\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n phi = PI_OVER_2 - 2.0 * atan(t * powEs)\r\n }\r\n latitude = phi\r\n longitude = originLong + atan2(dx, -dy)\r\n if (longitude > PI) longitude -= TWO_PI\r\n else if (longitude < -PI) longitude += TWO_PI\r\n /* force distorted values to 90, -90 degrees */\r\n if (latitude > PI_OVER_2) latitude = PI_OVER_2\r\n else if (latitude < -PI_OVER_2) latitude = -PI_OVER_2\r\n /* force distorted values to 180, -180 degrees */\r\n if (longitude > PI) longitude = PI else if (longitude < -PI) longitude = -PI\r\n }\r\n if (southernHemisphere != 0.0) {\r\n latitude *= -1.0\r\n longitude *= -1.0\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds a set of Transverse Mercator coordinates along with the\r\n * corresponding latitude and longitude.\r\n */\r\nclass TMCoord private constructor(val latitude: Angle, val longitude: Angle, val easting: Double, val northing: Double) {\r\n companion object {\r\n /**\r\n * Create a set of Transverse Mercator coordinates from a pair of latitude and longitude,\r\n * for the given [Globe] and projection parameters.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n * @param aOrNull semi-major ellipsoid radius. If this and argument f are non-null and globe is null, will use the specified a and f.\r\n * @param fOrNull ellipsoid flattening. If this and argument a are non-null and globe is null, will use the specified a and f.\r\n * @param originLatitude the origin latitude.\r\n * @param centralMeridian the central meridian longitude.\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * or the conversion to TM coordinates fails. If the globe is null conversion will default\r\n * to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(\r\n latitude: Angle, longitude: Angle, aOrNull: Double?, fOrNull: Double?,\r\n originLatitude: Angle, centralMeridian: Angle, falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n var a = aOrNull\r\n var f = fOrNull\r\n val converter = TMCoordConverter()\r\n if (a == null || f == null) {\r\n a = converter.a\r\n f = converter.f\r\n }\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertGeodeticToTransverseMercator(latitude.inRadians, longitude.inRadians)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(latitude, longitude, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of Transverse Mercator coordinates for the given [Globe],\r\n * easting, northing and projection parameters.\r\n *\r\n * @param easting the easting distance value in meters.\r\n * @param northing the northing distance value in meters.\r\n * @param originLatitude the origin latitude [Angle].\r\n * @param centralMeridian the central meridian longitude [Angle].\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * @throws IllegalArgumentException if the conversion to geodetic coordinates fails.\r\n * If the globe is null conversion will default to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromTM(\r\n easting: Double, northing: Double, originLatitude: Angle, centralMeridian: Angle,\r\n falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n val converter = TMCoordConverter()\r\n val a = converter.a\r\n val f = converter.f\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertTransverseMercatorToGeodetic(easting, northing)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(converter.latitude.radians, converter.longitude.radians, easting, northing)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/*\r\n * Converter used to translate Transverse Mercator coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans code tranmerc.c and tranmerc.h\r\n */\r\ninternal class TMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ORIGIN_LAT_ERROR = 0x0010\r\n const val CENT_MER_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val SCALE_FACTOR_ERROR = 0x0100\r\n const val LON_WARNING = 0x0200\r\n private const val MAX_LAT = PI * 89.99 / 180.0 /* 90 degrees in radians */\r\n private const val MAX_DELTA_LONG = PI * 90 / 180.0 /* 90 degrees in radians */\r\n private const val MIN_SCALE_FACTOR = 0.3\r\n private const val MAX_SCALE_FACTOR = 3.0\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid i meters */\r\n private set\r\n var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private set\r\n private var es = 0.0066943799901413800 /* Eccentricity (0.08181919084262188000) squared */\r\n private var ebs = 0.0067394967565869 /* Second Eccentricity squared */\r\n\r\n /* Transverse_Mercator projection Parameters */\r\n private var originLat = 0.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var scaleFactor = 1.0 /* Scale factor */\r\n\r\n /* Isometric to geodetic latitude parameters, default to WGS 84 */\r\n private var ap = 6367449.1458008\r\n private var bp = 16038.508696861\r\n private var cp = 16.832613334334\r\n private var dp = 0.021984404273757\r\n private var ep = 3.1148371319283e-005\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 40000000.0\r\n private var deltaNorthing = 40000000.0\r\n\r\n /** Easting/X at the center of the projection */\r\n var easting = 0.0\r\n private set\r\n /** Northing/Y at the center of the projection */\r\n var northing = 0.0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians. */\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function receives the ellipsoid parameters and Transverse Mercator\r\n * projection parameters as inputs, and sets the corresponding state variables. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude in radians at the origin of the projection\r\n * @param centralMeridian Longitude in radians at the center of the projection\r\n * @param easting Easting/X at the center of the projection\r\n * @param northing Northing/Y at the center of the projection\r\n * @param scaleFactor Projection scale factor\r\n *\r\n * @return error code\r\n */\r\n fun setTransverseMercatorParameters(\r\n a: Double, f: Double, latitude: Double, centralMeridian: Double, easting: Double, northing: Double, scaleFactor: Double\r\n ): Int {\r\n var cm = centralMeridian\r\n val invF = 1 / f\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* origin latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* origin longitude out of range */\r\n if (cm < -PI || cm > 2 * PI) errorCode = errorCode or CENT_MER_ERROR\r\n if (scaleFactor < MIN_SCALE_FACTOR || scaleFactor > MAX_SCALE_FACTOR) {\r\n errorCode = errorCode or SCALE_FACTOR_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n this.f = f\r\n originLat = 0.0\r\n originLong = 0.0\r\n falseNorthing = 0.0\r\n falseEasting = 0.0\r\n this.scaleFactor = 1.0\r\n\r\n /* Eccentricity Squared */\r\n es = 2 * this.f - this.f * this.f\r\n /* Second Eccentricity Squared */\r\n ebs = 1 / (1 - es) - 1\r\n val b = this.a * (1 - this.f)\r\n /*True meridional constants */\r\n val tn = (this.a - b) / (this.a + b)\r\n val tn2 = tn * tn\r\n val tn3 = tn2 * tn\r\n val tn4 = tn3 * tn\r\n val tn5 = tn4 * tn\r\n ap = this.a * (1e0 - tn + 5e0 * (tn2 - tn3) / 4e0 + 81e0 * (tn4 - tn5) / 64e0)\r\n bp = 3e0 * this.a * (tn - tn2 + (7e0 * (tn3 - tn4) / 8e0) + 55e0 * tn5 / 64e0) / 2e0\r\n cp = 15e0 * this.a * (tn2 - tn3 + 3e0 * (tn4 - tn5) / 4e0) / 16.0\r\n dp = 35e0 * this.a * (tn3 - tn4 + 11e0 * tn5 / 16e0) / 48e0\r\n ep = 315e0 * this.a * (tn4 - tn5) / 512e0\r\n convertGeodeticToTransverseMercator(MAX_LAT, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n deltaNorthing = this.northing\r\n convertGeodeticToTransverseMercator(0.0, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n originLat = latitude\r\n if (cm > PI) cm -= 2 * PI\r\n originLong = cm\r\n falseNorthing = northing\r\n falseEasting = easting\r\n this.scaleFactor = scaleFactor\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Transverse_Mercator converts geodetic (latitude and longitude) coordinates to\r\n * Transverse Mercator projection (easting and northing) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection coordinates. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToTransverseMercator(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n if (lon > PI) lon -= 2 * PI\r\n if (lon < originLong - MAX_DELTA_LONG || lon > originLong + MAX_DELTA_LONG) {\r\n val tempLong = if (lon < 0) lon + 2 * PI else lon\r\n val tempOrigin = if (originLong < 0) originLong + 2 * PI else originLong\r\n if (tempLong < tempOrigin - MAX_DELTA_LONG || tempLong > tempOrigin + MAX_DELTA_LONG)\r\n errorCode = errorCode or LON_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n /*\r\n * Delta Longitude\r\n */\r\n var dLam = lon - originLong\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian */\r\n if (abs(dLam) > 9.0 * PI / 180) errorCode = errorCode or LON_WARNING\r\n if (dLam > PI) dLam -= 2 * PI\r\n if (dLam < -PI) dLam += 2 * PI\r\n if (abs(dLam) < 2e-10) dLam = 0.0\r\n val s = sin(latitude)\r\n val c = cos(latitude)\r\n val c2 = c * c\r\n val c3 = c2 * c\r\n val c5 = c3 * c2\r\n val c7 = c5 * c2\r\n val t = tan(latitude)\r\n val tan2 = t * t\r\n val tan3 = tan2 * t\r\n val tan4 = tan3 * t\r\n val tan5 = tan4 * t\r\n val tan6 = tan5 * t\r\n val eta = ebs * c2\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n\r\n /* radius of curvature in prime vertical */\r\n val sn = a / sqrt(1 - es * sin(latitude).pow(2))\r\n\r\n /* True Meridional Distances */\r\n val tmd = (ap * latitude\r\n - bp * sin(2.0 * latitude)\r\n + cp * sin(4.0 * latitude)\r\n - dp * sin(6.0 * latitude)\r\n + ep * sin(8.0 * latitude))\r\n\r\n /* Origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* northing */\r\n val t1 = (tmd - tmdO) * scaleFactor\r\n val t2 = sn * s * c * scaleFactor / 2e0\r\n val t3 = sn * s * c3 * scaleFactor * (5e0 - tan2 + 9e0 * eta + 4e0 * eta2) / 24e0\r\n val t4 = sn * s * c5 * scaleFactor * (61e0 - 58e0 * tan2 + tan4 + 270e0 * eta - 330e0 * tan2 * eta + 445e0 * eta2 + 324e0 * eta3 - 680e0 * tan2 * eta2 + 88e0 * eta4 - 600e0 * tan2 * eta3 - 192e0 * tan2 * eta4) / 720e0\r\n val t5 = sn * s * c7 * scaleFactor * (1385e0 - 3111e0 * tan2 + 543e0 * tan4 - tan6) / 40320e0\r\n northing = falseNorthing + t1 + dLam.pow(2e0) * t2 + dLam.pow(4e0) * t3 + dLam.pow(6e0) * t4 + dLam.pow(8e0) * t5\r\n\r\n /* Easting */\r\n val t6 = sn * c * scaleFactor\r\n val t7 = sn * c3 * scaleFactor * (1e0 - tan2 + eta) / 6e0\r\n val t8 = sn * c5 * scaleFactor * ((5e0 - 18e0 * tan2 + tan4 + 14e0 * eta) - 58e0 * tan2 * eta + 13e0 * eta2 + 4e0 * eta3 - 64e0 * tan2 * eta2 - 24e0 * tan2 * eta3) / 120e0\r\n val t9 = sn * c7 * scaleFactor * (61e0 - 479e0 * tan2 + 179e0 * tan4 - tan6) / 5040e0\r\n easting = falseEasting + dLam * t6 + dLam.pow(3e0) * t7 + dLam.pow(5e0) * t8 + dLam.pow(7e0) * t9\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Transverse_Mercator_To_Geodetic converts Transverse Mercator projection (easting and\r\n * northing) coordinates to geodetic (latitude and longitude) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection parameters. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param easting Easting/X in meters\r\n * @param northing Northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertTransverseMercatorToGeodetic(easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n /* Easting out of range */\r\n if (easting < falseEasting - deltaEasting || easting > falseEasting + deltaEasting)\r\n errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (northing < falseNorthing - deltaNorthing || northing > falseNorthing + deltaNorthing)\r\n errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n /* True Meridional Distances for latitude of origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* Origin */\r\n val tmd = tmdO + (northing - falseNorthing) / scaleFactor\r\n\r\n /* First Estimate */\r\n var sr = a * (1e0 - es) / sqrt(1e0 - es * sin(0e0).pow(2)).pow(3)\r\n var ftphi = tmd / sr\r\n for (i in 0..4) {\r\n val t10 = (ap * ftphi\r\n - bp * sin(2.0 * ftphi)\r\n + cp * sin(4.0 * ftphi)\r\n - dp * sin(6.0 * ftphi)\r\n + ep * sin(8.0 * ftphi))\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n ftphi += (tmd - t10) / sr\r\n }\r\n\r\n /* Radius of Curvature in the meridian */\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n\r\n /* Radius of Curvature in the meridian */\r\n val sn = a / sqrt(1e0 - es * sin(ftphi).pow(2))\r\n\r\n /* Sine Cosine terms */\r\n val c = cos(ftphi)\r\n\r\n /* Tangent Value */\r\n val t = tan(ftphi)\r\n val tan2 = t * t\r\n val tan4 = tan2 * tan2\r\n val eta = ebs * c.pow(2)\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n var de = easting - falseEasting\r\n if (abs(de) < 0.0001) de = 0.0\r\n\r\n /* Latitude */\r\n val t10 = t / (2e0 * sr * sn * scaleFactor.pow(2))\r\n val t11 = t * (5e0 + 3e0 * tan2 + eta - 4e0 * eta.pow(2) - 9e0 * tan2 * eta) / (24e0 * sr * sn.pow(3) * scaleFactor.pow(4))\r\n val t12 = (t * ((61e0 + 90e0 * tan2 + 46e0 * eta + 45e0 * tan4 - 252e0 * tan2 * eta - 3e0 * eta2 + 100e0\r\n * eta3) - 66e0 * tan2 * eta2 - (90e0 * tan4\r\n * eta) + 88e0 * eta4 + 225e0 * tan4 * eta2 + 84e0 * tan2 * eta3 - 192e0 * tan2 * eta4)\r\n / (720e0 * sr * sn.pow(5) * scaleFactor.pow(6)))\r\n val t13 = t * (1385e0 + 3633e0 * tan2 + 4095e0 * tan4 + (1575e0 * t.pow(6))) / (40320e0 * sr * sn.pow(7) * scaleFactor.pow(8))\r\n latitude = (ftphi - de.pow(2) * t10 + de.pow(4) * t11 - de.pow(6) * t12 + de.pow(8) * t13)\r\n val t14 = 1e0 / (sn * c * scaleFactor)\r\n val t15 = (1e0 + 2e0 * tan2 + eta) / (6e0 * sn.pow(3) * c * scaleFactor.pow(3))\r\n val t16 = ((5e0 + 6e0 * eta + 28e0 * tan2 - 3e0 * eta2 + 8e0 * tan2 * eta + 24e0 * tan4 - 4e0\r\n * eta3) + 4e0 * tan2 * eta2 + (24e0 * tan2 * eta3)) / (120e0 * sn.pow(5) * c * scaleFactor.pow(5))\r\n val t17 = (61e0 + 662e0 * tan2 + 1320e0 * tan4 + (720e0 * t.pow(6))) / (5040e0 * sn.pow(7) * c * scaleFactor.pow(7))\r\n\r\n /* Difference in Longitude */\r\n val dLam = de * t14 - de.pow(3) * t15 + de.pow(5) * t16 - de.pow(7) * t17\r\n\r\n /* Longitude */\r\n longitude = originLong + dLam\r\n if (abs(latitude) > 90.0 * PI / 180.0) errorCode = errorCode or NORTHING_ERROR\r\n if (longitude > PI) {\r\n longitude -= 2 * PI\r\n if (abs(longitude) > PI) errorCode = errorCode or EASTING_ERROR\r\n }\r\n if (abs(dLam) > 9.0 * PI / 180 * cos(latitude)) {\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian at the equator */\r\n /* and decreases to 0 degrees at the poles */\r\n /* As you move towards the poles, distortion will become more significant */\r\n errorCode = errorCode or LON_WARNING\r\n }\r\n if (latitude > 1.0e10) errorCode = errorCode or LON_WARNING\r\n }\r\n return errorCode\r\n }\r\n}\r\n","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This immutable class holds a set of UPS coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UPSCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UPS coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertGeodeticToUPS(latitude.inRadians, longitude.inRadians)\r\n require(err == UPSCoordConverter.NO_ERROR) { \"UPS Conversion Error\" }\r\n return UPSCoord(latitude, longitude, converter.hemisphere, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of UPS coordinates for the given [Globe].\r\n *\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertUPSToGeodetic(hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UPSCoord(\r\n converter.latitude.radians, converter.longitude.radians, hemisphere, easting, northing\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = hemisphere.toString() + \" \" + easting + \"E\" + \" \" + northing + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans ups.c and ups.h code\r\n */\r\ninternal class UPSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val HEMISPHERE_ERROR = 0x0004\r\n const val EASTING_ERROR = 0x0008\r\n const val NORTHING_ERROR = 0x0010\r\n private const val MAX_LAT = PI * 90 / 180.0 // 90 degrees in radians\r\n\r\n // Min and max latitude values accepted\r\n private const val MIN_NORTH_LAT = 72 * PI / 180.0 // 83.5\r\n private const val MIN_SOUTH_LAT = -72 * PI / 180.0 // -79.5\r\n private const val MAX_ORIGIN_LAT = 81.114528 * PI / 180.0\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n }\r\n\r\n private var originLatitude = MAX_ORIGIN_LAT /*set default = North hemisphere */\r\n private val originLongitude = 0.0\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val falseEasting = 2000000.0\r\n private val falseNorthing = 2000000.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** easting/X in meters */\r\n var easting = 0.0\r\n private set\r\n /** northing/Y in meters */\r\n var northing = 0.0\r\n private set\r\n /** latitude in radians.*/\r\n var latitude = 0.0\r\n private set\r\n /** longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n private val polarConverter = PolarCoordConverter()\r\n\r\n /**\r\n * The function convertGeodeticToUPS converts geodetic (latitude and longitude) coordinates to UPS (hemisphere,\r\n * easting, and northing) coordinates, according to the current ellipsoid parameters. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude in radians\r\n * @param longitude longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUPS(latitude: Double, longitude: Double): Int {\r\n /* latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) return LAT_ERROR\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) return LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) return LAT_ERROR\r\n /* slam out of range */\r\n if (longitude < -PI || longitude > 2 * PI) return LON_ERROR\r\n if (latitude < 0) {\r\n originLatitude = -MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.S\r\n } else {\r\n originLatitude = MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.N\r\n }\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, 0.0, 0.0)\r\n polarConverter.convertGeodeticToPolarStereographic(latitude, longitude)\r\n easting = falseEasting + polarConverter.easting\r\n northing = falseNorthing + if (Hemisphere.S == hemisphere) - polarConverter.northing else polarConverter.northing\r\n return NO_ERROR\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_Geodetic converts UPS (hemisphere, easting, and northing) coordinates to geodetic\r\n * (latitude and longitude) coordinates according to the current ellipsoid parameters. If any errors occur, the\r\n * error code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertUPSToGeodetic(hemisphere: Hemisphere?, easting: Double, northing: Double): Int{\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (easting < MIN_EAST_NORTH || easting > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (northing < MIN_EAST_NORTH || northing > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (Hemisphere.N == hemisphere) originLatitude = MAX_ORIGIN_LAT\r\n if (Hemisphere.S == hemisphere) originLatitude = -MAX_ORIGIN_LAT\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, falseEasting, falseNorthing)\r\n polarConverter.convertPolarStereographicToGeodetic(easting, northing)\r\n latitude = polarConverter.latitude\r\n longitude = polarConverter.longitude\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) errorCode = errorCode or LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) errorCode = errorCode or LAT_ERROR\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\nimport kotlin.math.roundToInt\r\n\r\n/**\r\n * This immutable class holds a set of UTM coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UTMCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val zone: Int, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UTM coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertGeodeticToUTM(latitude.inRadians, longitude.inRadians)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n latitude, longitude, converter.zone, converter.hemisphere, converter.easting, converter.northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a set of UTM coordinates for the given [Globe].\r\n *\r\n * @param zone the UTM zone - 1 to 60.\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUTM(\r\n zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double\r\n ): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertUTMToGeodetic(zone, hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n converter.latitude.radians, converter.longitude.radians, zone, hemisphere, easting, northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a UTM coordinate from a standard UTM coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * @param UTMString the UTM coordinate text string.\r\n * @return the corresponding [UTMCoord].\r\n * @throws IllegalArgumentException if the [UTMString] is empty, or the conversion to geodetic coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromString(UTMString: String): UTMCoord {\r\n val separated = UTMString.trim { it <= ' ' }.replace(\" +\".toRegex(), \" \")\r\n .split(\" \").toTypedArray()\r\n return fromUTM(\r\n separated[0].toInt(),\r\n if (separated[1] == \"S\") Hemisphere.S else Hemisphere.N, //Hemisphere.valueOf(separated[1]),\r\n separated[2].substring(0, separated[2].length - 1).toDouble(),\r\n separated[3].substring(0, separated[3].length - 1).toDouble()\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = zone.toString() + \" \" + hemisphere + \" \" + easting.roundToInt() + \"E\" + \" \" + northing.roundToInt() + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/*\r\n * Converter used to translate UTM coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans utm.c and utm.h\r\n */\r\ninternal class UTMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ZONE_ERROR = 0x0010\r\n const val HEMISPHERE_ERROR = 0x0020\r\n const val ZONE_OVERRIDE_ERROR = 0x0040\r\n const val TM_ERROR = 0x0200\r\n private const val MIN_LAT = -82 * PI / 180.0 /* -82 degrees in radians */\r\n private const val MAX_LAT = 86 * PI / 180.0 /* 86 degrees in radians */\r\n private const val MIN_EASTING = 100000\r\n private const val MAX_EASTING = 900000\r\n private const val MIN_NORTHING = 0\r\n private const val MAX_NORTHING = 10000000\r\n }\r\n\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val override = 0 /* Zone override flag */\r\n private var centralMeridian = 0.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** Easting (X) in meters */\r\n var easting = 0.0\r\n private set\r\n /** Northing (Y) in meters */\r\n var northing = 0.0\r\n private set\r\n /** UTM zone */\r\n var zone = 0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function Convert_Geodetic_To_UTM converts geodetic (latitude and longitude) coordinates to UTM projection\r\n * (zone, hemisphere, easting and northing) coordinates according to the current ellipsoid and UTM zone override\r\n * parameters. If any errors occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is\r\n * returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUTM(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > 2 * PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (lon < 0) lon += 2 * PI + 1.0e-10\r\n val latDegrees = (latitude * 180.0 / PI).toInt()\r\n val lonDegrees = (lon * 180.0 / PI).toInt()\r\n var tempZone = (if (lon < PI) 31 + lon * 180.0 / PI / 6.0 else lon * 180.0 / PI / 6.0 - 29).toInt()\r\n if (tempZone > 60) tempZone = 1\r\n /* UTM special cases */\r\n if (latDegrees in 56..63 && lonDegrees > -1 && lonDegrees < 3) tempZone = 31\r\n if (latDegrees in 56..63 && lonDegrees > 2 && lonDegrees < 12) tempZone = 32\r\n if (latDegrees > 71 && lonDegrees > -1 && lonDegrees < 9) tempZone = 31\r\n if (latDegrees > 71 && lonDegrees > 8 && lonDegrees < 21) tempZone = 33\r\n if (latDegrees > 71 && lonDegrees > 20 && lonDegrees < 33) tempZone = 35\r\n if (latDegrees > 71 && lonDegrees > 32 && lonDegrees < 42) tempZone = 37\r\n if (override != 0) {\r\n if (tempZone == 1 && override == 60) tempZone = override\r\n else if (tempZone == 60 && override == 1) tempZone = override\r\n else if (tempZone - 1 <= override && override <= tempZone + 1) tempZone = override\r\n else errorCode = ZONE_OVERRIDE_ERROR\r\n }\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (tempZone >= 31) (6 * tempZone - 183) * PI / 180.0 else (6 * tempZone + 177) * PI / 180.0\r\n zone = tempZone\r\n if (latitude < 0) {\r\n falseNorthing = 10000000.0\r\n hemisphere = Hemisphere.S\r\n } else hemisphere = Hemisphere.N\r\n try {\r\n val tm = TMCoord.fromLatLon(\r\n latitude.radians, lon.radians, a, f, originLatitude.radians,\r\n centralMeridian.radians, falseEasting, falseNorthing, scale\r\n )\r\n easting = tm.easting\r\n northing = tm.northing\r\n if (easting < MIN_EASTING || easting > MAX_EASTING) errorCode = EASTING_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UTM_To_Geodetic converts UTM projection (zone, hemisphere, easting and northing) coordinates\r\n * to geodetic(latitude and longitude) coordinates, according to the current ellipsoid parameters. If any errors\r\n * occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param zone UTM zone.\r\n * @param hemisphere The coordinate hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting (X) in meters.\r\n * @param northing Northing (Y) in meters.\r\n *\r\n * @return error code.\r\n */\r\n fun convertUTMToGeodetic(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n if (zone < 1 || zone > 60) errorCode = errorCode or ZONE_ERROR\r\n if (hemisphere != Hemisphere.S && hemisphere != Hemisphere.N) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (zone >= 31) (6 * zone - 183) * PI / 180.0 else (6 * zone + 177) * PI / 180.0\r\n if (hemisphere == Hemisphere.S) falseNorthing = 10000000.0\r\n try {\r\n val tm = TMCoord.fromTM(\r\n easting, northing,\r\n originLatitude.radians, centralMeridian.radians,\r\n falseEasting, falseNorthing, scale\r\n )\r\n latitude = tm.latitude.inRadians\r\n longitude = tm.longitude.inRadians\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.gesture\n\n/**\n * Gesture state indicates a GestureRecognizer's current state.\n * Accepted values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN], [CHANGED], [CANCELLED], and [ENDED].\n */\nenum class GestureState {\n /**\n * POSSIBLE gesture recognizer state. Gesture recognizers in this state are\n * idle when there is no input event to evaluate, or are evaluating input events to determine whether or not to\n * transition into another state.\n */\n POSSIBLE,\n /**\n * FAILED gesture recognizer state. Gesture recognizers transition to this\n * state from the POSSIBLE state when the gesture cannot be recognized given the current input.\n */\n FAILED,\n /**\n * RECOGNIZED gesture recognizer state. Discrete gesture recognizers\n * transition to this state from the POSSIBLE state when the gesture is recognized.\n */\n RECOGNIZED,\n /**\n * BEGAN gesture recognizer state. Continuous gesture recognizers transition\n * to this state from the POSSIBLE state when the gesture is first recognized.\n */\n BEGAN,\n /**\n * CHANGED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from the BEGAN state or the CHANGED state, whenever an input event indicates a change in\n * the gesture.\n */\n CHANGED,\n /**\n * CANCELLED gesture recognizer state. Continuous gesture recognizers may\n * transition to this state from the BEGAN state or the CHANGED state when the touch events are cancelled.\n */\n CANCELLED,\n /**\n * ENDED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from either the BEGAN state or the CHANGED state when the current input no longer\n * represents the gesture.\n */\n ENDED;\n}","package earth.worldwind.globe\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.elevation.ElevationModel\nimport earth.worldwind.globe.projection.GeographicProjection\nimport kotlin.math.sin\nimport kotlin.math.sqrt\n\n/**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models. Globe expresses its\n * ellipsoidal parameters and elevation values in meters.\n */\nopen class Globe(\n /**\n * The globe's reference ellipsoid defining the globe's equatorial radius and polar radius.\n */\n var ellipsoid: Ellipsoid,\n /**\n * Indicates the geographic projection used by this globe. The projection specifies this globe's Cartesian\n * coordinate system.\n */\n var projection: GeographicProjection\n) {\n /**\n * Represents the elevations for an area, often but not necessarily the whole globe.\n */\n var elevationModel = ElevationModel()\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the equator.\n */\n val equatorialRadius get() = ellipsoid.semiMajorAxis\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the poles.\n */\n val polarRadius get() = ellipsoid.semiMinorAxis\n /**\n * Indicates the eccentricity squared parameter of the globe's ellipsoid. This is equivalent to `2*f -\n * f*f`, where `f` is the ellipsoid's flattening parameter.\n */\n val eccentricitySquared get() = ellipsoid.eccentricitySquared\n /**\n * Indicates whether this is a 2D globe.\n */\n val is2D get() = projection.is2D\n\n /**\n * Indicates the radius in meters of the globe's ellipsoid at a specified location.\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return the radius in meters of the globe's ellipsoid at the specified location\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun getRadiusAt(latitude: Angle, longitude: Angle): Double {\n // The radius for an ellipsoidal globe is a function of its latitude. The following solution was derived by\n // observing that the length of the ellipsoidal point at the specified latitude and longitude indicates the\n // radius at that location. The formula for the length of the ellipsoidal point was then converted into the\n // simplified form below.\n val sinLat = sin(latitude.inRadians)\n val ec2 = ellipsoid.eccentricitySquared\n val rpm = ellipsoid.semiMajorAxis / sqrt(1 - ec2 * sinLat * sinLat)\n return rpm * sqrt(1 + (ec2 * ec2 - 2 * ec2) * sinLat * sinLat)\n }\n\n /**\n * Converts a geographic position to Cartesian coordinates. This globe's projection specifies the Cartesian\n * coordinate system.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(latitude: Angle, longitude: Angle, altitude: Double, result: Vec3) =\n projection.geographicToCartesian(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianNormal(latitude: Angle, longitude: Angle, result: Vec3) =\n projection.geographicToCartesianNormal(this, latitude, longitude, result)\n\n fun geographicToCartesianTransform(latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4) =\n projection.geographicToCartesianTransform(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianGrid(\n sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, offset: Int, rowStride: Int\n ) = projection.geographicToCartesianGrid(\n this, sector, numLat, numLon, height, verticalExaggeration,\n origin, result, offset, rowStride\n )\n\n fun geographicToCartesianBorder(\n sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3, result: FloatArray\n ) = projection.geographicToCartesianBorder(this, sector, numLat, numLon, height, origin, result)\n\n /**\n * Converts a Cartesian point to a geographic position. This globe's projection specifies the Cartesian coordinate\n * system.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(x: Double, y: Double, z: Double, result: Position) =\n projection.cartesianToGeographic(this, x, y, z, result)\n\n fun cartesianToLocalTransform(x: Double, y: Double, z: Double, result: Matrix4) =\n projection.cartesianToLocalTransform(this, x, y, z, result)\n\n /**\n * Indicates the distance to the globe's horizon from a specified height above the globe's ellipsoid. The result of\n * this method is undefined if the height is negative.\n *\n * @param height the viewer's height above the globe's ellipsoid in meters\n *\n * @return the horizon distance in meters\n */\n fun horizonDistance(height: Double) = if (height > 0.0) sqrt(height * (2 * ellipsoid.semiMajorAxis + height)) else 0.0\n\n /**\n * Computes the first intersection of this globe with a specified line. The line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *\n * @param line the line to intersect with this globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(line: Line, result: Vec3) = projection.intersect(this, line, result)\n\n /**\n * Determine terrain altitude in specified geographic point from elevation model\n *\n * @param latitude location latitude\n * @param longitude location longitude\n * @param retrieve retrieve the most detailed elevation data instead of using first available cached value\n *\n * @return Elevation in meters in specified location\n */\n fun getElevation(latitude: Angle, longitude: Angle, retrieve: Boolean = false) =\n elevationModel.getHeight(latitude, longitude, retrieve).toDouble()\n\n /**\n * Get absolute position with terrain elevation at specified coordinates\n *\n * @param latitude Specified latitude\n * @param longitude Specified longitude\n *\n * @return Absolute position with terrain elevation\n */\n fun getAbsolutePosition(latitude: Angle, longitude: Angle) =\n Position(latitude, longitude, getElevation(latitude, longitude, retrieve = true))\n\n /**\n * Get absolute position for specified position and specified altitude mode\n *\n * @param position Specified position\n * @param altitudeMode Specified altitude mode\n *\n * @return Absolute position for specified altitude mode\n */\n fun getAbsolutePosition(position: Position, altitudeMode: AltitudeMode) = when (altitudeMode) {\n AltitudeMode.CLAMP_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude)\n AltitudeMode.RELATIVE_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude).apply {\n altitude += position.altitude\n }\n else -> Position(position)\n }\n\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.elevation.coverage.ElevationCoverage\n\nopen class ElevationModel(): Iterable {\n protected val coverages = mutableListOf()\n val timestamp: Long get() {\n var maxTimestamp = 0L\n for (i in coverages.indices) {\n val timestamp = coverages[i].timestamp\n if (maxTimestamp < timestamp) maxTimestamp = timestamp\n }\n return maxTimestamp\n }\n val count get() = coverages.size\n\n constructor(model: ElevationModel): this() { addAllCoverages(model) }\n\n constructor(iterable: Iterable): this() { for (coverage in iterable) addCoverage(coverage) }\n\n fun invalidate() = coverages.forEach { coverage -> coverage.invalidateTiles() }\n\n fun getCoverageNamed(name: String) = coverages.firstOrNull { coverage -> coverage.displayName == name }\n\n fun getCoverageWithProperty(key: Any, value: Any) = coverages.firstOrNull { coverage ->\n coverage.hasUserProperty(key) && coverage.getUserProperty(key) == value\n }\n\n fun addCoverage(coverage: ElevationCoverage) = !coverages.contains(coverage) && coverages.add(coverage)\n\n fun addAllCoverages(model: ElevationModel): Boolean {\n val thatList = model.coverages\n //coverages.ensureCapacity(thatList.size)\n var changed = false\n for (thatCoverage in thatList) changed = changed or addCoverage(thatCoverage)\n return changed\n }\n\n fun removeCoverage(coverage: ElevationCoverage) = coverages.remove(coverage)\n\n fun removeAllCoverages(model: ElevationModel) = coverages.removeAll(model.coverages)\n\n fun clearCoverages() = coverages.clear()\n\n override fun iterator() = coverages.iterator()\n\n fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float {\n // coverages composite from fine to coarse\n for (i in coverages.indices.reversed()) {\n val height = coverages[i].getHeight(latitude, longitude, retrieve)\n if (height != null) return height\n }\n return 0f\n }\n\n fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n // coverages composite from coarse to fine\n for (i in coverages.indices) {\n coverages[i].getHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n }\n\n fun getHeightLimits(sector: Sector, result: FloatArray) {\n // coverage order is irrelevant\n for (i in coverages.indices) {\n coverages[i].getHeightLimits(sector, result)\n }\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.LruMemoryCache\nimport kotlinx.datetime.Clock\n\nabstract class AbstractElevationCoverage: ElevationCoverage {\n override var displayName: String? = null\n override var isEnabled = true\n set(value) {\n field = value\n updateTimestamp()\n }\n override var timestamp = Clock.System.now().toEpochMilliseconds()\n protected set\n private var userProperties: MutableMap? = null\n private val heightCache = LruMemoryCache(50000)\n\n protected fun updateTimestamp() {\n timestamp = Clock.System.now().toEpochMilliseconds()\n heightCache.clear() // Invalidate cache if elevation coverage changed\n }\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n return if (isEnabled) {\n val key = 31 * latitude.inDegrees.hashCode() + longitude.inDegrees.hashCode()\n heightCache[key] ?: doGetHeight(latitude, longitude, retrieve)?.also {\n heightCache.put(key, it, 1)\n }\n } else null\n }\n\n override fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (isEnabled) doGetHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n override fun getHeightLimits(sector: Sector, result: FloatArray) {\n if (isEnabled) doGetHeightLimits(sector, result)\n }\n\n protected abstract fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float?\n\n protected abstract fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray)\n\n protected abstract fun doGetHeightLimits(sector: Sector, result: FloatArray)\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationTileFactory\nimport earth.worldwind.util.*\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.format.format\nimport earth.worldwind.util.math.fract\nimport earth.worldwind.util.math.mod\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.time.Duration.Companion.seconds\n\nabstract class AbstractTiledElevationCoverage(\n tileMatrixSet: TileMatrixSet, tileFactory: ElevationTileFactory,\n): AbstractElevationCoverage() {\n companion object {\n protected const val GET_HEIGHT_LIMIT_SAMPLES = 32\n }\n\n var tileMatrixSet: TileMatrixSet = tileMatrixSet\n set(value) {\n field = value\n invalidateTiles()\n }\n var tileFactory: ElevationTileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Controls how many concurrent tile requests are allowed for this coverage.\n */\n var retrievalQueueSize = 4\n /**\n * The list of elevation retrievals in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n protected var coverageCache = LruMemoryCache(1024 * 1024 * 64)\n protected var isRetrievalEnabled = false\n protected val absentResourceList = AbsentResourceList(3, 5.seconds)\n\n init { log(INFO, \"Coverage cache initialized %.0f KB\".format(coverageCache.capacity / 1024.0)) }\n\n /**\n * Setup custom coverage cache size according to device capabilities and user needs.\n */\n fun setupCoverageCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n coverageCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun invalidateTiles() {\n currentRetrievals.clear()\n coverageCache.clear()\n absentResourceList.clear()\n updateTimestamp()\n }\n\n override fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n if (!tileMatrixSet.sector.contains(latitude, longitude)) return null // no coverage in the specified location\n val targetIdx = tileMatrixSet.entries.size - 1 // retrieve height from last available matrix\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the last and the first matrix\n isRetrievalEnabled = retrieve && (idx == targetIdx || idx == 0)\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val row = floor((tileMatrix.sector.maxLatitude.inDegrees - latitude.inDegrees) / deltaLat).toInt()\n val col = floor((longitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n fetchTileArray(tileMatrix, row, col)?.let {\n val maxLat = tileMatrix.sector.maxLatitude.inDegrees - deltaLat * row\n val minLon = tileMatrix.sector.minLongitude.inDegrees + deltaLon * col\n val maxX = tileMatrix.tileWidth - 1\n val maxY = tileMatrix.tileHeight - 1\n val x = (maxX * (longitude.inDegrees - minLon) / deltaLon).toFloat()\n val y = (maxY * (maxLat - latitude.inDegrees) / deltaLat).toFloat()\n val x0 = floor(x).toInt().coerceIn(0, maxX)\n val x1 = (x0 + 1).coerceIn(0, maxX)\n val y0 = floor(y).toInt().coerceIn(0, maxY)\n val y1 = (y0 + 1).coerceIn(0, maxY)\n val x0y0 = it[x0 + y0 * tileMatrix.tileWidth]\n val x1y0 = it[x1 + y0 * tileMatrix.tileWidth]\n val x0y1 = it[x0 + y1 * tileMatrix.tileWidth]\n val x1y1 = it[x1 + y1 * tileMatrix.tileWidth]\n val xf = x - x0\n val yf = y - y0\n return (1 - xf) * (1 - yf) * x0y0 + xf * (1 - yf) * x1y0 + (1 - xf) * yf * x0y1 + xf * yf * x1y1\n }\n }\n return null // did not find a tile\n }\n\n override fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(gridSector)) return // no coverage in the specified sector\n val targetPixelSpan = gridSector.deltaLatitude.inDegrees / gridHeight\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(gridSector, gridWidth, gridHeight, tileMatrix, tileBlock)) {\n readHeightGrid(gridSector, gridWidth, gridHeight, tileBlock, result)\n return\n }\n }\n }\n\n override fun doGetHeightLimits(sector: Sector, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(sector)) return // no coverage in the specified sector\n val targetPixelSpan = sector.deltaLatitude.inDegrees / GET_HEIGHT_LIMIT_SAMPLES\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(sector, tileMatrix, tileBlock)) {\n scanHeightLimits(sector, tileBlock, result)\n return\n }\n }\n }\n\n protected open fun fetchTileBlock(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileMatrix: TileMatrix, result: TileBlock\n ): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n result.tileMatrix = tileMatrix\n result.clear()\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var uIdx = 0\n while (uIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (uIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n if (lon in matrixMinLon..matrixMaxLon) {\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n result.cols[col0] = 0\n result.cols[col1] = 0\n }\n uIdx++\n lon += deltaLon\n }\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var vIdx = 0\n while (vIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (vIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n if (lat in matrixMinLat..matrixMaxLat) {\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n result.rows[row0] = 0\n result.rows[row1] = 0\n }\n vIdx++\n lat += deltaLat\n }\n for (row in result.rows.keys) {\n for (col in result.cols.keys) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) result.putTileArray(row, col, tileArray) else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileBlock(sector: Sector, tileMatrix: TileMatrix, result: TileBlock): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val colMin = iMin / tileWidth\n val colMax = iMax / tileWidth\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n val rowMin = jMin / tileHeight\n val rowMax = jMax / tileHeight\n result.tileMatrix = tileMatrix\n result.clear()\n for (row in rowMin..rowMax) {\n for (col in colMin..colMax) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) {\n result.rows[row] = 0\n result.cols[col] = 0\n result.putTileArray(row, col, tileArray)\n } else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileArray(tileMatrix: TileMatrix, row: Int, column: Int): ShortArray? {\n val key = tileMatrix.tileKey(row, column)\n return coverageCache[key] ?: run {\n // Ignore retrieval of already requested or marked as absent tiles\n if (isRetrievalEnabled && currentRetrievals.size < retrievalQueueSize && !currentRetrievals.contains(key)\n && !absentResourceList.isResourceAbsent(key)) {\n currentRetrievals += key\n retrieveTileArray(key, tileMatrix, row, column)\n }\n null\n }\n }\n\n protected abstract fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int)\n\n protected fun retrievalSucceeded(key: Long, value: ShortArray) {\n coverageCache.put(key, value, value.size * 2)\n absentResourceList.unmarkResourceAbsent(key)\n currentRetrievals -= key\n updateTimestamp()\n WorldWind.requestRedraw()\n }\n\n protected fun retrievalFailed(key: Long) {\n absentResourceList.markResourceAbsent(key)\n currentRetrievals -= key\n }\n\n protected open fun readHeightGrid(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileBlock: TileBlock, result: FloatArray\n ) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileBlock.tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileBlock.tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n var rIdx = 0\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var hIdx = 0\n while (hIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (hIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val b = fract(v - 0.5).toFloat()\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var wIdx = 0\n while (wIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (wIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileBlock.tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val a = fract(u - 0.5).toFloat()\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n if (lat in matrixMinLat..matrixMaxLat && lon in matrixMinLon..matrixMaxLon) {\n val i0j0 = tileBlock.readTexel(row0, col0, i0 % tileWidth, j0 % tileHeight)\n val i1j0 = tileBlock.readTexel(row0, col1, i1 % tileWidth, j0 % tileHeight)\n val i0j1 = tileBlock.readTexel(row1, col0, i0 % tileWidth, j1 % tileHeight)\n val i1j1 = tileBlock.readTexel(row1, col1, i1 % tileWidth, j1 % tileHeight)\n result[rIdx] = (1 - a) * (1 - b) * i0j0 + a * (1 - b) * i1j0 + (1 - a) * b * i0j1 + a * b * i1j1\n }\n rIdx++\n wIdx++\n lon += deltaLon\n }\n hIdx++\n lat += deltaLat\n }\n }\n\n protected open fun scanHeightLimits(sector: Sector, tileBlock: TileBlock, result: FloatArray) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileBlock.tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n for (row in tileBlock.rows.keys) {\n val rowJMin = row * tileHeight\n val rowJMax = rowJMin + tileHeight - 1\n val j0 = jMin.coerceIn(rowJMin, rowJMax) % tileHeight\n val j1 = jMax.coerceIn(rowJMin, rowJMax) % tileHeight\n for (col in tileBlock.cols.keys) {\n val colIMin = col * tileWidth\n val colIMax = colIMin + tileWidth - 1\n val i0 = iMin.coerceIn(colIMin, colIMax) % tileWidth\n val i1 = iMax.coerceIn(colIMin, colIMax) % tileWidth\n tileBlock.getTileArray(row, col)?.let { tileArray ->\n // TODO how often do we read all of tileArray?\n for (j in j0..j1) for (i in i0..i1) {\n val pos = i + j * tileWidth\n val texel = tileArray[pos]\n if (result[0] > texel) result[0] = texel.toFloat()\n if (result[1] < texel) result[1] = texel.toFloat()\n }\n }\n }\n }\n }\n\n protected open fun assembleTilesList(sector: Sector, resolution: Angle): List {\n val result = mutableListOf()\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(resolution.inDegrees)\n for (idx in 0..targetIdx) {\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val minRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.maxLatitude.inDegrees) / deltaLat).toInt()\n val maxRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.minLatitude.inDegrees) / deltaLat).toInt()\n val minCol = floor((sector.minLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n val maxCol = floor((sector.maxLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n for (row in minRow..maxRow) for (col in minCol..maxCol) result.add(Tile(tileMatrix, row, col))\n }\n return result\n }\n\n protected data class Tile(val tileMatrix: TileMatrix, val row: Int, val col: Int)\n\n protected open class TileBlock {\n lateinit var tileMatrix: TileMatrix\n val rows = mutableMapOf()\n val cols = mutableMapOf()\n private val arrays = mutableMapOf()\n private var texelRow = -1\n private var texelCol = -1\n private var texelArray: ShortArray? = null\n\n open fun clear() {\n rows.clear()\n cols.clear()\n arrays.clear()\n texelRow = -1\n texelCol = -1\n texelArray = null\n }\n\n fun putTileArray(row: Int, column: Int, array: ShortArray) {\n val key = tileMatrix.tileKey(row, column)\n arrays[key] = array\n }\n\n fun getTileArray(row: Int, column: Int): ShortArray? {\n if (texelRow != row || texelCol != column) {\n texelRow = row\n texelCol = column\n texelArray = arrays[tileMatrix.tileKey(row, column)]\n }\n return texelArray\n }\n\n fun readTexel(row: Int, column: Int, i: Int, j: Int) =\n getTileArray(row, column)?.get(i + j * tileMatrix.tileWidth) ?: 0\n }\n}",null,"package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.WmsElevationCoverage\n\n/**\n * Displays NASA's global elevation coverage at 90m (3 arc-second) resolution and 900m resolution on the ocean floor.\n * By default, BasicElevationCoverage is configured to retrieve elevation coverage from the WMS at\n * [&https://wms.worldwind.earth/elev](https://wms.worldwind.earth/elev?SERVICE=WMS&REQUEST=GetCapabilities).\n */\nclass BasicElevationCoverage : WmsElevationCoverage(\n \"https://wms.worldwind.earth/elev\", \"GEBCO,SRTM-CGIAR\", \"application/bil16\",\n Sector().setFullSphere(), Angle.fromSeconds(3.0)\n)","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/*\n * GeographicProjection implementing coordinate transformations based on the WGS 84 reference system (aka WGS 1984,\n * EPSG:4326).\n *\n * The WGS 84 projection defines a Cartesian coordinate system whose origin is at the globe's center. It's Y axis points\n * to the North Pole, the Z axis points to the intersection of the prime meridian and the equator, and the X axis\n * completes a right-handed coordinate system, is in the equatorial plane and 90 degrees East of the Z axis.\n */\nopen class Wgs84Projection: GeographicProjection {\n private val scratchPos = Position()\n\n override val displayName = \"WGS84\"\n override val is2D = false\n\n override fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n return result.set(\n (altitude + rpm) * cosLat * sinLon,\n (altitude + rpm * (1.0 - ec2)) * sinLat,\n (altitude + rpm) * cosLat * cosLon\n )\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n return result.set(\n cosLat * sinLon / eqr2,\n (1 - globe.eccentricitySquared) * sinLat / pol2,\n cosLat * cosLon / eqr2\n ).normalize()\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Convert the geographic position to Cartesian coordinates. This is equivalent to calling geographicToCartesian\n // but is much more efficient as an inline computation, as the results of cosLat/sinLat/etc. can be computed\n // once and reused.\n val px = (rpm + altitude) * cosLat * sinLon\n val py = (rpm * (1.0 - ec2) + altitude) * sinLat\n val pz = (rpm + altitude) * cosLat * cosLon\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, px,\n ey, ny, uy, py,\n ez, nz, uz, pz,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, offset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n logMessage(ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val cosLon = DoubleArray(numLon)\n val sinLon = DoubleArray(numLon)\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Compute and save values that are a function of each unique longitude value in the specified sector. This\n // eliminates the need to re-compute these values for each column of constant longitude.\n var lon = minLon\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n cosLon[lonIndex] = cos(lon)\n sinLon[lonIndex] = sin(lon)\n lon += deltaLon\n }\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian\n // point corresponding to each latitude and longitude.\n var rowIndex = offset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n val hgt = if (height != null) (height[elevIndex++] * verticalExaggeration).toDouble() else 0.0\n result[colIndex++] = ((hgt + rpm) * cosLat * sinLon[lonIndex] - xOffset).toFloat()\n result[colIndex++] = ((hgt + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[colIndex++] = ((hgt + rpm) * cosLat * cosLon[lonIndex] - zOffset).toFloat()\n }\n rowIndex += stride\n lat += deltaLat\n }\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, result: FloatArray\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianBorder\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 3 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 3 else 1\n var lat = minLat\n var lon = minLon\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n var resultIndex = 0\n\n // Iterate over the edges of the specified sector, computing the Cartesian point at designated latitude and\n // longitude around the border.\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon // explicitly set the first lon to the min longitude to ensure alignment\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n }\n val cosLon = cos(lon)\n val sinLon = sin(lon)\n result[resultIndex++] = ((height + rpm) * cosLat * sinLon - xOffset).toFloat()\n result[resultIndex++] = ((height + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[resultIndex++] = ((height + rpm) * cosLat * cosLon - zOffset).toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n return result\n }\n\n override fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, result: Position): Position {\n // According to H. Vermeille,\n // \"An analytical method to transform geocentric into geodetic coordinates\"\n // http://www.springerlink.com/content/3t6837t27t351227/fulltext.pdf\n // Journal of Geodesy, accepted 10/2010, not yet published\n val zpx = z * z + x * x\n val zpxSqrt = sqrt(zpx)\n val a = globe.equatorialRadius\n val ra2 = 1 / (a * a)\n val e2 = globe.eccentricitySquared\n val e4 = e2 * e2\n\n // Step 1\n val p = zpx * ra2\n val q = y * y * (1 - e2) * ra2\n val r = (p + q - e4) / 6\n val h: Double\n val phi: Double\n val evoluteBorderTest = 8 * r * r * r + e4 * p * q\n if (evoluteBorderTest > 0 || q != 0.0) {\n val u: Double\n if (evoluteBorderTest > 0) {\n // Step 2: general case\n val rad1 = sqrt(evoluteBorderTest)\n val rad2 = sqrt(e4 * p * q)\n\n // 10*e2 is my arbitrary decision of what Vermeille means by \"near... the cusps of the evolute\".\n val rad = ((rad1 + rad2) * (rad1 + rad2)).pow(1/3.0)\n u = if (evoluteBorderTest > 10 * e2) r + 0.5 * rad + 2 * r * r / rad\n else r + 0.5 * rad + 0.5 * ((rad1 - rad2) * (rad1 - rad2)).pow(1/3.0)\n } else {\n // Step 3: near evolute\n val rad1 = sqrt(-evoluteBorderTest)\n val rad2 = sqrt(-8 * r * r * r)\n val rad3 = sqrt(e4 * p * q)\n val aTan = 2 * atan2(rad3, rad1 + rad2) / 3\n u = -4 * r * sin(aTan) * cos(PI / 6 + aTan)\n }\n val v = sqrt(u * u + e4 * q)\n val w = e2 * (u + v - q) / (2 * v)\n val k = (u + v) / (sqrt(w * w + u + v) + w)\n val d = k * zpxSqrt / (k + e2)\n val dpySqrt = sqrt(d * d + y * y)\n h = (k + e2 - 1) * dpySqrt / k\n phi = 2 * atan2(y, dpySqrt + d)\n } else {\n // Step 4: singular disk\n val rad1 = sqrt(1 - e2)\n val rad2 = sqrt(e2 - p)\n val e = sqrt(e2)\n h = -a * rad1 * rad2 / e\n phi = rad2 / (e * rad2 + rad1 * sqrt(p))\n }\n\n // Compute lambda\n val s2 = sqrt(2.0)\n val lambda = when {\n (s2 - 1) * x < zpxSqrt + z -> 2 * atan2(x, zpxSqrt + z) // case 1 - -135deg < lambda < 135deg\n zpxSqrt + x < (s2 + 1) * z -> -PI * 0.5 + 2 * atan2(z, zpxSqrt - x) // case 2 - -225deg < lambda < 45deg\n else -> PI * 0.5 - 2 * atan2(z, zpxSqrt + x) // case 3: - -45deg < lambda < 225deg\n }\n return result.setRadians(phi, lambda, h)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4 {\n val pos = cartesianToGeographic(globe, x, y, z, scratchPos)\n val cosLat = cos(pos.latitude.inRadians)\n val sinLat = sin(pos.latitude.inRadians)\n val cosLon = cos(pos.longitude.inRadians)\n val sinLon = sin(pos.longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, x,\n ey, ny, uy, y,\n ez, nz, uz, z,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n val eqr = globe.equatorialRadius\n val eqr2 = eqr * eqr // nominal radius squared\n val m = eqr / globe.polarRadius // ratio of the x semi-axis length to the y semi-axis length\n val m2 = m * m\n val a = vx * vx + m2 * vy * vy + vz * vz\n val b = 2 * (sx * vx + m2 * sy * vy + sz * vz)\n val c = sx * sx + m2 * sy * sy + sz * sz - eqr2\n val d = b * b - 4 * a * c // discriminant\n if (d < 0) return false\n var t = (-b - sqrt(d)) / (2 * a)\n // check if the nearest intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n t = (-b + sqrt(d)) / (2 * a)\n // check if the second intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n\n // the intersection points were behind the origin of the provided line\n return false\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.util.math.fract\n\nopen class BasicTerrain: Terrain {\n protected val tiles = mutableListOf()\n override val sector = Sector()\n var triStripElements: ShortArray? = null\n private val intersectPoint = Vec3()\n\n open fun addTile(tile: TerrainTile) {\n tiles.add(tile)\n sector.union(tile.sector)\n }\n\n open fun clear() {\n triStripElements = null\n tiles.clear()\n sector.setEmpty()\n }\n\n open fun copy(terrain: BasicTerrain) {\n tiles.clear()\n tiles.addAll(terrain.tiles)\n sector.copy(terrain.sector)\n triStripElements = terrain.triStripElements\n }\n\n open fun sort() = tiles.sortBy { it.sortOrder }\n\n override fun intersect(line: Line, result: Vec3): Boolean {\n var found = false\n val triStripElements = triStripElements ?: return found\n\n // Tiles considered as sorted by L1 distance on cylinder from camera\n for (i in tiles.indices) {\n val tile = tiles[i]\n // Translate the line to the terrain tile's local coordinate system.\n line.origin.subtract(tile.origin)\n\n // Compute the first intersection of the terrain tile with the line. The line is interpreted as a ray;\n // intersection points behind the line's origin are ignored. Store the nearest intersection found so far\n // in the result argument.\n if (line.triStripIntersection(tile.points, 3, triStripElements, triStripElements.size, intersectPoint)) {\n result.copy(intersectPoint).add(tile.origin)\n found = true\n }\n\n // Restore the line's origin to its previous coordinate system.\n line.origin.add(tile.origin)\n\n // Do not analyze other tiles as they are sorted by distance from camera\n if (found) break\n }\n return found\n }\n\n override fun surfacePoint(latitude: Angle, longitude: Angle, result: Vec3): Boolean {\n for (i in tiles.indices) {\n val tile = tiles[i]\n val sector = tile.sector\n\n // Find the first tile that contains the specified location.\n if (sector.contains(latitude, longitude)) {\n // Compute the location's parameterized coordinates (s, t) within the tile grid, along with the\n // fractional component (sf, tf) and integral component (si, ti).\n val tileWidth = tile.level.tileWidth\n val tileHeight = tile.level.tileHeight\n val s = (longitude.inDegrees - sector.minLongitude.inDegrees) / sector.deltaLongitude.inDegrees * (tileWidth - 1)\n val t = (latitude.inDegrees - sector.minLatitude.inDegrees) / sector.deltaLatitude.inDegrees * (tileHeight - 1)\n val sf = if (s < tileWidth - 1) fract(s) else 1.0\n val tf = if (t < tileHeight - 1) fract(t) else 1.0\n val si = if (s < tileWidth - 1) (s + 1).toInt() else tileWidth - 1\n val ti = if (t < tileHeight - 1) (t + 1).toInt() else tileHeight - 1\n\n // Compute the location in the tile's local coordinate system. Perform a bilinear interpolation of\n // the cell's four points based on the fractional portion of the location's parameterized coordinates.\n // Tile coordinates are organized in the points array in row major order, starting at the tile's\n // Southwest corner. Account for the tile's border vertices, which are embedded in the points array but\n // must be ignored for this computation.\n val tileRowStride = tileWidth + 2\n val i00 = (si + ti * tileRowStride) * 3 // lower left coordinate\n val i10 = i00 + 3 // lower right coordinate\n val i01 = (si + (ti + 1) * tileRowStride) * 3 // upper left coordinate\n val i11 = i01 + 3 // upper right coordinate\n val f00 = (1 - sf) * (1 - tf)\n val f10 = sf * (1 - tf)\n val f01 = (1 - sf) * tf\n val f11 = sf * tf\n val points = tile.points\n result.x = points[i00] * f00 + points[i10] * f10 + points[i01] * f01 + points[i11] * f11\n result.y = points[i00 + 1] * f00 + points[i10 + 1] * f10 + points[i01 + 1] * f01 + points[i11 + 1] * f11\n result.z = points[i00 + 2] * f00 + points[i10 + 2] * f10 + points[i01 + 2] * f01 + points[i11 + 2] * f11\n\n // Translate the surface point from the tile's local coordinate system to Cartesian coordinates.\n result.x += tile.origin.x\n result.y += tile.origin.y\n result.z += tile.origin.z\n return true\n }\n }\n\n // No tile was found that contains the location.\n return false\n }\n}",null,"package earth.worldwind.globe.terrain\n\nimport earth.worldwind.draw.BasicDrawableTerrain\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.*\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\n\nopen class BasicTessellator: Tessellator, TileFactory {\n override val lastTerrain = BasicTerrain()\n /**\n * Default level set is configured to ~10 meter resolution\n */\n var levelSet = LevelSet(Sector().setFullSphere(), Location(NEG90, NEG180), Location(POS90, POS90), 16, 32, 32)\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Detail control determines how much times terrain texel is greater than screen pixel.\n */\n var detailControl = 20.0\n /**\n * Memory cache for this tessellator's subdivision tiles. Each entry contains an array of four terrain tiles\n * corresponding to the subdivision of the group's common parent tile. The cache is configured to hold 300 groups, a\n * number tuned to store the tiles needed to navigate a small region, given the tessellator's first level tile delta\n * of 90 degrees, tile dimensions of 32x32 and detail control of 20.\n */\n protected var tileCache = LruMemoryCache>(300)\n protected val topLevelTiles = mutableListOf()\n protected val currentTerrain = BasicTerrain()\n protected var levelSetVertexTexCoords: FloatArray? = null\n protected var levelSetLineElements: ShortArray? = null\n protected var levelSetTriStripElements: ShortArray? = null\n protected val levelSetLineElementRange = Range()\n protected val levelSetTriStripElementRange = Range()\n protected var levelSetVertexTexCoordBuffer: FloatBufferObject? = null\n protected var levelSetElementBuffer: ShortBufferObject? = null\n protected var levelSetVertexTexCoordKey = this::class.simpleName + \".vertexTexCoordKey\"\n protected var levelSetElementKey = this::class.simpleName + \".elementKey\"\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun tessellate(rc: RenderContext) {\n assembleTiles(rc)\n rc.terrain = currentTerrain\n if (!rc.isPickMode) lastTerrain.copy(currentTerrain)\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = TerrainTile(sector, level, row, column)\n\n protected open fun assembleTiles(rc: RenderContext) {\n // Clear previous terrain tiles\n currentTerrain.clear()\n\n // Assemble the terrain buffers and OpenGL buffer objects associated with the level set.\n assembleLevelSetBuffers(rc)\n currentTerrain.triStripElements = levelSetTriStripElements\n\n // Assemble the tessellator's top level terrain tiles, which we keep permanent references to.\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n\n // Subdivide the top level tiles until the desired resolution is achieved in each part of the scene.\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as TerrainTile)\n\n // Sort terrain tiles by L1 distance on cylinder from camera\n currentTerrain.sort()\n\n // Release references to render resources acquired while assembling tiles.\n levelSetVertexTexCoordBuffer = null\n levelSetElementBuffer = null\n }\n\n protected open fun createTopLevelTiles() {\n levelSet.firstLevel?.let{ Tile.assembleTilesForLevel(it, this, topLevelTiles) }\n }\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: TerrainTile) {\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsFrustum(rc)) return\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val childs = tile.subdivideToCache(this, tileCache, 4) // each tile has a cached size of 1\n for (i in childs.indices) addTileOrDescendants(rc, childs[i] as TerrainTile) // recursively process the tile's children\n }\n\n protected open fun addTile(rc: RenderContext, tile: TerrainTile) {\n // Prepare the terrain tile and add it.\n tile.prepare(rc)\n currentTerrain.addTile(tile)\n\n // Prepare a drawable for the terrain tile for processing on the OpenGL thread.\n val pool = rc.getDrawablePool()\n val drawable = BasicDrawableTerrain.obtain(pool)\n prepareDrawableTerrain(rc, tile, drawable)\n rc.offerDrawableTerrain(drawable, tile.sortOrder)\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n currentTerrain.clear()\n lastTerrain.clear()\n tileCache.clear()\n levelSetVertexTexCoords = null\n levelSetLineElements = null\n levelSetTriStripElements = null\n }\n\n protected open fun prepareDrawableTerrain(rc: RenderContext, tile: TerrainTile, drawable: BasicDrawableTerrain) {\n // Assemble the drawable's geographic sector and Cartesian vertex origin.\n drawable.sector.copy(tile.sector)\n drawable.vertexOrigin.copy(tile.origin)\n\n // Assemble the drawable's element buffer ranges.\n drawable.lineElementRange.copy(levelSetLineElementRange)\n drawable.triStripElementRange.copy(levelSetTriStripElementRange)\n\n // Assemble the drawable's OpenGL buffer objects.\n drawable.vertexPoints = tile.getPointBuffer(rc)\n drawable.vertexTexCoords = levelSetVertexTexCoordBuffer\n drawable.elements = levelSetElementBuffer\n }\n\n protected open fun assembleLevelSetBuffers(rc: RenderContext) {\n val numLat = levelSet.tileHeight + 2\n val numLon = levelSet.tileWidth + 2\n\n // Assemble the level set's vertex tex coords.\n val vertexTexCoords = levelSetVertexTexCoords ?: FloatArray(numLat * numLon * 2).also {\n levelSetVertexTexCoords = it\n assembleVertexTexCoords(numLat, numLon, it)\n }\n\n // Assemble the level set's line elements.\n val lineElements = levelSetLineElements ?: assembleLineElements(numLat, numLon).also { levelSetLineElements = it }\n\n // Assemble the level set's triangle strip elements.\n val triStripElements = levelSetTriStripElements ?: assembleTriStripElements(numLat, numLon).also { levelSetTriStripElements = it }\n\n // Retrieve or create the level set's OpenGL vertex tex coord buffer object.\n levelSetVertexTexCoordBuffer = rc.getBufferObject(levelSetVertexTexCoordKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexTexCoords)\n }\n\n // Retrieve or create the level set's OpenGL element buffer object.\n levelSetElementBuffer = rc.getBufferObject(levelSetElementKey) {\n ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, lineElements + triStripElements).also {\n levelSetLineElementRange.upper = lineElements.size\n levelSetTriStripElementRange.lower = lineElements.size\n levelSetTriStripElementRange.upper = lineElements.size + triStripElements.size\n }\n }\n }\n\n protected open fun assembleVertexTexCoords(numLat: Int, numLon: Int, result: FloatArray): FloatArray {\n val ds = 1f / if (numLon > 1) numLon - 3 else 1\n val dt = 1f / if (numLat > 1) numLat - 3 else 1\n var s = 0f\n var t = 0f\n var rIdx = 0\n\n // Iterate over the number of latitude and longitude vertices, computing the parameterized S and T coordinates\n // corresponding to each vertex.\n for (tIdx in 0 until numLat) {\n when {\n tIdx < 2 -> t = 0f // explicitly set the first T coordinate to 0 to ensure alignment\n tIdx < numLat - 2 -> t += dt\n else -> t = 1f // explicitly set the last T coordinate to 1 to ensure alignment\n }\n for (sIdx in 0 until numLon) {\n when {\n sIdx < 2 -> s = 0f // explicitly set the first S coordinate to 0 to ensure alignment\n sIdx < numLon - 2 -> s += ds\n else -> s = 1f // explicitly set the last S coordinate to 1 to ensure alignment\n }\n result[rIdx++] = s\n result[rIdx++] = t\n }\n }\n return result\n }\n\n protected open fun assembleLineElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = (numLat * (numLon - 1) + numLon * (numLat - 1)) * 2\n val result = ShortArray(count)\n var pos = 0\n\n // Add a line between each row to define the horizontal cell outlines.\n for (latIndex in 1 until numLat-1) {\n for (lonIndex in 1 until numLon - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + 1).toShort()\n }\n }\n\n // Add a line between each column to define the vertical cell outlines.\n for (lonIndex in 1 until numLon - 1) {\n for (latIndex in 1 until numLat - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + numLon).toShort()\n }\n }\n return result\n }\n\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val result = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n result[pos++] = (vertex + numLon).toShort()\n result[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n result[pos++] = vertex.toShort()\n result[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return result\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\n\n/**\n * Represents a portion of a globe's terrain. Applications typically do not interact directly with this class.\n */\nopen class TerrainTile(sector: Sector, level: Level, row: Int, column: Int): Tile(sector, level, row, column) {\n /**\n * Minimum elevation value used by the BasicTessellator to determine the terrain mesh edge extension depth (skirt).\n * This value is scaled by the vertical exaggeration when the terrain is generated.\n */\n val heights by lazy { FloatArray( level.tileWidth * level.tileHeight) }\n val points by lazy { FloatArray((level.tileWidth + 2) * (level.tileHeight + 2) * 3) }\n val origin = Vec3()\n internal val minTerrainElevation = -Short.MAX_VALUE.toFloat()\n internal var heightTimestamp = 0L\n internal var verticalExaggeration = 0.0f\n var sortOrder = 0.0\n protected set\n private lateinit var pointBufferKey: String\n\n open fun prepare(rc: RenderContext) {\n val globe = rc.globe\n val tileWidth = level.tileWidth\n val tileHeight = level.tileHeight\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightTimestamp) {\n val heights = heights\n heights.fill(0f)\n globe.elevationModel.getHeightGrid(sector, tileWidth, tileHeight, heights)\n }\n val ve = rc.verticalExaggeration.toFloat()\n if (ve != verticalExaggeration || timestamp != heightTimestamp) {\n val origin = origin\n val heights = heights\n val points = points\n val borderHeight = minTerrainElevation * ve\n val rowStride = (tileWidth + 2) * 3\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude, 0.0, origin)\n globe.geographicToCartesianGrid(\n sector, tileWidth, tileHeight, heights, ve, origin, points, rowStride + 3, rowStride\n )\n globe.geographicToCartesianBorder(\n sector, tileWidth + 2, tileHeight + 2, borderHeight, origin, points\n )\n updatePointBufferKey()\n }\n heightTimestamp = timestamp\n verticalExaggeration = ve\n sortOrder = drawSortOrder(rc)\n }\n\n fun getPointBuffer(rc: RenderContext) = rc.getBufferObject(pointBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n protected fun updatePointBufferKey() { pointBufferKey = \"TerrainTile.points.$tileKey.${pointBufferSequence++}\" }\n\n companion object {\n private var pointBufferSequence = 0L // must be static to avoid cache collisions when a tile instances is destroyed and re-created\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractLayer @JvmOverloads constructor(override var displayName: String? = null): Layer {\n override var isEnabled = true\n override var isPickEnabled = true\n override var opacity = 1f\n override var minActiveAltitude = Double.NEGATIVE_INFINITY\n override var maxActiveAltitude = Double.POSITIVE_INFINITY\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) {\n if (isEnabled && (isPickEnabled || !rc.isPickMode) && isWithinActiveAltitudes(rc)) doRender(rc)\n }\n\n override fun isWithinActiveAltitudes(rc: RenderContext) = rc.camera.position.altitude in minActiveAltitude..maxActiveAltitude\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.layer\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays a single image spanning the globe. By default, BackgroundLayer is configured to display NASA's Blue Marble\n * next generation image at 40km resolution from the built-in WorldWind library resource\n * res/drawable/worldwind_worldtopobathy2004053.\n */\nclass BackgroundLayer @JvmOverloads constructor(\n imageSource: ImageSource = ImageSource.fromResource(MR.images.worldwind_worldtopobathy2004053),\n imageOptions: ImageOptions = ImageOptions(ImageConfig.RGB_565)\n) : RenderableLayer(\"Background\") {\n // Disable picking for the layer because it covers the full sphere and will override a terrain pick.\n override var isPickEnabled = false\n\n init {\n // Delegate display to the SurfaceImage shape.\n val surfaceImage = SurfaceImage(Sector().setFullSphere(), imageSource)\n surfaceImage.imageOptions = imageOptions\n addRenderable(surfaceImage)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class LayerList() : Iterable {\n protected val layers = mutableListOf()\n\n constructor(layerList: LayerList): this() { addAllLayers(layerList) }\n\n constructor(layers: Iterable): this() { addAllLayers(layers) }\n\n fun getLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"getLayer\", \"invalidIndex\")\n }\n return layers[index]\n }\n\n fun setLayer(index: Int, layer: Layer): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"setLayer\", \"invalidIndex\")\n }\n return layers.set(index, layer)\n }\n\n fun indexOfLayer(layer: Layer) = layers.indexOf(layer)\n\n fun indexOfLayerNamed(name: String): Int {\n for (idx in layers.indices) if ( name == layers[idx].displayName) return idx\n return -1\n }\n\n fun indexOfLayerWithProperty(key: Any, value: Any): Int {\n for (idx in layers.indices) {\n val layer = layers[idx]\n if (layer.hasUserProperty(key) && value == layer.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addLayer(layer: Layer) { layers.add(layer) }\n\n fun addLayer(index: Int, layer: Layer) {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"addLayer\", \"invalidIndex\")\n }\n layers.add(index, layer)\n }\n\n fun addAllLayers(list: LayerList) {\n //layers.ensureCapacity(list.layers.size)\n for (layer in list.layers) layers.add(layer) // we know the contents of layerList.layers is valid\n }\n\n fun addAllLayers(iterable: Iterable) { for (layer in iterable) layers.add(layer) }\n\n fun removeLayer(layer: Layer): Boolean { return layers.remove(layer) }\n\n fun removeLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"removeLayer\", \"invalidIndex\")\n }\n return layers.removeAt(index)\n }\n\n fun removeAllLayers(layers: Iterable): Boolean {\n var removed = false\n for (layer in layers) removed = removed or this.layers.remove(layer)\n return removed\n }\n\n fun clearLayers() { layers.clear() }\n\n override fun iterator() = layers.iterator()\n\n fun render(rc: RenderContext) {\n for (i in layers.indices) {\n val layer = layers[i]\n rc.currentLayer = layer\n try {\n layer.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"LayerList\", \"render\",\n \"Exception while rendering layer '${layer.displayName}'\", e\n )\n // Keep going. Draw the remaining layers.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class RenderableLayer @JvmOverloads constructor(displayName: String? = null): AbstractLayer(displayName), Iterable {\n protected val renderables = mutableListOf()\n val count get() = renderables.size\n\n constructor(layer: RenderableLayer): this(layer.displayName) { addAllRenderables(layer) }\n\n constructor(renderables: Iterable): this() { addAllRenderables(renderables) }\n\n fun isEmpty() = renderables.isEmpty()\n\n fun getRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"getRenderable\", \"invalidIndex\")\n }\n return renderables[index]\n }\n\n fun setRenderable(index: Int, renderable: Renderable): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"setRenderable\", \"invalidIndex\")\n }\n return renderables.set(index, renderable)\n }\n\n fun indexOfRenderable(renderable: Renderable) = renderables.indexOf(renderable)\n\n fun indexOfRenderableNamed(name: String): Int {\n for (idx in renderables.indices) if (name == renderables[idx].displayName) return idx\n return -1\n }\n\n fun indexOfRenderableWithProperty(key: Any, value: Any): Int {\n for (idx in renderables.indices) {\n val renderable = renderables[idx]\n if (renderable.hasUserProperty(key) && value == renderable.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addRenderable(renderable: Renderable) { renderables.add(renderable) }\n\n fun addRenderable(index: Int, renderable: Renderable) {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"addRenderable\", \"invalidIndex\")\n }\n renderables.add(index, renderable)\n }\n\n fun addAllRenderables(layer: RenderableLayer) {\n //renderables.ensureCapacity(layer.renderables.size)\n for (renderable in layer.renderables) renderables.add(renderable) // we know the contents of layer.renderables is valid\n }\n\n fun addAllRenderables(iterable: Iterable) { for (renderable in iterable) renderables.add(renderable) }\n\n fun removeRenderable(renderable: Renderable) = renderables.remove(renderable)\n\n fun removeRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"removeRenderable\", \"invalidIndex\")\n }\n return renderables.removeAt(index)\n }\n\n fun removeAllRenderables(renderables: Iterable): Boolean {\n var removed = false\n for (renderable in renderables) removed = removed or this.renderables.remove(renderable)\n return removed\n }\n\n fun clearRenderables() { renderables.clear() }\n\n override fun iterator() = renderables.iterator()\n\n override fun doRender(rc: RenderContext) {\n for (i in renderables.indices) {\n val renderable = renderables[i]\n try {\n renderable.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"RenderableLayer\", \"doRender\",\n \"Exception while rendering shape '${renderable.displayName}'\", e\n )\n // Keep going. Draw the remaining renderables.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.draw.DrawableTessellation\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\n\nclass ShowTessellationLayer: AbstractLayer(\"Terrain Tessellation\") {\n override var isPickEnabled = false\n var color = Color()\n set(value) {\n field.copy(value)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to render\n\n // Use WorldWind's basic GLSL program.\n val program = rc.getShaderProgram { BasicShaderProgram() }\n val pool = rc.getDrawablePool()\n val drawable = DrawableTessellation.obtain(pool).set(program, color)\n rc.offerSurfaceDrawable(drawable, 1.0 /*z-order after surface textures*/)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\nimport kotlin.math.PI\nimport kotlin.math.pow\n\n// TODO Correctly compute the atmosphere color for eye positions beneath the atmosphere\n// TODO Test the effect of working in local coordinates (reference point) on the GLSL atmosphere programs\nabstract class AbstractAtmosphereProgram: AbstractShaderProgram() {\n protected var fragModeId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var vertexOriginId = KglUniformLocation.NONE\n protected var eyePointId = KglUniformLocation.NONE\n protected var eyeMagnitudeId = KglUniformLocation.NONE\n protected var eyeMagnitude2Id = KglUniformLocation.NONE\n protected var lightDirectionId = KglUniformLocation.NONE\n protected var invWavelengthId = KglUniformLocation.NONE\n protected var atmosphereRadiusId = KglUniformLocation.NONE\n protected var atmosphereRadius2Id = KglUniformLocation.NONE\n protected var globeRadiusId = KglUniformLocation.NONE\n protected var krESunId = KglUniformLocation.NONE\n protected var kmESunId = KglUniformLocation.NONE\n protected var kr4PIId = KglUniformLocation.NONE\n protected var km4PIId = KglUniformLocation.NONE\n protected var scaleId = KglUniformLocation.NONE\n protected var scaleDepthId = KglUniformLocation.NONE\n protected var scaleOverScaleDepthId = KglUniformLocation.NONE\n protected var gId = KglUniformLocation.NONE\n protected var g2Id = KglUniformLocation.NONE\n protected var exposureId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n /**\n * Frag color indicates the atmospheric scattering color components written to the fragment color. Accepted values\n * are [FRAGMODE_PRIMARY], [FRAGMODE_SECONDARY] and [FRAGMODE_PRIMARY_TEX_BLEND].\n */\n enum class FragMode(val asInt : Int) {\n PRIMARY(1),\n SECONDARY(2),\n PRIMARY_TEX_BLEND(3)\n }\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n val invWavelength = Vec3(\n 1 / 0.650.pow(4.0), // 650 nm for red\n 1 / 0.570.pow(4.0), // 570 nm for green\n 1 / 0.475.pow(4.0) // 475 nm for blue\n )\n val kr = 0.0025 // Rayleigh scattering constant\n val km = 0.0010 // Mie scattering constant\n val eSun = 20.0 // Sun brightness constant\n val g = -0.990 // The Mie phase asymmetry factor\n val exposure = 2.0\n fragModeId = gl.getUniformLocation(program, \"fragMode\")\n gl.uniform1i(fragModeId, FragMode.PRIMARY.asInt)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n vertexOriginId = gl.getUniformLocation(program, \"vertexOrigin\")\n array.fill(0f)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n eyePointId = gl.getUniformLocation(program, \"eyePoint\")\n array.fill(0f)\n gl.uniform3fv(eyePointId, 1, array, 0)\n eyeMagnitudeId = gl.getUniformLocation(program, \"eyeMagnitude\")\n gl.uniform1f(eyeMagnitudeId, 0f)\n eyeMagnitude2Id = gl.getUniformLocation(program, \"eyeMagnitude2\")\n gl.uniform1f(eyeMagnitude2Id, 0f)\n lightDirectionId = gl.getUniformLocation(program, \"lightDirection\")\n array.fill(0f)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n invWavelengthId = gl.getUniformLocation(program, \"invWavelength\")\n invWavelength.toArray(array, 0)\n gl.uniform3fv(invWavelengthId, 1, array, 0)\n atmosphereRadiusId = gl.getUniformLocation(program, \"atmosphereRadius\")\n atmosphereRadius2Id = gl.getUniformLocation(program, \"atmosphereRadius2\")\n globeRadiusId = gl.getUniformLocation(program, \"globeRadius\")\n krESunId = gl.getUniformLocation(program, \"KrESun\")\n gl.uniform1f(krESunId, (kr * eSun).toFloat())\n kmESunId = gl.getUniformLocation(program, \"KmESun\")\n gl.uniform1f(kmESunId, (km * eSun).toFloat())\n kr4PIId = gl.getUniformLocation(program, \"Kr4PI\")\n gl.uniform1f(kr4PIId, (kr * 4 * PI).toFloat())\n km4PIId = gl.getUniformLocation(program, \"Km4PI\")\n gl.uniform1f(km4PIId, (km * 4 * PI).toFloat())\n scaleId = gl.getUniformLocation(program, \"scale\")\n scaleDepthId = gl.getUniformLocation(program, \"scaleDepth\")\n scaleOverScaleDepthId = gl.getUniformLocation(program, \"scaleOverScaleDepth\")\n gId = gl.getUniformLocation(program, \"g\")\n gl.uniform1f(gId, g.toFloat())\n g2Id = gl.getUniformLocation(program, \"g2\")\n gl.uniform1f(g2Id, (g * g).toFloat())\n exposureId = gl.getUniformLocation(program, \"exposure\")\n gl.uniform1f(exposureId, exposure.toFloat())\n }\n\n fun loadFragMode(fragMode: FragMode) { gl.uniform1i(fragModeId, fragMode.asInt) }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n\n fun loadVertexOrigin(origin: Vec3) {\n origin.toArray(array, 0)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n }\n\n fun loadVertexOrigin(x: Double, y: Double, z: Double) {\n gl.uniform3f(vertexOriginId, x.toFloat(), y.toFloat(), z.toFloat())\n }\n\n fun loadLightDirection(direction: Vec3) {\n direction.toArray(array, 0)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n }\n\n fun loadEyePoint(eyePoint: Vec3) {\n eyePoint.toArray(array, 0)\n gl.uniform3fv(eyePointId, 1, array, 0)\n gl.uniform1f(eyeMagnitudeId, eyePoint.magnitude.toFloat())\n gl.uniform1f(eyeMagnitude2Id, eyePoint.magnitudeSquared.toFloat())\n }\n\n fun loadAtmosphereParams(equatorialRadius: Double, atmosphereAltitude: Double) {\n val rayleighScaleDepth = 0.25\n val ar = equatorialRadius + atmosphereAltitude\n gl.uniform1f(globeRadiusId, equatorialRadius.toFloat())\n gl.uniform1f(atmosphereRadiusId, ar.toFloat())\n gl.uniform1f(atmosphereRadius2Id, (ar * ar).toFloat())\n gl.uniform1f(scaleId, (1 / atmosphereAltitude).toFloat())\n gl.uniform1f(scaleDepthId, rayleighScaleDepth.toFloat())\n gl.uniform1f(scaleOverScaleDepthId, (1 / atmosphereAltitude / rayleighScaleDepth).toFloat())\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource.Companion.fromResource\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\nimport kotlinx.datetime.Instant\n\nopen class AtmosphereLayer: AbstractLayer(\"Atmosphere\") {\n override var isPickEnabled = false\n var nightImageSource = fromResource(MR.images.dnb_land_ocean_ice_2012)\n var nightImageOptions = ImageOptions(ImageConfig.RGB_565)\n /**\n * Display light location on a specified time point. If null, then light is located at camera position.\n */\n var time : Instant? = null\n protected val activeLightDirection = Vec3()\n private val fullSphereSector = Sector().setFullSphere()\n\n companion object {\n private val VERTEX_POINTS_KEY = AtmosphereLayer::class.simpleName + \".points\"\n private val TRI_STRIP_ELEMENTS_KEY = AtmosphereLayer::class.simpleName + \".triStripElements\"\n }\n\n override fun doRender(rc: RenderContext) {\n // Compute the currently active light direction.\n determineLightDirection(rc)\n\n // Render the sky portion of the atmosphere.\n renderSky(rc)\n\n // Render the ground portion of the atmosphere.\n renderGround(rc)\n }\n\n protected open fun determineLightDirection(rc: RenderContext) {\n // TODO Make light/sun direction an optional property of the WorldWindow and attach it to the RenderContext each frame\n // TODO RenderContext property defaults to the eye lat/lon like we have below\n time?.let {\n val lightLocation = SunPosition.getAsGeographicLocation(it)\n rc.globe.geographicToCartesianNormal(\n lightLocation.latitude, lightLocation.longitude, activeLightDirection\n )\n } ?: rc.globe.geographicToCartesianNormal(\n rc.camera.position.latitude, rc.camera.position.longitude, activeLightDirection\n )\n }\n\n protected open fun renderSky(rc: RenderContext) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableSkyAtmosphere.obtain(pool)\n val size = 128\n drawable.program = rc.getShaderProgram { SkyProgram() }\n drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY) {\n assembleVertexPoints(rc, size, size, rc.atmosphereAltitude.toFloat())\n }\n drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY) { assembleTriStripElements(size, size) }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun renderGround(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n val pool = rc.getDrawablePool()\n val drawable = DrawableGroundAtmosphere.obtain(pool)\n drawable.program = rc.getShaderProgram { GroundProgram() }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n\n // Use this layer's night image when the light location is different from the eye location.\n drawable.nightTexture = time?.run{ rc.getTexture(nightImageSource, nightImageOptions) }\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun assembleVertexPoints(rc: RenderContext, numLat: Int, numLon: Int, altitude: Float): FloatBufferObject {\n val count = numLat * numLon\n val altitudes = FloatArray(count)\n altitudes.fill(altitude)\n val points = FloatArray(count * 3)\n rc.globe.geographicToCartesianGrid(\n fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points, 0, 0\n )\n return FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n // TODO move this into a basic tessellator implementation in WorldWind\n // TODO tessellator and atmosphere needs the TriStripIndices - could we add these to BasicGlobe (needs to be on a static context)\n // TODO may need to switch the tessellation method anyway - geographic grid may produce artifacts at the poles\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortBufferObject {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val elements = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n elements[pos++] = (vertex + numLon).toShort()\n elements[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n elements[pos++] = vertex.toShort()\n elements[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.atmosphere.AbstractAtmosphereProgram.FragMode.*\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableGroundAtmosphere : Drawable {\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: GroundProgram? = null\n var nightTexture: Texture? = null\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val fullSphereSector = Sector().setFullSphere()\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableGroundAtmosphere {\n val instance = pool.acquire() ?: DrawableGroundAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n nightTexture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Set up to use the shared tile tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Attempt to bind the night side texture to multi-texture unit 0.\n dc.activeTextureUnit(GL_TEXTURE0)\n val nightTexture = nightTexture\n val textureBound = nightTexture?.bindTexture(dc) == true\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) ||\n !terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) continue // vertex buffer failed to bind\n\n // Use the vertex origin for the terrain.\n val terrainOrigin = terrain.vertexOrigin\n program.loadVertexOrigin(terrainOrigin)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Use a tex coord matrix that registers the night texture correctly on each terrain.\n if (textureBound && nightTexture != null) {\n texCoordMatrix.copy(nightTexture.coordTransform)\n texCoordMatrix.multiplyByTileTransform(terrain.sector, fullSphereSector)\n program.loadTexCoordMatrix(texCoordMatrix)\n }\n\n // Draw the terrain as triangles, multiplying the current fragment color by the program's secondary color.\n program.loadFragMode(SECONDARY)\n dc.gl.blendFunc(GL_DST_COLOR, GL_ZERO)\n terrain.drawTriangles(dc)\n\n // Draw the terrain as triangles, adding the current fragment color to the program's primary color.\n program.loadFragMode(if (textureBound) PRIMARY_TEX_BLEND else PRIMARY)\n dc.gl.blendFunc(GL_ONE, GL_ONE)\n terrain.drawTriangles(dc)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.disableVertexAttribArray(1)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nclass DrawableSkyAtmosphere : Drawable {\n var vertexPoints: FloatBufferObject? = null\n var triStripElements: ShortBufferObject? = null\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: SkyProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSkyAtmosphere {\n val instance = pool.acquire() ?: DrawableSkyAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n triStripElements = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n val triStripElements = triStripElements ?: return // element buffer unspecified\n if (!triStripElements.bindBuffer(dc)) return // element buffer failed to bind\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Use the vertex origin for the sky ellipsoid.\n program.loadVertexOrigin(0.0, 0.0, 0.0)\n\n // Use the draw context's modelview projection matrix.\n program.loadModelviewProjection(dc.modelviewProjection)\n\n // Use the sky's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the inside of the sky without writing to the depth buffer.\n dc.gl.depthMask(false)\n dc.gl.frontFace(GL_CW)\n dc.gl.drawElements(GL_TRIANGLE_STRIP, triStripElements.byteCount / 2, GL_UNSIGNED_SHORT, 0)\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.frontFace(GL_CCW)\n }\n}","package earth.worldwind.layer.atmosphere\n\nopen class GroundProgram: AbstractAtmosphereProgram() {\n override var programSources = arrayOf(\n \"\"\"\n precision mediump int; /* fragMode is used in both shaders, so we must use a common precision */\n\n const int FRAGMODE_PRIMARY = 1;\n const int FRAGMODE_SECONDARY = 2;\n const int FRAGMODE_PRIMARY_TEX_BLEND = 3;\n\n const int SAMPLE_COUNT = 2;\n const float SAMPLES = 2.0;\n\n uniform int fragMode;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n uniform vec3 vertexOrigin;\n uniform vec3 eyePoint;\n uniform float eyeMagnitude;\t /* The eye point's magnitude */\n uniform float eyeMagnitude2;\t /* eyeMagnitude^2 */\n uniform vec3 lightDirection;\t /* The direction vector to the light source */\n uniform vec3 invWavelength;\t /* 1 / pow(wavelength, 4) for the red, green, and blue channels */\n uniform float atmosphereRadius; /* The outer (atmosphere) radius */\n uniform float atmosphereRadius2; /* atmosphereRadius^2 */\n uniform float globeRadius;\t\t /* The inner (planetary) radius */\n uniform float KrESun;\t\t\t /* Kr * ESun */\n uniform float KmESun;\t\t\t /* Km * ESun */\n uniform float Kr4PI;\t\t\t /* Kr * 4 * PI */\n uniform float Km4PI;\t\t\t /* Km * 4 * PI */\n uniform float scale;\t\t\t /* 1 / (atmosphereRadius - globeRadius) */\n uniform float scaleDepth;\t\t /* The scale depth (i.e. the altitude at which the atmosphere's average density is found) */\n uniform float scaleOverScaleDepth;\t/* fScale / fScaleDepth */\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec3 primaryColor;\n varying vec3 secondaryColor;\n varying vec3 direction;\n varying vec2 texCoord;\n\n float scaleFunc(float cos) {\n float x = 1.0 - cos;\n return scaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n }\n\n void main() {\n /* Get the ray from the camera to the vertex and its length (which is the far point of the ray passing through the\n atmosphere) */\n vec3 point = vertexPoint.xyz + vertexOrigin;\n vec3 ray = point - eyePoint;\n float far = length(ray);\n ray /= far;\n\n vec3 start;\n if (eyeMagnitude < atmosphereRadius) {\n start = eyePoint;\n } else {\n /* Calculate the closest intersection of the ray with the outer atmosphere (which is the near point of the ray\n passing through the atmosphere) */\n float B = 2.0 * dot(eyePoint, ray);\n float C = eyeMagnitude2 - atmosphereRadius2;\n float det = max(0.0, B*B - 4.0 * C);\n float near = 0.5 * (-B - sqrt(det));\n\n /* Calculate the ray's starting point, then calculate its scattering offset */\n start = eyePoint + ray * near;\n far -= near;\n }\n\n float depth = exp((globeRadius - atmosphereRadius) / scaleDepth);\n float eyeAngle = dot(-ray, point) / length(point);\n float lightAngle = dot(lightDirection, point) / length(point);\n float eyeScale = scaleFunc(eyeAngle);\n float lightScale = scaleFunc(lightAngle);\n float eyeOffset = depth*eyeScale;\n float temp = (lightScale + eyeScale);\n\n /* Initialize the scattering loop variables */\n float sampleLength = far / SAMPLES;\n float scaledLength = sampleLength * scale;\n vec3 sampleRay = ray * sampleLength;\n vec3 samplePoint = start + sampleRay * 0.5;\n\n /* Now loop through the sample rays */\n vec3 frontColor = vec3(0.0, 0.0, 0.0);\n vec3 attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i
\n// *
`_________`
\n// *

is an example of a solid line.\n// */\n// val LINE_STYLE_SOLID = GraticuleRenderingParams.VALUE_LINE_STYLE_SOLID\n// /**\n// * Dashed line rendering style. This style specifies that a line will be drawn as a series of long strokes, with\n// * space in between.

\n// *
`- - - - -`
\n// *

is an example of a dashed line.\n// */\n// val LINE_STYLE_DASHED = GraticuleRenderingParams.VALUE_LINE_STYLE_DASHED\n// /**\n// * Dotted line rendering style. This style specifies that a line will be drawn as a series of evenly spaced \"square\"\n// * dots.

\n// *
`. . . . .`
\n// * is an example of a dotted line.\n// */\n// val LINE_STYLE_DOTTED = GraticuleRenderingParams.VALUE_LINE_STYLE_DOTTED\n private const val LOOK_AT_LATITUDE_PROPERTY = \"look_at_latitude\"\n private const val LOOK_AT_LONGITUDE_PROPERTY = \"look_at_longitude\"\n private const val GRATICULE_PIXEL_SIZE_PROPERTY = \"graticule_pixel_size\"\n private const val GRATICULE_LABEL_OFFSET_PROPERTY = \"graticule_label_offset\"\n }\n\n init {\n this.initRenderingParams()\n }\n\n protected abstract fun initRenderingParams()\n\n /**\n * Returns whether or not graticule lines will be rendered.\n *\n * @param key the rendering parameters key.\n *\n * @return true if graticule lines will be rendered; false otherwise.\n */\n fun isDrawGraticule(key: String) = getRenderingParams(key).isDrawLines\n\n /**\n * Sets whether or not graticule lines will be rendered.\n *\n * @param drawGraticule true to render graticule lines; false to disable rendering.\n * @param key the rendering parameters key.\n */\n fun setDrawGraticule(drawGraticule: Boolean, key: String) { getRenderingParams(key).isDrawLines = drawGraticule }\n\n /**\n * Returns the graticule line Color.\n *\n * @param key the rendering parameters key.\n *\n * @return Color used to render graticule lines.\n */\n fun getGraticuleLineColor(key: String) = getRenderingParams(key).lineColor\n\n /**\n * Sets the graticule line Color.\n *\n * @param color Color that will be used to render graticule lines.\n * @param key the rendering parameters key.\n */\n fun setGraticuleLineColor(color: Color, key: String) { getRenderingParams(key).lineColor = color }\n\n /**\n * Returns the graticule line width.\n *\n * @param key the rendering parameters key.\n *\n * @return width of the graticule lines.\n */\n fun getGraticuleLineWidth(key: String) = getRenderingParams(key).lineWidth\n\n /**\n * Sets the graticule line width.\n *\n * @param lineWidth width of the graticule lines.\n * @param key the rendering parameters key.\n */\n fun setGraticuleLineWidth(lineWidth: Double, key: String) { getRenderingParams(key).lineWidth = lineWidth }\n\n// /**\n// * Returns the graticule line rendering style.\n// *\n// * @param key the rendering parameters key.\n// *\n// * @return rendering style of the graticule lines.\n// */\n// fun getGraticuleLineStyle(key: String) = getRenderingParams(key).lineStyle\n//\n// /**\n// * Sets the graticule line rendering style.\n// *\n// * @param lineStyle rendering style of the graticule lines. One of LINE_STYLE_SOLID, LINE_STYLE_DASHED, or\n// * LINE_STYLE_DOTTED.\n// * @param key the rendering parameters key.\n// */\n// fun setGraticuleLineStyle(lineStyle: String, key: String) { getRenderingParams(key).lineStyle = lineStyle }\n\n /**\n * Returns whether or not graticule labels will be rendered.\n *\n * @param key the rendering parameters key.\n *\n * @return true if graticule labels will be rendered; false otherwise.\n */\n fun isDrawLabels(key: String) = getRenderingParams(key).isDrawLabels\n\n /**\n * Sets whether or not graticule labels will be rendered.\n *\n * @param drawLabels true to render graticule labels; false to disable rendering.\n * @param key the rendering parameters key.\n */\n fun setDrawLabels(drawLabels: Boolean, key: String) { getRenderingParams(key).isDrawLabels = drawLabels }\n\n /**\n * Returns the graticule label Color.\n *\n * @param key the rendering parameters key.\n *\n * @return Color used to render graticule labels.\n */\n fun getLabelColor(key: String) = getRenderingParams(key).labelColor\n\n /**\n * Sets the graticule label Color.\n *\n * @param color Color that will be used to render graticule labels.\n * @param key the rendering parameters key.\n */\n fun setLabelColor(color: Color, key: String) { getRenderingParams(key).labelColor = color }\n\n /**\n * Returns the Font used for graticule labels.\n *\n * @param key the rendering parameters key.\n *\n * @return Font used to render graticule labels.\n */\n fun getLabelFont(key: String) = getRenderingParams(key).labelFont\n\n /**\n * Sets the Font used for graticule labels.\n *\n * @param font Font that will be used to render graticule labels.\n * @param key the rendering parameters key.\n */\n fun setLabelFont(font: Font, key: String) { getRenderingParams(key).labelFont = font }\n\n fun getRenderingParams(key: String) = graticuleSupport.getRenderingParams(key)\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n graticuleSupport.setRenderingParams(key, renderingParams)\n }\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { graticuleSupport.addRenderable(renderable, paramsKey) }\n\n private fun removeAllRenderables() { graticuleSupport.removeAllRenderables() }\n\n public override fun doRender(rc: RenderContext) {\n// if (rc.isContinuous2DGlobe) {\n// if (needsToUpdate(rc)) {\n// clear(rc)\n// selectRenderables(rc)\n// }\n//\n// // If the frame time stamp is the same, then this is the second or third pass of the same frame. We continue\n// // selecting renderables in these passes.\n// if (rc.frameTimeStamp === frameTimeStamp) selectRenderables(rc)\n//\n// frameTimeStamp = rc.frameTimeStamp\n// } else {\n if (needsToUpdate(rc)) {\n clear(rc)\n selectRenderables(rc)\n }\n// }\n\n // Render\n graticuleSupport.render(rc, opacity)\n }\n\n /**\n * Select the visible grid elements\n *\n * @param rc the current `RenderContext`.\n */\n protected abstract fun selectRenderables(rc: RenderContext)\n protected abstract val orderedTypes: List\n abstract fun getTypeFor(resolution: Double): String\n\n /**\n * Determines whether the grid should be updated. It returns true if: * the eye has moved more than 1% of its\n * altitude above ground * the view FOV, heading or pitch have changed more than 1 degree * vertical\n * exaggeration has changed `RenderContext`.\n *\n * @return true if the graticule should be updated.\n */\n private fun needsToUpdate(rc: RenderContext): Boolean {\n if (lastVerticalExaggeration != rc.verticalExaggeration) return true\n if (abs(lastCameraHeading - rc.camera.heading.inDegrees) > 1) return true\n if (abs(lastCameraTilt - rc.camera.tilt.inDegrees) > 1) return true\n if (abs(lastFOV - rc.camera.fieldOfView.inDegrees) > 1) return true\n return rc.cameraPoint.distanceTo(lastCameraPoint) > computeAltitudeAboveGround(rc) / 100\n\n // We must test the globe and its projection to see if either changed. We can't simply use the globe state\n // key for this because we don't want a 2D globe offset change to cause an update. Offset changes don't\n // invalidate the current set of renderables.\n// if (rc.globe != lastGlobe) return true\n// if (rc.is2DGlobe) if ((rc.globe as Globe2D).projection != lastProjection) return true\n }\n\n protected open fun clear(rc: RenderContext) {\n removeAllRenderables()\n lastCameraPoint.copy(rc.cameraPoint)\n lastFOV = rc.camera.fieldOfView.inDegrees\n lastCameraHeading = rc.camera.heading.inDegrees\n lastCameraTilt = rc.camera.tilt.inDegrees\n lastVerticalExaggeration = rc.verticalExaggeration\n// lastGlobe = rc.globe\n// if (rc.is2DGlobe) lastProjection = (rc.globe as Globe2D).projection\n// terrainConformance = computeTerrainConformance(rc)\n// applyTerrainConformance()\n }\n\n// private fun computeTerrainConformance(rc: RenderContext): Double {\n// var value = 100\n// val alt = rc.camera.position.altitude\n// when {\n// alt < 10e3 -> value = 20\n// alt < 50e3 -> value = 30\n// alt < 100e3 -> value = 40\n// alt < 1000e3 -> value = 60\n// }\n// return value.toDouble()\n// }\n//\n// private fun applyTerrainConformance() {\n// val graticuleType = getOrderedTypes()\n// for (type in graticuleType) {\n// getRenderingParams(type)[GraticuleRenderingParams.KEY_LINE_CONFORMANCE] = terrainConformance\n// }\n// }\n\n fun computeLabelOffset(rc: RenderContext): Location {\n return if (hasLookAtPos(rc)) {\n val labelOffsetDegrees = getLabelOffset(rc)\n val labelPos = Location(\n getLookAtLatitude(rc).minusDegrees(labelOffsetDegrees),\n getLookAtLongitude(rc).minusDegrees(labelOffsetDegrees)\n )\n labelPos.setDegrees(\n normalizeLatitude(labelPos.latitude.inDegrees).coerceIn(-70.0, 70.0),\n normalizeLongitude(labelPos.longitude.inDegrees)\n )\n labelPos\n } else rc.camera.position\n }\n\n fun createLineRenderable(positions: List, pathType: PathType) =\n Path(positions).apply {\n this.pathType = pathType\n isFollowTerrain = true\n // terrainConformance = 1.0 // TODO Why not terrainConformance?\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n\n fun createTextRenderable(position: Position, label: String, resolution: Double) =\n Label(position, label).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n // priority = resolution * 1e6 // TODO Implement priority\n }\n\n fun hasLookAtPos(rc: RenderContext): Boolean {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(LOOK_AT_LATITUDE_PROPERTY) != null && rc.getUserProperty(LOOK_AT_LONGITUDE_PROPERTY) != null\n }\n\n fun getLookAtLatitude(rc: RenderContext): Angle {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(LOOK_AT_LATITUDE_PROPERTY) as Angle\n }\n\n fun getLookAtLongitude(rc: RenderContext): Angle {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(LOOK_AT_LONGITUDE_PROPERTY) as Angle\n }\n\n fun getPixelSize(rc: RenderContext): Double {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(GRATICULE_PIXEL_SIZE_PROPERTY) as Double\n }\n\n private fun getLabelOffset(rc: RenderContext): Double {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(GRATICULE_LABEL_OFFSET_PROPERTY) as Double\n }\n\n fun getSurfacePoint(rc: RenderContext, latitude: Angle, longitude: Angle): Vec3 {\n if (!rc.terrain.surfacePoint(latitude, longitude, surfacePoint))\n rc.globe.geographicToCartesian(\n latitude, longitude, rc.globe.getElevation(latitude, longitude)\n * rc.verticalExaggeration, surfacePoint\n )\n return surfacePoint\n }\n\n fun computeAltitudeAboveGround(rc: RenderContext): Double {\n val surfacePoint = getSurfacePoint(rc, rc.camera.position.latitude, rc.camera.position.longitude)\n return rc.cameraPoint.distanceTo(surfacePoint)\n }\n\n fun computeTruncatedSegment(p1: Position, p2: Position, sector: Sector, positions: MutableList) {\n val p1In = sector.contains(p1.latitude, p1.longitude)\n val p2In = sector.contains(p2.latitude, p2.longitude)\n if (!p1In && !p2In) return // whole segment is (likely) outside\n if (p1In && p2In) {\n // whole segment is (likely) inside\n positions.add(p1)\n positions.add(p2)\n } else {\n // segment does cross the boundary\n var outPoint = if (!p1In) p1 else p2\n val inPoint = if (p1In) p1 else p2\n for (i in 1..2) {\n // there may be two intersections\n var intersection: Location? = null\n if (outPoint.longitude.inDegrees > sector.maxLongitude.inDegrees\n || sector.maxLongitude.inDegrees == 180.0 && outPoint.longitude.inDegrees < 0.0) {\n // intersect with east meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.maxLongitude\n )\n } else if (outPoint.longitude.inDegrees < sector.minLongitude.inDegrees\n || sector.minLongitude.inDegrees == -180.0 && outPoint.longitude.inDegrees > 0.0) {\n // intersect with west meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.minLongitude\n )\n } else if (outPoint.latitude.inDegrees > sector.maxLatitude.inDegrees) {\n // intersect with top parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.maxLatitude\n )\n } else if (outPoint.latitude.inDegrees < sector.minLatitude.inDegrees) {\n // intersect with bottom parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.minLatitude\n )\n }\n outPoint = if (intersection != null) Position(\n intersection.latitude,\n intersection.longitude,\n outPoint.altitude\n ) else break\n }\n positions.add(inPoint)\n positions.add(outPoint)\n }\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a meridian.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param longitude the meridian longitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLongitude(p1: Location, p2: Location, longitude: Angle): Location? {\n if (p1.longitude == longitude) return p1\n if (p2.longitude == longitude) return p2\n var pos: Location? = null\n val deltaLon = getDeltaLongitude(p1, p2.longitude)\n if (getDeltaLongitude(p1, longitude) < deltaLon && getDeltaLongitude(p2, longitude) < deltaLon) {\n var count = 0\n val precision = 1.0 / 6378137.0 // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (toRadians(getDeltaLongitude(midPoint, longitude)) > precision && count <= 20) {\n count++\n if (getDeltaLongitude(a, longitude) < getDeltaLongitude(b, longitude)) b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final longitude for an exact match\n if (pos != null) pos = Location(pos.latitude, longitude)\n return pos\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a parallel.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param latitude the parallel latitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLatitude(p1: Location, p2: Location, latitude: Angle): Location? {\n var pos: Location? = null\n if (sign(p1.latitude.inDegrees - latitude.inDegrees) != sign(p2.latitude.inDegrees - latitude.inDegrees)) {\n var count = 0\n val precision = 1.0 / 6378137.0 // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (abs(midPoint.latitude.inRadians - latitude.inRadians) > precision && count <= 20) {\n count++\n if (sign(a.latitude.inDegrees - latitude.inDegrees) != sign(midPoint.latitude.inDegrees - latitude.inDegrees))\n b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final latitude for an exact match\n if (pos != null) pos = Location(latitude, pos.longitude)\n return pos\n }\n\n private fun greatCircleMidPoint(p1: Location, p2: Location): Location {\n val azimuth = p1.greatCircleAzimuth(p2)\n val distance = p1.greatCircleDistance(p2)\n return p1.greatCircleLocation(azimuth, distance / 2, Location())\n }\n\n private fun getDeltaLongitude(p1: Location, longitude: Angle): Double {\n val deltaLon = abs(p1.longitude.inDegrees - longitude.inDegrees)\n return if (deltaLon < 180) deltaLon else 360 - deltaLon\n }\n\n private fun calculateLookAtProperties(rc: RenderContext) {\n if (!rc.hasUserProperty(LOOK_AT_LATITUDE_PROPERTY) || !rc.hasUserProperty(LOOK_AT_LONGITUDE_PROPERTY)) {\n //rc.modelview.extractEyePoint(forwardRay.origin)\n forwardRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(forwardRay.direction)\n val range = if (rc.terrain.intersect(forwardRay, lookAtPoint)) {\n rc.globe.cartesianToGeographic(lookAtPoint.x, lookAtPoint.y, lookAtPoint.z, lookAtPos)\n rc.putUserProperty(LOOK_AT_LATITUDE_PROPERTY, lookAtPos.latitude)\n rc.putUserProperty(LOOK_AT_LONGITUDE_PROPERTY, lookAtPos.longitude)\n lookAtPoint.distanceTo(rc.cameraPoint)\n } else {\n rc.removeUserProperty(LOOK_AT_LATITUDE_PROPERTY)\n rc.removeUserProperty(LOOK_AT_LONGITUDE_PROPERTY)\n rc.horizonDistance\n }\n val pixelSizeMeters = rc.pixelSizeAtDistance(range)\n rc.putUserProperty(GRATICULE_PIXEL_SIZE_PROPERTY, pixelSizeMeters)\n val pixelSizeDegrees = toDegrees(pixelSizeMeters / rc.globe.equatorialRadius)\n rc.putUserProperty(\n GRATICULE_LABEL_OFFSET_PROPERTY, pixelSizeDegrees * rc.viewport.width / 4\n )\n }\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.AbstractTile\n\nabstract class AbstractGraticuleTile(open val layer: AbstractGraticuleLayer, sector: Sector) : AbstractTile(sector) {\n var gridElements: MutableList? = null\n private set\n\n open fun isInView(rc: RenderContext) = intersectsSector(rc.terrain.sector) && intersectsFrustum(rc)\n\n open fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, sector.centroidLatitude, sector.centroidLongitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n val tileSizeMeter = sector.deltaLatitude.inRadians * rc.globe.equatorialRadius\n return tileSizeMeter / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n open fun selectRenderables(rc: RenderContext) {\n gridElements ?: createRenderables()\n }\n\n open fun clearRenderables() {\n gridElements?.clear()\n gridElements = null\n }\n\n open fun createRenderables() {\n gridElements = mutableListOf()\n }\n\n fun subdivide(div: Int): List {\n val dLat = sector.deltaLatitude.inDegrees / div\n val dLon = sector.deltaLongitude.inDegrees / div\n val sectors = mutableListOf()\n for (row in 0 until div) {\n for (col in 0 until div) {\n sectors += fromDegrees(\n sector.minLatitude.inDegrees + dLat * row,\n sector.minLongitude.inDegrees + dLon * col, dLat, dLon\n )\n }\n }\n return sectors\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord.Companion.fromUPS\nimport earth.worldwind.geom.coords.UTMCoord.Companion.fromUTM\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Displays the UTM graticule metric scale.\n */\nabstract class AbstractUTMGraticuleLayer(name: String, scaleModulo: Int, maxResolution: Double): AbstractGraticuleLayer(name) {\n private val metricScaleSupport = UTMMetricScaleSupport(this).apply {\n this.scaleModulo = scaleModulo\n this.maxResolution = maxResolution\n }\n\n override val orderedTypes = listOf(\n GRATICULE_UTM_100000M,\n GRATICULE_UTM_10000M,\n GRATICULE_UTM_1000M,\n GRATICULE_UTM_100M,\n GRATICULE_UTM_10M,\n GRATICULE_UTM_1M\n )\n\n override fun initRenderingParams() {\n // 100,000 meter graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n setRenderingParams(GRATICULE_UTM_100000M, params)\n // 10,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 102, 255)\n params[KEY_LABEL_COLOR] = Color(0, 102, 255)\n setRenderingParams(GRATICULE_UTM_10000M, params)\n // 1,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 255) // Cyan\n params[KEY_LABEL_COLOR] = Color(0, 255, 255) // Cyan\n setRenderingParams(GRATICULE_UTM_1000M, params)\n // 100 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 153, 153)\n params[KEY_LABEL_COLOR] = Color(0, 153, 153)\n setRenderingParams(GRATICULE_UTM_100M, params)\n // 10 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(102, 255, 204)\n params[KEY_LABEL_COLOR] = Color(102, 255, 204)\n setRenderingParams(GRATICULE_UTM_10M, params)\n // 1 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(153, 153, 255)\n params[KEY_LABEL_COLOR] = Color(153, 153, 255)\n setRenderingParams(GRATICULE_UTM_1M, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when {\n resolution >= 100000 -> GRATICULE_UTM_100000M\n resolution >= 10000 -> GRATICULE_UTM_10000M\n resolution >= 1000 -> GRATICULE_UTM_1000M\n resolution >= 100 -> GRATICULE_UTM_100M\n resolution >= 10 -> GRATICULE_UTM_10M\n resolution >= 1 -> GRATICULE_UTM_1M\n else -> GRATICULE_UTM_1M\n }\n\n override fun clear(rc: RenderContext) {\n super.clear(rc)\n metricScaleSupport.clear()\n metricScaleSupport.computeZone(rc)\n }\n\n override fun selectRenderables(rc: RenderContext) { metricScaleSupport.selectRenderables(rc) }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n metricScaleSupport.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n }\n\n fun computePosition(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n return if (zone > 0) computePositionFromUTM(zone, hemisphere, easting, northing)\n else computePositionFromUPS(hemisphere, easting, northing)\n }\n\n private fun computePositionFromUTM(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val utm = fromUTM(zone, hemisphere, easting, northing)\n return Position(utm.latitude.clampLatitude(), utm.longitude.clampLongitude(), 10e3)\n }\n\n private fun computePositionFromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val ups = fromUPS(hemisphere, easting, northing)\n return Position(ups.latitude.clampLatitude(), ups.longitude.clampLongitude(), 10e3)\n }\n\n fun createSquaresGrid(\n utmZone: Int, hemisphere: Hemisphere, utmZoneSector: Sector,\n minEasting: Double, maxEasting: Double, minNorthing: Double, maxNorthing: Double\n ): MutableList {\n val squares = mutableListOf()\n val startEasting = floor(minEasting / ONEHT) * ONEHT\n val startNorthing = floor(minNorthing / ONEHT) * ONEHT\n val cols = ceil((maxEasting - startEasting) / ONEHT).toInt()\n val rows = ceil((maxNorthing - startNorthing) / ONEHT).toInt()\n val squaresArray = Array(rows) { arrayOfNulls(cols) }\n var col = 0\n var easting = startEasting\n while (easting < maxEasting) {\n var row = 0\n var northing = startNorthing\n while (northing < maxNorthing) {\n val sz = UTMSquareZone(this, utmZone, hemisphere, utmZoneSector, easting, northing, ONEHT)\n if (!sz.isOutsideGridZone) {\n squares.add(sz)\n squaresArray[row][col] = sz\n }\n row++\n northing += ONEHT\n }\n col++\n easting += ONEHT\n }\n\n // Keep track of neighbors\n for (c in 0 until cols) {\n for (r in 0 until rows) {\n val sz = squaresArray[r][c]\n if (sz != null) {\n sz.northNeighbor = if (r + 1 < rows) squaresArray[r + 1][c] else null\n sz.eastNeighbor = if (c + 1 < cols) squaresArray[r][c + 1] else null\n }\n }\n }\n return squares\n }\n\n companion object {\n const val UTM_MIN_LATITUDE = -80.0\n const val UTM_MAX_LATITUDE = 84.0\n\n /** Graticule for the 100,000 meter grid. */\n private const val GRATICULE_UTM_100000M = \"Graticule.UTM.100000m\"\n\n /** Graticule for the 10,000 meter grid. */\n private const val GRATICULE_UTM_10000M = \"Graticule.UTM.10000m\"\n\n /** Graticule for the 1,000 meter grid. */\n private const val GRATICULE_UTM_1000M = \"Graticule.UTM.1000m\"\n\n /** Graticule for the 100 meter grid. */\n private const val GRATICULE_UTM_100M = \"Graticule.UTM.100m\"\n\n /** Graticule for the 10 meter grid. */\n private const val GRATICULE_UTM_10M = \"Graticule.UTM.10m\"\n\n /** Graticule for the 1 meter grid. */\n private const val GRATICULE_UTM_1M = \"Graticule.UTM.1m\"\n private const val ONEHT = 100e3\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\nclass GraticuleRenderingParams: MutableMap by HashMap() {\n var isDrawLines: Boolean\n get() = get(KEY_DRAW_LINES) as? Boolean ?: false\n set(drawLines) { put(KEY_DRAW_LINES, drawLines) }\n var lineColor: Color?\n get() = get(KEY_LINE_COLOR) as? Color\n set(color) { put(KEY_LINE_COLOR, color) }\n var lineWidth: Double\n get() = get(KEY_LINE_WIDTH) as? Double ?: 0.0\n set(lineWidth) { put(KEY_LINE_WIDTH, lineWidth) }\n// var lineStyle: String?\n// get() = get(KEY_LINE_STYLE) as? String\n// set(lineStyle) { put(KEY_LINE_STYLE, lineStyle) }\n var isDrawLabels: Boolean\n get() = get(KEY_DRAW_LABELS) as? Boolean ?: false\n set(drawLabels) { put(KEY_DRAW_LABELS, drawLabels) }\n var labelColor: Color?\n get() = get(KEY_LABEL_COLOR) as? Color\n set(color) { put(KEY_LABEL_COLOR, color) }\n var labelFont: Font?\n get() = get(KEY_LABEL_FONT) as? Font\n set(font) { put(KEY_LABEL_FONT, font) }\n\n fun getStringValue(key: String) = this[key]?.toString()\n\n fun getFloatValue(key: String): Float? {\n val o = get(key) ?: return null\n if (o is Float) return o\n val v = getStringValue(key)\n return v?.toFloat()\n }\n\n companion object {\n const val KEY_DRAW_LINES = \"DrawGraticule\"\n const val KEY_LINE_COLOR = \"GraticuleLineColor\"\n const val KEY_LINE_WIDTH = \"GraticuleLineWidth\"\n// const val KEY_LINE_STYLE = \"GraticuleLineStyle\";\n// const val KEY_LINE_CONFORMANCE = \"GraticuleLineConformance\";\n const val KEY_DRAW_LABELS = \"DrawLabels\"\n const val KEY_LABEL_COLOR = \"LabelColor\"\n const val KEY_LABEL_FONT = \"LabelFont\"\n// const val VALUE_LINE_STYLE_SOLID = \"LineStyleSolid\";\n// const val VALUE_LINE_STYLE_DASHED = \"LineStyleDashed\";\n// const val VALUE_LINE_STYLE_DOTTED = \"LineStyleDotted\";\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LINES\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_WIDTH\nimport earth.worldwind.render.*\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.ShapeAttributes\nimport kotlin.jvm.JvmOverloads\n\ninternal class GraticuleSupport {\n private val renderables = mutableMapOf()\n private val namedParams = mutableMapOf()\n private val namedShapeAttributes = mutableMapOf()\n var defaultParams: GraticuleRenderingParams? = null\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { renderables[renderable] = paramsKey }\n\n fun removeAllRenderables() { renderables.clear() }\n\n @JvmOverloads\n fun render(rc: RenderContext, opacity: Float = 1f) {\n namedShapeAttributes.clear()\n\n // Render lines and collect text labels\n for ((renderable, paramsKey) in renderables) {\n val renderingParams = namedParams[paramsKey]\n if (renderable is Path) {\n if (renderingParams?.isDrawLines != false) {\n applyRenderingParams(paramsKey, renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n } else if (renderable is Label) {\n if (renderingParams?.isDrawLabels != false) {\n applyRenderingParams(renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n }\n }\n }\n\n fun getRenderingParams(key: String): GraticuleRenderingParams {\n return namedParams[key] ?: GraticuleRenderingParams().also { params ->\n initRenderingParams(params)\n defaultParams?.let{ params.putAll(it) }\n namedParams[key] = params\n }\n }\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n initRenderingParams(renderingParams)\n namedParams[key] = renderingParams\n }\n\n private fun initRenderingParams(params: GraticuleRenderingParams) {\n if (params[KEY_DRAW_LINES] == null) params[KEY_DRAW_LINES] = true\n if (params[KEY_LINE_COLOR] == null) params[KEY_LINE_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LINE_WIDTH] == null) params[KEY_LINE_WIDTH] = .5f\n// if (params[KEY_LINE_STYLE] == null) params[KEY_LINE_STYLE] = GraticuleRenderingParams.VALUE_LINE_STYLE_SOLID\n if (params[KEY_DRAW_LABELS] == null) params[KEY_DRAW_LABELS] = true\n if (params[KEY_LABEL_COLOR] == null) params[KEY_LABEL_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LABEL_FONT] == null) params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 12)\n }\n\n private fun applyRenderingParams(params: GraticuleRenderingParams?, text: Label, opacity: Float) {\n if (params != null) {\n // Apply \"label\" properties to the Label.\n var o = params[KEY_LABEL_COLOR]\n if (o is Color) {\n val color = applyOpacity(o, opacity)\n val compArray = FloatArray(3)\n color.toHSV(compArray)\n val colorValue = if (compArray[2] < .5f) 1f else 0f\n text.attributes.textColor = color\n text.attributes.outlineColor = Color(colorValue, colorValue, colorValue, color.alpha)\n }\n o = params[KEY_LABEL_FONT]\n if (o is Font) text.attributes.font = o\n }\n }\n\n private fun applyRenderingParams(key: String, params: GraticuleRenderingParams?, path: Path, opacity: Float) {\n if (params != null) {\n path.attributes = getLineShapeAttributes(key, params, opacity)\n }\n }\n\n private fun getLineShapeAttributes(key: String, params: GraticuleRenderingParams, opacity: Float) =\n namedShapeAttributes[key] ?: createLineShapeAttributes(params, opacity).also { namedShapeAttributes[key] = it }\n\n private fun createLineShapeAttributes(params: GraticuleRenderingParams, opacity: Float): ShapeAttributes {\n val attrs = ShapeAttributes()\n attrs.isDrawInterior = false\n attrs.isDrawOutline = true\n\n // Apply \"line\" properties.\n val o = params[KEY_LINE_COLOR]\n if (o is Color) attrs.outlineColor = applyOpacity(o, opacity)\n val lineWidth = params.getFloatValue(KEY_LINE_WIDTH)\n if (lineWidth != null) attrs.outlineWidth = lineWidth\n// val s = params.getStringValue(KEY_LINE_STYLE)\n// when {\n// VALUE_LINE_STYLE_SOLID.equals(s, true) -> {\n// attrs.outlineStipplePattern = 0xAAAA.toShort()\n// attrs.outlineStippleFactor = 0\n// }\n// VALUE_LINE_STYLE_DASHED.equals(s, true) -> {\n// val baseFactor = lineWidth?.roundToInt() ?: 1\n// attrs.outlineStipplePattern = 0xAAAA.toShort()\n// attrs.outlineStippleFactor = 3 * baseFactor\n// }\n// VALUE_LINE_STYLE_DOTTED.equals(s, true) -> {\n// val baseFactor = lineWidth?.roundToInt() ?: 1\n// attrs.outlineStipplePattern =0xAAAA.toShort()\n// attrs.outlineStippleFactor = baseFactor\n// }\n// }\n return attrs\n }\n\n private fun applyOpacity(color: Color, opacity: Float) =\n if (opacity >= 1) color else Color(color.red, color.green, color.blue, color.alpha * opacity)\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\n\nclass GridElement(val sector: Sector, val renderable: Renderable, val type: String, val value: Angle) {\n constructor(sector: Sector, renderable: Renderable, type: String): this(sector, renderable, type, ZERO)\n\n fun isInView(rc: RenderContext) = sector.intersectsOrNextTo(rc.terrain.sector)\n\n companion object {\n const val TYPE_LINE = \"GridElement_Line\"\n const val TYPE_LINE_NORTH = \"GridElement_LineNorth\"\n const val TYPE_LINE_SOUTH = \"GridElement_LineSouth\"\n const val TYPE_LINE_WEST = \"GridElement_LineWest\"\n const val TYPE_LINE_EAST = \"GridElement_LineEast\"\n const val TYPE_LINE_NORTHING = \"GridElement_LineNorthing\"\n const val TYPE_LINE_EASTING = \"GridElement_LineEasting\"\n const val TYPE_GRIDZONE_LABEL = \"GridElement_GridZoneLabel\"\n const val TYPE_LONGITUDE_LABEL = \"GridElement_LongitudeLabel\"\n const val TYPE_LATITUDE_LABEL = \"GridElement_LatitudeLabel\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.floor\n\nopen class MGRSGraticuleLayer: AbstractUTMGraticuleLayer(\"MGRS graticule\", 100000, 1e5) {\n private val gridZones = Array(20) { arrayOfNulls(60) } // row/col\n private val poleZones = arrayOfNulls(4) // North x2 + South x2\n private val overview = MGRSOverview(this)\n\n /**\n * The maximum resolution graticule that will be rendered, or null if no graticules will be rendered. By\n * default, all graticules are rendered, and this will return GRATICULE_1M.\n */\n var maximumGraticuleResolution: String?\n get() {\n var maxTypeDrawn: String? = null\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n val params = getRenderingParams(type)\n if (params.isDrawLines) maxTypeDrawn = type\n }\n return maxTypeDrawn\n }\n set(graticuleType) {\n var pastTarget = false\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n // Enable all graticulte BEFORE and INCLUDING the target.\n // Disable all graticules AFTER the target.\n val params = getRenderingParams(type)\n params.isDrawLines = !pastTarget\n params.isDrawLabels = !pastTarget\n if (!pastTarget && type == graticuleType) pastTarget = true\n }\n }\n\n override val orderedTypes = mutableListOf(GRATICULE_MGRS_OVERVIEW, GRATICULE_MGRS_GRID_ZONE).apply { addAll(super.orderedTypes) }\n\n override fun initRenderingParams() {\n super.initRenderingParams()\n // MGRS Overview graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(.8f, .8f, .8f, .5f)\n params[KEY_LABEL_COLOR] = Color(1f, 1f, 1f, .8f)\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n params[KEY_DRAW_LABELS] = true\n setRenderingParams(GRATICULE_MGRS_OVERVIEW, params)\n // MGRS GridZone graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 16)\n setRenderingParams(GRATICULE_MGRS_GRID_ZONE, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when (resolution) {\n MGRS_OVERVIEW_RESOLUTION -> GRATICULE_MGRS_OVERVIEW\n MGRS_GRID_ZONE_RESOLUTION -> GRATICULE_MGRS_GRID_ZONE\n else -> super.getTypeFor(resolution)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n if (rc.camera.position.altitude <= GRID_ZONE_MAX_ALTITUDE) {\n selectMGRSRenderables(rc)\n super.selectRenderables(rc)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n private fun selectMGRSRenderables(rc: RenderContext) {\n val zoneList = getVisibleZones(rc)\n for (gz in zoneList) gz.selectRenderables(rc)\n }\n\n private fun getVisibleZones(rc: RenderContext): List {\n val zoneList = mutableListOf()\n val vs = rc.terrain.sector\n // UTM Grid\n val gridRectangle = getGridRectangleForSector(vs)\n if (gridRectangle != null) {\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n if (row != 19 || col != 31 && col != 33 && col != 35) {\n // ignore X32, 34 and 36\n val zone = gridZones[row][col] ?: MGRSGridZone(this, getGridSector(row, col)).also { gridZones[row][col] = it }\n if (zone.isInView(rc)) zoneList.add(zone) else zone.clearRenderables()\n }\n }\n }\n }\n // Poles\n if (vs.maxLatitude.inDegrees > 84) {\n // North pole\n if (poleZones[2] == null) poleZones[2] = MGRSGridZone(this, fromDegrees(84.0, -180.0, 6.0, 180.0)) // Y\n if (poleZones[3] == null) poleZones[3] = MGRSGridZone(this, fromDegrees(84.0, 0.0, 6.0, 180.0)) // Z\n zoneList.add(poleZones[2]!!)\n zoneList.add(poleZones[3]!!)\n }\n if (vs.minLatitude.inDegrees < -80) {\n // South pole\n if (poleZones[0] == null) poleZones[0] = MGRSGridZone(this, fromDegrees(-90.0, -180.0, 10.0, 180.0)) // B\n if (poleZones[1] == null) poleZones[1] = MGRSGridZone(this, fromDegrees(-90.0, 0.0, 10.0, 180.0)) // A\n zoneList.add(poleZones[0]!!)\n zoneList.add(poleZones[1]!!)\n }\n return zoneList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport? {\n var rectangle: Viewport? = null\n if (sector.minLatitude.inDegrees < 84 && sector.maxLatitude.inDegrees > -80) {\n val minLat = sector.minLatitude.inDegrees.coerceAtLeast(-80.0)\n val maxLat = sector.maxLatitude.inDegrees.coerceAtMost(84.0)\n val gridSector = fromDegrees(\n minLat, sector.minLongitude.inDegrees, maxLat - minLat, sector.deltaLongitude.inDegrees\n )\n var x1 = getGridColumn(gridSector.minLongitude)\n var x2 = getGridColumn(gridSector.maxLongitude)\n val y1 = getGridRow(gridSector.minLatitude)\n val y2 = getGridRow(gridSector.maxLatitude)\n // Adjust rectangle to include special zones\n if (y1 <= 17 && y2 >= 17 && x2 == 30) x2 = 31 // 32V Norway\n if (y1 <= 19 && y2 >= 19) { // X band\n if (x1 == 31) x1 = 30 // 31X\n if (x2 == 31) x2 = 32 // 33X\n if (x1 == 33) x1 = 32 // 33X\n if (x2 == 33) x2 = 34 // 35X\n if (x1 == 35) x1 = 34 // 35X\n if (x2 == 35) x2 = 36 // 37X\n }\n rectangle = Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n return rectangle\n }\n\n private fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n private fun getGridRow(latitude: Angle) = floor((latitude.inDegrees + 80) / 8.0).toInt().coerceAtMost(19)\n\n private fun getGridSector(row: Int, col: Int): Sector {\n val minLat = -80 + row * 8\n val maxLat = minLat + if (minLat != 72) 8 else 12\n var minLon = -180 + col * 6\n var maxLon = minLon + 6\n // Special sectors\n if (row == 17 && col == 30) // 31V\n maxLon -= 3 else if (row == 17 && col == 31) // 32V\n minLon -= 3 else if (row == 19 && col == 30) // 31X\n maxLon += 3 else if (row == 19 && col == 31) { // 32X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 32) { // 33X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 33) { // 34X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 34) { // 35X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 35) { // 36X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 36) // 37X\n minLon -= 3\n return fromDegrees(minLat.toDouble(), minLon.toDouble(), (maxLat - minLat).toDouble(), (maxLon - minLon).toDouble())\n }\n\n fun isNorthNeighborInView(gz: MGRSGridZone, rc: RenderContext): Boolean {\n if (gz.isUPS) return true\n val row = getGridRow(gz.sector.centroidLatitude)\n val col = getGridColumn(gz.sector.centroidLongitude)\n val neighbor = if (row + 1 <= 19) gridZones[row + 1][col] else null\n return neighbor?.isInView(rc) == true\n }\n\n fun isEastNeighborInView(gz: MGRSGridZone, rc: RenderContext): Boolean {\n if (gz.isUPS) return true\n val row = getGridRow(gz.sector.centroidLatitude)\n val col = getGridColumn(gz.sector.centroidLongitude)\n val neighbor = if (col + 1 <= 59) gridZones[row][col + 1] else null\n return neighbor?.isInView(rc) == true\n }\n\n companion object {\n const val MGRS_OVERVIEW_RESOLUTION = 1e6\n const val MGRS_GRID_ZONE_RESOLUTION = 5e5\n\n /** Graticule for the MGRS overview. */\n private const val GRATICULE_MGRS_OVERVIEW = \"Graticule.MGRS.Overview\"\n\n /** Graticule for the MGRS grid zone. */\n private const val GRATICULE_MGRS_GRID_ZONE = \"Graticule.MGRS.GridZone\"\n private const val GRID_ZONE_MAX_ALTITUDE = 5e6\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.MGRSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.MGRSGraticuleLayer.Companion.MGRS_GRID_ZONE_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a UTM zone / latitude band intersection\n */\nclass MGRSGridZone(layer: MGRSGraticuleLayer, sector: Sector) : AbstractGraticuleTile(layer, sector) {\n val isUPS = sector.maxLatitude.inDegrees > AbstractUTMGraticuleLayer.UTM_MAX_LATITUDE\n || sector.minLatitude.inDegrees < AbstractUTMGraticuleLayer.UTM_MIN_LATITUDE\n private var name: String\n private var hemisphere: Hemisphere\n private var zone: Int\n private var squares: MutableList? = null\n override val layer get() = super.layer as MGRSGraticuleLayer\n\n init {\n val mgrs = MGRSCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n if (isUPS) {\n name = mgrs.toString().substring(2, 3)\n hemisphere = if (sector.minLatitude.inDegrees > 0) Hemisphere.N else Hemisphere.S\n zone = 0\n } else {\n name = mgrs.toString().substring(0, 3)\n val utm = UTMCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n hemisphere = utm.hemisphere\n zone = utm.zone\n }\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(MGRS_GRID_ZONE_RESOLUTION)\n for (ge in gridElements!!) if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && layer.isNorthNeighborInView(this, rc)) continue\n if (ge.type == TYPE_LINE_EAST && layer.isEastNeighborInView(this, rc)) continue\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (rc.camera.position.altitude > SQUARE_MAX_ALTITUDE) return\n\n // Select 100km squares elements\n squares ?: if (isUPS) createSquaresUPS() else createSquaresUTM()\n for (sz in squares!!) if (sz.isInView(rc)) sz.selectRenderables(rc) else sz.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n squares?.run {\n for (sz in this) sz.clearRenderables()\n clear()\n }.also { squares = null }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf(\n Position(sector.minLatitude, sector.minLongitude, 10e3),\n Position(sector.maxLatitude, sector.minLongitude, 10e3)\n )\n var polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n var lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.minLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, GridElement.TYPE_LINE_WEST))\n if (!isUPS) {\n // right meridian segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.maxLongitude, sector.maxLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_EAST))\n\n // bottom parallel segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.minLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH))\n\n // top parallel segment\n positions.clear()\n positions.add(Position(sector.maxLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.maxLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH))\n }\n\n // Label\n val text = layer.createTextRenderable(\n Position(sector.centroidLatitude, sector.centroidLongitude, 0.0), name, 10e6\n )\n gridElements!!.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createSquaresUTM() {\n // Find grid zone easting and northing boundaries\n var utm = UTMCoord.fromLatLon(sector.minLatitude, sector.centroidLongitude)\n val minNorthing = utm.northing\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.centroidLongitude)\n var maxNorthing = utm.northing\n maxNorthing = if (maxNorthing == 0.0) 10e6 else maxNorthing\n utm = UTMCoord.fromLatLon(sector.minLatitude, sector.minLongitude)\n var minEasting = utm.easting\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.minLongitude)\n minEasting = utm.easting.coerceAtMost(minEasting)\n var maxEasting = 1e6 - minEasting\n\n // Compensate for some distorted zones\n if (name == \"32V\") maxNorthing += 20e3 // catch KS and LS in 32V\n if (name == \"31X\") maxEasting += ONEHT // catch GA and GV in 31X\n\n // Create squares\n squares = layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing)\n setSquareNames()\n }\n\n private fun createSquaresUPS() {\n squares = mutableListOf()\n val minEasting: Double\n val maxEasting: Double\n val minNorthing: Double\n val maxNorthing: Double\n if (Hemisphere.N == hemisphere) {\n minNorthing = TWOMIL - ONEHT * 7\n maxNorthing = TWOMIL + ONEHT * 7\n minEasting = if (name == \"Y\") TWOMIL - ONEHT * 7 else TWOMIL\n maxEasting = if (name == \"Y\") TWOMIL else TWOMIL + ONEHT * 7\n } else {\n minNorthing = TWOMIL - ONEHT * 12\n maxNorthing = TWOMIL + ONEHT * 12\n minEasting = if (name == \"A\") TWOMIL - ONEHT * 12 else TWOMIL\n maxEasting = if (name == \"A\") TWOMIL else TWOMIL + ONEHT * 12\n }\n\n // Create squares\n squares = layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing)\n setSquareNames()\n }\n\n private fun setSquareNames() {\n for (sz in squares!!) setSquareName(sz)\n }\n\n private fun setSquareName(sz: UTMSquareZone) {\n // Find out MGRS 100Km square name\n val tenMeterDegree = toDegrees(10.0 / 6378137.0)\n var mgrs: MGRSCoord? = null\n when {\n sz.isPositionInside(Position(sz.centroid.latitude, sz.centroid.longitude, 0.0)) ->\n mgrs = MGRSCoord.fromLatLon(sz.centroid.latitude, sz.centroid.longitude)\n sz.isPositionInside(sz.sw) -> mgrs = MGRSCoord.fromLatLon(\n sz.sw.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.sw.longitude.plusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.se) -> mgrs = MGRSCoord.fromLatLon(\n sz.se.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.se.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.nw) -> mgrs = MGRSCoord.fromLatLon(\n sz.nw.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.nw.longitude.plusDegrees(tenMeterDegree).clampLongitude())\n sz.isPositionInside(sz.ne) -> mgrs = MGRSCoord.fromLatLon(\n sz.ne.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.ne.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n }\n // Set square zone name\n if (mgrs != null) sz.name = mgrs.toString().substring(3, 5)\n }\n\n companion object {\n private const val ONEHT = 100e3\n private const val TWOMIL = 2e6\n private const val SQUARE_MAX_ALTITUDE = 3000e3\n }\n}",null,"package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.MGRSGraticuleLayer.Companion.MGRS_OVERVIEW_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class MGRSOverview(layer: MGRSGraticuleLayer): AbstractGraticuleTile(layer, Sector()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements!!) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n var pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) pos = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) pos = Position(labelPos.latitude, pos.longitude, pos.altitude)\n gt.position = pos\n }\n }\n layer.addRenderable(ge.renderable, layer.getTypeFor(MGRS_OVERVIEW_RESOLUTION))\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n var lon = -180\n var zoneNumber = 1\n var maxLat: Int\n for (i in 0..59) {\n val longitude = lon.toDouble()\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-80.0, longitude, 10e3))\n positions.add(fromDegrees(-60.0, longitude, 10e3))\n positions.add(fromDegrees(-30.0, longitude, 10e3))\n positions.add(fromDegrees(0.0, longitude, 10e3))\n positions.add(fromDegrees(30.0, longitude, 10e3))\n if (lon < 6 || lon > 36) {\n // 'regular' UTM meridians\n maxLat = 84\n positions.add(fromDegrees(60.0, longitude, 10e3))\n } else {\n // Exceptions: shorter meridians around and north-east of Norway\n if (lon == 6) {\n maxLat = 56\n } else {\n maxLat = 72\n positions.add(fromDegrees(60.0, longitude, 10e3))\n }\n }\n positions.add(fromDegrees(maxLat.toDouble(), longitude, 10e3))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-80.0, longitude, maxLat + 80.0, 1E-15)\n gridElements!!.add(GridElement(sector, polyline, TYPE_LINE))\n\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude + 3.0, 0.0),\n zoneNumber.toString(), 10e6\n )\n sector = fromDegrees(-90.0, longitude + 3.0, 180.0, 1E-15)\n gridElements!!.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n\n // Increase longitude and zone number\n lon += 6\n zoneNumber++\n }\n\n // Generate special meridian segments for exceptions around and north-east of Norway\n for (i in 0..4) {\n positions.clear()\n val longitude = SPECIAL_MERIDIANS[i][0].toDouble()\n val latitude1 = SPECIAL_MERIDIANS[i][1].toDouble()\n val latitude2 = SPECIAL_MERIDIANS[i][2].toDouble()\n positions.add(fromDegrees(latitude1, longitude, 10e3))\n positions.add(fromDegrees(latitude2, longitude, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val sector = fromDegrees(latitude1, longitude, latitude2 - latitude1, 1E-15)\n gridElements!!.add(GridElement(sector, polyline, TYPE_LINE))\n }\n\n // Generate parallels - no exceptions\n var lat = -80\n for (i in 0..20) {\n val latitude = lat.toDouble()\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n lon = -180 + j * 90\n val longitude = lon.toDouble()\n positions.add(fromDegrees(latitude, longitude, 10e3))\n positions.add(fromDegrees(latitude, longitude + 30, 10e3))\n positions.add(fromDegrees(latitude, longitude + 60, 10e3))\n positions.add(fromDegrees(latitude, longitude + 90, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 1E-15, 90.0)\n gridElements!!.add(GridElement(sector, polyline, TYPE_LINE))\n }\n // Latitude band label\n if (i < 20) {\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 4, 0.0, 0.0),\n LAT_BANDS[i].toString(), 10e6\n )\n val sector = fromDegrees(latitude + 4, -180.0, 1E-15, 360.0)\n gridElements!!.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n\n // Increase latitude\n lat += if (lat < 72) 8 else 12\n }\n }\n\n companion object {\n // Exceptions for some meridians. Values: longitude, min latitude, max latitude\n private val SPECIAL_MERIDIANS = arrayOf(\n intArrayOf(3, 56, 64), intArrayOf(6, 64, 72), intArrayOf(9, 72, 84), intArrayOf(21, 72, 84), intArrayOf(33, 72, 84)\n )\n\n // Latitude bands letters - from south to north\n private const val LAT_BANDS = \"CDEFGHJKLMNPQRSTUVWX\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.AbstractUTMGraticuleLayer.Companion.UTM_MAX_LATITUDE\nimport earth.worldwind.layer.graticule.AbstractUTMGraticuleLayer.Companion.UTM_MIN_LATITUDE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.log10\nimport kotlin.math.pow\n\ninternal class UTMMetricScaleSupport(private val layer: AbstractUTMGraticuleLayer) {\n private class UTMExtremes {\n var minX = 1e6\n var maxX = 0.0\n var minY = 10e6\n var maxY = 0.0\n var minYHemisphere = Hemisphere.N\n var maxYHemisphere = Hemisphere.S\n }\n\n var scaleModulo = 10000000\n var maxResolution = 1e5\n set(value) {\n field = value\n clear()\n }\n var zone = 0\n private set\n\n // 5 levels 100km to 10m\n private var extremes: Array? = null\n\n fun computeZone(rc: RenderContext) {\n try {\n if (layer.hasLookAtPos(rc)) {\n val latitude = layer.getLookAtLatitude(rc)\n val longitude = layer.getLookAtLongitude(rc)\n zone = if (latitude.inDegrees in UTM_MIN_LATITUDE..UTM_MAX_LATITUDE) {\n val utm = UTMCoord.fromLatLon(latitude, longitude)\n utm.zone\n } else 0\n }\n } catch (ex: Exception) {\n zone = 0\n }\n }\n\n fun clear() {\n val numLevels = log10(maxResolution).toInt()\n extremes = Array(numLevels) { UTMExtremes() }\n }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n if (UTMZone != zone) return\n if (size < 1 || size > maxResolution) return\n val levelExtremes = extremes!![log10(size).toInt() - 1]\n if (ge.type == TYPE_LINE_EASTING || ge.type == TYPE_LINE_EAST || ge.type == TYPE_LINE_WEST) {\n levelExtremes.minX = ge.value.inDegrees.coerceAtMost(levelExtremes.minX)\n levelExtremes.maxX = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxX)\n } else if (ge.type == TYPE_LINE_NORTHING || ge.type == TYPE_LINE_SOUTH || ge.type == TYPE_LINE_NORTH) {\n if (hemisphere == levelExtremes.minYHemisphere) {\n levelExtremes.minY = ge.value.inDegrees.coerceAtMost(levelExtremes.minY)\n } else if (hemisphere == Hemisphere.S) {\n levelExtremes.minY = ge.value.inDegrees\n levelExtremes.minYHemisphere = hemisphere\n }\n if (hemisphere == levelExtremes.maxYHemisphere) {\n levelExtremes.maxY = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxY)\n } else if (hemisphere == Hemisphere.N) {\n levelExtremes.maxY = ge.value.inDegrees\n levelExtremes.maxYHemisphere = hemisphere\n }\n }\n }\n\n fun selectRenderables(rc: RenderContext) {\n val extremes = extremes ?: return\n if (!layer.hasLookAtPos(rc)) return\n\n // Compute easting and northing label offsets\n val pixelSize = layer.getPixelSize(rc)\n val eastingOffset = rc.viewport.width * pixelSize * OFFSET_FACTOR_X / 2\n val northingOffset = rc.viewport.height * pixelSize * OFFSET_FACTOR_Y / 2\n // Derive labels center pos from the view center\n val labelEasting: Double\n var labelNorthing: Double\n var labelHemisphere: Hemisphere\n if (zone > 0) {\n val utm = UTMCoord.fromLatLon(layer.getLookAtLatitude(rc), layer.getLookAtLongitude(rc))\n labelEasting = utm.easting + eastingOffset\n labelNorthing = utm.northing + northingOffset\n labelHemisphere = utm.hemisphere\n if (labelNorthing < 0) {\n labelNorthing += 10e6\n labelHemisphere = Hemisphere.S\n }\n } else {\n val ups = UPSCoord.fromLatLon(layer.getLookAtLatitude(rc), layer.getLookAtLongitude(rc))\n labelEasting = ups.easting + eastingOffset\n labelNorthing = ups.northing + northingOffset\n labelHemisphere = ups.hemisphere\n }\n val viewFrustum = rc.frustum\n var labelPos: Position?\n for (i in extremes.indices) {\n val levelExtremes = extremes[i]\n val gridStep = 10.0.pow(i.toDouble())\n val gridStepTimesTen = gridStep * 10\n val graticuleType = layer.getTypeFor(gridStep)\n if (levelExtremes.minX <= levelExtremes.maxX) {\n // Process easting scale labels for this level\n var easting = levelExtremes.minX\n while (easting <= levelExtremes.maxX) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || easting % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, labelHemisphere, easting, labelNorthing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (easting % scaleModulo).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n layer.addRenderable(gt, graticuleType)\n }\n }\n easting += gridStep\n }\n }\n if (!(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)) {\n // Process northing scale labels for this level\n var currentHemisphere = levelExtremes.minYHemisphere\n var northing = levelExtremes.minY\n while (northing <= levelExtremes.maxY || currentHemisphere != levelExtremes.maxYHemisphere) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || northing % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, currentHemisphere, labelEasting, northing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text: String = (northing % scaleModulo).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n layer.addRenderable(gt, graticuleType)\n }\n if (currentHemisphere != levelExtremes.maxYHemisphere && northing >= 10e6 - gridStep) {\n // Switch hemisphere\n currentHemisphere = levelExtremes.maxYHemisphere\n northing = -gridStep\n }\n }\n northing += gridStep\n }\n }\n }\n }\n\n private fun isPointInRange(rc: RenderContext, point: Vec3): Boolean {\n val altitudeAboveGround = layer.computeAltitudeAboveGround(rc)\n return rc.cameraPoint.distanceTo(point) < altitudeAboveGround * VISIBLE_DISTANCE_FACTOR\n }\n\n override fun toString(): String {\n val sb = StringBuilder()\n for (i in 0..4) {\n sb.append(\"level \")\n sb.append(i)\n sb.append(\" : \")\n val levelExtremes = extremes!![i]\n if (levelExtremes.minX < levelExtremes.maxX ||\n !(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)\n ) {\n sb.append(levelExtremes.minX)\n sb.append(\", \")\n sb.append(levelExtremes.maxX)\n sb.append(\" - \")\n sb.append(levelExtremes.minY)\n sb.append(levelExtremes.minYHemisphere)\n sb.append(\", \")\n sb.append(levelExtremes.maxY)\n sb.append(levelExtremes.maxYHemisphere)\n } else {\n sb.append(\"empty\")\n }\n sb.append(\"\\n\")\n }\n return sb.toString()\n }\n\n companion object {\n private const val OFFSET_FACTOR_X = -.5\n private const val OFFSET_FACTOR_Y = -.5\n private const val VISIBLE_DISTANCE_FACTOR = 10.0\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a square 10x10 grid and recursive tree in easting/northing coordinates\n */\ninternal class UTMSquareGrid(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n private var subGrids: MutableList? = null\n\n override fun isInView(rc: RenderContext): Boolean {\n return super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val drawMetricLabels = getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4 * 1.7\n val graticuleType = layer.getTypeFor(size / 10)\n for (ge in gridElements!!) {\n if (ge.isInView(rc)) {\n if (drawMetricLabels) layer.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n layer.addRenderable(ge.renderable, graticuleType)\n }\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return\n\n // Select sub grids renderables\n subGrids ?: createSubGrids()\n for (sg in subGrids!!) if (sg.isInView(rc)) sg.selectRenderables(rc) else sg.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n subGrids?.run {\n for (sg in this) sg.clearRenderables()\n clear()\n }.also { subGrids = null }\n }\n\n private fun createSubGrids() {\n subGrids = mutableListOf()\n val gridStep = size / 10\n for (i in 0..9) {\n val easting = SWEasting + gridStep * i\n for (j in 0..9) {\n val northing = SWNorthing + gridStep * j\n val sg = UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, easting, northing, gridStep)\n if (!sg.isOutsideGridZone) subGrids!!.add(sg)\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val gridStep = size / 10\n val positions = mutableListOf()\n\n // South-North lines\n for (i in 1..9) {\n val easting = SWEasting + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing)\n var p2 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing + size)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(\n GridElement(lineSector, polyline, TYPE_LINE_EASTING, easting.degrees)\n )\n }\n }\n // West-East lines\n for (i in 1..9) {\n val northing = SWNorthing + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, SWEasting, northing)\n var p2 = layer.computePosition(UTMZone, hemisphere, SWEasting + size, northing)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_NORTHING, northing.degrees))\n }\n }\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.sign\n\n/**\n * Represent a generic UTM/UPS square area\n */\nabstract class UTMSquareSector(\n layer: AbstractUTMGraticuleLayer, val UTMZone: Int, val hemisphere: Hemisphere,\n val UTMZoneSector: Sector, val SWEasting: Double, val SWNorthing: Double, val size: Double\n): AbstractGraticuleTile(layer, Sector()) {\n val squareCenter = layer.computePosition(UTMZone, hemisphere, SWEasting + size / 2, SWNorthing + size / 2)\n // Four corners position\n var sw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing)\n var se = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing)\n var nw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing + size)\n var ne = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing + size)\n var boundingSector = boundingSector(adjustDateLineCrossingPoints()).apply { if (!isInsideGridZone) intersect(UTMZoneSector) }.also { sector.copy(it) }\n var centroid = boundingSector.centroid(Location())\n val isTruncated = !isInsideGridZone\n override val layer get() = super.layer as AbstractUTMGraticuleLayer\n /**\n * Determines whether this square is fully inside its parent grid zone.\n */\n private val isInsideGridZone get() = isPositionInside(nw) && isPositionInside(ne) && isPositionInside(sw) && isPositionInside(se)\n /**\n * Determines whether this square is fully outside its parent grid zone.\n */\n val isOutsideGridZone = !isPositionInside(nw) && !isPositionInside(ne) && !isPositionInside(sw) && !isPositionInside(se)\n\n private fun adjustDateLineCrossingPoints(): Iterable {\n val corners = listOf(sw, se, nw, ne)\n if (!locationsCrossDateLine(corners)) return corners\n\n var lonSign = 0.0\n for (corner in corners) if (abs(corner.longitude.inDegrees) != 180.0) lonSign = sign(corner.longitude.inDegrees)\n if (lonSign == 0.0) return corners\n\n if (abs(sw.longitude.inDegrees) == 180.0 && sign(sw.longitude.inDegrees) != lonSign)\n sw = Position(sw.latitude, -sw.longitude, sw.altitude)\n if (abs(se.longitude.inDegrees) == 180.0 && sign(se.longitude.inDegrees) != lonSign)\n se = Position(se.latitude, -se.longitude, se.altitude)\n if (abs(nw.longitude.inDegrees) == 180.0 && sign(nw.longitude.inDegrees) != lonSign)\n nw = Position(nw.latitude, -nw.longitude, nw.altitude)\n if (abs(ne.longitude.inDegrees) == 180.0 && sign(ne.longitude.inDegrees) != lonSign)\n ne = Position(ne.latitude, -ne.longitude, ne.altitude)\n\n return listOf(sw, se, nw, ne)\n }\n\n private fun locationsCrossDateLine(locations: Iterable): Boolean {\n var pos: Location? = null\n for (posNext in locations) {\n if (pos != null) {\n // A segment cross the line if end pos have different longitude signs\n // and are more than 180 degrees longitude apart\n if (sign(pos.longitude.inDegrees) != sign(posNext.longitude.inDegrees)) {\n val delta = abs(pos.longitude.inDegrees - posNext.longitude.inDegrees)\n if (delta > 180 && delta < 360) return true\n }\n }\n pos = posNext\n }\n return false\n }\n\n private fun boundingSector(locations: Iterable): Sector {\n var minLat = POS90\n var minLon = POS180\n var maxLat = NEG90\n var maxLon = NEG180\n for (p in locations) {\n val lat = p.latitude\n if (lat.inDegrees < minLat.inDegrees) minLat = lat\n if (lat.inDegrees > maxLat.inDegrees) maxLat = lat\n val lon = p.longitude\n if (lon.inDegrees < minLon.inDegrees) minLon = lon\n if (lon.inDegrees > maxLon.inDegrees) maxLon = lon\n }\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun boundingSector(pA: Location, pB: Location): Sector {\n var minLat = pA.latitude\n var minLon = pA.longitude\n var maxLat = pA.latitude\n var maxLon = pA.longitude\n if (pB.latitude.inDegrees < minLat.inDegrees) minLat = pB.latitude\n else if (pB.latitude.inDegrees > maxLat.inDegrees) maxLat = pB.latitude\n if (pB.longitude.inDegrees < minLon.inDegrees) minLon = pB.longitude\n else if (pB.longitude.inDegrees > maxLon.inDegrees) maxLon = pB.longitude\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun isPositionInside(position: Location) = UTMZoneSector.contains(position)\n\n override fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, centroid.latitude, centroid.longitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n return size / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n companion object {\n const val MIN_CELL_SIZE_PIXELS = 50\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_GRIDZONE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\nimport kotlin.math.cos\n\n/**\n * Represent a 100km square zone inside an UTM zone.\n */\nclass UTMSquareZone(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n var name: String? = null\n var northNeighbor: UTMSquareZone? = null\n var eastNeighbor: UTMSquareZone? = null\n private var squareGrid: UTMSquareGrid? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val drawMetricLabels = getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 2\n val graticuleType = layer.getTypeFor(size)\n for (ge in gridElements!!) {\n if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && isNorthNeighborInView(rc)) continue\n if (ge.type == TYPE_LINE_EAST && isEastNeighborInView(rc)) continue\n if (drawMetricLabels) layer.computeMetricScaleExtremes(\n UTMZone, hemisphere, ge, size * 10\n )\n layer.addRenderable(ge.renderable, graticuleType)\n }\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 2) return\n\n // Select grid renderables\n val squareGrid = squareGrid ?: UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size).also { squareGrid = it }\n if (squareGrid.isInView(rc)) squareGrid.selectRenderables(rc) else squareGrid.clearRenderables()\n }\n\n private fun isNorthNeighborInView(rc: RenderContext) = northNeighbor?.isInView(rc) == true\n\n private fun isEastNeighborInView(rc: RenderContext) = eastNeighbor?.isInView(rc) == true\n\n override fun clearRenderables() {\n super.clearRenderables()\n squareGrid?.clearRenderables()\n squareGrid = null\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // left segment\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, nw, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(nw)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(\n GridElement(lineSector, polyline, TYPE_LINE_WEST, SWEasting.degrees)\n )\n }\n\n // right segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(se, ne, UTMZoneSector, positions)\n } else {\n positions.add(se)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_EAST, (SWEasting + size).degrees))\n }\n\n // bottom segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, se, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(se)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH, SWNorthing.degrees))\n }\n\n // top segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(nw, ne, UTMZoneSector, positions)\n } else {\n positions.add(nw)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH, (SWNorthing + size).degrees))\n }\n\n // Label\n if (name != null) {\n // Only add a label to squares above some dimension\n if (boundingSector.deltaLongitude.inDegrees * cos(centroid.latitude.inRadians) > .2\n && boundingSector.deltaLatitude.inDegrees > .2\n ) {\n val labelPos = if (UTMZone != 0) centroid // Not at poles\n else if (isPositionInside(Position(squareCenter.latitude, squareCenter.longitude, 0.0))) squareCenter\n else if (squareCenter.latitude.inDegrees <= UTMZoneSector.maxLatitude.inDegrees\n && squareCenter.latitude.inDegrees >= UTMZoneSector.minLatitude.inDegrees) centroid\n else null\n if (labelPos != null) {\n val text = layer.createTextRenderable(\n Position(labelPos.latitude, labelPos.longitude, 0.0), name!!, size * 10\n )\n gridElements!!.add(GridElement(boundingSector, text, TYPE_GRIDZONE_LABEL))\n }\n }\n }\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\nimport kotlin.jvm.JvmStatic\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nabstract class AbstractMercatorImageTile(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): ImageTile(sector, level, row, column) {\n companion object {\n /**\n * Creates all Mercator tiles for a specified level within a LevelSet.\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result a pre-allocated Collection in which to store the results\n */\n @JvmStatic\n fun assembleMercatorTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList) {\n val sector = fromSector(level.parent.sector)\n val tileOrigin = level.parent.tileOrigin\n val dLat = level.tileDelta.latitude\n val dLon = level.tileDelta.longitude\n val firstRow = computeRow(dLat, sector.minLatitude, tileOrigin.latitude)\n val lastRow = computeLastRow(dLat, sector.maxLatitude, tileOrigin.latitude)\n val firstCol = computeColumn(dLon, sector.minLongitude, tileOrigin.longitude)\n val lastCol = computeLastColumn(dLon, sector.maxLongitude, tileOrigin.longitude)\n val dLatPercent = dLat.inDegrees / sector.deltaLatitude.inDegrees * (sector.maxLatPercent - sector.minLatPercent)\n val firstRowPercent = gudermannianInverse(tileOrigin.latitude) + firstRow * dLatPercent\n val firstColLon = tileOrigin.longitude.plusDegrees(firstCol * dLon.inDegrees)\n var d1 = firstRowPercent\n for (row in firstRow..lastRow) {\n val d2 = d1 + dLatPercent\n var t1 = firstColLon\n for (col in firstCol..lastCol) {\n val t2 = t1 + dLon\n result.add(tileFactory.createTile(MercatorSector(d1, d2, t1, t2), level, row, col))\n t1 = t2\n }\n d1 = d2\n }\n }\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its LevelSet.\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n override fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n val sector = sector as MercatorSector\n val d0 = sector.minLatPercent\n val d2 = sector.maxLatPercent\n val d1 = d0 + (d2 - d0) / 2.0\n val t0 = sector.minLongitude\n val t2 = sector.maxLongitude\n val t1 = average(t0, t2)\n val northRow = 2 * row\n val southRow = northRow + 1\n val westCol = 2 * column\n val eastCol = westCol + 1\n val child0 = tileFactory.createTile(MercatorSector(d0, d1, t0, t1), childLevel, northRow, westCol)\n val child1 = tileFactory.createTile(MercatorSector(d0, d1, t1, t2), childLevel, northRow, eastCol)\n val child2 = tileFactory.createTile(MercatorSector(d1, d2, t0, t1), childLevel, southRow, westCol)\n val child3 = tileFactory.createTile(MercatorSector(d1, d2, t1, t2), childLevel, southRow, eastCol)\n return arrayOf(child0, child1, child2, child3)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Sector\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\nopen class MercatorSector(\n val minLatPercent: Double, val maxLatPercent: Double, minLongitude: Angle, maxLongitude: Angle\n): Sector(gudermannian(minLatPercent), gudermannian(maxLatPercent), minLongitude, maxLongitude) {\n companion object {\n @JvmStatic\n fun fromDegrees(\n minLatPercent: Double, maxLatPercent: Double, minLonDegrees: Double, maxLonDegrees: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n\n @JvmStatic\n fun fromRadians(\n minLatPercent: Double, maxLatPercent: Double, minLonRadians: Double, maxLonRadians: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n\n @JvmStatic\n fun fromSector(sector: Sector) = MercatorSector(\n gudermannianInverse(sector.minLatitude), gudermannianInverse(sector.maxLatitude),\n sector.minLongitude, sector.maxLongitude\n )\n\n @JvmStatic\n fun gudermannianInverse(latitude: Angle) = ln(tan(PI / 4.0 + latitude.inRadians / 2.0)) / PI\n\n @JvmStatic\n fun gudermannian(percent: Double) = fromRadians(atan(sinh(percent * PI)))\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.TileFactory\n\nabstract class MercatorTiledImageLayer(\n name: String, numLevels: Int, tileSize: Int, transparent: Boolean\n): TiledImageLayer(name) {\n private val tileFactory = object : TileFactory {\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) =\n MercatorImageTile(sector as MercatorSector, level, row, column).apply {\n imageSource = getImageSource(column, (1 shl level.levelNumber) - 1 - row, level.levelNumber)?.also {\n it.postprocessor = this as ResourcePostprocessor<*>\n }\n }\n }\n\n init {\n val sector = MercatorSector(-1.0, 1.0, NEG180, POS180)\n val tileOrigin = Location(sector.minLatitude, sector.minLongitude)\n val firstLevelDelta = Location(sector.deltaLatitude, sector.deltaLongitude)\n val levelSet = LevelSet(sector, tileOrigin, firstLevelDelta, numLevels, tileSize, tileSize)\n tiledSurfaceImage = MercatorTiledSurfaceImage(tileFactory, levelSet).apply {\n // Reduce memory usage by using a 16-bit configuration with no alpha\n if (!transparent) imageOptions = ImageOptions(ImageConfig.RGB_565)\n levelOffset = 1 // Skip topmost level with bad resolution from processing\n }\n }\n\n protected abstract fun getImageSource(x: Int, y: Int, z: Int): ImageSource?\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.TileFactory\n\nopen class MercatorTiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet) : TiledSurfaceImage(tileFactory, levelSet) {\n override fun createTopLevelTiles() {\n levelSet.firstLevel?.let { AbstractMercatorImageTile.assembleMercatorTilesForLevel(it, tileFactory, topLevelTiles) }\n }\n}","package earth.worldwind.layer.mercator.google\n\nimport earth.worldwind.layer.mercator.MercatorTiledImageLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.locale.language\n\nclass GoogleLayer(type: Type): MercatorTiledImageLayer(type.layerName, 22, 256, type.overlay) {\n private val lyrs = type.lyrs\n\n enum class Type(val layerName: String, val lyrs: String, val overlay: Boolean) {\n ROADMAP(\"Google road map\", \"m\", false),\n ROADMAP2(\"Google road map 2\", \"r\", false),\n TERRAIN(\"Google map w/ terrain\", \"p\", false),\n TERRAIN_ONLY(\"Google terrain only\", \"t\", false),\n HYBRID(\"Google hybrid\", \"y\", false),\n SATELLITE(\"Google satellite\", \"s\", false),\n ROADS(\"Google roads\", \"h\", true),\n TRAFFIC(\"Google traffic\", \"h,traffic&style=15\", true);\n }\n\n override fun getImageSource(x: Int, y: Int, z: Int) =\n ImageSource.fromUrlString(\"https://mt.google.com/vt/lyrs=$lyrs&x=$x&y=$y&z=$z&hl=$language\")\n}","package earth.worldwind.layer.starfield\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.MR\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableLambda\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ALIASED_POINT_SIZE_RANGE\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_POINTS\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.decodeFromString\nimport kotlinx.serialization.json.Json\n\n/**\n * Constructs a layer showing stars and the Sun around the Earth.\n * If used together with the AtmosphereLayer, the StarFieldLayer must be inserted before the AtmosphereLayer.\n *\n * If you want to use your own star data, the file provided must be .json\n * and the fields \"ra\", \"dec\" and \"vmag\" must be present in the metadata.\n * ra and dec must be expressed in degrees.\n *\n * This layer uses J2000.0 as the ref epoch.\n *\n * If the star data .json file is too big, consider enabling gzip compression on your web server.\n * For more info about enabling gzip compression consult the configuration for your web server.\n */\nopen class StarFieldLayer(starDataSource: FileResource = MR.files.stars): AbstractLayer(\"StarField\") {\n override var isPickEnabled = false // The StarField Layer is not pickable.\n /**\n * Resource for the stars data\n */\n var starDataSource = starDataSource\n set(value) {\n field = value\n invalidateStarData()\n }\n /**\n * Resource for the sun texture image.\n */\n var sunImageSource = ImageSource.fromResource(MR.images.sun_texture)\n /**\n * The size of the Sun in pixels.\n * This can not exceed the maximum allowed pointSize of the GPU.\n * A warning will be given if the size is too big and the allowed max size will be used.\n */\n var sunSize = 128f\n /**\n * Indicates weather to show or hide the Sun\n */\n var isShowSun = true\n /**\n * Display star field on a specified time point. If null, then current time will be used each frame.\n */\n var time : Instant? = null\n protected val matrix = Matrix4() //The MVP matrix of this layer.\n protected var starsPositionsVboCacheKey = nextCacheKey() //gpu cache key for the stars vbo.\n protected var numStars = 0\n protected var starData: StarData? = null\n protected var minMagnitude = Float.MAX_VALUE\n protected var maxMagnitude = Float.MIN_VALUE\n protected var sunBufferViewHashCode = 0\n /**\n * A flag to indicate the star data is currently being retrieved.\n */\n protected var loadStarted = false\n protected val minScale = 10e6\n protected var sunPositionsCacheKey = nextCacheKey()\n protected val sunBufferView = FloatArray(4)\n protected var MAX_GL_POINT_SIZE = 0f\n\n protected fun nextCacheKey() = Any()\n\n protected open fun invalidateStarData() {\n starData = null\n starsPositionsVboCacheKey = nextCacheKey()\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Star Field layer is not applicable for 2D globe\n\n loadStarData(rc)\n\n val sunTexture = rc.getTexture(sunImageSource, null) ?: return // Sun texture is not loaded yet\n val starData = starData ?: return // Star data is not loaded yet\n val starsPositionsBuffer = rc.getBufferObject(starsPositionsVboCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, createStarsGeometry(starData, rc))\n }\n val time = time ?: Clock.System.now()\n // Number of days since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val julianDate = SunPosition.computeJulianDate(time)\n val sunCelestialLocation = SunPosition.getAsCelestialLocation(time)\n\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n sunBufferView[0] = sunCelestialLocation.declination.inDegrees.toFloat()\n sunBufferView[1] = sunCelestialLocation.rightAscension.inDegrees.toFloat()\n sunBufferView[2] = sunSize.coerceAtMost(MAX_GL_POINT_SIZE)\n sunBufferView[3] = 1f\n\n val hashCode = sunBufferView.contentHashCode()\n if (sunBufferViewHashCode != hashCode) {\n sunBufferViewHashCode = hashCode\n sunPositionsCacheKey = nextCacheKey()\n }\n val sunPositionsBuffer = rc.getBufferObject(sunPositionsCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, sunBufferView)\n }\n\n val scale = (rc.camera.position.altitude * 1.5).coerceAtLeast(minScale)\n matrix.copy(rc.modelviewProjection)\n matrix.multiplyByScale(scale, scale, scale)\n\n val program = rc.getShaderProgram { StarFieldProgram() }\n rc.offerDrawable(DrawableLambda { dc ->\n program.useProgram(dc)\n dc.gl.depthMask(false)\n try {\n program.loadModelviewProjection(matrix)\n // This subtraction does not work properly on the GPU due to precision loss. It must be done on the CPU.\n program.loadNumDays((julianDate - 2451545.0).toFloat())\n renderStars(dc, program, starsPositionsBuffer)\n if (isShowSun) renderSun(dc, program, sunPositionsBuffer, sunTexture)\n } finally {\n dc.gl.depthMask(true)\n }\n }, DrawableGroup.BACKGROUND, 0.0)\n }\n\n protected open fun loadStarData(rc: RenderContext) {\n if (starData == null && !loadStarted) {\n loadStarted = true\n rc.renderResourceCache.retrieveTextFile(starDataSource) {\n starData = Json.decodeFromString(it)\n loadStarted = false\n WorldWind.requestRedraw()\n }\n }\n }\n\n protected open fun renderStars(dc: DrawContext, program: StarFieldProgram, buffer: FloatBufferObject) {\n buffer.bindBuffer(dc)\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadMagnitudeRange(minMagnitude, maxMagnitude)\n program.loadTextureEnabled(false)\n dc.gl.drawArrays(GL_POINTS, 0, numStars)\n }\n\n protected open fun renderSun(\n dc: DrawContext, program: StarFieldProgram, sunBuffer: FloatBufferObject, sunTexture: Texture\n ) {\n if (MAX_GL_POINT_SIZE == 0f) MAX_GL_POINT_SIZE = dc.gl.getParameterfv(GL_ALIASED_POINT_SIZE_RANGE)[1]\n\n if (sunSize > MAX_GL_POINT_SIZE)\n log(WARN, \"StarFieldLayer - sunSize is to big, max size allowed is: $MAX_GL_POINT_SIZE\")\n\n sunBuffer.bindBuffer(dc)\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadTextureEnabled(true)\n sunTexture.bindTexture(dc)\n dc.gl.drawArrays(GL_POINTS, 0, 1)\n }\n\n protected open fun createStarsGeometry(starData: StarData, rc: RenderContext): FloatArray {\n val indexes = parseStarsMetadata(starData.metadata)\n require(indexes[0] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing ra field in star data.\")\n }\n require(indexes[1] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing dec field in star data.\")\n }\n require(indexes[2] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing vmag field in star data.\")\n }\n\n numStars = starData.data.size\n minMagnitude = Float.MAX_VALUE\n maxMagnitude = Float.MIN_VALUE\n\n val positions = FloatArray(numStars * 4)\n var positionIndex = 0\n for (i in starData.data.indices) {\n val starInfo = starData.data[i]\n val rightAscension = starInfo[indexes[0]] //for longitude\n val declination = starInfo[indexes[1]] //for latitude\n val magnitude = starInfo[indexes[2]]\n val pointSize = if (magnitude < 2) 2f else 1f\n\n positions[positionIndex++] = declination\n positions[positionIndex++] = rightAscension\n positions[positionIndex++] = pointSize * rc.densityFactor\n positions[positionIndex++] = magnitude\n\n minMagnitude = minMagnitude.coerceAtMost(magnitude)\n maxMagnitude = maxMagnitude.coerceAtLeast(magnitude)\n }\n\n return positions\n }\n\n protected open fun parseStarsMetadata(metadata: List): Array {\n var raIndex = -1\n var decIndex = -1\n var magIndex = -1\n for (i in metadata.indices) {\n val starMetaInfo = metadata[i]\n if (starMetaInfo.name == \"ra\") raIndex = i\n if (starMetaInfo.name == \"dec\") decIndex = i\n if (starMetaInfo.name == \"vmag\") magIndex = i\n }\n return arrayOf(raIndex, decIndex, magIndex)\n }\n\n @Serializable\n data class StarMetadata(\n val name: String, val description: String, val datatype: String,\n val arraysize: Int, val unit: String, val ucd: String\n )\n\n @Serializable\n data class StarData(val metadata: List, val data: List>)\n}\n","package earth.worldwind.layer.starfield\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n/**\n * StarFieldProgram is a GLSL program that draws points representing stars.\n */\nopen class StarFieldProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n attribute vec4 vertexPoint;\n\n uniform mat4 mvpMatrix;\n /* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\n uniform float numDays;\n uniform vec2 magnitudeRange;\n\n varying float magnitudeWeight;\n\n /* normalizes an angle between 0.0 and 359.0 */\n float normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n }\n\n /* transforms declination and right ascension in cartesian coordinates */\n vec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n }\n\n /* normalizes a value between 0.0 and 1.0 */\n float normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n }\n\n void main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform sampler2D textureSampler;\n uniform int textureEnabled;\n\n varying float magnitudeWeight;\n\n const vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n const vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\n void main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n /* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var numDaysId = KglUniformLocation.NONE\n protected var magnitudeRangeId = KglUniformLocation.NONE\n protected var textureUnitId = KglUniformLocation.NONE\n protected var textureEnabledId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\");\n numDaysId = gl.getUniformLocation(program, \"numDays\");\n magnitudeRangeId = gl.getUniformLocation(program, \"magnitudeRange\");\n textureUnitId = gl.getUniformLocation(program, \"textureSampler\");\n textureEnabledId = gl.getUniformLocation(program, \"textureEnabled\");\n }\n\n /**\n * Loads the specified matrix as the value of this program's 'mvpMatrix' uniform variable.\n *\n * @param matrix The matrix to load.\n */\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n /**\n * Loads the specified number as the value of this program's 'numDays' uniform variable.\n *\n * @param numDays The number of days (positive or negative) since Greenwich noon, Terrestrial Time,\n * on 1 January 2000 (J2000.0)\n */\n fun loadNumDays(numDays: Float) = gl.uniform1f(numDaysId, numDays)\n\n /**\n * Loads the specified numbers as the value of this program's 'magnitudeRange' uniform variable.\n *\n * @param minMag Minimal magnitude\n * @param maxMag Maximal magnitude\n */\n fun loadMagnitudeRange(minMag: Float, maxMag: Float) = gl.uniform2f(magnitudeRangeId, minMag, maxMag)\n\n /**\n * Loads the specified number as the value of this program's 'textureSampler' uniform variable.\n *\n * @param unit The texture unit.\n */\n fun loadTextureUnit(unit: Int) = gl.uniform1i(textureUnitId, unit - GL_TEXTURE0);\n\n /**\n * Loads the specified boolean as the value of this program's 'textureEnabledLocation' uniform variable.\n *\n * @param value Texture enabled\n */\n fun loadTextureEnabled(value: Boolean) = gl.uniform1i(textureEnabledId, if (value) 1 else 0)\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationTileFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\n\n/**\n * Generates elevations from OGC Web Map Service (WMS) version 1.3.0.\n *\n * @param serviceAddress OGC Web Map Service (WMS) server address\n * @param coverage comma-separated coverage names\n * @param imageFormat required image format\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\nopen class WmsElevationCoverage(\n serviceAddress: String, coverage: String, imageFormat: String, sector: Sector, resolution: Angle\n): TiledElevationCoverage(\n buildTileMatrixSet(sector, resolution), buildTileFactory(serviceAddress, coverage, imageFormat)\n) {\n companion object {\n /**\n * 4x2 top level matrix equivalent to 90 degree top level tiles\n *\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n private fun buildTileMatrixSet(sector: Sector, resolution: Angle) = TileMatrixSet.fromTilePyramid(\n sector, 4, 2, 256, 256, resolution\n )\n\n private fun buildTileFactory(serviceAddress: String, coverage: String, imageFormat: String): ElevationTileFactory {\n val layerConfig = WmsLayerConfig(serviceAddress, coverage).apply { this.imageFormat = imageFormat }\n val wmsTileFactory = WmsTileFactory(layerConfig)\n return object : ElevationTileFactory {\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val tileSector = tileMatrix.tileSector(row, column)\n val urlString = wmsTileFactory.urlForTile(tileSector, tileMatrix.tileWidth, tileMatrix.tileHeight)\n return ElevationSource.fromUrlString(urlString)\n }\n }\n }\n }\n}","package earth.worldwind.ogc\n\n/**\n * Configuration values for a WMS layer.\n */\nclass WmsLayerConfig(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String\n) {\n /**\n * The WMS protocol version. Defaults to 1.3.0.\n */\n var wmsVersion = \"1.3.0\"\n /**\n * The comma-separated list of WMS style names.\n */\n var styleNames: String? = null\n /**\n * The coordinate reference system to use when requesting layers. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map requests.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map requests should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map requests.\n */\n var timeString: String? = null\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.wms.WmsCapabilities\nimport earth.worldwind.ogc.wms.WmsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LevelSetConfig\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.ExperimentalXmlUtilApi\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmsLayerFactory {\n\n private const val DEFAULT_WMS_NUM_LEVELS = 20\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n @OptIn(ExperimentalXmlUtilApi::class)\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n suspend fun createLayer(serviceAddress: String, layerNames: List): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerNames.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmsCapabilities = retrieveWmsCapabilities(serviceAddress)\n val wmsLayers = layerNames.mapNotNull { layerName -> wmsCapabilities.getNamedLayer(layerName) }\n require(wmsLayers.isNotEmpty()) {\n makeMessage(\"WmsLayerFactory\", \"createLayer\", \"Provided layers did not match available layers\")\n }\n // Collect WMS Layer Titles to set the Layer Display Name\n return object : TiledImageLayer(wmsLayers.joinToString(\",\") { lc -> lc.title }) {\n init { tiledSurfaceImage = createWmsSurfaceImage(wmsLayers) }\n }\n }\n\n private suspend fun retrieveWmsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.3.0\")\n .appendQueryParameter(\"SERVICE\", \"WMS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }.let { xmlText ->\n withContext(Dispatchers.Default) { xml.decodeFromString(xmlText) }\n }\n\n private fun createWmsSurfaceImage(wmsLayers: List): TiledSurfaceImage {\n // Check if the server supports multiple layer request\n val layerLimit = wmsLayers[0].capability?.capabilities?.service?.layerLimit\n require (layerLimit != null && layerLimit >= wmsLayers.size) {\n makeMessage(\n \"WmsLayerFactory\", \"createFromWmsAsync\",\n \"The number of layers specified exceeds the services limit\"\n )\n }\n val wmsLayerConfig = getLayerConfigFromWmsCapabilities(wmsLayers)\n val levelSetConfig = getLevelSetConfigFromWmsCapabilities(wmsLayers)\n return TiledSurfaceImage(WmsTileFactory(wmsLayerConfig), LevelSet(levelSetConfig))\n }\n\n internal fun getLayerConfigFromWmsCapabilities(wmsLayers: List): WmsLayerConfig {\n // Construct the WmsTiledImage renderable from the WMS Capabilities properties\n val wmsCapabilities = wmsLayers[0].capability?.capabilities\n val serviceAddress = wmsCapabilities?.capability?.request?.getMap?.getUrl ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Unable to resolve GetMap URL\")\n )\n var matchingCoordinateSystems: MutableSet? = null\n for (wmsLayer in wmsLayers) {\n val wmsLayerCoordinateSystems = wmsLayer.referenceSystems\n if (matchingCoordinateSystems == null) matchingCoordinateSystems = wmsLayerCoordinateSystems.toMutableSet()\n else matchingCoordinateSystems.retainAll(wmsLayerCoordinateSystems.toSet())\n }\n val wmsLayerConfig = WmsLayerConfig(serviceAddress, wmsLayers.joinToString(\",\") { l -> l.name ?: \"\" })\n when (val wmsVersion = wmsCapabilities.version) {\n \"1.3.0\" -> wmsLayerConfig.wmsVersion = wmsVersion\n else -> error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Version not compatible\")\n )\n }\n if (matchingCoordinateSystems?.contains(\"EPSG:4326\") == true) {\n wmsLayerConfig.coordinateSystem = \"EPSG:4326\"\n } else if (matchingCoordinateSystems?.contains(\"CRS:84\") == true) {\n wmsLayerConfig.coordinateSystem = \"CRS:84\"\n } else error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Coordinate systems not compatible\")\n )\n\n // Negotiate Image Formats\n val imageFormats = wmsCapabilities.capability.request.getMap.formats\n wmsLayerConfig.imageFormat = compatibleImageFormats.firstOrNull { format -> imageFormats.contains(format) } ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Image Formats Not Compatible\")\n )\n\n // Setup transparency. If at least one layer is opaque then transparency is disabled\n wmsLayerConfig.isTransparent = !wmsLayers.any { layer -> layer.isOpaque }\n\n return wmsLayerConfig\n }\n\n internal fun getLevelSetConfigFromWmsCapabilities(layerCapabilities: List): LevelSetConfig {\n val levelSetConfig = LevelSetConfig()\n var minScaleDenominator = Double.MAX_VALUE\n val sector = Sector()\n for (layerCapability in layerCapabilities) {\n layerCapability.minScaleDenominator?.let { minScaleDenominator = minScaleDenominator.coerceAtMost(it) }\n layerCapability.geographicBoundingBox?.let { sector.union(it) }\n }\n if (!sector.isEmpty) levelSetConfig.sector.copy(sector) else error(\n makeMessage(\n \"WmsLayerFactory\", \"getLevelSetConfigFromWmsCapabilities\", \"Geographic Bounding Box Not Defined\"\n )\n )\n levelSetConfig.numLevels = when {\n minScaleDenominator != Double.MAX_VALUE -> {\n // WMS 1.3.0 scale configuration. Based on the WMS 1.3.0 spec page 28. The hard coded value 0.00028 is\n // detailed in the spec as the common pixel size of 0.28mm x 0.28mm. Configures the maximum level not to\n // exceed the specified min scale denominator.\n val minMetersPerPixel = minScaleDenominator * 0.00028\n val minRadiansPerPixel = minMetersPerPixel / Ellipsoid.WGS84.semiMajorAxis\n levelSetConfig.numLevelsForMinResolution(minRadiansPerPixel)\n }\n else -> DEFAULT_WMS_NUM_LEVELS // Default scale configuration when no minimum scale denominator or scale hint is provided.\n }\n return levelSetConfig\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ln\nimport kotlin.math.roundToInt\n\n/**\n * Multi-resolution, hierarchical collection of tiles organized into levels of increasing resolution. Applications\n * typically do not interact with this class.\n */\nopen class LevelSet {\n /**\n * The sector spanned by this level set.\n */\n val sector: Sector\n /**\n * Tile origin for this level set\n */\n val tileOrigin: Location\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of this level set.\n */\n val firstLevelDelta: Location\n /**\n * The width in pixels of images associated with tiles in this level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with this level set.\n */\n val tileWidth: Int\n /**\n * The height in pixels of images associated with tiles in this level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with this level set.\n */\n val tileHeight: Int\n /**\n * The hierarchical levels, sorted from lowest to highest resolution.\n */\n protected val levels: Array\n /**\n * Returns the number of levels in this level set.\n */\n val numLevels get() = levels.size\n /**\n * Returns the first level (the lowest resolution) of this level set.\n */\n val firstLevel get() = if (levels.isNotEmpty()) levels[0] else null\n /**\n * Returns the last level (the highest resolution) of this level set.\n */\n val lastLevel get() = if (levels.isNotEmpty()) levels[levels.size - 1] else null\n\n /**\n * Constructs an empty level set with no levels. The methods `level`, `levelForResolution`,\n * `firstLevel` and `lastLevel` always return null.\n */\n constructor() {\n sector = Sector()\n tileOrigin = Location()\n firstLevelDelta = Location()\n tileWidth = 0\n tileHeight = 0\n levels = emptyArray()\n }\n\n /**\n * Constructs a level set with specified parameters.\n *\n * @param sector the sector spanned by this level set\n * @param tileOrigin the origin for this level set\n * @param firstLevelDelta the geographic width and height of tiles in the first level (the lowest resolution)\n * of the level set\n * @param numLevels the number of levels in the level set\n * @param tileWidth the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the longitudinal direction of elevation tiles associate with this leve set\n * @param tileHeight the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the latitudinal direction of elevation tiles associate with this level set\n *\n * @throws IllegalArgumentException If any dimension is zero\n */\n constructor(\n sector: Sector, tileOrigin: Location, firstLevelDelta: Location, numLevels: Int, tileWidth: Int, tileHeight: Int\n ) {\n require(firstLevelDelta.latitude.inDegrees > 0.0 && firstLevelDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidTileDelta\")\n }\n require(numLevels >= 0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidNumLevels\")\n }\n require(tileWidth >= 1 && tileHeight >= 1) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidWidthOrHeight\")\n }\n this.sector = sector\n this.tileOrigin = tileOrigin\n this.firstLevelDelta = firstLevelDelta\n this.tileWidth = tileWidth\n this.tileHeight = tileHeight\n this.levels = Array(numLevels) {\n val divisor = (1 shl it).toDouble()\n Level(this, it, Location(firstLevelDelta.latitude / divisor, firstLevelDelta.longitude / divisor))\n }\n }\n\n /**\n * Constructs a level set with parameters from a specified configuration. The configuration's sector must be\n * non-null, its first level delta must be positive, its number of levels must be 1 or more, and its tile width and\n * tile height must be 1 or greater.\n *\n * @param config the configuration for this level set\n */\n constructor(config: LevelSetConfig): this(\n config.sector,\n config.tileOrigin,\n config.firstLevelDelta,\n config.numLevels,\n config.tileWidth,\n config.tileHeight\n )\n\n /**\n * Returns the [Level] for a specified level number.\n *\n * @param levelNumber the number of the desired level\n *\n * @return the requested level, or null if the level does not exist\n */\n fun level(levelNumber: Int) = if (levelNumber in levels.indices) levels[levelNumber] else null\n\n /**\n * Returns the level that most closely approximates the specified resolution.\n *\n * @param resolution the desired resolution in angular value of latitude per pixel.\n *\n * @return the level for the specified resolution, or null if this level set is empty\n *\n * @throws IllegalArgumentException If the resolution is not positive\n * @throws IllegalStateException If this level set is empty\n */\n fun levelForResolution(resolution: Angle): Level {\n require(resolution.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSetConfig\", \"levelForResolution\", \"invalidResolution\")\n }\n if (levels.isEmpty()) error(\"This level set is empty\")\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / resolution.inDegrees) / ln(2.0) // fractional level address\n val levelNumber = level.roundToInt() // nearest neighbor level\n return when {\n levelNumber < 0 -> levels[0] // unable to match the resolution; return the first level\n levelNumber < levels.size -> levels[levelNumber] // nearest neighbor level is in this level set\n else -> levels[levels.size - 1] // unable to match the resolution; return the last level\n }\n }\n}",null,"package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.TileFactory\n\n/**\n * Factory for constructing URLs associated with WMS Get Map requests.\n */\nopen class WmsTileFactory(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n\n /**\n * The WMS protocol version.\n */\n var wmsVersion: String,\n\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String,\n /**\n * The comma-separated list of WMS style names. May be null in which case the default style is assumed.\n */\n var styleNames: String?\n): TileFactory {\n /**\n * The coordinate reference system to use in Get Map URLs. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map URLs. May be null in which case a default format is assumed.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map URLs should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map URLs. May be null in which case no time parameter is included.\n */\n var timeString: String? = null\n\n /**\n * Constructs a level set with a specified configuration. The configuration's service address, WMS protocol version,\n * layer names and coordinate reference system must be non-null. The style names may be null, in which case the\n * default style is assumed. The time string may be null, in which case no time parameter is included.\n *\n * @param config the configuration for this URL builder\n */\n constructor(config: WmsLayerConfig): this(config.serviceAddress, config.wmsVersion, config.layerNames, config.styleNames) {\n coordinateSystem = config.coordinateSystem\n imageFormat = config.imageFormat\n isTransparent = config.isTransparent\n timeString = config.timeString\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(sector, level.tileWidth, level.tileHeight).let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this as ResourcePostprocessor<*> }\n }\n }\n\n fun urlForTile(sector: Sector, width: Int, height: Int) = Uri.parse(serviceAddress).buildUpon().apply {\n require(width >= 1 && height >= 1) {\n logMessage(ERROR, \"WmsTileFactory\", \"urlForTile\", \"invalidWidthOrHeight\")\n }\n appendQueryParameter(\"VERSION\", wmsVersion)\n appendQueryParameter(\"SERVICE\", \"WMS\")\n appendQueryParameter(\"REQUEST\", \"GetMap\")\n appendQueryParameter(\"LAYERS\", layerNames)\n appendQueryParameter(\"STYLES\", styleNames ?: \"\")\n appendQueryParameter(\"WIDTH\", width.toString())\n appendQueryParameter(\"HEIGHT\", height.toString())\n appendQueryParameter(\"FORMAT\", imageFormat ?: \"image/png\")\n appendQueryParameter(\"TRANSPARENT\", if (isTransparent) \"TRUE\" else \"FALSE\")\n if (wmsVersion == \"1.3.0\") {\n appendQueryParameter(\"CRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n if (coordinateSystem == \"CRS:84\") {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n } else {\n \"${minLatitude.inDegrees},${minLongitude.inDegrees},${maxLatitude.inDegrees},${maxLongitude.inDegrees}\"\n }\n })\n } else {\n appendQueryParameter(\"SRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n }\n timeString?.let{ appendQueryParameter(\"TIME\", it) }\n }.build().toString()\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.wmts.WmtsCapabilities\nimport earth.worldwind.ogc.wmts.WmtsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.TileFactory\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.ExperimentalXmlUtilApi\nimport nl.adaptivity.xmlutil.serialization.XML\nimport kotlin.math.abs\n\nobject WmtsLayerFactory {\n\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val compatibleCoordinateSystems = listOf(\n \"urn:ogc:def:crs:OGC:1.3:CRS84\",\n \"urn:ogc:def:crs:EPSG::4326\",\n \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\"\n )\n @OptIn(ExperimentalXmlUtilApi::class)\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n suspend fun createLayer(serviceAddress: String, layerIdentifier: String): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerIdentifier.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmtsLayer = retrieveWmtsCapabilities(serviceAddress).getLayer(layerIdentifier)\n requireNotNull(wmtsLayer) {\n makeMessage(\"WmtsLayerFactory\", \"createLayer\", \"The layer identifier specified was not found\")\n }\n return object : TiledImageLayer(wmtsLayer.title ?: layerIdentifier) {\n init { tiledSurfaceImage = createWmtsSurfaceImage(wmtsLayer) }\n }\n }\n\n private suspend fun retrieveWmtsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }.let { xmlText ->\n withContext(Dispatchers.Default) { xml.decodeFromString(xmlText) }\n }\n\n private fun createWmtsSurfaceImage(wmtsLayer: WmtsLayer): TiledSurfaceImage {\n // Determine if there is a TileMatrixSet which matches our Coordinate System compatibility and tiling scheme\n val compatibleTileMatrixSets = determineCoordSysCompatibleTileMatrixSets(wmtsLayer)\n require(compatibleTileMatrixSets.isNotEmpty()) {\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Coordinate Systems Not Compatible\")\n }\n\n // Search the list of coordinate system compatible tile matrix sets for compatible tiling schemes\n val compatibleTileMatrixSet = determineCompatibleTileMatrixSet(wmtsLayer.capabilities, compatibleTileMatrixSets) ?: error(\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Tile Schemes Not Compatible\")\n )\n val tileFactory = createWmtsTileFactory(wmtsLayer, compatibleTileMatrixSet)\n val levelSet = createWmtsLevelSet(wmtsLayer, compatibleTileMatrixSet)\n return TiledSurfaceImage(tileFactory, levelSet)\n }\n\n private fun createWmtsTileFactory(wmtsLayer: WmtsLayer, compatibleTileMatrixSet: CompatibleTileMatrixSet): TileFactory {\n // First choice is a ResourceURL\n for (resourceUrl in wmtsLayer.resourceUrls) if (compatibleImageFormats.contains(resourceUrl.format)) {\n val template = resourceUrl.template\n .replace(\"{style}\", wmtsLayer.styles[0].identifier)\n .replace(\"{TileMatrixSet}\", compatibleTileMatrixSet.tileMatrixSetId)\n return WmtsTileFactory(template, compatibleTileMatrixSet.tileMatrices)\n }\n\n // Second choice is if the server supports KVP\n val baseUrl = determineKvpUrl(wmtsLayer)\n return if (baseUrl != null) {\n val imageFormat = compatibleImageFormats.firstOrNull { format -> wmtsLayer.formats.contains(format) } ?: error(\n makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"Image Formats Not Compatible\")\n )\n val styleIdentifier = wmtsLayer.styles[0].identifier\n val template = buildWmtsKvpTemplate(\n baseUrl, wmtsLayer.identifier, imageFormat, styleIdentifier, compatibleTileMatrixSet.tileMatrixSetId\n )\n WmtsTileFactory(template, compatibleTileMatrixSet.tileMatrices)\n } else error(makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"No KVP Get Support\"))\n }\n\n private fun createWmtsLevelSet(wmtsLayer: WmtsLayer, compatibleTileMatrixSet: CompatibleTileMatrixSet): LevelSet {\n val boundingBox = wmtsLayer.wgs84BoundingBox?.sector ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"WGS84BoundingBox not defined for layer: \" + wmtsLayer.identifier\n )\n )\n val tileMatrixSet = wmtsLayer.capabilities.getTileMatrixSet(compatibleTileMatrixSet.tileMatrixSetId) ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"Compatible TileMatrixSet not found for: $compatibleTileMatrixSet\"\n )\n )\n val imageSize = tileMatrixSet.tileMatrices[0].tileHeight\n return LevelSet(\n boundingBox, Location(NEG90, NEG180), Location(POS90, POS90),\n compatibleTileMatrixSet.tileMatrices.size, imageSize, imageSize\n )\n }\n\n private fun buildWmtsKvpTemplate(\n kvpServiceAddress: String, layer: String, format: String, styleIdentifier: String, tileMatrixSet: String\n ) = Uri.parse(kvpServiceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetTile\")\n .appendQueryParameter(\"LAYER\", layer)\n .appendQueryParameter(\"STYLE\", styleIdentifier)\n .appendQueryParameter(\"FORMAT\", format)\n .appendQueryParameter(\"TILEMATRIXSET\", tileMatrixSet)\n .appendQueryParameter(\"TILEMATRIX\", WmtsTileFactory.TILEMATRIX_TEMPLATE)\n .appendQueryParameter(\"TILEROW\", WmtsTileFactory.TILEROW_TEMPLATE)\n .appendQueryParameter(\"TILECOL\", WmtsTileFactory.TILECOL_TEMPLATE)\n .build().toString()\n\n private fun determineCoordSysCompatibleTileMatrixSets(layer: WmtsLayer) = layer.layerSupportedTileMatrixSets\n .filter { tileMatrixSet -> compatibleCoordinateSystems.contains(tileMatrixSet.supportedCrs) }\n .map { tileMatrixSet -> tileMatrixSet.identifier }\n\n private fun determineCompatibleTileMatrixSet(\n capabilities: WmtsCapabilities, tileMatrixSetIds: List\n ): CompatibleTileMatrixSet? {\n val compatibleSet = CompatibleTileMatrixSet()\n\n // Iterate through each provided tile matrix set\n for (tileMatrixSetId in tileMatrixSetIds) {\n compatibleSet.tileMatrixSetId = tileMatrixSetId\n compatibleSet.tileMatrices.clear()\n val tileMatrixSet = capabilities.getTileMatrixSet(tileMatrixSetId)!!\n var previousHeight = 0\n // Walk through the associated tile matrices and check for compatibility with WWA tiling scheme\n for (tileMatrix in tileMatrixSet.tileMatrices) {\n // Aspect and symmetry check of current matrix\n if (2 * tileMatrix.matrixHeight != tileMatrix.matrixWidth) continue\n // Quad division check\n else if (tileMatrix.matrixWidth % 2 != 0 || tileMatrix.matrixHeight % 2 != 0) continue\n // Square image check\n else if (tileMatrix.tileHeight != tileMatrix.tileWidth) continue\n // Minimum row check\n else if (tileMatrix.matrixHeight < 2) continue\n\n // Parse top left corner values\n val topLeftCornerValue = tileMatrix.topLeftCorner.split(\"\\\\s+\".toRegex())\n if (topLeftCornerValue.size != 2) continue\n\n // Convert Values\n val topLeftCorner = try {\n doubleArrayOf(topLeftCornerValue[0].toDouble(), topLeftCornerValue[1].toDouble())\n } catch (e: Exception) {\n logMessage(\n WARN, \"WmtsLayerFactory\", \"determineTileSchemeCompatibleTileMatrixSet\",\n \"Unable to parse TopLeftCorner values\"\n )\n continue\n }\n\n // Check top left corner values\n if (tileMatrixSet.supportedCrs == \"urn:ogc:def:crs:OGC:1.3:CRS84\"\n || tileMatrixSet.supportedCrs == \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\"\n ) {\n if (abs(topLeftCorner[0] + 180) > 1e-9) continue\n else if (abs(topLeftCorner[1] - 90) > 1e-9) continue\n } else if (tileMatrixSet.supportedCrs == \"urn:ogc:def:crs:EPSG::4326\") {\n if (abs(topLeftCorner[1] + 180) > 1e-9) continue\n else if (abs(topLeftCorner[0] - 90) > 1e-9) continue\n } else {\n // The provided list of tile matrix set ids should adhere to either EPGS:4326 or CRS84\n continue\n }\n\n // Ensure quad division behavior from previous tile matrix and add compatible tile matrix\n if (previousHeight == 0) {\n previousHeight = tileMatrix.matrixHeight\n compatibleSet.tileMatrices.add(tileMatrix.identifier)\n } else if (2 * previousHeight == tileMatrix.matrixHeight) {\n previousHeight = tileMatrix.matrixHeight\n compatibleSet.tileMatrices.add(tileMatrix.identifier)\n }\n }\n\n // Return the first compatible tile matrix set\n if (compatibleSet.tileMatrices.size > 2) return compatibleSet\n }\n return null\n }\n\n /**\n * Conducts a simple search through the [WmtsLayer]s distributed computing platform resources for a URL which\n * supports KVP queries to the WMTS. This method only looks at the first entry of every array of the layers 'GET'\n * retrieval methods.\n *\n * @param layer the [WmtsLayer] to search for KVP support\n *\n * @return the URL for the supported KVP or null if KVP or 'GET' method isn't provided by the layer\n */\n private fun determineKvpUrl(layer: WmtsLayer): String? {\n val capabilities = layer.capabilities\n val operationsMetadata = capabilities.operationsMetadata ?: return null\n val getTileOperation = operationsMetadata.getTile ?: return null\n val dcp = getTileOperation.dcps\n if (dcp.isEmpty()) return null\n val getMethods = dcp[0].getMethods\n if (getMethods.isEmpty()) return null\n val constraints = getMethods[0].constraints\n if (constraints.isEmpty()) return null\n val allowedValues = constraints[0].allowedValues\n return if (allowedValues.contains(\"KVP\")) getMethods[0].url else null\n }\n\n private class CompatibleTileMatrixSet {\n lateinit var tileMatrixSetId: String\n val tileMatrices = mutableListOf()\n }\n}",null,null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.TileFactory\n\nopen class WmtsTileFactory(var template: String, var tileMatrixIdentifiers: List): TileFactory {\n companion object {\n const val TILEMATRIX_TEMPLATE = \"{TileMatrix}\"\n const val TILEROW_TEMPLATE = \"{TileRow}\"\n const val TILECOL_TEMPLATE = \"{TileCol}\"\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(level.levelNumber, row, column)?.let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this as ResourcePostprocessor<*> }\n }\n }\n\n fun urlForTile(level: Int, row: Int, column: Int): String? {\n if (level >= tileMatrixIdentifiers.size) {\n logMessage(\n Logger.WARN, \"WmtsTileFactory\", \"urlForTile\",\n \"invalid level for tileMatrixIdentifiers: $level\"\n )\n return null\n }\n\n // flip the row index\n val rowHeight = 2 shl level\n val flipRow = rowHeight - row - 1\n return template.replace(TILEMATRIX_TEMPLATE, tileMatrixIdentifiers[level])\n .replace(TILEROW_TEMPLATE, flipRow.toString()).replace(TILECOL_TEMPLATE, column.toString())\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Attribution\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAttribution(\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String? = null,\n val onlineResource: WmsOnlineResource? = null,\n val logoURL: WmsLogoUrl? = null\n) {\n val url get() = onlineResource?.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"AuthorityURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAuthorityUrl(\n val name: String,\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsBoundingBox(\n val CRS: String,\n val minx: Double,\n val maxx: Double,\n val miny: Double,\n val maxy: Double,\n val resx: Double? = null,\n val resy: Double? = null,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"WMS_Capabilities\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapabilities(\n /**\n * Returns the document's version number.\n */\n val version: String = \"1.3.0\",\n /**\n * Returns the document's update sequence.\n */\n val updateSequence: String? = null,\n /**\n * Returns the document's service information.\n */\n val service: WmsService,\n val capability: WmsCapability\n) {\n /**\n * Returns all named layers in the capabilities document.\n */\n val namedLayers get() = capability.layers.flatMap { layer -> layer.namedLayers }\n\n init {\n capability.capabilities = this\n }\n\n fun getNamedLayer(name: String) = namedLayers.firstOrNull { layer -> layer.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capability\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapability(\n val request: WmsRequest,\n val layers: List = emptyList(),\n /**\n * Object representation of an Exception element. Pre-allocated to prevent NPE in the event the server does not\n * include an Exception block.\n */\n val exception: WmsException = WmsException()\n) {\n @Transient\n lateinit var capabilities: WmsCapabilities\n\n init {\n layers.forEach { layer -> layer.capability = this }\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactAddress\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactAddress(\n @XmlElement(true)\n @XmlSerialName(\"AddressType\", WMS_NAMESPACE, WMS_PREFIX)\n val addressType: String,\n @XmlElement(true)\n @XmlSerialName(\"Address\", WMS_NAMESPACE, WMS_PREFIX)\n val address: String,\n @XmlElement(true)\n @XmlSerialName(\"City\", WMS_NAMESPACE, WMS_PREFIX)\n val city: String,\n @XmlElement(true)\n @XmlSerialName(\"StateOrProvince\", WMS_NAMESPACE, WMS_PREFIX)\n val stateOrProvince: String,\n @XmlElement(true)\n @XmlSerialName(\"PostCode\", WMS_NAMESPACE, WMS_PREFIX)\n val postCode: String,\n @XmlElement(true)\n @XmlSerialName(\"Country\", WMS_NAMESPACE, WMS_PREFIX)\n val country: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInformation\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactInformation(\n @XmlElement(true)\n @XmlSerialName(\"ContactPosition\", WMS_NAMESPACE, WMS_PREFIX)\n val position: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactVoiceTelephone\", WMS_NAMESPACE, WMS_PREFIX)\n val voiceTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactFacsimileNumber\", WMS_NAMESPACE, WMS_PREFIX)\n val facsimileTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactElectronicMailAddress\", WMS_NAMESPACE, WMS_PREFIX)\n val electronicMailAddress: String? = null,\n val contactAddress: WmsContactAddress? = null,\n val contactPersonPrimary: WmsContactPersonPrimary? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactPersonPrimary\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactPersonPrimary(\n @XmlElement(true)\n @XmlSerialName(\"ContactPerson\", WMS_NAMESPACE, WMS_PREFIX)\n val contactPerson: String,\n @XmlElement(true)\n @XmlSerialName(\"ContactOrganization\", WMS_NAMESPACE, WMS_PREFIX)\n val contactOrganization: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCPType\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDcpType(\n val http: WmsHttp\n) {\n val getHref get() = http.get.onlineResource.url\n val postHref get() = http.post?.onlineResource?.url\n\n @Serializable\n @XmlSerialName(\"HTTP\", WMS_NAMESPACE, WMS_PREFIX)\n data class WmsHttp(\n @XmlSerialName(\"Get\", WMS_NAMESPACE, WMS_PREFIX)\n val get: WmsHttpProtocol,\n @XmlSerialName(\"Post\", WMS_NAMESPACE, WMS_PREFIX)\n val post: WmsHttpProtocol? = null,\n )\n\n @Serializable\n data class WmsHttpProtocol(\n val onlineResource: WmsOnlineResource\n )\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDimension(\n val name: String,\n val units: String,\n val unitSymbol: String? = null,\n val default: String? = null,\n val multipleValues: Boolean? = null,\n val nearestValue: Boolean? = null,\n val current: Boolean? = null,\n @XmlValue(true)\n val value: String? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Exception\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsException(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList()\n)","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"EX_GeographicBoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsGeographicBoundingBox(\n @XmlElement(true)\n @XmlSerialName(\"northBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val north: Double,\n @XmlElement(true)\n @XmlSerialName(\"eastBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val east: Double,\n @XmlElement(true)\n @XmlSerialName(\"southBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val south: Double,\n @XmlElement(true)\n @XmlSerialName(\"westBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val west: Double\n) {\n val geographicBoundingBox get() = fromDegrees(south, west, north - south, east - west)\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Identifier\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsIdentifier(\n val authority: String,\n @XmlValue(true)\n val identifier: String,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsInfoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLayer(\n // Properties of the Layer element\n val layers: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = emptyList(),\n private val _styles: List = emptyList(),\n @XmlSerialName(\"CRS\", WMS_NAMESPACE, WMS_PREFIX)\n private val _referenceSystems: List = emptyList(),\n private val _geographicBoundingBox: WmsGeographicBoundingBox? = null,\n private val _boundingBoxes: List = emptyList(),\n private val _dimensions: List = emptyList(),\n private val _attribution: WmsAttribution? = null,\n private val _authorityUrls: List = emptyList(),\n val identifiers: List = emptyList(),\n val metadataUrls: List = emptyList(),\n @XmlSerialName(\"DataURL\", WMS_NAMESPACE, WMS_PREFIX)\n val dataUrls: List = emptyList(),\n @XmlSerialName(\"FeatureListURL\", WMS_NAMESPACE, WMS_PREFIX)\n val featureListUrls: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"MaxScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _maxScaleDenominator: Double? = null,\n @XmlElement(true)\n @XmlSerialName(\"MinScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _minScaleDenominator: Double? = null,\n // Properties of the Layer attributes\n @XmlSerialName(\"queryable\", WMS_NAMESPACE, WMS_PREFIX)\n val isQueryable: Boolean = false,\n @XmlSerialName(\"cascaded\", WMS_NAMESPACE, WMS_PREFIX)\n private val _cascaded: Int? = null,\n @XmlSerialName(\"opaque\", WMS_NAMESPACE, WMS_PREFIX)\n val isOpaque: Boolean = false,\n @XmlSerialName(\"noSubsets\", WMS_NAMESPACE, WMS_PREFIX)\n val isNoSubsets: Boolean = false,\n @XmlSerialName(\"fixedWidth\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedWidth: Int? = null,\n @XmlSerialName(\"fixedHeight\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedHeight: Int? = null,\n) {\n val namedLayers: List get() = (name?.let { listOf(this) } ?: emptyList()) + layers.flatMap { layer -> layer.namedLayers }\n val styles: List get() = _styles + (parent?.styles ?: emptyList())\n val referenceSystems: List get() = _referenceSystems + (parent?.referenceSystems ?: emptyList())\n val geographicBoundingBox: Sector? get() = _geographicBoundingBox?.geographicBoundingBox ?: parent?.geographicBoundingBox\n val boundingBoxes get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._boundingBoxes.forEach { bBox -> if (!result.containsKey(bBox.CRS)) result[bBox.CRS] = bBox }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val dimensions get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._dimensions.forEach { dimen -> if (!result.containsKey(dimen.name)) result[dimen.name] = dimen }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val attribution: WmsAttribution? get() = _attribution ?: parent?.attribution\n val authorityUrls: List get() = _authorityUrls + (parent?.authorityUrls ?: emptyList())\n val maxScaleDenominator: Double? get() = _maxScaleDenominator ?: parent?.maxScaleDenominator\n val minScaleDenominator: Double? get() = _minScaleDenominator ?: parent?.minScaleDenominator\n val cascaded: Int? get() = _cascaded ?: parent?.cascaded\n val fixedWidth: Int? get() = _fixedWidth ?: parent?.fixedWidth\n val fixedHeight: Int? get() = _fixedHeight ?: parent?.fixedHeight\n @Transient\n var capability: WmsCapability? = null\n get() = field ?: parent?.capability\n @Transient\n var parent: WmsLayer? = null\n\n init {\n layers.forEach { layer -> layer.parent = this }\n }\n\n fun getStyle(name: String) = styles.firstOrNull { style -> style.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LogoURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLogoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: Set = setOf(),\n val onlineResource: WmsOnlineResource,\n val width: Int? = null,\n val height: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"MetadataURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsMetadataUrl(\n val type: String,\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsOnlineResource(\n @XmlSerialName(\"type\", XLINK_NAMESPACE, XLINK_PREFIX)\n val type: String = \"simple\",\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Request\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsRequest(\n @XmlSerialName(\"GetCapabilities\", WMS_NAMESPACE, WMS_PREFIX)\n val getCapabilities: WmsRequestOperation,\n @XmlSerialName(\"GetMap\", WMS_NAMESPACE, WMS_PREFIX)\n val getMap: WmsRequestOperation,\n @XmlSerialName(\"GetFeatureInfo\", WMS_NAMESPACE, WMS_PREFIX)\n val getFeatureInfo: WmsRequestOperation? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsRequestOperation(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val dcpType: WmsDcpType\n) {\n val getUrl get() = dcpType.getHref\n val postUrl get() = dcpType.postHref\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Service\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsService(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Fees\", WMS_NAMESPACE, WMS_PREFIX)\n val fees: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AccessConstraints\", WMS_NAMESPACE, WMS_PREFIX)\n val accessConstraints: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = listOf(),\n val onlineResource: WmsOnlineResource,\n val contactInformation: WmsContactInformation? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxWidth\", WMS_NAMESPACE, WMS_PREFIX)\n val maxWidth: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxHeight\", WMS_NAMESPACE, WMS_PREFIX)\n val maxHeight: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"LayerLimit\", WMS_NAMESPACE, WMS_PREFIX)\n val layerLimit: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"LegendURL\", WMS_NAMESPACE, WMS_PREFIX)\n val legendUrls: List = emptyList(),\n @XmlSerialName(\"StyleSheetURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleSheetUrl: WmsInfoUrl? = null,\n @XmlSerialName(\"StyleURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleUrl: WmsInfoUrl? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Address\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsAddress(\n @XmlSerialName(\"DeliveryPoint\", OWS11_NAMESPACE, OWS11_PREFIX)\n val deliveryPoints: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"City\", OWS11_NAMESPACE, OWS11_PREFIX)\n val city: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AdministrativeArea\", OWS11_NAMESPACE, OWS11_PREFIX)\n val administrativeArea: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PostalCode\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postalCode: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Country\", OWS11_NAMESPACE, OWS11_PREFIX)\n val country: String? = null,\n @XmlSerialName(\"ElectronicMailAddress\", OWS11_NAMESPACE, OWS11_PREFIX)\n val electronicMailAddresses: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsBoundingBox(\n val crs: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"LowerCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val lowerCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"UpperCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val upperCorner: String\n) {\n val sector get() = try {\n val regex = \"\\\\s+\".toRegex()\n val lowerValues = lowerCorner.split(regex)\n val upperValues = upperCorner.split(regex)\n val minLon = lowerValues[0].toDouble()\n val minLat = lowerValues[1].toDouble()\n val maxLon = upperValues[0].toDouble()\n val maxLat = upperValues[1].toDouble()\n Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n } catch (ex: Exception) {\n Logger.logMessage(\n Logger.ERROR, \"OwsBoundingBox\", \"sector\",\n \"Error parsing bounding box corners, LowerCorner=$lowerCorner UpperCorner=$upperCorner\", ex\n )\n null\n }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlDefault\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Constraint\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsConstraint(\n val name: String,\n @XmlSerialName(\"AllowedValues\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Value\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlDefault(\"AnyValue\")\n val allowedValues: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInfo\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsContactInfo(\n val phone: OwsPhone? = null,\n val address: OwsAddress? = null,\n val onlineResource: OwsOnlineResource? = null,\n @XmlElement(true)\n @XmlSerialName(\"HoursOfService\", OWS11_NAMESPACE, OWS11_PREFIX)\n val hoursOfService: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactInstructions\", OWS11_NAMESPACE, OWS11_PREFIX)\n val contactInstructions: String? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsDcp(\n val http: OwsHttp\n) {\n val getMethods get() = http.getMethods\n val postMethods get() = http.postMethods\n}","package earth.worldwind.ogc.wmts\n\nabstract class OwsDescription {\n abstract val title: String?\n abstract val abstract: String?\n abstract val keywords: List\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"HTTP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsHttp(\n @XmlSerialName(\"Get\", OWS11_NAMESPACE, OWS11_PREFIX)\n val getMethods: List = emptyList(),\n @XmlSerialName(\"Post\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postMethods: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class OwsHttpMethod(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val constraints: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOnlineResource(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Operation\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperation(\n val name: String,\n val dcps: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OperationsMetadata\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperationsMetadata(\n val operations: List = emptyList()\n) {\n val getCapabilities get() = operations.firstOrNull { operation -> operation.name == \"GetCapabilities\" }\n val getTile get() = operations.firstOrNull { operation -> operation.name == \"GetTile\" }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Phone\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsPhone(\n @XmlElement(true)\n @XmlSerialName(\"Voice\", OWS11_NAMESPACE, OWS11_PREFIX)\n val voice: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Facsimile\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fax: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceContact\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceContact(\n @XmlElement(true)\n @XmlSerialName(\"IndividualName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val individualName: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PositionName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val positionName: String? = null,\n val contactInfo: OwsContactInfo? = null,\n @XmlElement(true)\n @XmlSerialName(\"Role\", OWS11_NAMESPACE, OWS11_PREFIX)\n val role: String? = null,\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceIdentification\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceIdentification(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"ServiceType\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceType: String,\n @XmlSerialName(\"ServiceTypeVersion\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceTypeVersions: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Fees\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fees: String? = null,\n @XmlSerialName(\"AccessConstraints\", OWS11_NAMESPACE, OWS11_PREFIX)\n val accessConstraints: List = emptyList(),\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceProvider\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceProvider(\n @XmlElement(true)\n @XmlSerialName(\"ProviderName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val providerName: String,\n @XmlSerialName(\"ProviderSite\", OWS11_NAMESPACE, OWS11_PREFIX)\n val onlineResource: OwsOnlineResource? = null,\n val serviceContact: OwsServiceContact\n) {\n val providerSiteUrl get() = onlineResource?.url\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capabilities\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsCapabilities(\n val version: String,\n val updateSequence: String? = null,\n val serviceIdentification: OwsServiceIdentification? = null,\n val serviceProvider: OwsServiceProvider? = null,\n val operationsMetadata: OwsOperationsMetadata? = null,\n val contents: WmtsContents,\n @XmlSerialName(\"Themes\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val themes: List = emptyList(),\n @XmlSerialName(\"ServiceMetadataURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val serviceMetadataUrls: List = emptyList()\n) {\n val layers get() = contents.layers\n val tileMatrixSets get() = contents.tileMatrixSets\n\n init {\n layers.forEach { layer -> layer.capabilities = this }\n }\n\n fun getLayer(identifier: String) = contents.layers.firstOrNull { layer -> layer.identifier == identifier }\n\n fun getTileMatrixSet(identifier: String) = contents.tileMatrixSets.firstOrNull { tms -> tms.identifier == identifier }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Contents\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsContents(\n val layers: List = emptyList(),\n val tileMatrixSets: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsDimension(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"UOM\", OWS11_NAMESPACE, OWS11_PREFIX)\n val unitOfMeasure: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"UnitSymbol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val unitSymbol: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Default\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val valueDefault: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Current\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val current: Boolean? = null,\n @XmlSerialName(\"Value\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val values: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLayer(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val boundingBoxes: List = emptyList(),\n @XmlSerialName(\"WGS84BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\n val wgs84BoundingBox: OwsBoundingBox? = null,\n @XmlSerialName(\"Metadata\", OWS11_NAMESPACE, OWS11_PREFIX)\n val metadata: List = emptyList(),\n val styles: List = emptyList(),\n @XmlSerialName(\"Format\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val formats: List = emptyList(),\n @XmlSerialName(\"InfoFormat\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val infoFormats: List = emptyList(),\n val tileMatrixSetLinks: List = emptyList(),\n val resourceUrls: List = emptyList(),\n val dimensions: List = emptyList(),\n): OwsDescription() {\n val layerSupportedTileMatrixSets get() = tileMatrixSetLinks.flatMap { link ->\n capabilities.tileMatrixSets.filter { set -> set.identifier == link.identifier }\n }\n @Transient\n lateinit var capabilities: WmtsCapabilities\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LegendURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLegendURL(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val format: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ResourceURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsResourceUrl(\n val format: String,\n val resourceType: String,\n val template: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val isDefault: Boolean = false,\n val legendUrls: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTheme(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val themes: List = emptyList(),\n @XmlSerialName(\"LayerRef\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val layerRefs: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrix(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"ScaleDenominator\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val scaleDenominator: Double,\n @XmlElement(true)\n @XmlSerialName(\"TopLeftCorner\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val topLeftCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"TileWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"TileHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileHeight: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixHeight: Int\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixLimits(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixIdentifier: String,\n @XmlElement(true)\n @XmlSerialName(\"MinTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MinTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileCol: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileCol: Int\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSet(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"SupportedCRS\", OWS11_NAMESPACE, OWS11_PREFIX)\n val supportedCrs: String,\n @XmlElement(true)\n @XmlSerialName(\"WellKnownScaleSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val wellKnownScaleSet: String? = null,\n val boundingBox: OwsBoundingBox? = null,\n val tileMatrices: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSetLink\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSetLink(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val identifier: String,\n @XmlSerialName(\"TileMatrixSetLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixSetLimits: List = emptyList()\n)","package earth.worldwind.render\n\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractRenderable @JvmOverloads constructor(override var displayName: String? = null): Renderable {\n override var isEnabled = true\n override var isPickEnabled = true\n override var pickDelegate: Any? = null\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) { if (isEnabled && (isPickEnabled || !rc.isPickMode)) doRender(rc) }\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\n\nabstract class AbstractSurfaceRenderable(sector: Sector, displayName: String? = null) : AbstractRenderable(displayName) {\n var sector = Sector(sector)\n set(value) {\n field.copy(value)\n invalidateExtent()\n }\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val heightLimits = heightLimits\n val extent = extent\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n val ve = rc.verticalExaggeration.toFloat()\n if (ve != extentExaggeration || timestamp != heightLimitsTimestamp) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n return extent\n }\n\n protected open fun invalidateExtent() {\n heightLimitsTimestamp = 0L\n extentExaggeration = 0.0f\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Color with red, green, blue and alpha components. Each RGB component is a number between 0.0 and 1.0 indicating the\n * component's intensity. The alpha component is a number between 0.0 (fully transparent) and 1.0 (fully opaque)\n * indicating the color's opacity.\n */\nopen class Color @JvmOverloads constructor(\n /**\n * The color's red component.\n */\n var red: Float,\n /**\n * The color's green component.\n */\n var green: Float,\n /**\n * The color's blue component.\n */\n var blue: Float,\n /**\n * The color's alpha component.\n */\n var alpha: Float = 1f\n) {\n /**\n * Constructs a color with red, green, blue and alpha all 1.0.\n */\n constructor(): this(red = 1f, green = 1f, blue = 1f, alpha = 1f)\n\n /**\n * Constructs a color from integer components\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n @JvmOverloads\n constructor(red: Int, green: Int, blue: Int, alpha: Int = 255): this(\n red = red / 255f,\n green = green / 255f,\n blue = blue / 255f,\n alpha = alpha / 255f\n )\n\n /**\n * Constructs a color with components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the components\n */\n constructor(colorInt: Int): this(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue = blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Constructs a color with the components of a specified color.\n *\n * @param color the color specifying the components\n */\n constructor(color: Color): this(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Sets this color to the specified components.\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n fun set(red: Float, green: Float, blue: Float, alpha: Float) = apply {\n this.red = red\n this.green = green\n this.blue = blue\n this.alpha = alpha\n }\n\n /**\n * Sets this color to the components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the new components\n *\n * @return this color with its components set to those of the specified color int\n */\n fun set(colorInt: Int) = set(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue= blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Sets this color to the components of a specified color.\n *\n * @param color the color specifying the new components\n *\n * @return this color with its components set to that of the specified color\n */\n fun copy(color: Color) = set(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Copies this color's components to the specified array. The result is compatible with GLSL uniform vectors, and\n * can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's components\n */\n fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"toArray\", \"missingArray\")\n }\n result[o++] = red\n result[o++] = green\n result[o++] = blue\n result[o] = alpha\n return result\n }\n\n /**\n * Returns this color's components as a color int. Color ints are stored as packed ints as follows: `(alpha <<\n * 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and 255 with 0\n * indicating the component's intensity.\n *\n * @return this color converted to a color int\n */\n fun toColorInt(): Int {\n val r8 = (red * 0xFF).roundToInt()\n val g8 = (green * 0xFF).roundToInt()\n val b8 = (blue * 0xFF).roundToInt()\n val a8 = (alpha * 0xFF).roundToInt()\n return argb(a8, r8, g8, b8)\n }\n\n /**\n * Convert the argb color to its HSV components.\n * hsv[0] is Hue [0 .. 360)\n * hsv[1] is Saturation [0...1]\n * hsv[2] is Value [0...1]\n * @param hsv 3 element array which holds the resulting HSV components.\n */\n fun toHSV(hsv: FloatArray) {\n val v = red.coerceAtLeast(green).coerceAtLeast(blue)\n val diff = v - red.coerceAtMost(green).coerceAtMost(blue)\n var h: Float\n val s: Float\n if (diff == 0f) {\n h = 0f\n s = 0f\n } else {\n s = diff / v\n val rr = (v - red) / 6f / diff + 1f / 2f\n val gg = (v - green) / 6f / diff + 1f / 2f\n val bb = (v - blue) / 6f / diff + 1f / 2f\n\n h = if (red == v) bb - gg\n else if (green == v) (1f / 3f) + rr - bb\n else if (blue == v) (2f / 3f) + gg - rr\n else 0f\n if (h < 0f) h += 1f else if (h > 1f) h -= 1f\n }\n hsv[0] = h * 360f\n hsv[1] = s\n hsv[2] = v\n }\n\n /**\n * Premultiplies this color in place. The RGB components are multiplied by the alpha component.\n *\n * @return this color with its RGB components multiplied by its alpha component\n */\n fun premultiply() = apply {\n red *= alpha\n green *= alpha\n blue *= alpha\n }\n\n /**\n * Premultiplies the specified color and stores the result in this color. This color's RGB components are set to the\n * product of the specified color's RGB components and its alpha component. This color's alpha component is set to\n * the specified color's alpha.\n *\n * @param color the color with components to premultiply and store in this color\n *\n * @return this color set to the premultiplied components of the specified color\n */\n fun premultiplyColor(color: Color) = apply {\n red = color.red * color.alpha\n green = color.green * color.alpha\n blue = color.blue * color.alpha\n alpha = color.alpha\n }\n\n /**\n * Copies this color's premultiplied components to the specified array. The result is compatible with GLSL uniform\n * vectors, and can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's premultiplied components\n */\n fun premultiplyToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"premultiplyToArray\", \"missingArray\")\n }\n result[o++] = red * alpha\n result[o++] = green * alpha\n result[o++] = blue * alpha\n result[o] = alpha\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Color) return false\n return red == other.red && green == other.green && blue == other.blue && alpha == other.alpha\n }\n\n override fun hashCode(): Int {\n var result = red.hashCode()\n result = 31 * result + green.hashCode()\n result = 31 * result + blue.hashCode()\n result = 31 * result + alpha.hashCode()\n return result\n }\n\n override fun toString() = \"Color(red=$red, green=$green, blue=$blue, alpha=$alpha)\"\n\n /**\n * Returns a string representation of this color, indicating the byte values corresponding to this color's\n * floating-point component values.\n *\n * @returns Byte string\n */\n fun toByteString(): String {\n val rb = (red * 255).roundToInt()\n val gb = (green * 255).roundToInt()\n val bb = (blue * 255).roundToInt()\n val ab = (alpha * 255).roundToInt()\n return \"($rb,$gb,$bb,$ab)\"\n }\n\n /**\n * Create a hex color string that CSS can use. Optionally, inhibit capturing alpha,\n * because some uses reject a four-component color specification.\n *\n * @param isUsingAlpha Enable the use of an alpha component.\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @returns A color string suitable for CSS.\n */\n fun toHexString(isUsingAlpha: Boolean = false, argb: Boolean = false): String {\n // Use Math.ceil() to get 0.75 to map to 0xc0. This is important if the display is dithering.\n val redHex = ceil(red * 255).toInt().toString(16)\n val greenHex = ceil(green * 255).toInt().toString(16)\n val blueHex = ceil(blue * 255).toInt().toString(16)\n val alphaHex = ceil(alpha * 255).toInt().toString(16)\n\n var result = \"#\"\n if (isUsingAlpha && argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n result += if (redHex.length < 2) (\"0$redHex\") else redHex\n result += if (greenHex.length < 2) (\"0$greenHex\") else greenHex\n result += if (blueHex.length < 2) (\"0$blueHex\") else blueHex\n if (isUsingAlpha && !argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n return result\n }\n\n /**\n * Create a rgba color string that conforms to CSS Color Module Level 3 specification.\n * @returns A color string suitable for CSS.\n */\n fun toCssColorString(): String {\n val red = (red * 255).roundToInt()\n val green = (green * 255).roundToInt()\n val blue = (blue * 255).roundToInt()\n\n // Per the CSS Color Module Level 3 specification, alpha is expressed as floating point value between 0 - 1\n return \"rgba($red, $green, $blue, $alpha)\"\n }\n\n companion object {\n /**\n * @param hexString representing hex value\n * (formatted \"0xRRGGBB\" i.e. \"0xFFFFFF\")\n * OR\n * formatted \"0xAARRGGBB\" i.e. \"0x00FFFFFF\" for a color with an alpha value\n * I will also put up with \"RRGGBB\" and \"AARRGGBB\" without the starting \"0x\"\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @return color represented by hex string\n */\n fun fromHexString(hexString: String, argb: Boolean = false): Color {\n val hexValue = when {\n hexString[0] == '#' -> hexString.substring(1)\n hexString.substring(0, 2).equals(\"0x\", true) -> hexString.substring(2)\n else -> hexString\n }.uppercase()\n\n val length = hexValue.length\n\n return if (length == 8 || length == 6) {\n val hexAlphabet = \"0123456789ABCDEF\"\n val value = intArrayOf(0, 0, 0, 0)\n for ((k, i) in (0 until length step 2).withIndex()) {\n val int1 = hexAlphabet.indexOf(hexValue[i])\n val int2 = hexAlphabet.indexOf(hexValue[i + 1])\n value[k] = int1 * 16 + int2\n }\n\n when (length) {\n 8 -> if (argb) Color(value[1],value[2],value[3],value[0]) else Color(value[0],value[1],value[2],value[3])\n 6 -> Color(value[0],value[1],value[2])\n else -> error(\"Bad hex value: $hexString\")\n }\n } else error(\"Bad hex value: $hexString\")\n }\n\n /**\n * Return the alpha component of a color int. This is the same as saying\n * color >>> 24\n */\n private fun alpha(color: Int) = color ushr 24\n\n /**\n * Return the red component of a color int. This is the same as saying\n * (color >> 16) & 0xFF\n */\n private fun red(color: Int) = color shr 16 and 0xFF\n\n /**\n * Return the green component of a color int. This is the same as saying\n * (color >> 8) & 0xFF\n */\n private fun green(color: Int) = color shr 8 and 0xFF\n\n /**\n * Return the blue component of a color int. This is the same as saying\n * color & 0xFF\n */\n private fun blue(color: Int) = color and 0xFF\n\n /**\n * Return a color-int from alpha, red, green, blue components.\n * These component values should be \\([0..255]\\), but there is no\n * range check performed, so if they are out of range, the\n * returned color is undefined.\n * @param alpha Alpha component \\([0..255]\\) of the color\n * @param red Red component \\([0..255]\\) of the color\n * @param green Green component \\([0..255]\\) of the color\n * @param blue Blue component \\([0..255]\\) of the color\n */\n private fun argb(alpha: Int, red: Int, green: Int, blue: Int) = alpha shl 24 or (red shl 16) or (green shl 8) or blue\n }\n}","package earth.worldwind.render\n\nenum class FontWeight { NORMAL, BOLD, ITALIC }","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.*\n\nopen class Framebuffer : RenderResource {\n protected var framebufferName = KglFramebuffer.NONE\n protected val attachedTextures = mutableMapOf()\n\n override fun release(dc: DrawContext) {\n if (framebufferName.isValid()) {\n deleteFramebuffer(dc)\n attachedTextures.clear()\n }\n }\n\n fun bindFramebuffer(dc: DrawContext): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) dc.bindFramebuffer(framebufferName)\n return framebufferName.isValid()\n }\n\n fun attachTexture(dc: DrawContext, texture: Texture, attachment: Int): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) {\n framebufferTexture(dc, texture, attachment)\n attachedTextures[attachment] = texture\n }\n return framebufferName.isValid()\n }\n\n fun getAttachedTexture(attachment: Int) = attachedTextures[attachment] ?: error(\"Invalid attachment type\")\n\n fun isFramebufferComplete(dc: DrawContext) = framebufferStatus(dc) == GL_FRAMEBUFFER_COMPLETE\n\n protected open fun createFramebuffer(dc: DrawContext) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Create the OpenGL framebuffer object.\n framebufferName = dc.gl.createFramebuffer()\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, framebufferName)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer)\n }\n }\n\n protected open fun deleteFramebuffer(dc: DrawContext) {\n dc.gl.deleteFramebuffer(framebufferName)\n framebufferName = KglFramebuffer.NONE\n }\n\n protected open fun framebufferTexture(dc: DrawContext, texture: Texture?, attachment: Int) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Attach the texture to the framebuffer object, or remove the attachment if the texture is null.\n val textureName = texture?.getTextureName(dc) ?: KglTexture.NONE\n dc.gl.framebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, textureName, 0 /*level*/)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n\n protected open fun framebufferStatus(dc: DrawContext): Int {\n val currentFramebuffer = dc.currentFramebuffer\n return try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Get the OpenGL framebuffer object status code.\n dc.gl.checkFramebufferStatus(GL_FRAMEBUFFER)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.draw.DrawableTerrain\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.AltitudeMode.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.shape.TextAttributes\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.SynchronizedPool\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.math.tan\n\nopen class RenderContext {\n companion object {\n private const val MAX_PICKED_OBJECT_ID = 0xFFFFFF\n }\n\n lateinit var globe: Globe\n lateinit var terrainTessellator: Tessellator\n lateinit var terrain: Terrain\n lateinit var layers: LayerList\n lateinit var currentLayer: Layer\n lateinit var camera: Camera\n lateinit var renderResourceCache: RenderResourceCache\n var densityFactor = 1f\n var verticalExaggeration = 1.0\n var horizonDistance = 0.0\n var atmosphereAltitude = 0.0\n var elevationModelTimestamp = 0L\n var cameraPoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n val frustum = Frustum()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n var isRedrawRequested = false\n protected set\n private var pickedObjectId = 0\n private var pixelSizeFactor = 0.0\n private val userProperties = mutableMapOf()\n val drawablePools = mutableMapOf>()\n private val textRenderer = TextRenderer(this)\n private val scratchTextCacheKey = TextCacheKey()\n private val scratchVector = Vec3()\n\n val tessellator: GLUtessellator by lazy { GLU.gluNewTess() }\n\n open fun reset() {\n densityFactor = 1f\n verticalExaggeration = 1.0\n horizonDistance = 0.0\n atmosphereAltitude = 0.0\n elevationModelTimestamp = 0L\n cameraPoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n frustum.setToUnitFrustum()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pickedObjectId = 0\n isRedrawRequested = false\n pixelSizeFactor = 0.0\n userProperties.clear()\n }\n\n fun requestRedraw() { isRedrawRequested = true }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n fun pixelSizeAtDistance(distance: Double): Double {\n if (pixelSizeFactor == 0.0) { // cache the scaling factor used to convert distances to pixel sizes\n val fov = camera.fieldOfView\n val tanFov2 = tan(fov.inRadians * 0.5)\n pixelSizeFactor = 2 * tanFov2 / viewport.height\n }\n return distance * pixelSizeFactor\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. The resultant screen point is in OpenGL screen coordinates,\n * with the origin in the bottom-left corner and axes that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param modelPoint the Cartesian point to project\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(modelPoint: Vec3, result: Vec3): Boolean {\n // TODO consider consolidating this with Matrix4.project and moving projectWithDepth to Matrix4\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This\n // inverts the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelviewProjection.m\n var x = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n var y = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n var z = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val w = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates, applying an offset to the point's projected depth value. The\n * resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes that\n * extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *
\n * The depth offset may be any real number and is typically used to move the screenPoint slightly closer to the\n * user's eye in order to give it visual priority over nearby objects or terrain. An offset of zero has no effect.\n * An offset less than zero brings the screenPoint closer to the eye, while an offset greater than zero pushes the\n * projected screen point away from the eye.\n *
\n * Applying a non-zero depth offset has no effect on whether the model point is clipped by this method or by WebGL.\n * Clipping is performed on the original model point, ignoring the depth offset. The final depth value after\n * applying the offset is clamped to the range [0,1].\n *\n * @param modelPoint the Cartesian point to project\n * @param depthOffset the amount of depth offset to apply\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun projectWithDepth(modelPoint: Vec3, depthOffset: Double, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates. The eye coordinate and the clip\n // coordinate are transformed separately in order to reuse the eye coordinate below.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelview.m\n val ex = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n val ey = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n val ez = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val ew = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n\n // Transform the point from eye coordinates to clip coordinates.\n val p = projection.m\n var x = p[0] * ex + p[1] * ey + p[2] * ez + p[3] * ew\n var y = p[4] * ex + p[5] * ey + p[6] * ez + p[7] * ew\n var z = p[8] * ex + p[9] * ey + p[10] * ez + p[11] * ew\n val w = p[12] * ex + p[13] * ey + p[14] * ez + p[15] * ew\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Transform the Z eye coordinate to clip coordinates again, this time applying a depth offset. The depth\n // offset is applied only to the matrix element affecting the projected Z coordinate, so we inline the\n // computation here instead of re-computing X, Y, Z and W in order to improve performance. See\n // Matrix4.offsetProjectionDepth for more information on the effect of this offset.\n z = p[8] * ex + p[9] * ey + p[10] * ez * (1 + depthOffset) + p[11] * ew\n z /= w\n\n // Clamp the point to the near and far clip planes. We know the point's original Z value is contained within\n // the clip planes, so we limit its offset z value to the range [-1, 1] in order to ensure it is not clipped\n // by WebGL. In clip coordinates the near and far clip planes are perpendicular to the Z axis and are\n // located at -1 and 1, respectively.\n z = z.coerceIn(-1.0, 1.0)\n\n // Convert the point from clip coordinates to the range [0, 1]. This enables the XY coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range [0, 1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Converts a geographic [Position] to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param position the specified position\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n position: Position, altitudeMode: AltitudeMode, result: Vec3\n ) = geographicToCartesian(position.latitude, position.longitude, position.altitude, altitudeMode, result)\n\n /**\n * Converts a geographic position to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode, result: Vec3\n ): Vec3 {\n when (altitudeMode) {\n ABSOLUTE -> globe.geographicToCartesian(latitude, longitude, altitude * verticalExaggeration, result)\n CLAMP_TO_GROUND -> if (!terrain.surfacePoint(latitude, longitude, result)) globe.run {\n // Use elevation model height as a fallback\n val elevation = getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n RELATIVE_TO_GROUND -> if (terrain.surfacePoint(latitude, longitude, result)) {\n // Offset along the normal vector at the terrain surface point.\n if (altitude != 0.0) globe.geographicToCartesianNormal(latitude, longitude, scratchVector).also {\n result.add(scratchVector.multiply(altitude))\n }\n } else globe.run {\n // Use elevation model height as a fallback\n val elevation = altitude + getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n }\n return result\n }\n\n // TODO redesign ShaderProgram to operate as a resource accessible from DrawContext\n // TODO created automatically on OpenGL thread, unless the caller wants to explicitly create a program\n inline fun getShaderProgram(builder: () -> T): T {\n val key = T::class\n return renderResourceCache.run{ get(key) ?: builder().also { put(key, it, it.programLength) } } as T\n }\n\n fun getTexture(imageSource: ImageSource, imageOptions: ImageOptions?, retrieve: Boolean = true) =\n renderResourceCache.run { get(imageSource) ?: if (retrieve) retrieveTexture(imageSource, imageOptions) else null } as Texture?\n\n inline fun getBufferObject(key: Any, builder: () -> T) =\n renderResourceCache.run{ get(key) ?: builder().also { put(key, it, it.byteCount) } } as T\n\n fun getText(text: String?, attributes: TextAttributes, render: Boolean = true) = renderResourceCache.run {\n scratchTextCacheKey.text = text\n scratchTextCacheKey.attributes = attributes\n // Use scratch key on get operation to avoid unnecessary object creation on each text render on each frame\n get(scratchTextCacheKey) as Texture? ?: if (render) textRenderer.renderText(text, attributes)?.also {\n // Use new text cache key and copy attributes on put operation to avoid cache issues on attributes modification\n put(TextCacheKey(text, TextAttributes(attributes)), it, it.byteCount)\n } else null\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, order: Double) {\n drawableQueue?.offerDrawable(drawable, groupId, order)\n }\n\n fun offerSurfaceDrawable(drawable: Drawable, zOrder: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SURFACE, zOrder)\n }\n\n fun offerShapeDrawable(drawable: Drawable, cameraDistance: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SHAPE, -cameraDistance) // order by descending distance to the viewer\n }\n\n fun offerDrawableTerrain(drawable: DrawableTerrain, sortOrder: Double) {\n drawableTerrain?.offerDrawable(drawable, DrawableGroup.SURFACE, sortOrder)\n }\n\n fun sortDrawables() {\n drawableQueue?.sortDrawables()\n drawableTerrain?.sortDrawables()\n }\n\n val drawableCount get() = drawableQueue?.count ?: 0\n\n @Suppress(\"UNCHECKED_CAST\")\n inline fun getDrawablePool(): Pool {\n val key = T::class\n // use SynchronizedPool; acquire and are release may be called in separate threads\n return drawablePools[key] as Pool? ?: SynchronizedPool().also { drawablePools[key] = it }\n }\n\n fun offerPickedObject(pickedObject: PickedObject) { pickedObjects?.offerPickedObject(pickedObject) }\n\n fun nextPickedObjectId(): Int {\n if (++pickedObjectId > MAX_PICKED_OBJECT_ID) pickedObjectId = 1\n return pickedObjectId\n }\n\n fun getUserProperty(key: Any) = userProperties[key]\n\n fun putUserProperty(key: Any, value: Any) = userProperties.put(key, value)\n\n fun removeUserProperty(key: Any) = userProperties.remove(key)\n\n fun hasUserProperty(key: Any) = userProperties.containsKey(key)\n\n protected data class TextCacheKey(\n var text: String? = null,\n var attributes: TextAttributes? = null\n )\n}","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport earth.worldwind.util.math.powerOfTwoCeiling\n\nopen class Texture(val width: Int, val height: Int, protected val format: Int, protected val type: Int, protected val isRT: Boolean = false) : RenderResource {\n companion object {\n protected fun estimateByteCount(width: Int, height: Int, format: Int, type: Int, hasMipMap: Boolean): Int {\n require(width >= 0 && height >= 0) {\n logMessage(ERROR, \"Texture\", \"estimateByteCount\", \"invalidWidthOrHeight\")\n }\n // Compute the number of bytes per row of texture image level 0. Use a default of 32 bits per pixel when either\n // of the bitmap's type or internal format are unrecognized. Adjust the width to the next highest power-of-two\n // to better estimate the memory consumed by non-power-of-two images.\n val widthPow2 = powerOfTwoCeiling(width)\n val bytesPerRow = when (type) {\n GL_UNSIGNED_BYTE -> when (format) {\n GL_ALPHA, GL_LUMINANCE -> widthPow2 // 8 bits per pixel\n GL_LUMINANCE_ALPHA -> widthPow2 * 2 // 16 bits per pixel\n GL_RGB -> widthPow2 * 3 // 24 bits per pixel\n GL_RGBA -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT_5_6_5,\n GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1 -> widthPow2 * 2 // 16 bits per pixel\n GL_UNSIGNED_INT -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n\n // Compute the number of bytes for the entire texture image level 0 (i.e. bytePerRow * numRows). Adjust the\n // height to the next highest power-of-two to better estimate the memory consumed by non power-of-two images.\n val heightPow2 = powerOfTwoCeiling(height)\n var byteCount = bytesPerRow * heightPow2\n\n // If the texture will have mipmaps, add 1/3 to account for the bytes used by texture image level 1 through\n // texture image level N.\n if (hasMipMap) byteCount += byteCount / 3\n return byteCount\n }\n }\n\n val coordTransform = Matrix3()\n val byteCount get() = estimateByteCount(width, height, format, type, hasMipMap)\n protected var name = KglTexture.NONE\n protected var parameters: MutableMap? = null\n protected open val hasMipMap = false\n private var pickMode = false\n\n fun getTexParameter(name: Int) = parameters?.get(name)?:0\n\n fun setTexParameter(name: Int, param: Int) {\n val parameters = parameters ?: mutableMapOf().also { parameters = it }\n parameters[name] = param\n }\n\n override fun release(dc: DrawContext) {\n if (name.isValid()) deleteTexture(dc)\n }\n\n fun getTextureName(dc: DrawContext): KglTexture {\n if (!name.isValid()) createTexture(dc)\n return name\n }\n\n fun bindTexture(dc: DrawContext): Boolean {\n if (!name.isValid()) createTexture(dc)\n if (name.isValid()) dc.bindTexture(name)\n if (name.isValid() && pickMode != dc.isPickMode) {\n setTexParameters(dc)\n pickMode = dc.isPickMode\n }\n return name.isValid()\n }\n\n protected open fun createTexture(dc: DrawContext) {\n val currentTexture = dc.currentTexture\n try {\n // Create the OpenGL texture 2D object.\n name = dc.gl.createTexture()\n dc.gl.bindTexture(GL_TEXTURE_2D, name)\n\n // Specify the texture object's image data\n allocTexImage(dc)\n\n // Configure the texture object's parameters.\n setTexParameters(dc)\n } finally {\n // Restore the current OpenGL texture object binding.\n dc.gl.bindTexture(GL_TEXTURE_2D, currentTexture)\n }\n }\n\n protected open fun deleteTexture(dc: DrawContext) {\n dc.gl.deleteTexture(name)\n name = KglTexture.NONE\n }\n\n protected open fun allocTexImage(dc: DrawContext) {\n // Following line of code is a dirty hack to disable AFBC compression on Mali GPU driver,\n // which cause huge memory leak during surface shapes drawing on terrain textures.\n if (isRT and dc.gl.hasMaliOOMBug) dc.gl.texImage2D(GL_TEXTURE_2D, 0, format, 1, 1, 0, format, type, null)\n\n // Allocate texture memory for the OpenGL texture 2D object. The texture memory is initialized with 0.\n dc.gl.texImage2D(\n GL_TEXTURE_2D, 0 /*level*/, format, width, height, 0 /*border*/, format, type, null /*pixels*/\n )\n }\n\n // TODO refactor setTexParameters to apply all configured tex parameters\n // TODO apply defaults only when no parameter is configured\n // TODO consider simplifying the defaults and requiring that layers/shapes specify what they want\n protected open fun setTexParameters(dc: DrawContext) {\n var param: Int\n\n // Configure the OpenGL texture minification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MIN_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param)\n else -> dc.gl.texParameteri(\n GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, if (hasMipMap) GL_LINEAR_MIPMAP_LINEAR else GL_LINEAR\n )\n }\n\n // Configure the OpenGL texture magnification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MAG_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param)\n else -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)\n }\n\n // Configure the OpenGL texture wrapping function for texture coordinate S. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_S).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)\n\n // Configure the OpenGL texture wrapping function for texture coordinate T. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_T).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Range\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.KglBuffer\n\nabstract class AbstractBufferObject(protected val target: Int, val byteCount: Int) : RenderResource {\n val ranges = mutableMapOf()\n protected var id = KglBuffer.NONE\n\n override fun release(dc: DrawContext) { deleteBufferObject(dc) }\n\n open fun bindBuffer(dc: DrawContext): Boolean {\n if (id.isValid()) dc.bindBuffer(target, id)\n return id.isValid()\n }\n\n protected open fun loadBuffer(dc: DrawContext) {\n val currentBuffer = dc.currentBuffer(target)\n try {\n // Create the OpenGL buffer object.\n if (!id.isValid()) createBufferObject(dc)\n // Make the OpenGL buffer object bound to the specified target.\n dc.bindBuffer(target, id)\n // Load the current NIO buffer as the OpenGL buffer object's data.\n loadBufferObjectData(dc)\n } catch (e: Exception) {\n // The NIO buffer could not be used as buffer data for an OpenGL buffer object. Delete the buffer object\n // to ensure that calls to bindBuffer fail.\n deleteBufferObject(dc)\n logMessage(\n ERROR, \"BufferObject\", \"loadBuffer\", \"Exception attempting to load buffer data\", e\n )\n } finally {\n // Restore the current OpenGL buffer object binding.\n dc.bindBuffer(target, currentBuffer)\n }\n }\n\n protected open fun createBufferObject(dc: DrawContext) { id = dc.gl.createBuffer() }\n\n protected open fun deleteBufferObject(dc: DrawContext) {\n if (id.isValid()) {\n dc.gl.deleteBuffer(id)\n id = KglBuffer.NONE\n }\n }\n\n protected abstract fun loadBufferObjectData(dc: DrawContext)\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class FloatBufferObject(\n target: Int, array: FloatArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Float.SIZE_BYTES) {\n protected var array: FloatArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let{ loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class IntBufferObject(\n target: Int, array: IntArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Int.SIZE_BYTES) {\n protected var array: IntArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let{ loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class ShortBufferObject(\n target: Int, array: ShortArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Short.SIZE_BYTES) {\n protected var array: ShortArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let{ loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.image\n\n/**\n * Image config indicates the in-memory representation for images displayed by WorldWind components. Images are\n * typically represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do\n * not require an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration.\n * Accepted values are [RGBA_8888] and [RGB_565].\n */\nenum class ImageConfig {\n /**\n * Indicating 32-bit RGBA_8888 image configuration.\n */\n RGBA_8888,\n /**\n * Indicating 16-bit RGBA_565 image configuration.\n */\n RGB_565;\n}","package earth.worldwind.render.image\n\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Options for images displayed by WorldWind components.\n */\nopen class ImageOptions @JvmOverloads constructor(\n /**\n * Indicates the in-memory configuration for images displayed by WorldWind components. By default, images are\n * represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do not require\n * an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration. Accepted values are\n * [ImageConfig.RGBA_8888] and [ImageConfig.RGB_565].\n */\n var imageConfig: ImageConfig = ImageConfig.RGBA_8888\n) {\n /**\n * Indicates the image sampling algorithm used by WorldWind to display images that appear larger or smaller on\n * screen than their native resolution. Accepted values are [ResamplingMode.BILINEAR] and [ResamplingMode.NEAREST_NEIGHBOR].\n */\n var resamplingMode = ResamplingMode.BILINEAR\n /**\n * Indicates how WorldWind displays the contents of an image when attempting to draw a region outside of the image\n * bounds. Accepted values are [WrapMode.CLAMP] and [WrapMode.REPEAT].\n */\n var wrapMode = WrapMode.CLAMP\n /**\n * Initial width for image that has no dimensions (e.g. SVG image)\n */\n var initialWidth = 0\n /**\n * Initial height for image that has no dimensions (e.g. SVG image)\n */\n var initialHeight = 0\n}","package earth.worldwind.render.image\n\n/**\n * Resampling mode indicates the image sampling algorithm used by WorldWind to display images that appear larger or\n * smaller on screen than their native resolution. Accepted values are [BILINEAR] and [NEAREST_NEIGHBOR].\n */\nenum class ResamplingMode {\n /**\n * Indicating bilinear image sampling.\n */\n BILINEAR,\n /**\n * Indicating nearest neighbor image sampling.\n */\n NEAREST_NEIGHBOR;\n}","package earth.worldwind.render.image\n\n/**\n * Wrap mode indicates how WorldWind displays the contents of an image when attempting to draw a region outside of\n * the image bounds. Accepted values are [CLAMP] and [REPEAT].\n */\nenum class WrapMode {\n /**\n * Indicating that the image's edge pixels should be displayed outside of the image bounds.\n */\n CLAMP,\n /**\n * Indicating that the image should display as a repeating pattern outside of the image bounds.\n */\n REPEAT;\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\n\n/**\n * Represents an OpenGL shading language (GLSL) shader program and provides methods for identifying and accessing shader\n * variables. Shader programs are configured by calling `setProgramSources` to specify the the GLSL vertex\n * shader and fragment shader source code, then made current by calling `useProgram`.\n */\nabstract class AbstractShaderProgram: RenderResource {\n companion object {\n protected const val VERTEX_SHADER = 0\n protected const val FRAGMENT_SHADER = 1\n }\n\n protected abstract var programSources: Array\n protected abstract val attribBindings: Array\n protected lateinit var gl : Kgl\n private set\n /**\n * Indicates the approximate size of the OpenGL resources referenced by this GPU program.\n */\n val programLength get() = programSources.sumOf{str -> str.length}\n\n /**\n * Indicates the OpenGL program object associated with this GPU program.\n */\n protected var program = KglProgram.NONE\n protected var mustBuildProgram = true\n\n override fun release(dc: DrawContext) = deleteProgram(dc)\n\n fun useProgram(dc: DrawContext): Boolean {\n if (mustBuildProgram) {\n // Clear the program's build dirty bit.\n mustBuildProgram = false\n\n // Remove any existing GLSL program.\n if (program.isValid()) deleteProgram(dc)\n\n // Compile and link the GLSL program sources.\n buildProgram(dc)\n\n // Free memory, occupied by program sources\n programSources = emptyArray()\n\n // Give subclasses an opportunity to initialize default GLSL uniform values.\n if (program.isValid()) {\n val currentProgram = dc.currentProgram\n try {\n dc.useProgram(program)\n initProgram(dc)\n } finally {\n dc.useProgram(currentProgram)\n }\n }\n }\n if (program.isValid()) dc.useProgram(program)\n return program.isValid()\n }\n\n protected open fun buildProgram(dc: DrawContext) {\n val vs = dc.gl.createShader(GL_VERTEX_SHADER)\n dc.gl.shaderSource(vs, programSources[VERTEX_SHADER])\n dc.gl.compileShader(vs)\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(vs)\n dc.gl.deleteShader(vs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL vertex shader \\n$msg\"\n )\n return\n }\n val fs = dc.gl.createShader(GL_FRAGMENT_SHADER)\n dc.gl.shaderSource(fs, programSources[FRAGMENT_SHADER])\n dc.gl.compileShader(fs)\n\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(fs)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL fragment shader \\n$msg\"\n )\n return\n }\n val program = dc.gl.createProgram()\n dc.gl.attachShader(program, vs)\n dc.gl.attachShader(program, fs)\n for (i in attribBindings.indices) dc.gl.bindAttribLocation(program, i, attribBindings[i])\n dc.gl.linkProgram(program)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n if (dc.gl.getProgramParameteri(program, GL_LINK_STATUS) != GL_TRUE) {\n val msg = dc.gl.getProgramInfoLog(program)\n dc.gl.deleteProgram(program)\n logMessage(ERROR, \"ShaderProgram\", \"buildProgram\", \"Error linking GL program \\n$msg\")\n return\n }\n this.program = program\n }\n\n protected open fun initProgram(dc: DrawContext) { gl = dc.gl }\n\n protected open fun deleteProgram(dc: DrawContext) {\n if (program.isValid()) {\n dc.gl.deleteProgram(program)\n program = KglProgram.NONE\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class BasicShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n\n void main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class SightlineProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform mat4 slpMatrix[2];\n\n attribute vec4 vertexPoint;\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n uniform highp sampler2D depthSampler;\n #else\n precision mediump float;\n uniform mediump sampler2D depthSampler;\n #endif\n\n uniform float range;\n uniform vec4 color[2];\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n const vec3 minusOne = vec3(-1.0, -1.0, -1.0);\n const vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\n void main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var slpMatrixId = KglUniformLocation.NONE\n protected var rangeId = KglUniformLocation.NONE\n protected var depthSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n private val array = FloatArray(32)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n slpMatrixId = gl.getUniformLocation(program, \"slpMatrix\")\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n rangeId = gl.getUniformLocation(program, \"range\")\n gl.uniform1f(rangeId, 0f)\n colorId = gl.getUniformLocation(program, \"color\")\n gl.uniform4f(colorId, 1f, 1f, 1f, 1f)\n depthSamplerId = gl.getUniformLocation(program, \"depthSampler\")\n gl.uniform1i(depthSamplerId, 0) // GL_TEXTURE0\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadSightlineProjection(projection: Matrix4, sightline: Matrix4) {\n projection.transposeToArray(array, 0)\n sightline.transposeToArray(array, 16)\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n }\n\n fun loadRange(range: Float) {\n gl.uniform1f(rangeId, range)\n }\n\n fun loadColor(visibleColor: Color, occludedColor: Color) {\n visibleColor.premultiplyToArray(array, 0)\n occludedColor.premultiplyToArray(array, 4)\n gl.uniform4fv(colorId, 2, array, 0)\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating surface tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform\n// TODO index to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class SurfaceTextureProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix[2];\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n val texCoordMatrix = arrayOf(Matrix3(), Matrix3())\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n private val texCoordMatrixArray = FloatArray(9 * 2)\n private val color = Color()\n protected var opacity = 1.0f\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, 0) // disable pick mode\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, 0) // disable texture\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(texCoordMatrixArray, 0) // 3 x 3 identity matrix\n Matrix3().transposeToArray(texCoordMatrixArray, 9) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n color.set(1f, 1f, 1f, 1f) // opaque white\n gl.uniform4f(colorId, color.red, color.green, color.blue, color.alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) { gl.uniform1i(enablePickModeId, if (enable) 1 else 0) }\n\n fun enableTexture(enable: Boolean) { gl.uniform1i(enableTextureId, if (enable) 1 else 0) }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun loadTexCoordMatrix() {\n texCoordMatrix[0].transposeToArray(texCoordMatrixArray, 0)\n texCoordMatrix[1].transposeToArray(texCoordMatrixArray, 9)\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) { // suppress unnecessary writes to GLSL uniform variables\n this.color.copy(color)\n val a: Float = color.alpha\n gl.uniform4f(colorId, color.red * a, color.green * a, color.blue * a, a)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.sqrt\n\nabstract class AbstractShape @JvmOverloads constructor(\n override var attributes: ShapeAttributes = ShapeAttributes()\n): AbstractRenderable(), Attributable, Highlightable {\n companion object {\n const val NEAR_ZERO_THRESHOLD = 1.0e-10\n }\n\n var altitudeMode = AltitudeMode.ABSOLUTE\n set(value) {\n field = value\n reset()\n }\n var pathType = PathType.GREAT_CIRCLE\n set(value) {\n field = value\n reset()\n }\n /**\n * Draw sides of the shape which extend from the defined position and altitude to the ground.\n */\n var isExtrude = false\n set(value) {\n field = value\n reset()\n }\n /**\n * Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.\n */\n var isFollowTerrain = false\n set(value) {\n field = value\n reset()\n }\n override var highlightAttributes: ShapeAttributes? = null\n override var isHighlighted = false\n var maximumIntermediatePoints = 10\n protected lateinit var activeAttributes: ShapeAttributes\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n protected val boundingSector = Sector()\n protected val boundingBox = BoundingBox()\n private val scratchPoint = Vec3()\n\n override fun doRender(rc: RenderContext) {\n // Don't render anything if the shape is not visible.\n if (!intersectsFrustum(rc)) return\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this shape has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the shape's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun intersectsFrustum(rc: RenderContext) = boundingBox.isUnitBox || boundingBox.intersectsFrustum(rc.frustum)\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun cameraDistanceGeographic(rc: RenderContext, boundingSector: Sector): Double {\n val lat = rc.camera.position.latitude.inDegrees.coerceIn(\n boundingSector.minLatitude.inDegrees,\n boundingSector.maxLatitude.inDegrees\n )\n val lon = rc.camera.position.longitude.inDegrees.coerceIn(\n boundingSector.minLongitude.inDegrees,\n boundingSector.maxLongitude.inDegrees\n )\n val point = rc.geographicToCartesian(lat.degrees, lon.degrees, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n return point.distanceTo(rc.cameraPoint)\n }\n\n protected open fun cameraDistanceCartesian(rc: RenderContext, array: FloatArray, count: Int, stride: Int, offset: Vec3): Double {\n val cx = rc.cameraPoint.x - offset.x\n val cy = rc.cameraPoint.y - offset.y\n val cz = rc.cameraPoint.z - offset.z\n var minDistance2 = Double.POSITIVE_INFINITY\n for (idx in 0 until count step stride) {\n val px = array[idx]\n val py = array[idx + 1]\n val pz = array[idx + 2]\n val dx = px - cx\n val dy = py - cy\n val dz = pz - cz\n val distance2 = dx * dx + dy * dy + dz * dz\n if (minDistance2 > distance2) minDistance2 = distance2\n }\n return sqrt(minDistance2)\n }\n\n protected open fun computeRepeatingTexCoordTransform(texture: Texture, metersPerPixel: Double, result: Matrix3): Matrix3 {\n val texCoordMatrix = result.setToIdentity()\n texCoordMatrix.setScale(1.0 / (texture.width * metersPerPixel), 1.0 / (texture.height * metersPerPixel))\n texCoordMatrix.multiplyByMatrix(texture.coordTransform)\n return texCoordMatrix\n }\n\n protected abstract fun reset()\n\n protected abstract fun makeDrawable(rc: RenderContext)\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.*\n\n/**\n * Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.\n *
\n *

Axes and Heading

\n *
\n * Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points\n * North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and\n * semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is\n * defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis\n * pointing Southeast and the semi-minor axis pointing Northeast.\n *
\n *

Altitude Mode and Terrain Following

\n *
\n * Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For\n * example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean\n * sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative\n * to the ellipse's center location.\n *
\n * Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's\n * terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See [isFollowTerrain] and\n * [altitudeMode].\n *
\n *

Display Granularity

\n *
\n * Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This\n * approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the\n * maximum number of angular intervals used in this representation with [maximumIntervals].\n */\nopen class Ellipse @JvmOverloads constructor(\n center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n /**\n * The ellipse's geographic center position.\n */\n var center = Position(center)\n set(value) {\n field.copy(value)\n reset()\n }\n /**\n * The ellipse's radius perpendicular to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-major axis points East.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var majorRadius = majorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMajorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's radius parallel to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-minor axis points North.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var minorRadius = minorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMinorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's heading clockwise from North. When ellipse's heading is 0.0,\n * the semi-major axis points East and the semi-minor axis points North.\n * Headings other than 0.0 rotate the axes about the ellipse's center position,\n * while retaining the axes relative relationship to one another.\n */\n var heading = ZERO\n set(value) {\n field = value\n reset()\n }\n /**\n * The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this\n * value will make ellipses appear coarser.\n */\n var maximumPixelsPerInterval = 50.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"maximumPixelsPerInterval\", \"invalidPixelsPerInterval\")\n }\n field = value\n reset()\n }\n /**\n * Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.\n *
\n * Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly\n * approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an\n * implementation-defined minimum number of intervals.\n *
\n * Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number\n * of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used\n * instead.\n *\n * @throws IllegalArgumentException If the number of intervals is negative\n */\n var maximumIntervals = 256\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMaximumIntervals\", \"invalidNumIntervals\")\n }\n field = value\n reset()\n }\n /**\n * The number of intervals used for generating geometry. Clamped between MIN_INTERVALS and maximumIntervals.\n * Will always be even.\n */\n protected var activeIntervals = 0\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var vertexBufferKey = Any()\n protected val vertexOrigin = Vec3()\n protected var isSurfaceShape = false\n protected var texCoord1d = 0.0\n protected val texCoord2d = Vec3()\n protected val texCoordMatrix = Matrix3()\n protected val modelToTexCoord = Matrix4()\n protected var cameraDistance = 0.0\n protected val prevPoint = Vec3()\n\n init {\n require(majorRadius >= 0 && minorRadius >= 0) {\n logMessage(ERROR, \"Ellipse\", \"constructor\", \"invalidRadius\")\n }\n }\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n /**\n * The minimum number of intervals that will be used for geometry generation.\n */\n protected const val MIN_INTERVALS = 32\n /**\n * Key for Range object in the element buffer describing the top of the Ellipse.\n */\n protected const val TOP_RANGE = 0\n /**\n * Key for Range object in the element buffer describing the outline of the Ellipse.\n */\n protected const val OUTLINE_RANGE = 1\n /**\n * Key for Range object in the element buffer describing the extruded sides of the Ellipse.\n */\n protected const val SIDE_RANGE = 2\n\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n\n /**\n * Simple interval count based cache of the keys for element buffers. Element buffers are dependent only on the\n * number of intervals so the keys are cached here. The element buffer object itself is in the\n * RenderResourceCache and subject to the restrictions and behavior of that cache.\n */\n protected val elementBufferKeys = mutableMapOf()\n\n private val scratchPosition = Position()\n private val scratchPoint = Vec3()\n\n protected fun assembleElements(intervals: Int): ShortBufferObject {\n // Create temporary storage for elements\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n val elements = mutableListOf()\n\n // Generate the top element buffer with spine\n var idx = intervals.toShort()\n val offset = computeIndexOffset(intervals)\n\n // Add the anchor leg\n elements.add(0.toShort())\n elements.add(1.toShort())\n // Tessellate the interior\n for (i in 2 until intervals) {\n // Add the corresponding interior spine point if this isn't the vertex following the last vertex for the\n // negative major axis\n if (i != intervals / 2 + 1) if (i > intervals / 2) elements.add(--idx) else elements.add(idx++)\n // Add the degenerate triangle at the negative major axis in order to flip the triangle strip back towards\n // the positive axis\n if (i == intervals / 2) elements.add(i.toShort())\n // Add the exterior vertex\n elements.add(i.toShort())\n }\n // Complete the strip\n elements.add(--idx)\n elements.add(0.toShort())\n val topRange = Range(0, elements.size)\n\n // Generate the outline element buffer\n for (i in 0 until intervals) elements.add(i.toShort())\n val outlineRange = Range(topRange.upper, elements.size)\n\n // Generate the side element buffer\n for (i in 0 until intervals) {\n elements.add(i.toShort())\n elements.add(i.plus(offset).toShort())\n }\n elements.add(0.toShort())\n elements.add(offset.toShort())\n val sideRange = Range(outlineRange.upper, elements.size)\n\n // Generate a buffer for the element\n val elementBuffer = ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements.toShortArray())\n elementBuffer.ranges[TOP_RANGE] = topRange\n elementBuffer.ranges[OUTLINE_RANGE] = outlineRange\n elementBuffer.ranges[SIDE_RANGE] = sideRange\n return elementBuffer\n }\n\n protected fun computeNumberSpinePoints(intervals: Int) = intervals / 2 - 1 // intervals should be even\n\n protected fun computeIndexOffset(intervals: Int) = intervals + computeNumberSpinePoints(intervals)\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (majorRadius == 0.0 && minorRadius == 0.0) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = Any()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n drawable.sector.copy(boundingSector)\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = boundingBox.distanceTo(rc.cameraPoint)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Get the attributes of the element buffer\n val elementBufferKey = elementBufferKeys[activeIntervals] ?: Any().also { elementBufferKeys[activeIntervals] = it }\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) { assembleElements(activeIntervals) }\n if (isSurfaceShape) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n val top = drawState.elementBuffer!!.ranges[TOP_RANGE]!!\n drawState.drawElements(GL_TRIANGLE_STRIP, top.length, GL_UNSIGNED_SHORT, top.lower * 2 /*offset*/)\n if (isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLE_STRIP, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n val outline = drawState.elementBuffer!!.ranges[OUTLINE_RANGE]!!\n drawState.drawElements(GL_LINE_LOOP, outline.length, GL_UNSIGNED_SHORT, outline.lower * 2 /*offset*/)\n if (activeAttributes.isDrawVerticals && isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(GL_LINES, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext): Boolean {\n val calculatedIntervals = computeIntervals(rc)\n val sanitizedIntervals = sanitizeIntervals(calculatedIntervals)\n if (vertexArray.isEmpty() || sanitizedIntervals != activeIntervals) {\n activeIntervals = sanitizedIntervals\n return true\n }\n return false\n }\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as goegraphic geometry.\n isSurfaceShape = altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n\n // Use the ellipse's center position as the local origin for vertex positions.\n if (isSurfaceShape) {\n vertexOrigin.set(center.longitude.inDegrees, center.latitude.inDegrees, center.altitude)\n } else {\n rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n vertexOrigin.set(scratchPoint.x, scratchPoint.y, scratchPoint.z)\n }\n\n // Determine the number of spine points\n val spineCount = computeNumberSpinePoints(activeIntervals) // activeIntervals must be even\n\n // Clear the shape's vertex array. The array will accumulate values as the shapes's geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals * 2 + spineCount) * VERTEX_STRIDE)\n else FloatArray((activeIntervals + spineCount) * VERTEX_STRIDE)\n\n // Check if minor radius is less than major in which case we need to flip the definitions and change the phase\n val isStandardAxisOrientation = majorRadius > minorRadius\n val headingAdjustment = if (isStandardAxisOrientation) 90.0 else 0.0\n\n // Vertex generation begins on the positive major axis and works ccs around the ellipse. The spine points are\n // then appended from positive major axis to negative major axis.\n val deltaRadians = 2 * PI / activeIntervals\n val majorArcRadians: Double\n val minorArcRadians: Double\n val globeRadius = max(rc.globe.equatorialRadius, rc.globe.polarRadius)\n if (isStandardAxisOrientation) {\n majorArcRadians = majorRadius / globeRadius\n minorArcRadians = minorRadius / globeRadius\n } else {\n majorArcRadians = minorRadius / globeRadius\n minorArcRadians = majorRadius / globeRadius\n }\n\n // Determine the offset from the top and extruded vertices\n val arrayOffset = computeIndexOffset(activeIntervals) * VERTEX_STRIDE\n // Setup spine radius values\n var spineIdx = 0\n val spineRadius = DoubleArray(spineCount)\n\n // Iterate around the ellipse to add vertices\n for (i in 0 until activeIntervals) {\n val radians = deltaRadians * i\n val x = cos(radians) * majorArcRadians\n val y = sin(radians) * minorArcRadians\n val azimuthDegrees = toDegrees(-atan2(y, x))\n val arcRadius = sqrt(x * x + y * y)\n // Calculate the great circle location given this activeIntervals step (azimuthDegrees) a correction value to\n // start from an east-west aligned major axis (90.0) and the user specified user heading value\n val azimuth = heading.plusDegrees(azimuthDegrees + headingAdjustment)\n val loc = center.greatCircleLocation(azimuth, arcRadius, scratchPosition)\n addVertex(rc, loc.latitude, loc.longitude, center.altitude, arrayOffset, isExtrude)\n // Add the major arc radius for the spine points. Spine points are vertically coincident with exterior\n // points. The first and middle most point do not have corresponding spine points.\n if (i > 0 && i < activeIntervals / 2) spineRadius[spineIdx++] = x\n }\n\n // Add the interior spine point vertices\n for (i in 0 until spineCount) {\n center.greatCircleLocation(heading.plusDegrees(headingAdjustment), spineRadius[i], scratchPosition)\n addVertex(rc, scratchPosition.latitude, scratchPosition.longitude, center.altitude, arrayOffset, false)\n }\n\n // Compute the shape's bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty()\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset: Int, isExtrudedSkirt: Boolean\n ) {\n var offsetVertexIndex = vertexIndex + offset\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (vertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n // reserved for future texture coordinate use\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrudedSkirt) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n vertexArray[offsetVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[offsetVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[offsetVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex] = 0f //unused\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n val point = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n rc.globe.cartesianToLocalTransform(point.x, point.y, point.z, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n /**\n * Calculate the number of times to split the edges of the shape for geometry assembly.\n *\n * @param rc current RenderContext\n *\n * @return an even number of intervals\n */\n protected open fun computeIntervals(rc: RenderContext): Int {\n var intervals = MIN_INTERVALS\n if (intervals >= maximumIntervals) return intervals // use at least the minimum number of intervals\n val centerPoint = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n val maxRadius = max(majorRadius, minorRadius)\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint) - maxRadius\n if (cameraDistance <= 0) return maximumIntervals // use the maximum number of intervals when the camera is very close\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n val circumferencePixels = computeCircumference() / metersPerPixel\n val circumferenceIntervals = circumferencePixels / maximumPixelsPerInterval\n val subdivisions = ln(circumferenceIntervals / intervals) / ln(2.0)\n val subdivisionCount = ceil(subdivisions).toInt().coerceAtLeast(0)\n intervals = intervals shl subdivisionCount // subdivide the base intervals to achieve the desired number of intervals\n return intervals.coerceAtMost(maximumIntervals) // don't exceed the maximum number of intervals\n }\n\n protected open fun sanitizeIntervals(intervals: Int) = if (intervals % 2 == 0) intervals else intervals - 1\n\n open fun computeCircumference(): Double {\n val a = majorRadius\n val b = minorRadius\n return PI * (3 * (a + b) - sqrt((3 * a + b) * (a + 3 * b)))\n }\n\n override fun reset() { vertexArray = FloatArray(0) }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Represents a label at a geographic position. Labels display a single line of text according to specified [TextAttributes].\n */\nopen class Label @JvmOverloads constructor(\n /**\n * The label's geographic position.\n */\n position: Position,\n /**\n * Indicates the text displayed by this label. The returned string may be null, indicating that this label displays\n * nothing.\n */\n var text: String? = null,\n /**\n * Indicates this label's \"normal\" attributes, that is the attributes used when the label's highlighted flag is\n * false. If null and this label is not highlighted, this label displays nothing.\n */\n var attributes: TextAttributes = TextAttributes()\n) : AbstractRenderable(), Highlightable, Movable {\n /**\n * The label's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The label's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Indicates the rotation applied to this label. The rotation represents clockwise clockwise degrees relative to\n * this label's labelRotationMode.\n */\n var rotation = ZERO\n /**\n * Indicates the orientation mode used to interpret this label's rotation. Label rotation may be either relative to\n * the screen or relative to the globe, as indicated by the following allowable values:\n * `OrientationMode.RELATIVE_TO_SCREEN` - The label's orientation is fixed relative to the screen. Rotation indicates\n * clockwise degrees relative to the screen's vertical axis. This is the default mode.\n * `OrientationMode.RELATIVE_TO_GLOBE` - The label's orientation is fixed relative to the globe. Rotation indicates\n * clockwise degrees relative to North.\n */\n var rotationMode = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The attributes used when this label's highlighted flag is true. If null and the highlighted flag is true,\n * this label's normal attributes are used. If they, too, are null, this label displays nothing.\n */\n var highlightAttributes: TextAttributes? = null\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: TextAttributes\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Label, this is\n * simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n\n companion object {\n /**\n * The default amount of screen depth offset applied to the label's text during rendering. Values less than zero\n * bias depth values toward the viewer.\n */\n protected const val DEFAULT_DEPTH_OFFSET = -0.1\n\n /**\n * The label's properties associated with the current render pass.\n */\n private val renderData = RenderData()\n }\n\n /**\n * Moves the shape over the globe's surface. For a Label, this simply change its position.\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n if (text?.isEmpty() != false) return // no text to render\n\n // Compute the label's Cartesian model point.\n rc.geographicToCartesian(position, altitudeMode, renderData.placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the label drawable and\n // determining the amount of depth offset to apply.\n renderData.cameraDistance = if (isAlwaysOnTop) 0.0 else rc.cameraPoint.distanceTo(renderData.placePoint)\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n if (renderData.cameraDistance < rc.horizonDistance) depthOffset = DEFAULT_DEPTH_OFFSET\n\n // Project the label's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(renderData.placePoint, depthOffset, renderData.screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this label has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n renderData.pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(\n renderData.pickedObjectId, renderData.pickColor\n )\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the label's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(renderData.pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n val texture = rc.getText(text, activeAttributes, rc.frustum.containsPoint(renderData.placePoint)) ?: return\n\n // Initialize the unit square transform to the identity matrix.\n renderData.unitSquareTransform.setToIdentity()\n\n // Apply the label's translation according to its text size and text offset. The text offset is defined with its\n // origin at the text's bottom-left corner and axes that extend up and to the right from the origin point.\n val w = texture.width.toDouble()\n val h = texture.height.toDouble()\n val s = activeAttributes.scale\n activeAttributes.textOffset.offsetForSize(w, h, renderData.offset)\n renderData.unitSquareTransform.setTranslation(\n renderData.screenPlacePoint.x - renderData.offset.x * s,\n renderData.screenPlacePoint.y - renderData.offset.y * s,\n renderData.screenPlacePoint.z\n )\n\n // Apply the label's rotation according to its rotation value and orientation mode. The rotation is applied\n // such that the text rotates around the text offset point.\n val actualRotation = if (rotationMode == OrientationMode.RELATIVE_TO_GLOBE)\n rc.camera.heading - rotation else -rotation\n if (actualRotation != ZERO) {\n renderData.unitSquareTransform.multiplyByTranslation(\n renderData.offset.x, renderData.offset.y, 0.0\n )\n renderData.unitSquareTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n renderData.unitSquareTransform.multiplyByTranslation(\n -renderData.offset.x, -renderData.offset.y, 0.0\n )\n }\n\n // Apply the label's translation and scale according to its text size.\n renderData.unitSquareTransform.multiplyByScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(renderData.unitSquareTransform, renderData.screenBounds)\n if (!rc.frustum.intersectsViewport(renderData.screenBounds)) return // the text is outside the viewport\n\n // Obtain a pooled drawable and configure it to draw the label's text.\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n drawable.opacity = rc.currentLayer.opacity\n\n // Use the basic GLSL program to draw the text.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the text's unit square transform matrix.\n drawable.unitSquareTransform.copy(renderData.unitSquareTransform)\n\n // Configure the drawable according to the active attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(renderData.pickColor)\n else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = rc.currentLayer.opacity\n drawable.texture = texture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerShapeDrawable(drawable, renderData.cameraDistance)\n }\n\n /**\n * Properties associated with the label during a render pass.\n */\n protected open class RenderData {\n /**\n * The model coordinate point corresponding to the label's position.\n */\n val placePoint = Vec3()\n /**\n * The screen coordinate point corresponding to the label's position.\n */\n val screenPlacePoint = Vec3()\n /**\n * The screen coordinate offset corresponding to the active attributes.\n */\n val offset = Vec2()\n /**\n * The screen coordinate transform to apply to the drawable unit square.\n */\n val unitSquareTransform = Matrix4()\n /**\n * The screen viewport indicating the label's screen bounds.\n */\n val screenBounds = Viewport()\n /**\n * Unique identifier associated with the label during picking.\n */\n var pickedObjectId = 0\n /**\n * Unique color used to display the label during picking.\n */\n val pickColor = Color()\n /**\n * The distance from the camera position to the label position, in meters.\n */\n var cameraDistance = 0.0\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSightline\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.BoundingSphere\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays an omnidirectional sightline's visibility within the WorldWind scene. The sightline's placement and area of\n * potential visibility are represented by a Cartesian sphere with a center position and a range. Terrain features\n * within the sphere are considered visible if there is a direct line-of-sight between the center position and a given\n * terrain point.\n *
\n * OmnidirectionalSightline displays an overlay on the WorldWind terrain indicating which terrain features are visible,\n * and which are occluded. Visible terrain features, those having a direct line-of-sight to the center position, appear\n * in the sightline's normal attributes or its highlight attributes, depending on the highlight state. Occluded terrain\n * features appear in the sightline's occlude attributes, regardless of highlight state. Terrain features outside the\n * sightline's range are excluded from the overlay.\n *
\n *

Limitations and Planned Improvements

* OmnidirectionalSightline is currently limited to terrain-based\n * occlusion, and does not incorporate other 3D scene elements during visibility determination. Subsequent iterations\n * will support occlusion of both terrain and 3D polygons. * The visibility overlay is drawn in ShapeAttributes'\n * interior color only. Subsequent iterations will add an outline where the sightline's range intersects the scene, and\n * will display the sightline's geometry as an outline. * OmnidirectionalSightline requires OpenGL ES 2.0\n * extension [GL_OES_depth_texture](https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt).\n * Subsequent iterations may relax this requirement.\n */\nopen class OmnidirectionalSightline @JvmOverloads constructor(\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n position: Position,\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n */\n range: Double,\n /**\n * Indicates this sightline's \"normal\" attributes. These attributes are used for the sightline's overlay when the\n * highlighted flag is false, and there is a direct line-of-sight from the sightline's center position to a terrain\n * feature. If null and this sightline is not highlighted, visible terrain features are excluded from\n * the overlay.\n */\n override var attributes: ShapeAttributes = ShapeAttributes()\n) : AbstractRenderable(), Attributable, Highlightable, Movable {\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n *\n * @throws IllegalArgumentException If the range is negative\n */\n var range = range\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"setRange\", \"invalidRange\")\n }\n field = value\n }\n /**\n * The sightline's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Determines whether the normal or highlighted attributes should be used for visible features.\n */\n override var isHighlighted = false\n /**\n * The attributes to use for visible features, when the sightline is highlighted.\n */\n override var highlightAttributes: ShapeAttributes? = null\n /**\n * The attributes to use for occluded features.\n */\n var occludeAttributes = ShapeAttributes().apply { interiorColor.copy(Color(1f, 0f, 0f, 1f)) }\n /**\n * A position associated with the object that indicates its aggregate geographic position. For an\n * OmnidirectionalSightline, this is simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * The attributes to use for visible features during the current render pass.\n */\n protected lateinit var activeAttributes: ShapeAttributes\n\n private val centerPoint = Vec3()\n private var pickedObjectId = 0\n private val pickColor = Color()\n private val boundingSphere = BoundingSphere()\n\n init {\n require(range >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"constructor\", \"invalidRange\")\n }\n }\n\n /**\n * Moves the sightline over the globe's surface.\n *\n * @param globe not used.\n * @param position the new position of the sightline's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n // Compute this sightline's center point in Cartesian coordinates.\n if (!determineCenterPoint(rc)) return\n\n // Don't render anything if the sightline's coverage area is not visible.\n if (!isVisible(rc)) return\n\n // Select the currently active attributes.\n determineActiveAttributes(rc)\n\n // Configure the pick color when rendering in pick mode.\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the sightline's drawables with its picked object ID.\n if (rc.isPickMode) rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n\n protected open fun determineCenterPoint(rc: RenderContext): Boolean {\n rc.geographicToCartesian(position, altitudeMode, centerPoint)\n return centerPoint.x != 0.0 && centerPoint.y != 0.0 && centerPoint.z != 0.0\n }\n\n protected open fun isVisible(rc: RenderContext): Boolean {\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint)\n val pixelSizeMeters = rc.pixelSizeAtDistance(cameraDistance)\n return if (range < pixelSizeMeters) false // The range is zero, or is less than one screen pixel\n else boundingSphere.set(centerPoint, range).intersectsFrustum(rc.frustum)\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Obtain a pooled drawable and configure it to draw the sightline's coverage.\n val pool = rc.getDrawablePool()\n val drawable = DrawableSightline.obtain(pool)\n\n // Compute the transform from sightline local coordinates to world coordinates.\n rc.globe.cartesianToLocalTransform(\n centerPoint.x, centerPoint.y, centerPoint.z, drawable.centerTransform\n )\n\n // Clamp range to max float value as OpenGL drawable operates with float range\n drawable.range = range.coerceIn(0.0, Float.MAX_VALUE.toDouble()).toFloat()\n\n // Configure the drawable colors according to the current attributes. When picking use a unique color associated\n // with the picked object ID. Null attributes indicate that nothing is drawn.\n drawable.visibleColor.copy(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawable.occludedColor.copy(if (rc.isPickMode) pickColor else occludeAttributes.interiorColor)\n\n // Use the sightline GLSL program to draw the coverage.\n drawable.program = rc.getShaderProgram { SightlineProgram() }\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n}","package earth.worldwind.shape\n\n/**\n * Orientation mode indicates how WorldWind interprets a renderable's orientation value, e.g., tilt and rotate\n * values. Accepted values are [RELATIVE_TO_GLOBE], and [RELATIVE_TO_SCREEN].\n */\nenum class OrientationMode {\n /**\n * Indicating that the related value is specified relative to the globe.\n */\n RELATIVE_TO_GLOBE,\n /**\n * Indicating that the related value is specified relative to the plane of the screen.\n */\n RELATIVE_TO_SCREEN;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Path @JvmOverloads constructor(\n positions: List, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n var positions = positions\n set(value) {\n field = value\n reset()\n }\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val interiorElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected lateinit var vertexBufferKey: Any\n protected lateinit var elementBufferKey: Any\n protected val vertexOrigin = Vec3()\n protected var isSurfaceShape = false\n protected var texCoord1d = 0.0\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoordMatrix = Matrix3()\n private val intermediateLocation = Location()\n\n companion object {\n protected const val VERTEX_STRIDE = 4\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n wrapMode = WrapMode.REPEAT\n }\n\n protected fun nextCacheKey() = Any()\n }\n\n override fun reset() {\n vertexArray = FloatArray(0)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (positions.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool, and compute distance to the render camera.\n val drawable: Drawable\n val drawState: DrawShapeState\n val cameraDistance: Double\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, (interiorElements + outlineElements + verticalElements).toIntArray())\n }\n\n // Configure the drawable's vertex texture coordinate attribute.\n drawState.texCoordAttrib(1 /*size*/, 12 /*stride in bytes*/)\n\n // Configure the drawable to use the outline texture when drawing the outline.\n if (activeAttributes.isDrawOutline) {\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n }\n }\n\n drawState.opacity(rc.currentLayer.opacity)\n\n // Configure the drawable to display the shape's outline. Increase surface shape line widths by 1/2 pixel. Lines\n // drawn indirectly offscreen framebuffer appear thinner when sampled as a texture.\n if (activeAttributes.isDrawOutline) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.lineWidth(activeAttributes.outlineWidth + if (isSurfaceShape) 0.5f else 0f)\n drawState.drawElements(\n GL_LINE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, interiorElements.size * Int.SIZE_BYTES\n )\n }\n\n // Disable texturing for the remaining drawable primitives.\n drawState.texture(null)\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawOutline && activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (interiorElements.size + outlineElements.size) * Int.SIZE_BYTES\n )\n }\n\n // Configure the drawable to display the shape's extruded interior.\n if (activeAttributes.isDrawInterior && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, interiorElements.size,\n GL_UNSIGNED_INT, 0\n )\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = false\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Determine the number of vertexes\n val vertexCount = if (maximumIntermediatePoints <= 0 || pathType == LINEAR) positions.size\n else if(positions.isNotEmpty()) positions.size + (positions.size - 1) * maximumIntermediatePoints else 0\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else FloatArray(vertexCount * VERTEX_STRIDE)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Add the first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/)\n\n // Add the remaining vertices, inserting vertices along each edge as indicated by the path's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, false /*intermediate*/)\n begin = end\n }\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*latitude*/, vertexOrigin.x /*longitude*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, true /*intermediate*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, intermediate: Boolean\n ): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude)\n else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n interiorElements.add(vertex)\n interiorElements.add(vertex.inc())\n }\n if (isExtrude && !intermediate) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n}","package earth.worldwind.shape\n\n/**\n * Path type indicates how WorldWind create a geographic path between two locations.\n * Accepted values are [GREAT_CIRCLE], [LINEAR] and [RHUMB_LINE].\n */\nenum class PathType {\n /**\n * Indicating a great circle arc between two locations.\n */\n GREAT_CIRCLE,\n /**\n * Indicating simple linear interpolation between two locations.\n */\n LINEAR,\n /**\n * Indicating a line of constant bearing between two locations.\n */\n RHUMB_LINE;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableLines\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.sin\n\n/**\n * Represents a Placemark shape. A placemark displays an image, a label and a leader connecting the placemark's\n * geographic position to the ground. All three of these items are optional. By default, the leader is not pickable. See\n * [Placemark.isLeaderPickingEnabled].\n *
\n * Placemarks may be drawn with either an image or as single-color square with a specified size. When the placemark\n * attributes indicate a valid image, the placemark's image is drawn as a rectangle in the image's original dimensions,\n * scaled by the image scale attribute. Otherwise, the placemark is drawn as a square with width and height equal to the\n * value of the image scale attribute, in pixels, and color equal to the image color attribute.\n */\nopen class Placemark @JvmOverloads constructor(\n /**\n * The placemark's geographic position.\n */\n position: Position,\n /**\n * The placemark's normal attributes.\n */\n var attributes: PlacemarkAttributes = PlacemarkAttributes(),\n /**\n * The placemark's display name.\n */\n name: String? = null\n) : AbstractRenderable(if (name?.isEmpty() != false) \"Placemark\" else name), Highlightable, Movable {\n /**\n * The placemark's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The placemark's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * The attributes to use when the placemark is highlighted.\n */\n var highlightAttributes: PlacemarkAttributes? = null\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The label text to draw near the placemark.\n */\n var label: String? = /*name*/null // Do not use display name as label by default\n /**\n * Sets the optional level-of-detail selector used to inject logic for selecting PlacemarkAttributes based on\n * the camera distance and highlighted attribute. If set to null, the normal and highlight attribute bundles used\n * respectfully for the normal and highlighted states.\n */\n var levelOfDetailSelector: LevelOfDetailSelector? = null\n /**\n * Enables or disables the eye distance scaling feature for this placemark. When enabled, the placemark's size is\n * reduced at higher eye distances. If true, this placemark's size is scaled inversely proportional to the eye\n * distance if the eye distance is greater than the value of the [Placemark.eyeDistanceScalingThreshold]\n * property. When the eye distance is below the threshold, this placemark is scaled only according to the [PlacemarkAttributes.imageScale].\n */\n var isEyeDistanceScaling = false\n /**\n * Sets the eye distance above which to reduce the size of this placemark, in meters.\n * If [isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as the eye\n * distance increases beyond this threshold.\n */\n var eyeDistanceScalingThreshold = DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Sets the eye altitude, in meters, above which this placemark's label is not displayed.\n */\n var eyeDistanceScalingLabelThreshold = 1.5 * DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Indicates whether this placemark's leader, if any, is pickable.\n */\n var isLeaderPickingEnabled = false\n /**\n * Enable additional altitude offset (billboarding) to prevent clipping Placamerk by terrain on tilt.\n */\n var isBillboardingEnabled = false\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * The amount of rotation to apply to the image, measured clockwise and relative to this placemark's\n * [Placemark.imageRotationReference].\n */\n var imageRotation = ZERO\n /**eyeDistanceScaling\n * Sets the type of rotation to apply if the [Placemark.imageRotation] is not zero. This value indicates\n * whether to apply this placemark's image rotation relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is rotated in the plane of the screen and its\n * orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is rotated in a plane tangent to the globe at\n * this placemark's position and retains its orientation relative to the globe.\n */\n var imageRotationReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Sets the amount of tilt to apply to the image, measured away from the eye point and relative to this\n * placemark's [Placemark.imageTiltReference]. While any positive or negative number may be specified,\n * values outside the range [0. 90] cause some or all of the image to be clipped.\n */\n var imageTilt = ZERO\n /**\n * Sets the type tilt to apply when [Placemark.imageTilt] is non-zero. This value indicates whether to\n * apply this placemark's image tilt relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is tilted inwards (for positive tilts) relative\n * to the plane of the screen, and its orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is tilted towards the globe's surface, and retains its\n * orientation relative to the surface.\n */\n var imageTiltReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Placemark, this is\n * simply it's position property.\n *\n * @return [Placemark.position]\n */\n override val referencePosition get() = position\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: PlacemarkAttributes\n /**\n * The picked object ID associated with the placemark during the current render pass.\n */\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n /**\n * The distance from the camera to the placemark in meters.\n */\n protected var cameraDistance = 0.0\n /**\n * Leader line vertex array. Initially sized to store two xyz points.\n */\n protected val vertexArray = FloatArray(6)\n protected var vertexArrayHashCode = 0\n protected lateinit var vertexBufferKey: Any\n\n /**\n * Presents an interfaced for dynamically determining the PlacemarkAttributes based on the distance between the\n * placemark and the camera.\n */\n interface LevelOfDetailSelector {\n /**\n * Gets the active attributes for the current distance to the camera and highlighted state.\n *\n * @param rc The current render context\n * @param placemark The placemark needing a level of detail selection\n * @param cameraDistance The distance from the placemark to the camera (meters)\n *\n * @return if placemark should display or skip its rendering\n */\n fun selectLevelOfDetail(rc: RenderContext, placemark: Placemark, cameraDistance: Double): Boolean\n }\n\n /**\n * Moves the shape over the globe's surface. For a Placemark, this simply set [Placemark.position].\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n /**\n * Performs the rendering; called by the public render method.\n *\n * @param rc the current render context\n */\n override fun doRender(rc: RenderContext) {\n // Compute the placemark's Cartesian model point and corresponding distance to the eye point. If the placemark's\n // position is terrain-dependent but off the terrain, then compute it ABSOLUTE so that we have a point for the\n // placemark and are thus able to draw it. Otherwise, its image and label portion that are potentially over the\n // terrain won't get drawn, and would disappear as soon as there is no terrain at the placemark's position. This\n // can occur at the window edges.\n rc.geographicToCartesian(position, altitudeMode, placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the placemark drawable\n // and determining the amount of depth offset to apply.\n cameraDistance = if (isAlwaysOnTop) 0.0 else rc.cameraPoint.distanceTo(placePoint)\n\n // Allow the placemark to adjust the level of detail based on distance to the camera\n if (levelOfDetailSelector?.selectLevelOfDetail(rc, this, cameraDistance) == false) return // skip rendering\n\n // Determine the attributes to use for the current render pass.\n determineActiveAttributes(rc)\n\n // Perform point based culling for placemarks who's textures haven't been loaded yet.\n // If the texture hasn't been loaded yet, then perform point-based culling to avoid\n // loading textures for placemarks that are 'probably' outside the viewing frustum.\n // There are cases where a placemark's texture would be partially visible if it at the\n // edge of the screen were loaded. In these cases the placemark will \"pop\" into view when\n // the placePoint enters the view frustum.\n val activeTexture = activeAttributes.imageSource?.let {\n rc.getTexture(it, null, rc.frustum.containsPoint(placePoint))\n }\n\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n var visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Apply the icon's translation and scale according to the image size, image offset and image scale. The image\n // offset is defined with its origin at the image's bottom-left corner and axes that extend up and to the right\n // from the origin point. When the placemark has no active texture the image scale defines the image size and no\n // other scaling is applied.\n val offsetX: Double\n val offsetY: Double\n val scaleX: Double\n val scaleY: Double\n if (activeTexture != null) {\n val w = activeTexture.width.toDouble()\n val h = activeTexture.height.toDouble()\n val s = activeAttributes.imageScale * visibilityScale\n activeAttributes.imageOffset.offsetForSize(w, h, offset)\n offsetX = offset.x * s\n offsetY = offset.y * s\n scaleX = w * s\n scaleY = h * s\n } else {\n // This branch serves both non-textured attributes and also textures that haven't been loaded yet.\n // We set the size for non-loaded textures to the typical size of a contemporary \"small\" icon (24px)\n var size = if (activeAttributes.imageSource != null) 24.0 else activeAttributes.imageScale\n size *= visibilityScale\n activeAttributes.imageOffset.offsetForSize(size, size, offset)\n offsetX = offset.x\n offsetY = offset.y\n scaleY = size\n scaleX = scaleY\n }\n\n // Offset along the normal vector to avoid collision with terrain.\n if (isBillboardingEnabled && offsetY != 0.0) {\n rc.globe.geographicToCartesianNormal(position.latitude, position.longitude, scratchVector).also {\n // Use real camera distance in billboarding\n val distance = if (isAlwaysOnTop) rc.cameraPoint.distanceTo(placePoint) else cameraDistance\n val altitude = rc.pixelSizeAtDistance(distance) * sin(rc.camera.tilt.inRadians)\n placePoint.add(scratchVector.multiply(offsetY * altitude))\n }\n }\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n val absTilt = abs(rc.camera.tilt.inDegrees)\n if (cameraDistance < rc.horizonDistance && absTilt <= 90) {\n depthOffset = (1 - absTilt / 90) * DEFAULT_DEPTH_OFFSET\n }\n\n // Project the placemark's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(placePoint, depthOffset, screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Keep track of the drawable count to determine whether this placemark has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Prepare a drawable for the placemark's leader, if requested. Enqueue the leader drawable before the icon\n // drawable in order to give the icon visual priority over the leader.\n if (mustDrawLeader(rc)) {\n // Compute the placemark's Cartesian ground point.\n rc.geographicToCartesian(position, AltitudeMode.CLAMP_TO_GROUND, groundPoint)\n\n // If the leader is visible, enqueue a drawable leader for processing on the OpenGL thread.\n if (rc.frustum.intersectsSegment(groundPoint, placePoint)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableLines.obtain(pool)\n prepareDrawableLeader(rc, drawable)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n // Prepare image transformation matrix\n prepareImageTransform(rc.camera, offsetX, offsetY, scaleX, scaleY)\n\n // If the placemark's icon is visible, enqueue a drawable icon for processing on the OpenGL thread.\n boundingRectForUnitSquare(imageTransform, imageBounds)\n if (rc.frustum.intersectsViewport(imageBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableIcon(rc, drawable, activeTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n // If there's a label, perform these same operations for the label texture.\n if (mustDrawLabel(rc)) {\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingLabelThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n rc.getText(label, activeAttributes.labelAttributes, rc.frustum.containsPoint(placePoint))?.let { labelTexture ->\n val w = labelTexture.width.toDouble()\n val h = labelTexture.height.toDouble()\n val s = activeAttributes.labelAttributes.scale * visibilityScale\n activeAttributes.labelAttributes.textOffset.offsetForSize(w, h, offset)\n labelTransform.setTranslation(\n screenPlacePoint.x - offset.x * s,\n screenPlacePoint.y - offset.y * s,\n screenPlacePoint.z\n )\n labelTransform.setScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(labelTransform, labelBounds)\n if (rc.frustum.intersectsViewport(labelBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableLabel(rc, drawable, labelTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n }\n\n // Enqueue a picked object that associates the placemark's icon and leader with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Determines the placemark attributes to use for the current render pass.\n *\n * @param rc the current render context\n */\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n /**\n * Prepare image transform matrix according to specified parameters\n *\n * @param camera current camera view\n * @param offsetX offset along X axis\n * @param offsetY offset along X axis\n * @param scaleX scaled width\n * @param scaleY scaled height\n */\n protected open fun prepareImageTransform(\n camera: Camera, offsetX: Double, offsetY: Double, scaleX: Double, scaleY: Double\n ) {\n // Initialize the unit square transform to the identity matrix.\n imageTransform.setToIdentity()\n\n // Position image on screen\n imageTransform.multiplyByTranslation(\n screenPlacePoint.x, screenPlacePoint.y, screenPlacePoint.z\n )\n\n // Divide Z by 2^24 to prevent texture clipping when tilting (where 24 is depth buffer bit size).\n // Doing so will limit depth range to (diagonal length)/2^24 and make its value within 0..1 range.\n imageTransform.multiplyByScale(1.0, 1.0, 1.0 / (1 shl 24))\n\n // Perform the tilt so that the image tilts back from its base into the view volume\n val actualTilt = if (imageTiltReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.tilt + imageTilt else imageTilt\n if (actualTilt.inDegrees != 0.0) imageTransform.multiplyByRotation(-1.0, 0.0, 0.0, actualTilt)\n\n // Perform image rotation\n val actualRotation = if (imageRotationReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.heading - imageRotation else -imageRotation\n if (actualRotation.inDegrees != 0.0) imageTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n\n // Apply pivot translation\n imageTransform.multiplyByTranslation(-offsetX, -offsetY, 0.0)\n\n // Apply scale\n imageTransform.multiplyByScale(scaleX, scaleY, 1.0)\n }\n\n /**\n * Prepares this placemark's icon or symbol for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableIcon(rc: RenderContext, drawable: DrawableScreenTexture, activeTexture: Texture?) {\n // Use the basic GLSL program to draw the placemark's icon.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the plaemark's unit square transform matrix.\n drawable.unitSquareTransform.copy(imageTransform)\n\n // Configure the drawable according to the placemark's active attributes. Use a color appropriate for the pick\n // mode. When picking use a unique color associated with the picked object ID. Use the texture associated with\n // the active attributes' image source and its associated tex coord transform. If the texture is not specified\n // or not available, draw a simple colored square.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.imageColor)\n drawable.opacity = rc.currentLayer.opacity\n drawable.texture = activeTexture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n drawable.opacity = rc.currentLayer.opacity\n }\n\n /**\n * Prepares this placemark's label for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLabel(rc: RenderContext, drawable: DrawableScreenTexture, labelTexture: Texture) {\n // Use the basic GLSL program to draw the placemark's label.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the label's unit square transform matrix.\n drawable.unitSquareTransform.copy(labelTransform)\n\n // Configure the drawable according to the active label attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(pickColor) else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.texture = labelTexture\n drawable.enableDepthTest = activeAttributes.labelAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's leader for drawing in a subsequent drawing pass. Implementations must be careful not to\n * leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLeader(rc: RenderContext, drawable: DrawableLines) {\n // Use the basic GLSL program to draw the placemark's leader.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Compute the drawable's vertex points, in Cartesian coordinates relative to the placemark's ground point.\n vertexArray[0] = 0f // groundPoint.x - groundPoint.x\n vertexArray[1] = 0f // groundPoint.y - groundPoint.y\n vertexArray[2] = 0f // groundPoint.z - groundPoint.z\n vertexArray[3] = (placePoint.x - groundPoint.x).toFloat()\n vertexArray[4] = (placePoint.y - groundPoint.y).toFloat()\n vertexArray[5] = (placePoint.z - groundPoint.z).toFloat()\n\n // Regenerate vertex buffer on array change\n val hashCode = vertexArray.contentHashCode()\n if (vertexArrayHashCode != hashCode) {\n vertexArrayHashCode = hashCode\n vertexBufferKey = nextCacheKey()\n }\n drawable.vertexPoints = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Compute the drawable's modelview-projection matrix, relative to the placemark's ground point.\n drawable.mvpMatrix.copy(rc.modelviewProjection)\n drawable.mvpMatrix.multiplyByTranslation(groundPoint.x, groundPoint.y, groundPoint.z)\n\n // Configure the drawable according to the placemark's active leader attributes. Use a color appropriate for the\n // pick mode. When picking use a unique color associated with the picked object ID.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.leaderAttributes.outlineColor)\n drawable.lineWidth = activeAttributes.leaderAttributes.outlineWidth\n drawable.enableDepthTest = activeAttributes.leaderAttributes.isDepthTest\n }\n\n /**\n * Determines if a label should and can be drawn.\n *\n * @return True if there is a valid label and label attributes.\n */\n protected open fun mustDrawLabel(rc: RenderContext) = activeAttributes.isDrawLabel && label?.isNotEmpty() == true\n\n /**\n * Determines if a leader-line should and can be drawn.\n *\n * @return True if leader-line directive is enabled and there are valid leader-line attributes.\n */\n protected open fun mustDrawLeader(rc: RenderContext) =\n activeAttributes.isDrawLeader && (isLeaderPickingEnabled || !rc.isPickMode) && altitudeMode != AltitudeMode.CLAMP_TO_GROUND\n\n companion object {\n /**\n * The default eye distance above which to reduce the size of this placemark, in meters.\n * If [Placemark.isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as\n * the eye distance increases beyond this threshold.\n */\n const val DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD = 4e5\n protected const val DEFAULT_DEPTH_OFFSET = -0.03\n private val placePoint = Vec3()\n private val scratchVector = Vec3()\n private val screenPlacePoint = Vec3()\n private val groundPoint = Vec3()\n private val offset = Vec2()\n private val imageTransform = Matrix4()\n private val labelTransform = Matrix4()\n private val imageBounds = Viewport()\n private val labelBounds = Viewport()\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws a simple square\n * centered on the supplied position with the given size and color.\n *\n * @param position The geographic position where the placemark is drawn.\n * @param color The color of the placemark.\n * @param pixelSize The width and height of the placemark.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithColorAndSize(position: Position, color: Color, pixelSize: Int) =\n Placemark(position, PlacemarkAttributes().apply {\n imageColor = color\n imageScale = pixelSize.toDouble()\n })\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws the given image\n * centered on the supplied position.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithImage(position: Position, imageSource: ImageSource) =\n Placemark(position, PlacemarkAttributes.createWithImage(imageSource))\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle (with TextAttributes) that\n * draws the given image centered on the supplied position with a nearby label.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n * @param label The text that is drawn near the image. This parameter becomes the placemark's displayName\n * property.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle containing TextAttributes.\n */\n @JvmStatic\n fun createWithImageAndLabel(\n position: Position, imageSource: ImageSource, label: String\n ) = Placemark(position, PlacemarkAttributes.createWithImage(imageSource), label)\n\n protected fun nextCacheKey() = Any()\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport kotlin.jvm.JvmStatic\n\n/**\n * Holds attributes applied to [Placemark] shapes.\n * The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\nopen class PlacemarkAttributes(\n /**\n * Returns the source of the placemark's image. If null, the placemark is drawn as a square whose width and height\n * are the value of this attribute object's [imageScale] property.\n */\n var imageSource: ImageSource?,\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n imageColor: Color,\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n imageOffset: Offset,\n /**\n * Returns the amount to scale the placemark's image. When this attribute bundle has a valid image path the scale is\n * applied to the image's dimensions. Otherwise, the scale indicates the dimensions in pixels of a square drawn at\n * the placemark's geographic position. A scale of 0 causes the placemark to disappear; however, the placemark's\n * label, if any, is still drawn.\n */\n var imageScale: Double,\n /**\n * Returns the minimum amount to scale the placemark's image. When a [Placemark.isEyeDistanceScaling] is true,\n * this value controls the minimum size of the rendered placemark. A value of 0 allows the placemark to disappear.\n */\n var minimumImageScale: Double,\n /**\n * Returns whether to draw a placemark's label text.\n */\n var isDrawLabel: Boolean,\n /**\n * Returns whether to draw a line from the placemark's geographic position to the ground.\n */\n var isDrawLeader: Boolean,\n /**\n * Returns whether the placemark should be depth-tested against other objects in the scene. If true, the placemark\n * may be occluded by terrain and other objects in certain viewing situations. If false, the placemark will not be\n * occluded by terrain and other objects. If this value is true, the placemark's label, if any, has an independent\n * depth-test control.\n */\n var isDepthTest: Boolean,\n /**\n * Returns the attributes to apply to the placemark's label\n */\n labelAttributes: TextAttributes,\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n leaderAttributes: ShapeAttributes\n) {\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n var imageColor = imageColor\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n var imageOffset = imageOffset\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the placemark's label\n */\n var labelAttributes = labelAttributes\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n var leaderAttributes = leaderAttributes\n set(value) {\n field.copy(value)\n }\n\n /**\n * Constructs a placemark attributes bundle. The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\n constructor(): this(\n imageSource = null,\n imageColor = Color(1f, 1f, 1f, 1f), // white\n imageOffset = Offset.center(),\n imageScale = 1.0,\n minimumImageScale = 0.0,\n isDrawLabel = true,\n isDrawLeader = false,\n isDepthTest = true,\n labelAttributes = TextAttributes(),\n leaderAttributes = ShapeAttributes()\n )\n\n /**\n * Constructs a placemark attribute bundle from the specified attributes. Performs a deep copy of the color, offset,\n * label attributes and leader-line attributes.\n *\n * @param attributes The attributes to be copied.\n */\n constructor(attributes: PlacemarkAttributes): this(\n attributes.imageSource,\n Color(attributes.imageColor),\n Offset(attributes.imageOffset),\n attributes.imageScale,\n attributes.minimumImageScale,\n attributes.isDrawLabel,\n attributes.isDrawLeader,\n attributes.isDepthTest,\n TextAttributes(attributes.labelAttributes),\n ShapeAttributes(attributes.leaderAttributes)\n )\n\n fun copy(attributes: PlacemarkAttributes) = apply {\n imageSource = attributes.imageSource\n imageColor.copy(attributes.imageColor)\n imageOffset.copy(attributes.imageOffset)\n imageScale = attributes.imageScale\n minimumImageScale = attributes.minimumImageScale\n isDrawLabel = attributes.isDrawLabel\n isDrawLeader = attributes.isDrawLeader\n isDepthTest = attributes.isDepthTest\n labelAttributes.copy(attributes.labelAttributes)\n leaderAttributes.copy(attributes.leaderAttributes)\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is PlacemarkAttributes) return false\n if (imageSource != other.imageSource) return false\n if (imageColor != other.imageColor) return false\n if (imageOffset != other.imageOffset) return false\n if (imageScale != other.imageScale) return false\n if (minimumImageScale != other.minimumImageScale) return false\n if (isDrawLabel != other.isDrawLabel) return false\n if (isDrawLeader != other.isDrawLeader) return false\n if (isDepthTest != other.isDepthTest) return false\n if (labelAttributes != other.labelAttributes) return false\n if (leaderAttributes != other.leaderAttributes) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = imageSource?.hashCode() ?: 0\n result = 31 * result + imageColor.hashCode()\n result = 31 * result + imageOffset.hashCode()\n result = 31 * result + imageScale.hashCode()\n result = 31 * result + minimumImageScale.hashCode()\n result = 31 * result + isDrawLabel.hashCode()\n result = 31 * result + isDrawLeader.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + labelAttributes.hashCode()\n result = 31 * result + leaderAttributes.hashCode()\n return result\n }\n\n companion object {\n @JvmStatic\n fun createWithImage(imageSource: ImageSource) = PlacemarkAttributes().apply { this.imageSource = imageSource }\n\n @JvmStatic\n fun createWithImageAndLeader(imageSource: ImageSource) = PlacemarkAttributes().apply {\n this.imageSource = imageSource\n isDrawLeader = true\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Polygon @JvmOverloads constructor(\n positions: List = listOf(), attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n protected val boundaries = mutableListOf(positions)\n val boundaryCount get() = boundaries.size\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val topElements = mutableListOf()\n protected val sideElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected var vertexBufferKey = nextCacheKey()\n protected var elementBufferKey = nextCacheKey()\n protected val vertexOrigin = Vec3()\n protected var isSurfaceShape = false\n protected var cameraDistance = 0.0\n protected var texCoord1d = 0.0\n protected val tessCallback = object : GLUtessellatorCallbackAdapter() {\n override fun combineData(\n coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any\n ) = tessCombine(polygonData as RenderContext, coords, data, weight, outData)\n\n override fun vertexData(vertexData: Any, polygonData: Any) = tessVertex(polygonData as RenderContext, vertexData)\n\n override fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) = tessEdgeFlag(polygonData as RenderContext, boundaryEdge)\n\n override fun errorData(errnum: Int, polygonData: Any) = tessError(polygonData as RenderContext, errnum)\n }\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoord2d = Vec3()\n private val texCoordMatrix = Matrix3()\n private val modelToTexCoord = Matrix4()\n private val intermediateLocation = Location()\n private val tessCoords = DoubleArray(3)\n private val tessVertices = IntArray(3)\n private val tessEdgeFlags = BooleanArray(3)\n private var tessEdgeFlag = true\n private var tessVertexCount = 0\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n protected const val VERTEX_ORIGINAL = 0\n protected const val VERTEX_INTERMEDIATE = 1\n protected const val VERTEX_COMBINED = 2\n protected fun nextCacheKey() = Any()\n }\n\n fun getBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"getBoundary\", \"invalidIndex\")\n }\n return boundaries[index]\n }\n\n fun setBoundary(index: Int, positions: List): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"setBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.set(index, positions)\n }\n\n fun addBoundary(positions: List): Boolean {\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.add(positions)\n }\n\n fun addBoundary(index: Int, positions: List) {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"addBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n boundaries.add(index, positions)\n }\n\n fun removeBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"removeBoundary\", \"invalidIndex\")\n }\n reset()\n return boundaries.removeAt(index)\n }\n\n fun clearBoundaries() {\n boundaries.clear()\n reset()\n }\n\n override fun reset() {\n vertexArray = FloatArray(0)\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (boundaries.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(\n GL_ELEMENT_ARRAY_BUFFER, (topElements + sideElements + outlineElements + verticalElements).toIntArray()\n )\n }\n if (isSurfaceShape || activeAttributes.interiorColor.alpha >= 1.0) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes. Disable triangle backface culling when we're\n // displaying a polygon without extruded sides, so we want to draw the top and the bottom.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior top.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n drawState.drawElements(GL_TRIANGLES, topElements.size, GL_UNSIGNED_INT, 0 /*offset*/)\n\n // Configure the drawable to display the shape's interior sides.\n if (isExtrude) {\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLES, sideElements.size, GL_UNSIGNED_INT, topElements.size * Int.SIZE_BYTES /*offset*/)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n drawState.drawElements(\n GL_LINES, outlineElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size) * Int.SIZE_BYTES /*offset*/\n )\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size + outlineElements.size) * Int.SIZE_BYTES /*offset*/\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Determine the number of vertexes\n val noIntermediatePoints = maximumIntermediatePoints <= 0 || pathType == LINEAR\n val vertexCount = boundaries.sumOf { p ->\n if (noIntermediatePoints) p.size\n else if (p.isNotEmpty() && p[0] == p[p.size - 1]) p.size + (p.size - 1) * maximumIntermediatePoints\n else p.size + p.size * maximumIntermediatePoints\n }\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else if (!isSurfaceShape) FloatArray(vertexCount * VERTEX_STRIDE)\n else FloatArray((vertexCount + boundaries.size) * VERTEX_STRIDE) // Reserve boundaries.size for combined vertexes\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n val tess = rc.tessellator\n GLU.gluTessNormal(tess, 0.0, 0.0, 1.0)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, tessCallback)\n GLU.gluTessBeginPolygon(tess, rc)\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions to assemble\n GLU.gluTessBeginContour(tess)\n\n // Add the boundary's first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, VERTEX_ORIGINAL /*type*/)\n\n // Add the remaining boundary vertices, tessellating each edge as indicated by the polygon's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, VERTEX_ORIGINAL /*type*/)\n begin = end\n }\n\n // Tessellate the implicit closing edge if the boundary is not already closed.\n if (begin != positions[0]) addIntermediateVertices(rc, begin, positions[0])\n GLU.gluTessEndContour(tess)\n }\n GLU.gluTessEndPolygon(tess)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, null)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, VERTEX_INTERMEDIATE /*type*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, type: Int): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (type != VERTEX_COMBINED) {\n tessCoords[0] = longitude.inDegrees\n tessCoords[1] = latitude.inDegrees\n tessCoords[2] = altitude\n GLU.gluTessVertex(rc.tessellator, tessCoords, 0 /*coords_offset*/, vertex)\n }\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude) else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n }\n if (isExtrude && type == VERTEX_ORIGINAL) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var numPoints = 0.0\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions\n for (j in positions.indices) {\n val point = rc.geographicToCartesian(positions[j], AltitudeMode.ABSOLUTE, point)\n mx += point.x\n my += point.y\n mz += point.z\n numPoints++\n }\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n rc.globe.cartesianToLocalTransform(mx, my, mz, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n protected open fun tessCombine(rc: RenderContext, coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {\n ensureVertexArrayCapacity() // Increment array size to fit combined vertexes\n outData[0] = addVertex(rc, coords[1].degrees /*lat*/, coords[0].degrees /*lon*/, coords[2] /*alt*/, VERTEX_COMBINED /*type*/)\n }\n\n protected open fun tessVertex(rc: RenderContext, vertexData: Any) {\n tessVertices[tessVertexCount] = vertexData as Int\n tessEdgeFlags[tessVertexCount] = tessEdgeFlag\n if (tessVertexCount < 2) {\n tessVertexCount++ // increment the vertex count and wait for more vertices\n return\n } else {\n tessVertexCount = 0 // reset the vertex count and process one triangle\n }\n val v0 = tessVertices[0]\n val v1 = tessVertices[1]\n val v2 = tessVertices[2]\n topElements.add(v0)\n topElements.add(v1)\n topElements.add(v2)\n if (tessEdgeFlags[0] && isExtrude && !isSurfaceShape) {\n sideElements.add(v0)\n sideElements.add(v0.inc())\n sideElements.add(v1)\n sideElements.add(v1)\n sideElements.add(v0.inc())\n sideElements.add(v1.inc())\n }\n if (tessEdgeFlags[1] && isExtrude && !isSurfaceShape) {\n sideElements.add(v1)\n sideElements.add(v1.inc())\n sideElements.add(v2)\n sideElements.add(v2)\n sideElements.add(v1.inc())\n sideElements.add(v2.inc())\n }\n if (tessEdgeFlags[2] && isExtrude && !isSurfaceShape) {\n sideElements.add(v2)\n sideElements.add(v2.inc())\n sideElements.add(v0)\n sideElements.add(v0)\n sideElements.add(v2.inc())\n sideElements.add(v0.inc())\n }\n if (tessEdgeFlags[0]) {\n outlineElements.add(v0)\n outlineElements.add(v1)\n }\n if (tessEdgeFlags[1]) {\n outlineElements.add(v1)\n outlineElements.add(v2)\n }\n if (tessEdgeFlags[2]) {\n outlineElements.add(v2)\n outlineElements.add(v0)\n }\n }\n\n protected open fun tessEdgeFlag(rc: RenderContext, boundaryEdge: Boolean) { tessEdgeFlag = boundaryEdge }\n\n protected open fun tessError(rc: RenderContext, errNum: Int) {\n val errStr = GLU.gluErrorString(errNum)\n logMessage(\n WARN, \"Polygon\", \"assembleGeometry\", \"Error attempting to tessellate polygon '$errStr'\"\n )\n }\n\n protected open fun ensureVertexArrayCapacity() {\n val size = vertexArray.size\n if (size == vertexIndex) {\n val increment = (size shr 1).coerceAtLeast(12)\n val newArray = FloatArray(size + increment)\n vertexArray.copyInto(newArray)\n vertexArray = newArray\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\n\n/**\n * Holds attributes applied to geographic shapes.\n */\nopen class ShapeAttributes(\n /**\n * Indicates whether shape interiors are enabled.\n */\n var isDrawInterior: Boolean,\n /**\n * Indicates whether shape outlines are enabled.\n */\n var isDrawOutline: Boolean,\n /**\n * Indicates whether shape vertical outlines are enabled. Not all shapes display vertical outlines. Those that do\n * not ignore this property. When enabled, those that do display vertical lines extending from the shape's specified\n * positions to the ground.\n */\n var isDrawVerticals: Boolean,\n /**\n * Indicates whether shape depth-testing is enabled. When true, shapes may be occluded by terrain and other shapes\n * in certain viewing situations. When false, shapes will not be occluded by terrain and other shapes.\n */\n var isDepthTest: Boolean,\n /**\n * Indicates whether depth write enabled.\n */\n var isDepthWrite: Boolean,\n /**\n * Sets whether shape lighting is enabled. When true, the appearance of a shape's color and image source may be\n * modified by shading applied from a global light source.\n */\n var isLightingEnabled: Boolean,\n /**\n * Indicates the color and opacity of shape interiors.\n */\n interiorColor: Color,\n /**\n * Indicates the color and opacity of shape outlines.\n */\n outlineColor: Color,\n /**\n * Indicates the width of shape outlines.\n */\n var outlineWidth: Float,\n /**\n * Indicates the image source applied to shape interiors. When null, shape interiors are displayed in the interior\n * color. When non-null, image pixels appear in shape interiors, with each image pixel multiplied by the interior\n * RGBA color. Use a white interior color to display unmodified image pixels.\n *
\n * By default, interior image sources are displayed as a repeating pattern across shape interiors. The pattern\n * matches image pixels to screen pixels, such that the image appears to repeat in screen coordinates.\n */\n var interiorImageSource: ImageSource?,\n /**\n * Indicates the image source applied to shape outlines.\n */\n var outlineImageSource: ImageSource?\n) {\n /**\n * Indicates the color and opacity of shape interiors.\n */\n var interiorColor = interiorColor\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates the color and opacity of shape outlines.\n */\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n isDrawInterior = true,\n isDrawOutline = true,\n isDrawVerticals = false,\n isDepthTest = true,\n isDepthWrite = true,\n isLightingEnabled = false,\n interiorColor = Color(1f, 1f, 1f, 1f), // white\n outlineColor = Color(1f, 0f, 0f, 1f), // red\n outlineWidth = 1.0f,\n interiorImageSource = null,\n outlineImageSource = null\n )\n\n constructor(attributes: ShapeAttributes): this(\n attributes.isDrawInterior,\n attributes.isDrawOutline,\n attributes.isDrawVerticals,\n attributes.isDepthTest,\n attributes.isDepthWrite,\n attributes.isLightingEnabled,\n Color(attributes.interiorColor),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.interiorImageSource,\n attributes.outlineImageSource\n )\n\n fun copy(attributes: ShapeAttributes) = apply {\n isDrawInterior = attributes.isDrawInterior\n isDrawOutline = attributes.isDrawOutline\n isDrawVerticals = attributes.isDrawVerticals\n isDepthTest = attributes.isDepthTest\n isDepthWrite = attributes.isDepthWrite\n isLightingEnabled = attributes.isLightingEnabled\n interiorColor.copy(attributes.interiorColor)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n interiorImageSource = attributes.interiorImageSource\n outlineImageSource = attributes.outlineImageSource\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is ShapeAttributes) return false\n if (isDrawInterior != other.isDrawInterior) return false\n if (isDrawOutline != other.isDrawOutline) return false\n if (isDrawVerticals != other.isDrawVerticals) return false\n if (isDepthTest != other.isDepthTest) return false\n if (isDepthWrite != other.isDepthWrite) return false\n if (isLightingEnabled != other.isLightingEnabled) return false\n if (interiorColor != other.interiorColor) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (interiorImageSource != other.interiorImageSource) return false\n if (outlineImageSource != other.outlineImageSource) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = isDrawInterior.hashCode()\n result = 31 * result + isDrawOutline.hashCode()\n result = 31 * result + isDrawVerticals.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + isDepthWrite.hashCode()\n result = 31 * result + isLightingEnabled.hashCode()\n result = 31 * result + interiorColor.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + (interiorImageSource?.hashCode() ?: 0)\n result = 31 * result + (outlineImageSource?.hashCode() ?: 0)\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractSurfaceRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.SurfaceTextureProgram\n\nopen class SurfaceImage(sector: Sector, var imageSource: ImageSource): AbstractSurfaceRenderable(sector, \"Surface Image\") {\n var imageOptions: ImageOptions? = null\n\n override fun doRender(rc: RenderContext) {\n if (sector.isEmpty || !rc.terrain.sector.intersects(sector) || !getExtent(rc).intersectsFrustum(rc.frustum)) return\n val texture = rc.getTexture(imageSource, imageOptions) ?: return // no texture to draw\n\n // Enqueue a drawable surface texture for processing on the OpenGL thread.\n val program = getShaderProgram(rc)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(program, sector, texture, texture.coordTransform)\n drawable.opacity = rc.currentLayer.opacity\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n\n // Enqueue a picked object that associates the drawable surface texture with this surface image.\n if (rc.isPickMode) {\n val pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, drawable.color)\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun getShaderProgram(rc: RenderContext) = rc.getShaderProgram { SurfaceTextureProgram() }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\n/**\n * Holds attributes applied to text shapes and [Placemark] labels.\n */\nopen class TextAttributes protected constructor(\n font: Font,\n textColor: Color,\n textOffset: Offset,\n outlineColor: Color,\n var outlineWidth: Float,\n var isOutlineEnabled: Boolean,\n var isDepthTest: Boolean,\n var scale: Double\n) {\n var font = font\n set(value) {\n field.copy(value)\n }\n var textColor = textColor\n set(value) {\n field.copy(value)\n }\n var textOffset = textOffset\n set(value) {\n field.copy(value)\n }\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n font = Font(),\n textColor = Color(1f, 1f, 1f, 1f),\n textOffset = Offset.bottomCenter(),\n outlineColor = Color(0f, 0f, 0f, 1f),\n outlineWidth = 3f,\n isOutlineEnabled = true,\n isDepthTest = true,\n scale = 1.0\n )\n\n constructor(attributes: TextAttributes): this(\n attributes.font,\n Color(attributes.textColor),\n Offset(attributes.textOffset),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.isOutlineEnabled,\n attributes.isDepthTest,\n attributes.scale\n )\n\n fun copy(attributes: TextAttributes) = apply {\n font.copy(attributes.font)\n textColor.copy(attributes.textColor)\n textOffset.copy(attributes.textOffset)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n isOutlineEnabled = attributes.isOutlineEnabled\n isDepthTest = attributes.isDepthTest\n scale = attributes.scale\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is TextAttributes) return false\n if (font != other.font) return false\n if (textColor != other.textColor) return false\n if (textOffset != other.textOffset) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (isOutlineEnabled != other.isOutlineEnabled) return false\n if (isDepthTest != other.isDepthTest) return false\n if (scale != other.scale) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = font.hashCode()\n result = 31 * result + textColor.hashCode()\n result = 31 * result + textOffset.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + isOutlineEnabled.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + scale.hashCode()\n return result\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.CENTER\nimport org.w3c.dom.CanvasTextAlign\n\n/**\n * Holds attributes controlling the style, size and other attributes of [earth.worldwind.shape.Label] shapes and\n * the textual features of [earth.worldwind.shape.Placemark] and other shapes. The values used for these attributes are those\n * defined by the CSS Font property.\n */\nactual open class Font(\n /**\n * The font size.\n */\n var size: Int,\n /**\n * The font family.\n * @see CSS font-family for defined values.\n */\n var family: String = \"sans-serif\",\n /**\n * The font weight.\n * @see CSS font-weight for defined values.\n */\n var weight: String = \"normal\",\n /**\n * The font style.\n * @see CSS font-style for defined values.\n */\n var style: String = \"normal\",\n /**\n * The font variant.\n * @see CSS font-variant for defined values.\n */\n var variant: String = \"normal\",\n /**\n * The horizontal alignment of the font.\n * Recognized values are \"left\", \"center\" and \"right\".\n */\n var horizontalAlignment: CanvasTextAlign = CanvasTextAlign.CENTER\n) {\n actual constructor(): this(14)\n actual constructor(family: String, weight: FontWeight, size: Int): this(\n size, family,\n if(weight == FontWeight.BOLD) \"bold\" else \"normal\",\n if(weight == FontWeight.ITALIC) \"italic\" else \"normal\",\n )\n\n init {\n require(size > 0) {\n logMessage(ERROR, \"Font\", \"constructor\", \"invalidSize\");\n }\n }\n\n actual fun copy(font: Font) {\n size = font.size\n style = font.style\n variant = font.variant\n weight = font.weight\n family = font.family\n horizontalAlignment = font.horizontalAlignment\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Font) return false\n if (size != other.size) return false\n if (style != other.style) return false\n if (variant != other.variant) return false\n if (weight != other.weight) return false\n if (family != other.family) return false\n if (horizontalAlignment != other.horizontalAlignment) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = size\n result = 31 * result + style.hashCode()\n result = 31 * result + variant.hashCode()\n result = 31 * result + weight.hashCode()\n result = 31 * result + family.hashCode()\n result = 31 * result + horizontalAlignment.hashCode()\n return result\n }\n\n /**\n * A string representing this font's style, weight, size and family properties, suitable for\n * passing directly to a 2D canvas context.\n */\n override fun toString() = \"$style $variant $weight ${size}px $family\"\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\n\nopen class TiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet): AbstractRenderable(\"Tiled Surface Image\") {\n /**\n * Tile factory implementation.\n */\n var tileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Tile pyramid representation.\n */\n var levelSet = levelSet\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Additional image texture options.\n */\n var imageOptions: ImageOptions? = null\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Define imagery level of details. It controls tile pixel density on the screen.\n */\n var detailControl = 1.0\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset = 0\n /**\n * Define cache tiles factory implementation.\n */\n var cacheTileFactory: TileFactory? = null\n /**\n * Configures tiled surface image to work only with cache source.\n */\n var useCacheOnly = false\n protected val topLevelTiles = mutableListOf()\n\n companion object {\n // Retrieve top level tiles to avoid black holes when navigating and zooming out camera\n private const val RETRIEVE_TOP_LEVEL_TILES = true\n }\n\n /**\n * Memory cache for this layer's subdivision tiles. Each entry contains an array of four image tiles corresponding\n * to the subdivision of the group's common parent tile. The cache is configured to hold 1200 groups, a number\n * empirically determined to be sufficient for storing the tiles needed to navigate a small region.\n */\n protected var tileCache = LruMemoryCache>(1200)\n protected var activeProgram: SurfaceTextureProgram? = null\n protected var ancestorTile: ImageTile? = null\n protected var ancestorTexture: Texture? = null\n protected val ancestorTexCoordMatrix = Matrix3()\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n determineActiveProgram(rc)\n assembleTiles(rc)\n activeProgram = null // clear the active program to avoid leaking render resources\n ancestorTile = null // clear the ancestor tile and texture\n ancestorTexture = null\n }\n\n /**\n * Determine list of tiles which fit specified sector and maximum resolution.\n *\n * @param sector the bounding sector.\n * @param resolution the desired resolution in angular value of latitude per pixel.\n * @return List of tiles which fit specified sector and maximum resolution.\n */\n open fun assembleTilesList(sector: Sector, resolution: Angle): List {\n val result = mutableListOf()\n val lastLevelNumber = levelSet.levelForResolution(resolution).levelNumber\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n topLevelTiles.forEach { addAndSubdivideTile(it as ImageTile, sector, lastLevelNumber, result) }\n return result\n }\n\n protected open fun addAndSubdivideTile(tile: ImageTile, sector: Sector, lastLevelNumber: Int, result: MutableList) {\n if (!tile.intersectsSector(sector)) return // Ignore tiles and its descendants outside the specified sector\n // Skip tiles with level less than specified offset from the result list\n if (tile.level.levelNumber >= levelOffset) result.add(tile)\n // Do not subdivide if specified level or last available level reached\n if (tile.level.levelNumber < lastLevelNumber && !tile.level.isLastLevel) {\n tile.subdivide(tileFactory).forEach {\n addAndSubdivideTile(it as ImageTile, sector, lastLevelNumber, result)\n }\n }\n }\n\n protected open fun determineActiveProgram(rc: RenderContext) {\n activeProgram = rc.getShaderProgram { SurfaceTextureProgram() }\n }\n\n protected open fun assembleTiles(rc: RenderContext) {\n // TODO\n // The need to create Tiles with a defined image source couples the need to determine a tile's visibility with\n // he need to know its image source. Decoupling the two would mean we only need to know the image source when\n // the texture is actually requested Could the tile-based operations done here be implicit on level/row/column,\n // or use transient pooled tile objects not tied to an image source?\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as ImageTile)\n }\n\n protected open fun createTopLevelTiles() {\n levelSet.firstLevel?.let { Tile.assembleTilesForLevel(it, tileFactory, topLevelTiles) }\n }\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: ImageTile) {\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsSector(rc.terrain.sector) || !tile.intersectsFrustum(rc)) return\n val retrieveCurrentLevel = tile.level.levelNumber >= levelOffset\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n if (retrieveCurrentLevel) addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val currentAncestorTile = ancestorTile\n val currentAncestorTexture = ancestorTexture\n getTexture(rc, tile, RETRIEVE_TOP_LEVEL_TILES && retrieveCurrentLevel)?.let { tileTexture ->\n // tile has a texture; use it as a fallback tile for descendants\n ancestorTile = tile\n ancestorTexture = tileTexture\n }\n // each tile has a cached size of 1, recursively process the tile's children\n val children = tile.subdivideToCache(tileFactory, tileCache, 4)\n for (i in children.indices) addTileOrDescendants(rc, children[i] as ImageTile)\n ancestorTile = currentAncestorTile // restore the last fallback tile, even if it was null\n ancestorTexture = currentAncestorTexture\n }\n\n protected open fun addTile(rc: RenderContext, tile: ImageTile) {\n val texture = getTexture(rc, tile)\n val ancestorTile = ancestorTile\n val ancestorTexture = ancestorTexture\n if (texture != null) { // use the tile's own texture\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(activeProgram, tile.sector, texture, texture.coordTransform)\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n } else if (ancestorTile != null && ancestorTexture != null) { // use the ancestor tile's texture, transformed to fill the tile sector\n ancestorTexCoordMatrix.copy(ancestorTexture.coordTransform)\n ancestorTexCoordMatrix.multiplyByTileTransform(tile.sector, ancestorTile.sector)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(activeProgram, tile.sector, ancestorTexture, ancestorTexCoordMatrix)\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n }\n\n // TODO If cache source retrieved but it is outdated, than try to retrieve original image source anyway to refresh cache\n protected open fun getTexture(rc: RenderContext, tile: ImageTile, retrieve: Boolean = true): Texture? {\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: return null\n // If cache tile factory is specified, then create cache source and store it in tile\n val cacheSource = tile.cacheSource ?: cacheTileFactory?.run {\n (createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile).imageSource?.also { tile.cacheSource = it }\n }\n // If cache source is not absent, then retrieve it instead of original image source\n val isCacheAbsent = cacheSource == null || rc.renderResourceCache.absentResourceList.isResourceAbsent(cacheSource.hashCode())\n return rc.getTexture(\n if (isCacheAbsent) imageSource else cacheSource!!, imageOptions, retrieve && (!useCacheOnly || !isCacheAbsent)\n )\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n tileCache.clear()\n }\n}","package earth.worldwind.util\n\nimport kotlinx.datetime.Clock\nimport kotlin.time.Duration\nimport kotlin.time.Duration.Companion.seconds\n\n/**\n * Provides a collection to keep track of resources whose retrieval failed and when retrieval may be tried again.\n */\nopen class AbsentResourceList(\n /**\n * The number of attempts to make before the resource is marked as absent.\n */\n private val maxTrys: Int,\n /**\n * The amount of time to wait between attempts, in milliseconds.\n */\n private val minCheckInterval: Duration\n) {\n /**\n * The amount of time, in milliseconds, beyond which retrieval attempts should again be allowed.\n * When this time has elapsed from the most recent failed attempt the number of try's attempted is\n * reset to 0. This prevents the resource from being permanently blocked.\n */\n var tryAgainInterval = 60.seconds\n\n private val possiblyAbsent = mutableMapOf()\n\n fun clear() { possiblyAbsent.clear() }\n\n /**\n * Indicates whether a specified resource is marked as absent.\n * @param resourceId The resource identifier.\n * @returns true if the resource is marked as absent, otherwise false.\n */\n fun isResourceAbsent(resourceId: T): Boolean {\n val entry = possiblyAbsent[resourceId] ?: return false\n if (entry.permanent) return true\n\n val timeSinceLastMark = Clock.System.now() - entry.timeOfLastMark\n\n if (timeSinceLastMark > tryAgainInterval) {\n possiblyAbsent.remove(resourceId)\n return false\n }\n\n return timeSinceLastMark < minCheckInterval || entry.numTrys > maxTrys\n }\n\n /**\n * Marks a resource attempt as having failed. This increments the number-of-tries counter and sets the time\n * of the last attempt. When this method has been called [AbsentResourceList.maxTrys] times the resource is marked\n * as absent until this absent resource list's [AbsentResourceList.tryAgainInterval] is reached.\n *\n * @param resourceId The resource identifier.\n * @param permanent Marks a resource attempt as having failed permanently. No attempt will ever again be made to retrieve the resource.\n */\n fun markResourceAbsent(resourceId: T, permanent: Boolean = false) {\n (possiblyAbsent[resourceId] ?: AbsentResourceEntry().also { possiblyAbsent[resourceId] = it }).makeTry(permanent)\n }\n\n /**\n * Removes the specified resource from this absent resource list. Call this method when retrieval attempt succeeded.\n * @param resourceId The resource identifier.\n */\n fun unmarkResourceAbsent(resourceId: T) { possiblyAbsent.remove(resourceId) }\n\n private inner class AbsentResourceEntry {\n var timeOfLastMark = Clock.System.now()\n private set\n var numTrys = 0\n private set\n var permanent = false\n private set\n\n fun makeTry(permanent: Boolean = false) {\n numTrys++\n timeOfLastMark = Clock.System.now()\n this.permanent = permanent\n }\n }\n}","package earth.worldwind.util\n\n/**\n * AbstractSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded resources.\n */\nabstract class AbstractSource protected constructor(protected val source: Any) {\n /**\n * Resource post-processing routine.\n */\n var postprocessor: ResourcePostprocessor<*>? = null\n\n /**\n * @return generic image source as unrecognized object.\n */\n fun asUnrecognized() = source\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is AbstractSource) return false\n if (source != other.source) return false\n return true\n }\n\n override fun hashCode() = source.hashCode()\n\n override fun toString() = source.toString()\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.min\n\nabstract class AbstractTile(\n /**\n * The sector spanned by this tile.\n */\n val sector: Sector\n) {\n /**\n * The nearest point on the tile to the camera. Altitude value is based on the minimum height for the tile.\n */\n protected val nearestPoint = Vec3()\n /**\n * The tile's Cartesian bounding box.\n */\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n\n /**\n * Indicates whether this tile's Cartesian extent intersects a frustum.\n *\n * @param rc the current render context\n *\n * @return true if the frustum intersects this tile's extent, otherwise false\n */\n fun intersectsFrustum(rc: RenderContext) = getExtent(rc).intersectsFrustum(rc.frustum)\n\n /**\n * Indicates whether this tile intersects a specified sector.\n *\n * @param sector the sector of interest\n *\n * @return true if the specified sector intersects this tile's sector, otherwise false\n */\n fun intersectsSector(sector: Sector) = this.sector.intersects(sector)\n\n /**\n * Calculates the distance from this tile to the camera point which ensures front to back sorting.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the L1 distance in degrees\n */\n protected open fun drawSortOrder(rc: RenderContext): Double {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val latAbsDifference = abs(cameraPosition.latitude.inDegrees - sector.centroidLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonAbsDifference = abs(cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees)\n val lonAbsDifferenceCorrected = min(lonAbsDifference, 360.0 - lonAbsDifference)\n\n return latAbsDifference + lonAbsDifferenceCorrected // L1 distance on cylinder\n }\n\n /**\n * Calculates nearest point of this tile to the camera position associated with the specified render context.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the nearest point\n */\n protected open fun nearestPoint(rc: RenderContext): Vec3 {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val nearestLat = cameraPosition.latitude.inDegrees.coerceIn(sector.minLatitude.inDegrees, sector.maxLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonDifference = cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees\n val nearestLon = when {\n lonDifference < -180.0 -> sector.maxLongitude.inDegrees\n lonDifference > 180.0 -> sector.minLongitude.inDegrees\n else -> cameraPosition.longitude.inDegrees.coerceIn(sector.minLongitude.inDegrees, sector.maxLongitude.inDegrees)\n }\n val minHeight = heightLimits[0] * rc.verticalExaggeration\n return rc.globe.geographicToCartesian(nearestLat.degrees, nearestLon.degrees, minHeight, nearestPoint)\n }\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val heightLimits = heightLimits\n val extent = extent\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n val ve = rc.verticalExaggeration.toFloat()\n if (ve != extentExaggeration || timestamp != heightLimitsTimestamp) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n return extent\n }\n}","package earth.worldwind.util\n\nimport kotlin.math.max\n\n@Suppress(\"UNCHECKED_CAST\")\nopen class BasicPool: Pool {\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n protected var size = 0\n protected var entries = arrayOfNulls(size)\n\n override fun acquire(): T? {\n if (size > 0) {\n val last = --size\n val instance = entries[last]\n entries[last] = null\n return instance as T?\n }\n return null\n }\n\n override fun release(instance: T?) {\n // TODO reduce the pool size when excess entries may not be needed\n // TODO use a keep alive time to indicate how long to keep stale instances\n if (instance != null) {\n val capacity = entries.size\n if (capacity == size) {\n // increase the pool size by the larger of 50% or the minimum increment\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries, 0, 0, capacity)\n entries = newEntries\n }\n entries[size++] = instance\n }\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Represents a level of a specific resolution in a [LevelSet].\n */\nopen class Level internal constructor(\n /**\n * The LevelSet that this level is a member of.\n */\n val parent: LevelSet,\n /**\n * The level's ordinal in its parent level set.\n */\n val levelNumber: Int,\n /**\n * The geographic width and height of tiles within this level.\n */\n val tileDelta: Location\n) {\n /**\n * The width in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the longitudinal direction of this level set.\n */\n val levelWidth: Int\n /**\n * The height in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the latitudinal direction of this level set.\n */\n val levelHeight: Int\n /**\n * The parent LevelSet's tileWidth.\n */\n val tileWidth: Int\n /**\n * The parent LevelSet's tileHeight.\n */\n val tileHeight: Int\n /**\n * Indicates whether this level is the lowest resolution level (level 0) within the parent level set.\n */\n val isFirstLevel get() = levelNumber == 0\n /**\n * Indicates whether this level is the highest resolution level within the parent level set.\n */\n val isLastLevel get() = levelNumber == parent.numLevels - 1\n /**\n * Returns the level whose ordinal occurs immediately before this level's ordinal in the parent level set, or null\n * if this is the fist level.\n */\n val previousLevel get() = parent.level(levelNumber - 1)\n /**\n * Returns the level whose ordinal occurs immediately after this level's ordinal in the parent level set, or null if\n * this is the last level.\n */\n val nextLevel get() = parent.level(levelNumber + 1)\n\n /**\n * Constructs a Level within a LevelSet. Applications typically do not interact with this class.\n */\n init {\n require(tileDelta.latitude.inDegrees > 0.0 && tileDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"Level\", \"constructor\", \"The tile delta is zero\")\n }\n levelWidth = (parent.tileWidth * parent.sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).roundToInt()\n levelHeight = (parent.tileHeight * parent.sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).roundToInt()\n tileWidth = parent.tileWidth\n tileHeight = parent.tileHeight\n }\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.ln\n\n/**\n * Configuration values for a multi-resolution, hierarchical collection of tiles organized into levels of increasing\n * resolution.\n */\nopen class LevelSetConfig {\n /**\n * The sector spanned by the level set.\n */\n val sector = Sector().setFullSphere()\n /**\n * Tile origin for level set\n */\n val tileOrigin = Location(NEG90, NEG180)\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of the level set.\n */\n var firstLevelDelta = Location(POS90, POS90)\n /**\n * The number of levels in the level set.\n */\n var numLevels = 1\n /**\n * The width in pixels of images associated with tiles in the level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with the level set.\n */\n var tileWidth = 256\n /**\n * The height in pixels of images associated with tiles in the level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with the level set.\n */\n var tileHeight = 256\n\n /**\n * Returns the number of levels necessary to achieve the specified resolution. The result is correct for this\n * configuration's current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = ceil(level).toInt() // ceiling captures the resolution\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n\n /**\n * Returns the number of levels closest to the specified resolution, but does not exceed it. May be used to\n * configure level sets where a not to exceed resolution is mandated. The result is correct for this configuration's\n * current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired not to exceed resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForMinResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForMinResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = floor(level).toInt() // floor prevents exceeding the min scale\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class LruMemoryCache @JvmOverloads constructor(\n val capacity: Long, protected val lowWater: Long = (capacity * 0.75).toLong()\n) {\n var usedCapacity = 0L\n protected set\n val entryCount get() = entries.size\n // sorts entries from least recently used to most recently used\n protected open val lruComparator = Comparator> { lhs, rhs -> lhs.lastUsed.compareTo(rhs.lastUsed) }\n protected val entries = mutableMapOf>()\n protected open var age = 0L\n get() = ++field // Auto increment cache age on each access to its entries\n\n protected open class Entry(val key: K, val value: V, val size: Int) { var lastUsed = 0L }\n\n init {\n require(capacity >= 1) {\n logMessage(ERROR, \"LruMemoryCache\", \"constructor\", \"invalidCapacity\")\n }\n require(lowWater in 0 until capacity) {\n logMessage(\n ERROR, \"LruMemoryCache\", \"constructor\",\n \"The specified low-water value is greater than or equal to the capacity, or less than 1\"\n )\n }\n }\n\n open operator fun get(key: K) = entries[key]?.run{\n lastUsed = age\n value\n }\n\n open fun put(key: K, value: V, size: Int): V? {\n if (usedCapacity + size > capacity) makeSpace(size)\n val newEntry = Entry(key, value, size)\n newEntry.lastUsed = age\n usedCapacity += newEntry.size\n val oldEntry = entries.put(key, newEntry)\n if (oldEntry != null) {\n usedCapacity -= oldEntry.size\n if (newEntry.value !== oldEntry.value) {\n entryRemoved(oldEntry.key, oldEntry.value, newEntry.value, false)\n return oldEntry.value\n }\n }\n return null\n }\n\n open fun remove(key: K) = entries.remove(key)?.run {\n usedCapacity -= size\n entryRemoved(key, value, null, false)\n value\n }\n\n open fun trimToAge(maxAge: Long): Int {\n var trimmedCapacity = 0\n\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the entry's age is within the specified maximum age.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (entry.lastUsed < maxAge) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n trimmedCapacity += entry.size\n entryRemoved(entry.key, entry.value, null, false)\n } else break\n }\n return trimmedCapacity\n }\n\n open fun containsKey(key: K) = entries.containsKey(key)\n\n open fun clear() {\n // NOTE Entities cleared without entryRemoved call\n // for (entry in entries.values) entryRemoved(entry.key, entry.value, null, false)\n entries.clear()\n usedCapacity = 0\n }\n\n protected open fun makeSpace(spaceRequired: Int) {\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the cache capacity reaches the low water and the cache has\n // enough free capacity for the required space.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (usedCapacity > lowWater || capacity - usedCapacity < spaceRequired) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n entryRemoved(entry.key, entry.value, null, true)\n } else break\n }\n }\n\n /*\n * Sort the entries from least recently used to most recently used.\n */\n protected open fun assembleSortedEntries() = entries.values.sortedWith(lruComparator)\n\n protected open fun entryRemoved(key: K, oldValue: V, newValue: V?, evicted: Boolean) {}\n}","package earth.worldwind.util\n\nval messageTable = mapOf(\n \"errorReadingProgramSource\" to \"Error reading program sources\",\n \"exceptionParsingText\" to \"Exception parsing text\",\n \"invalidBitmap\" to \"The bitmap is recycled\",\n \"invalidCapacity\" to \"The capacity is less than 1\",\n \"invalidCount\" to \"The count is invalid\",\n \"invalidClipDistance\" to \"The clip distance is invalid\",\n \"invalidFieldOfView\" to \"The field of view is invalid\",\n \"invalidHeight\" to \"The height is invalid\",\n \"invalidIndex\" to \"The index is invalid\",\n \"invalidNumIntervals\" to \"The number of intervals is invalid\",\n \"invalidNumLevels\" to \"The number of levels is invalid\",\n \"invalidRadius\" to \"The radius is invalid\",\n \"invalidRange\" to \"The range is invalid\",\n \"invalidResolution\" to \"The resolution is invalid\",\n \"invalidStride\" to \"The stride is invalid\",\n \"invalidTileDelta\" to \"The tile delta is invalid\",\n \"invalidWidth\" to \"The width is invalid\",\n \"invalidWidthOrHeight\" to \"The width or the height is invalid\",\n \"missingArray\" to \"The array insufficient length\",\n \"missingLayerNames\" to \"The layer names are empty\",\n \"singularMatrix\" to \"The matrix cannot be inverted\"\n)","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport kotlinx.datetime.Instant\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.toLocalDateTime\nimport kotlin.math.*\n\n/**\n * Provides utilities for determining the Sun geographic and celestial location.\n */\nobject SunPosition {\n class CelestialLocation(val declination: Angle, val rightAscension: Angle)\n\n /**\n * Computes the geographic location of the sun for a given date\n * @param instant Input instant\n * @return the geographic location\n */\n fun getAsGeographicLocation(instant: Instant) = celestialToGeographic(getAsCelestialLocation(instant), instant)\n\n /**\n * Computes the celestial location of the sun for a given julianDate\n * @param instant Input instant\n * @return the celestial location\n */\n fun getAsCelestialLocation(instant: Instant): CelestialLocation {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n val meanLongitude = Angle.normalizeAngle360(280.460 + 0.9856474 * numDays)\n val meanAnomaly = Angle.toRadians(Angle.normalizeAngle360(357.528 + 0.9856003 * numDays))\n val eclipticLongitude = meanLongitude + 1.915 * sin(meanAnomaly) + 0.02 * sin(2 * meanAnomaly)\n val eclipticLongitudeRad = Angle.toRadians(eclipticLongitude)\n val obliquityOfTheEcliptic = Angle.toRadians(23.439 - 0.0000004 * numDays)\n val declination = asin(sin(obliquityOfTheEcliptic) * sin(eclipticLongitudeRad)).radians\n var rightAscension = atan(cos(obliquityOfTheEcliptic) * tan(eclipticLongitudeRad)).radians\n if (eclipticLongitude >= 90 && eclipticLongitude < 270) rightAscension += Angle.POS180\n return CelestialLocation(declination, rightAscension.normalize360())\n }\n\n /**\n * Converts from celestial coordinates (declination and right ascension) to geographic coordinates\n * (latitude, longitude) for a given julian date\n * @param celestialLocation Celestial location\n * @param instant Input instant\n * @return the geographic location\n */\n fun celestialToGeographic(celestialLocation: CelestialLocation, instant: Instant): Location {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n\n //Greenwich Mean Sidereal Time\n val GMST = Angle.normalizeAngle360(280.46061837 + 360.98564736629 * numDays)\n\n //Greenwich Hour Angle\n val GHA = Angle.normalizeAngle360(GMST - celestialLocation.rightAscension.inDegrees)\n\n val longitude = (-GHA).degrees.normalizeLongitude()\n\n return Location(celestialLocation.declination, longitude)\n }\n\n /**\n * Computes the julian date from a javascript date object\n * @param instant Input instant\n * @return the julian date\n */\n fun computeJulianDate(instant: Instant): Double {\n val date = instant.toLocalDateTime(TimeZone.UTC)\n var year = date.year\n var month = date.monthNumber + 1\n val day = date.dayOfMonth\n val hour = date.hour\n val minute = date.minute\n val second = date.second\n val dayFraction = (hour + minute / 60.0 + second / 3600.0) / 24.0\n if (month <= 2) {\n year -= 1\n month += 12\n }\n val a = floor(year / 100.0)\n val b = 2 - a + floor(a / 4.0)\n val JD0h = floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524.5\n return JD0h + dayFraction\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographically rectangular tile within a [LevelSet], typically representing terrain or imagery. Provides a base\n * class for tiles used by tiled image layers and elevation models. Applications typically do not interact with this\n * class.\n */\nopen class Tile protected constructor(\n /**\n * The sector spanned by this tile.\n */\n sector: Sector,\n /**\n * The level at which this tile lies within a [LevelSet].\n */\n val level: Level,\n /**\n * The tile's row within its level.\n */\n val row: Int,\n /**\n * The tile's column within its level.\n */\n val column: Int\n) : AbstractTile(sector) {\n /**\n * A key that uniquely identifies this tile within a level set. Tile keys are not unique to a specific level set.\n */\n val tileKey = level.levelNumber.toString() + '.' + row + '.' + column\n /**\n * A factor expressing the size of a pixel or elevation cell at the center of this tile, in radians per pixel (or\n * cell).\n *
\n * Texel size in meters is computed as `(tileDelta / tileWidth) * cos(lat) * R`, where lat is the\n * centroid latitude and R is the globe's equatorial radius. This is derived by considering that texels are laid out\n * continuously on the arc of constant latitude connecting the tile's east and west edges and passing through its\n * centroid. The radii for the corresponding circle of constant latitude is `cos(lat) * R`, and the arc\n * length is therefore `tileDelta * cos(lat) * R`. The size of a texel along this arc is then found by\n * dividing by the number of texels along that arc, defined by the property Level.tileWidth.\n *
\n * This property stores the constant part of the texel size computation, `(tileDelta / tileWidth) *\n * cos(lat)`, leaving the globe-dependant variable `R` to be incorporated by the globe attached to\n * the RenderContext.\n */\n protected val texelSizeFactor = level.tileDelta.longitude.inRadians / level.tileWidth * cos(sector.centroidLatitude.inRadians)\n private val scratchVector = Vec3()\n\n /**\n * Indicates whether this tile should be subdivided based on the current navigation state and a specified detail\n * factor.\n *\n * @param rc the current render context\n * @param detailFactor the detail factor to consider\n *\n * @return true if the tile should be subdivided, otherwise false\n */\n open fun mustSubdivide(rc: RenderContext, detailFactor: Double): Boolean {\n val nearestPoint = nearestPoint(rc)\n val distanceToCamera = nearestPoint.distanceTo(rc.cameraPoint)\n // Accelerate the degradation of tile details depending on the viewing angle to tile normal\n val cos = if (rc.camera.position.altitude < rc.globe.equatorialRadius / 10.0) {\n val viewingVector = nearestPoint.subtract(rc.cameraPoint)\n val normalVector =\n rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n abs(dot / (viewingVector.magnitude * normalVector.magnitude))\n } else 1.0\n val texelSize = texelSizeFactor * rc.globe.equatorialRadius * cos\n val pixelSize = rc.pixelSizeAtDistance(distanceToCamera)\n\n // Adjust the subdivision factory when the display density is low.\n return texelSize > pixelSize * detailFactor * rc.densityFactor\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its [LevelSet].\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n\n val latMin = sector.minLatitude\n val lonMin = sector.minLongitude\n val latMid = sector.centroidLatitude\n val lonMid = sector.centroidLongitude\n val latMax = sector.maxLatitude\n val lonMax = sector.maxLongitude\n\n var childRow = 2 * row\n var childCol = 2 * column\n var childSector = Sector(latMin, latMid, lonMin, lonMid)\n val child0 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southwest\n\n childRow = 2 * row\n childCol = 2 * column + 1\n childSector = Sector(latMin, latMid, lonMid, lonMax)\n val child1 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southeast\n\n childRow = 2 * row + 1\n childCol = 2 * column\n childSector = Sector(latMid, latMax, lonMin, lonMid)\n val child2 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northwest\n\n childRow = 2 * row + 1\n childCol = 2 * column + 1\n childSector = Sector(latMid, latMax, lonMid, lonMax)\n val child3 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northeast\n\n return arrayOf(child0, child1, child2, child3)\n }\n\n /**\n * Returns the four children formed by subdividing this tile, drawing those children from a specified cache. The\n * cache is checked for a child collection prior to subdividing. If one exists in the cache it is returned rather\n * than creating a new collection of children. If a new collection is created in the same manner as [subdivide] and added to the cache.\n *\n * @param tileFactory the tile factory to use to create the children\n * @param cache a memory cache that may contain pre-existing child tiles.\n * @param cacheSize the cached size of the four child tiles\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivideToCache(\n tileFactory: TileFactory, cache: LruMemoryCache>, cacheSize: Int\n ) = cache[tileKey] ?: subdivide(tileFactory).also { cache.put(tileKey, it, cacheSize) }\n\n companion object {\n /**\n * Computes a row number for a tile within a level given the tile's latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's minimum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeRow(tileDelta: Angle, latitude: Angle, origin: Angle): Int {\n var row = floor((latitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if latitude is at the end of the grid, subtract 1 from the computed row to return the last row\n if (latitude.inDegrees - origin.inDegrees == 180.0) row -= 1\n return row\n }\n\n /**\n * Computes a column number for a tile within a level given the tile's longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's minimum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeColumn(tileDelta: Angle, longitude: Angle, origin: Angle): Int {\n var col = floor((longitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if longitude is at the end of the grid, subtract 1 from the computed column to return the last column\n if (longitude.inDegrees - origin.inDegrees == 360.0) col -= 1\n return col\n }\n\n /**\n * Computes the last row number for a tile within a level given the tile's maximum latitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLatitude the tile's maximum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeLastRow(tileDelta: Angle, maxLatitude: Angle, origin: Angle): Int {\n var row = ceil((maxLatitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max latitude is in the first row, set the max row to 0\n if (maxLatitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) row = 0\n return row\n }\n\n /**\n * Computes the last column number for a tile within a level given the tile's maximum longitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLongitude the tile's maximum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeLastColumn(tileDelta: Angle, maxLongitude: Angle, origin: Angle): Int {\n var col = ceil((maxLongitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max longitude is in the first column, set the max column to 0\n if (maxLongitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) col = 0\n return col\n }\n\n /**\n * Creates all tiles for a specified level within a [LevelSet].\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result an pre-allocated Collection in which to store the results\n *\n * @return the result argument populated with the tiles for the specified level\n */\n @JvmStatic\n fun assembleTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): MutableList {\n val sector = level.parent.sector\n val tileOrigin = level.parent.tileOrigin\n val tileDelta = level.tileDelta\n val firstRow = computeRow(tileDelta.latitude, sector.minLatitude, tileOrigin.latitude)\n val lastRow = computeLastRow(tileDelta.latitude, sector.maxLatitude, tileOrigin.latitude)\n val firstCol = computeColumn(tileDelta.longitude, sector.minLongitude, tileOrigin.longitude)\n val lastCol = computeLastColumn(tileDelta.longitude, sector.maxLongitude, tileOrigin.longitude)\n val firstRowLat = tileOrigin.latitude.plusDegrees(firstRow * tileDelta.latitude.inDegrees)\n val firstColLon = tileOrigin.longitude.plusDegrees(firstCol * tileDelta.longitude.inDegrees)\n var minLat = firstRowLat\n for (row in firstRow..lastRow) {\n val maxLat = minLat + tileDelta.latitude\n var minLon = firstColLon\n for (col in firstCol..lastCol) {\n val maxLon = minLon + tileDelta.longitude\n val tileSector = Sector(minLat, maxLat, minLon, maxLon)\n result.add(tileFactory.createTile(tileSector, level, row, col))\n minLon = maxLon\n }\n minLat = maxLat\n }\n return result\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlin.math.*\n\nclass ExponentFormatter(val value: Double) {\n var mantissa: Double\n private set\n var exponent: Int = 0\n private set(value) {\n field = value\n strExponent = \"e$exponent\"\n }\n\n private val mstr: String\n private var strExponent: String\n\n init {\n val x = abs(value)\n exponent = log10(x).toInt()\n if (exponent < 0) exponent--\n mantissa = x / 10.0.pow(exponent)\n if (value < 0) mantissa = -mantissa\n mstr = mantissa.toString()\n strExponent = \"e$exponent\"\n }\n\n fun scientific(width: Int, fractionWidth: Int = -1): String {\n val minLength = if (mantissa < 0) 2 else 1\n\n // Get the desired part of mantissa with proper bounding and rounding\n // it works only for \"normalized\" mantissa that is always has d[.ddddd] form, e.g. integer\n // part is always 1 digit long\n //\n // ERROR: this rounding does not work with trailint (***9)8 - like variants\n //\n fun mpart(length: Int): String {\n var l = length\n if (l > mstr.length) l = mstr.length\n val result = StringBuilder(mstr.slice(0 until l))\n // exact value, no rounding:\n if (result.length == mstr.length) return result.toString()\n\n // next significant digit\n var nextDigit = mstr[result.length]\n if (nextDigit == '.') {\n if (result.length + 1 >= mstr.length) return result.toString()\n nextDigit = mstr[result.length + 1]\n }\n if (nextDigit in \"56789\") {\n val (m, ovf) = roundUp(result)\n if( !ovf ) return m\n // overflow: exponent should grow\n exponent++\n // and the point position should be fixed\n val pointPos = m.indexOf('.')\n val mb = StringBuilder(m)\n if( pointPos == -1 )\n return m // it was the last letter and was therefore removed by roundUp\n return mb.deleteAt(pointPos).insert(pointPos - 1, '.').toString()\n }\n return result.toString()\n }\n\n if (width == 0) return mstr + strExponent\n\n if (fractionWidth < 0 && width > 0) {\n var l = width - strExponent.length\n if (l < minLength) l = minLength\n return mpart(l) + strExponent\n }\n\n if (fractionWidth < 0 && width < 0) return mstr + strExponent\n\n // fractionWidth >= 0\n if (fractionWidth == 0) return \"${mstr[0]}$strExponent\"\n\n // fractionWidth > 0, +1 for decimal dot\n return mpart(minLength + 1 + fractionWidth) + strExponent\n }\n\n\n override fun toString() = \"${mantissa}e${exponent}\"\n}\n\ninternal fun scientificFormat(value: Double, width: Int, fractionPartLength: Int = -1) =\n ExponentFormatter(value).scientific(width, fractionPartLength)\n\ninternal fun fractionalFormat(_value: Double, width: Int, fractionPartLength: Int = -1): String {\n var value = _value\n val result = StringBuilder()\n\n if (abs(value) >= 1) {\n val i = if (fractionPartLength == 0) value.roundToLong() else value.toLong()\n result.append(i)\n value -= i\n } else result.append((if (value < 0) \"-0\" else \"0\"))\n\n var fl = if (fractionPartLength < 0) {\n if (width < 0) 6\n else width - result.length - 1\n } else fractionPartLength\n\n if (fl != 0) result.append('.')\n\n var rest = value * 10\n while (fl-- > 0) {\n val d = rest.toInt()\n result.append(abs(d))\n rest = (rest - d) * 10\n }\n // now we might need to round it up:\n return if( rest.toInt().absoluteValue < 5 ) result.toString() else roundUp(result, keepWidth = false).first\n}\n\n/**\n * Round up the mantissa part (call it with default arguments to start).\n * @return rounded mantissa and overflow flag (set when 9,99 -> 10,00 and like)\n */\nprivate fun roundUp(\n result: StringBuilder,\n length: Int = result.length,\n pos: Int = result.length - 1,\n keepWidth: Boolean = true\n): Pair {\n if (pos < 0) {\n // if we get there, it means the number of digits should grow, like \"9.99\" -> \"10.00\"\n // but we need to keep the length so \"10.0\":\n result.insert(0, '1')\n if (keepWidth) result.deleteAt(length)\n return result.toString() to true\n }\n // not the first digit: perform rounding:\n val d = result[pos]\n // it could be a decimal point we ignore and continue with rounding\n if (d == '.') return roundUp(result, length, pos - 1, keepWidth)\n\n // Small number add one \"0.19\" -> \"0.2\"\n // Simple case: alter only the current digit\n if (d != '9') {\n result[pos] = d + 1\n return result.toString() to false\n }\n // Complex case: 9->0 and propagate changes up.\n result[pos] = '0'\n return roundUp(result, length, pos - 1, keepWidth)\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal enum class Positioning { LEFT, RIGHT, CENTER; }\n\ninternal class Specification(val parent: StringFormat, var index: Int) {\n enum class Stage { FLAGS, LENGTH, FRACTION; }\n\n private var stage = Stage.FLAGS\n private var size: Int = -1\n private var fractionalPartSize: Int = -1\n private var positioninig = Positioning.RIGHT\n private var fillChar = ' '\n private var currentPart = StringBuilder()\n // private var pos = 0\n private var explicitPlus = false\n private var done = false\n private var indexIsOverride = false\n private val isScanningFlags: Boolean\n get() = stage == Stage.FLAGS\n\n internal fun scan() {\n while (!done) {\n when (val ch = parent.nextChar()) {\n '-', '^' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n positioninig = if (ch == '-') Positioning.LEFT else Positioning.CENTER\n }\n '+' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n explicitPlus = true\n }\n in \"*#_=\" -> {\n if (!isScanningFlags) invalidFormat(\"bad fill char $ch position\")\n fillChar = ch\n }\n '0' -> {\n if (isScanningFlags) fillChar = '0'\n else currentPart.append(ch)\n }\n in \"123456789\" -> {\n if (stage == Stage.FLAGS) stage = Stage.LENGTH\n currentPart.append(ch)\n }\n '$', '!' -> {\n if (stage != Stage.LENGTH) invalidFormat(\"unexpected $ch position\")\n if (indexIsOverride) invalidFormat(\"argument number '$ch' should occur only once\")\n indexIsOverride = true\n index = currentPart.toString().toInt() - 1\n parent.pushbackArgumentIndex()\n currentPart.clear()\n }\n 's' -> createStringField()\n 'd', 'i' -> createIntegerField()\n 'o' -> createOctalField()\n 'x' -> createHexField(false)\n 'X' -> createHexField(true)\n 'f', 'F' -> createFloat()\n 'E' -> createScientific(true)\n 'e' -> createScientific(false)\n 'g' -> createAutoFloat(true)\n 'G' -> createAutoFloat(false)\n 'c', 'C' -> createCharacter()\n 't' -> createTimeField(false)\n 'T' -> createTimeField(true)\n '.' -> {\n stage = when (stage) {\n Stage.FLAGS -> Stage.FRACTION\n Stage.LENGTH -> {\n endStage(false)\n Stage.FRACTION\n }\n else -> invalidFormat(\"can't parse specification: unexpected '.'\")\n }\n }\n else -> invalidFormat(\"unexpected character '$ch'\")\n }\n }\n }\n\n private fun invalidFormat(message: String): Nothing { parent.invalidFormat(message) }\n\n private val time get() = parent.getLocalDateTime(index)\n\n private fun createTimeField(upperCase: Boolean) {\n val ch = parent.nextChar()\n endStage()\n val result: String = when (ch) {\n 'H' -> \"%02d\".format(time.hour)\n 'k' -> \"%d\".format(time.hour)\n 'I', 'l' -> {\n var t = time.hour\n if (t > 12) t -= 12\n if (ch == 'I') \"%02d\".format(t)\n else t.toString()\n }\n 'M' -> \"%02d\".format(time.minute)\n 'S' -> \"%02d\".format(time.second)\n 'L' -> \"%03d\".format(time.nanosecond / 1_000_000)\n 'N' -> \"%09d\".format(time.nanosecond)\n 'p' -> {\n if (upperCase) if (time.hour > 12) \"PM\" else \"AM\"\n else if (time.hour > 12) \"pm\" else \"am\"\n }\n 'z' -> {\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString().replace(\":\", \"\")\n }\n 'Z' -> {\n // There us yet no abbreviations like 'CET', so we put there string representation like +01:00\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString()\n }\n 's' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).epochSeconds.toString()\n }\n 'Q' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).toEpochMilliseconds().toString()\n }\n // Date fields\n 'B' -> getMonthName(time.month.number)\n 'b', 'h' -> getAbbreviatedMonthName(time.month.number)\n 'e' -> time.dayOfMonth.toString()\n 'd' -> \"%02s\".format(time.dayOfMonth)\n 'm' -> \"%02s\".format(time.month.number)\n 'A' -> getWeekDayName(time.dayOfWeek)\n 'a' -> getAbbreviatedWeekDayName(time.dayOfWeek)\n 'y' -> time.year.toString().takeLast(2)\n 'Y' -> \"%04d\".format(time.year)\n 'j' -> \"%03d\".format(time.dayOfYear)\n // shortcuts\n 'R' -> \"%1!tH:%1!tM\".format(time)\n 'r' ->\n if (upperCase) \"%1!tI:%1!tM:%1!tS %1!Tp\".format(time)\n else \"%1!tI:%1!tM:%1!tS %1!tp\".format(time)\n 'T' -> \"%tH:%1!tM:%1!tS\".format(time)\n 'D' -> \"%tm/%1!td/%1!ty\".format(time)\n 'F' -> \"%tY-%1!tm-%1!td\".format(time)\n 'c' -> \"%ta %1!tb %1!td %1!tT %1!tZ %1!tY\".format(time)\n 'O' -> {\n val tz = TimeZone.currentSystemDefault()\n val offset = tz.offsetAt(time.toInstant(tz)).toString()\n \"%tFT%1!tT%s\".format(time, offset)\n }\n '#' -> \"%tY%1!tm%1!td%1!tH%1!tM%1!tS\".format(time.toInstant(TimeZone.UTC))\n else -> invalidFormat(\"unknown time field specificator: 't$ch'\")\n }\n insertField(result)\n }\n\n private fun createStringField() {\n endStage()\n insertField(parent.getText(index))\n }\n\n private fun createIntegerField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus && fillChar == '0' && number > 0) insertField(number.toString(), \"+\")\n else insertField(if (explicitPlus) \"+$number\" else \"$number\")\n }\n\n private fun createHexField(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with hex format\")\n val text = number.toString(16)\n insertField(if (upperCase) text.uppercase() else text.lowercase())\n }\n\n private fun createOctalField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with oct format\")\n insertField(number.toString(8))\n }\n\n private fun createCharacter() {\n endStage()\n insertField(parent.getCharacter(index).toString())\n }\n\n private fun endStage(setDone: Boolean = true) {\n if (setDone) done = true\n if (currentPart.isNotEmpty()) {\n when (stage) {\n Stage.LENGTH -> size = currentPart.toString().toInt()\n Stage.FRACTION -> fractionalPartSize = currentPart.toString().toInt()\n Stage.FLAGS -> invalidFormat(\"can't parse format specifier (error 7)\")\n }\n currentPart.clear()\n }\n }\n\n private fun insertField(text: String, prefix: String = \"\") {\n val l = text.length + prefix.length\n if (size < 0 || size < l) parent.specificationDone(prefix + text)\n else {\n var padStart = 0\n var padEnd = 0\n when (positioninig) {\n Positioning.LEFT -> padEnd = size - l\n Positioning.RIGHT -> padStart = size - l\n Positioning.CENTER -> {\n padStart = (size - l) / 2\n padEnd = size - padStart - l\n }\n }\n val result = StringBuilder(prefix)\n while (padStart-- > 0) result.append(fillChar)\n result.append(text)\n while (padEnd-- > 0) result.append(fillChar)\n parent.specificationDone(result.toString())\n }\n }\n\n private fun createFloat() {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = fractionalFormat(number, size, fractionalPartSize)\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createScientific(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = scientificFormat(number, size, fractionalPartSize).let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createAutoFloat(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index)\n val t = number.toString().let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number.toDouble() > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n companion object {\n private val englishMonthNames: List by lazy {\n \"January February March April May June July August September October November December\".split(' ')\n }\n private val englishWeekDayNames: List by lazy {\n \"Monday Tuesday Wednesday Thursday Friday Saturday Sunday\".split(' ')\n }\n\n fun getAbbreviatedMonthName(monthNumber: Int) = getMonthName(monthNumber).take(3)\n\n fun getMonthName(monthNumber: Int) = englishMonthNames[monthNumber - 1]\n\n fun getWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1]\n }\n\n fun getAbbreviatedWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1].take(3)\n }\n }\n}",null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal class StringFormat(val format: String, val args: Array) {\n\n private var pos = 0\n private var specStart = -1\n private val result = StringBuilder()\n private var currentIndex = 0\n\n fun process(): StringFormat {\n while (pos < format.length) {\n val ch = format[pos++]\n if (ch == '%') {\n specStart = when {\n specStart == pos - 1 -> {\n result.append(ch)\n -1\n }\n specStart < 0 -> pos\n else -> invalidFormat(\"unexpected %\")\n }\n } else {\n if (specStart >= 0) {\n pos--\n Specification(this, currentIndex++).scan()\n } else result.append(ch)\n }\n }\n return this\n }\n\n internal fun nextChar(): Char {\n if (pos >= format.length) invalidFormat(\"unexpected end of string inside format specification\")\n return format[pos++]\n }\n\n internal fun invalidFormat(reason: String): Nothing {\n throw IllegalArgumentException(\"bad format: $reason at ofset ${pos - 1} of \\\"$format\\\"\")\n }\n\n override fun toString() = result.toString()\n\n internal fun getNumber(index: Int): Number = notNullArg(index)\n\n internal fun getText(index: Int) = args[index]!!.toString()\n\n internal fun getCharacter(index: Int): Char = notNullArg(index)\n\n internal fun specificationDone(text: String) {\n result.append(text)\n specStart = -1\n }\n\n fun getLocalDateTime(index: Int): LocalDateTime {\n val t = notNullArg(index)\n return when(t) {\n is Instant -> t.toLocalDateTime(TimeZone.currentSystemDefault())\n is LocalDateTime -> t\n is LocalDate -> t.atTime(0,0,0)\n else -> convertToInstant(t).toLocalDateTime(TimeZone.currentSystemDefault())\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun notNullArg(index: Int) = args[index]!! as T\n\n fun pushbackArgumentIndex() { currentIndex-- }\n}\n\nfun String.format(vararg args: Any?): String = StringFormat(this, args).process().toString()\n\nexpect fun convertToInstant(t: Any): Instant","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\nimport earth.worldwind.util.glu.error.Error\nimport earth.worldwind.util.glu.tessellator.GLUtessellatorImpl\n\n/**\n * Provides access to the OpenGL Utility Library (GLU). This library\n * provides standard methods for setting up view volumes, building\n * mipmaps and performing other common operations. The GLU NURBS\n * routines are not currently exposed.\n *

\n * Notes from the Reference Implementation for this class:\n * Thanks to the contributions of many individuals, this class is a\n * pure Java port of SGI's original C sources. All of the projection,\n * mipmap, scaling, and tessellation routines that are exposed are\n * compatible with the GLU 1.3 specification. The GLU NURBS routines\n * are not currently exposed.\n */\nobject GLU {\n fun gluErrorString(errorCode: Int) = Error.gluErrorString(errorCode)\n /**\n * **gluNewTess** creates and returns a new tessellation object. This\n * object must be referred to when calling tesselation methods. A return\n * value of null means that there was not enough memeory to allocate the\n * object.\n *\n * @return A new tessellation object.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluDeleteTess gluDeleteTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluNewTess() = GLUtessellatorImpl.gluNewTess()\n\n /**\n * **gluDeleteTess** destroys the indicated tessellation object (which was\n * created with [gluNewTess][.gluNewTess]).\n *\n * @param tessellator\n * Specifies the tessellation object to destroy.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluDeleteTess(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluDeleteTess()\n }\n\n /**\n * **gluTessProperty** is used to control properites stored in a\n * tessellation object. These properties affect the way that the polygons are\n * interpreted and rendered. The legal value for *which* are as\n * follows:\n *
    \n *
  • **GLU_TESS_WINDING_RULE**\n *

    \n * Determines which parts of the polygon are on the \"interior\".\n * *value* may be set to one of\n *

    **GLU_TESS_WINDING_ODD**,\n *

    **GLU_TESS_WINDING_NONZERO**,\n *

    **GLU_TESS_WINDING_POSITIVE**, or\n *

    **GLU_TESS_WINDING_NEGATIVE**, or\n *

    **GLU_TESS_WINDING_ABS_GEQ_TWO**.\n *

    \n * To understand how the winding rule works, consider that the input\n * contours partition the plane into regions. The winding rule determines\n * which of these regions are inside the polygon.\n *

    \n * For a single contour C, the winding number of a point x is simply the\n * signed number of revolutions we make around x as we travel once around C\n * (where CCW is positive). When there are several contours, the individual\n * winding numbers are summed. This procedure associates a signed integer\n * value with each point x in the plane. Note that the winding number is\n * the same for all points in a single region.\n *

    \n * The winding rule classifies a region as \"inside\" if its winding number\n * belongs to the chosen category (odd, nonzero, positive, negative, or\n * absolute value of at least two). The previous GLU tessellator (prior to\n * GLU 1.2) used the \"odd\" rule. The \"nonzero\" rule is another common way\n * to define the interior. The other three rules are useful for polygon CSG\n * operations.\n
  • *\n *
  • **GLU_TESS_BOUNDARY_ONLY**\n *

    \n * Is a boolean value (\"value\" should be set to GL_TRUE or GL_FALSE). When\n * set to GL_TRUE, a set of closed contours separating the polygon interior\n * and exterior are returned instead of a tessellation. Exterior contours\n * are oriented CCW with respect to the normal; interior contours are\n * oriented CW. The **GLU_TESS_BEGIN** and **GLU_TESS_BEGIN_DATA**\n * callbacks use the type GL_LINE_LOOP for each contour.\n
  • *\n *
  • **GLU_TESS_TOLERANCE**\n *

    \n * Specifies a tolerance for merging features to reduce the size of the\n * output. For example, two vertices that are very close to each other\n * might be replaced by a single vertex. The tolerance is multiplied by the\n * largest coordinate magnitude of any input vertex; this specifies the\n * maximum distance that any feature can move as the result of a single\n * merge operation. If a single feature takes part in several merge\n * operations, the toal distance moved could be larger.\n *

    \n * Feature merging is completely optional; the tolerance is only a hint.\n * The implementation is free to merge in some cases and not in others, or\n * to never merge features at all. The initial tolerance is 0.\n *

    \n * The current implementation merges vertices only if they are exactly\n * coincident, regardless of the current tolerance. A vertex is spliced\n * into an edge only if the implementation is unable to distinguish which\n * side of the edge the vertex lies on. Two edges are merged only when both\n * endpoints are identical.\n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object created with\n * [gluNewTess][.gluNewTess]\n * @param which\n * Specifies the property to be set. Valid values are\n * **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARDY_ONLY**,\n * **GLU_TESS_TOLERANCE**.\n * @param value\n * Specifices the value of the indicated property.\n *\n * @see .gluGetTessProperty gluGetTessProperty\n *\n * @see .gluNewTess gluNewTess\n */\n fun gluTessProperty(tessellator: GLUtessellator, which: Int, value: Double) {\n (tessellator as GLUtessellatorImpl).gluTessProperty(which, value)\n }\n\n /**\n * **gluGetTessProperty** retrieves properties stored in a tessellation\n * object. These properties affect the way that tessellation objects are\n * interpreted and rendered. See the\n * [gluTessProperty][.gluTessProperty] reference\n * page for information about the properties and what they do.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the property whose value is to be fetched. Valid values\n * are **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARY_ONLY**,\n * and **GLU_TESS_TOLERANCES**.\n * @param value\n * Specifices an array into which the value of the named property is\n * written.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessProperty gluTessProperty\n */\n fun gluGetTessProperty(\n tessellator: GLUtessellator, which: Int, value: DoubleArray, value_offset: Int\n ) {\n (tessellator as GLUtessellatorImpl).gluGetTessProperty(which, value, value_offset)\n }\n\n /**\n * **gluTessNormal** describes a normal for a polygon that the program is\n * defining. All input data will be projected onto a plane perpendicular to\n * the one of the three coordinate axes before tessellation and all output\n * triangles will be oriented CCW with repsect to the normal (CW orientation\n * can be obtained by reversing the sign of the supplied normal). For\n * example, if you know that all polygons lie in the x-y plane, call\n * **gluTessNormal**(tess, 0.0, 0.0, 0.0) before rendering any polygons.\n *

\n * If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal\n * is determined as follows. The direction of the normal, up to its sign, is\n * found by fitting a plane to the vertices, without regard to how the\n * vertices are connected. It is expected that the input data lies\n * approximately in the plane; otherwise, projection perpendicular to one of\n * the three coordinate axes may substantially change the geometry. The sign\n * of the normal is chosen so that the sum of the signed areas of all input\n * contours is nonnegative (where a CCW contour has positive area).\n *

\n * The supplied normal persists until it is changed by another call to\n * **gluTessNormal**.\n *\n * @param tessellator\n * Specifies the tessellation object (created by\n * [gluNewTess][.gluNewTess]).\n * @param x\n * Specifies the first component of the normal.\n * @param y\n * Specifies the second component of the normal.\n * @param z\n * Specifies the third component of the normal.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessNormal(tessellator: GLUtessellator, x: Double, y: Double, z: Double) {\n (tessellator as GLUtessellatorImpl).gluTessNormal(x, y, z)\n }\n\n /**\n * **gluTessCallback** is used to indicate a callback to be used by a\n * tessellation object. If the specified callback is already defined, then it\n * is replaced. If *aCallback* is null, then the existing callback\n * becomes undefined.\n *

\n * These callbacks are used by the tessellation object to describe how a\n * polygon specified by the user is broken into triangles. Note that there are\n * two versions of each callback: one with user-specified polygon data and one\n * without. If both versions of a particular callback are specified, then the\n * callback with user-specified polygon data will be used. Note that the\n * polygonData parameter used by some of the methods is a copy of the\n * reference that was specified when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The legal callbacks are as follows:\n *
    \n *
  • **GLU_TESS_BEGIN**\n *

    \n * The begin callback is invoked like\n * glBegin to indicate the start of a (triangle) primitive. The method\n * takes a single argument of type int. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_FALSE**, then\n * the argument is set to either **GL_TRIANGLE_FAN**,\n * **GL_TRIANGLE_STRIP**, or **GL_TRIANGLES**. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_TRUE**, then the\n * argument will be set to **GL_LINE_LOOP**. The method prototype for\n * this callback is:\n *
    void begin(int type);
    \n
  • *\n *
  • **GLU_TESS_BEGIN_DATA**\n *

    \n * The same as the **GLU_TESS_BEGIN** callback except\n * that it takes an additional reference argument. This reference is\n * identical to the opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void beginData(int type, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG**\n *

    \n * The edge flag callback is similar to\n * glEdgeFlag. The method takes\n * a single boolean boundaryEdge that indicates which edges lie on the\n * polygon boundary. If the boundaryEdge is **GL_TRUE**, then each vertex\n * that follows begins an edge that lies on the polygon boundary, that is,\n * an edge that separates an interior region from an exterior one. If the\n * boundaryEdge is **GL_FALSE**, then each vertex that follows begins an\n * edge that lies in the polygon interior. The edge flag callback (if\n * defined) is invoked before the first vertex callback.\n *

    \n * Since triangle fans and triangle strips do not support edge flags, the\n * begin callback is not called with **GL_TRIANGLE_FAN** or\n * **GL_TRIANGLE_STRIP** if a non-null edge flag callback is provided.\n * (If the callback is initialized to null, there is no impact on\n * performance). Instead, the fans and strips are converted to independent\n * triangles. The method prototype for this callback is:\n *
    void edgeFlag(boolean boundaryEdge);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG_DATA**\n *

    \n * The same as the **GLU_TESS_EDGE_FLAG** callback except that it takes\n * an additional reference argument. This reference is identical to the\n * opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void edgeFlagData(boolean boundaryEdge, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX**\n *

    \n * The vertex callback is invoked between the begin and end callbacks. It is\n * similar to glVertex3f, and it\n * defines the vertices of the triangles created by the tessellation\n * process. The method takes a reference as its only argument. This\n * reference is identical to the opaque reference provided by the user when\n * the vertex was described (see\n * [gluTessVertex][.gluTessVertex]). The method\n * prototype for this callback is:\n *
    void vertex(Object vertexData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX_DATA**\n *

    \n * The same as the **GLU_TESS_VERTEX** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void vertexData(Object vertexData, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_END**\n *

    \n * The end callback serves the same purpose as\n * glEnd. It indicates the end of a\n * primitive and it takes no arguments. The method prototype for this\n * callback is:\n *
    void end();
    \n
  • *\n *
  • **GLU_TESS_END_DATA**\n *

    \n * The same as the **GLU_TESS_END** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void endData(Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_COMBINE**\n *

    \n * The combine callback is called to create a new vertex when the\n * tessellation detects an intersection, or wishes to merge features. The\n * method takes four arguments: an array of three elements each of type\n * double, an array of four references, an array of four elements each of\n * type float, and a reference to a reference. The prototype is:\n *
    void combine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData);
    \n * The vertex is defined as a linear combination of up to four existing\n * vertices, stored in *data*. The coefficients of the linear\n * combination are given by *weight*; these weights always add up to 1.\n * All vertex pointers are valid even when some of the weights are 0.\n * *coords* gives the location of the new vertex.\n *

    \n * The user must allocate another vertex, interpolate parameters using\n * *data* and *weight*, and return the new vertex pointer\n * in *outData*. This handle is supplied during rendering callbacks.\n * The user is responsible for freeing the memory some time after\n * [gluTessEndPolygon][.gluTessEndPolygon] is\n * called.\n *

    \n * For example, if the polygon lies in an arbitrary plane in 3-space, and a\n * color is associated with each vertex, the **GLU_TESS_COMBINE**\n * callback might look like this:\n *
    \n     * void myCombine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData)\n     * {\n     * MyVertex newVertex = new MyVertex();\n     *\n     * newVertex.x = coords[0];\n     * newVertex.y = coords[1];\n     * newVertex.z = coords[2];\n     * newVertex.r = weight[0]*data[0].r +\n     * weight[1]*data[1].r +\n     * weight[2]*data[2].r +\n     * weight[3]*data[3].r;\n     * newVertex.g = weight[0]*data[0].g +\n     * weight[1]*data[1].g +\n     * weight[2]*data[2].g +\n     * weight[3]*data[3].g;\n     * newVertex.b = weight[0]*data[0].b +\n     * weight[1]*data[1].b +\n     * weight[2]*data[2].b +\n     * weight[3]*data[3].b;\n     * newVertex.a = weight[0]*data[0].a +\n     * weight[1]*data[1].a +\n     * weight[2]*data[2].a +\n     * weight[3]*data[3].a;\n     * outData = newVertex;\n     * }
    \n * If the tessellation detects an intersection, then the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback (see\n * below) must be defined, and it must write a non-null reference into\n * *outData*. Otherwise the **GLU_TESS_NEED_COMBINE_CALLBACK** error\n * occurs, and no output is generated.\n
  • *\n *
  • **GLU_TESS_COMBINE_DATA**\n *

    \n * The same as the **GLU_TESS_COMBINE** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void combineData(double[] coords, Object[] data,\n     * float[] weight, Object[] outData,\n     * Object polygonData);
    \n *\n
  • *\n *
  • **GLU_TESS_ERROR**\n *

    \n * The error callback is called when an error is encountered. The one\n * argument is of type int; it indicates the specific error that occurred\n * and will be set to one of **GLU_TESS_MISSING_BEGIN_POLYGON**,\n * **GLU_TESS_MISSING_END_POLYGON**,\n * **GLU_TESS_MISSING_BEGIN_CONTOUR**,\n * **GLU_TESS_MISSING_END_CONTOUR**, **GLU_TESS_COORD_TOO_LARGE**,\n * **GLU_TESS_NEED_COMBINE_CALLBACK** or **GLU_OUT_OF_MEMORY**.\n * Character strings describing these errors can be retrieved with the\n * [gluErrorString][.gluErrorString] call. The\n * method prototype for this callback is:\n *
    \n     * void error(int errnum);
    \n * The GLU library will recover from the first four errors by inserting the\n * missing call(s). **GLU_TESS_COORD_TOO_LARGE** indicates that some\n * vertex coordinate exceeded the predefined constant\n * **GLU_TESS_MAX_COORD** in absolute value, and that the value has been\n * clamped. (Coordinate values must be small enough so that two can be\n * multiplied together without overflow.)\n * **GLU_TESS_NEED_COMBINE_CALLBACK** indicates that the tessellation\n * detected an intersection between two edges in the input data, and the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback was not\n * provided. No output is generated. **GLU_OUT_OF_MEMORY** indicates that\n * there is not enough memory so no output is generated.\n
  • *\n *
  • **GLU_TESS_ERROR_DATA**\n *

    \n * The same as the GLU_TESS_ERROR callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void errorData(int errnum, Object polygonData);
    \n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the callback being defined. The following values are\n * valid: **GLU_TESS_BEGIN**, **GLU_TESS_BEGIN_DATA**,\n * **GLU_TESS_EDGE_FLAG**, **GLU_TESS_EDGE_FLAG_DATA**,\n * **GLU_TESS_VERTEX**, **GLU_TESS_VERTEX_DATA**,\n * **GLU_TESS_END**, **GLU_TESS_END_DATA**,\n * **GLU_TESS_COMBINE**, **GLU_TESS_COMBINE_DATA**,\n * **GLU_TESS_ERROR**, and **GLU_TESS_ERROR_DATA**.\n * @param aCallback\n * Specifies the callback object to be called.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluErrorString gluErrorString\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n */\n fun gluTessCallback(\n tessellator: GLUtessellator, which: Int, aCallback: GLUtessellatorCallback?\n ) {\n (tessellator as GLUtessellatorImpl).gluTessCallback(which, aCallback)\n }\n\n /**\n * **gluTessVertex** describes a vertex on a polygon that the program\n * defines. Successive **gluTessVertex** calls describe a closed contour.\n * For example, to describe a quadrilateral **gluTessVertex** should be\n * called four times. **gluTessVertex** can only be called between\n * [gluTessBeginContour][.gluTessBeginContour] and\n * [gluTessEndContour][.gluTessBeginContour].\n *

\n * **data** normally references to a structure containing the vertex\n * location, as well as other per-vertex attributes such as color and normal.\n * This reference is passed back to the user through the\n * **GLU_TESS_VERTEX** or **GLU_TESS_VERTEX_DATA** callback after\n * tessellation (see the [ gluTessCallback][.gluTessCallback] reference page).\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param coords\n * Specifies the coordinates of the vertex.\n * @param data\n * Specifies an opaque reference passed back to the program with the\n * vertex callback (as specified by\n * [gluTessCallback][.gluTessCallback]).\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessVertex(\n tessellator: GLUtessellator, coords: DoubleArray, coords_offset: Int, data: Any\n ) {\n (tessellator as GLUtessellatorImpl).gluTessVertex(coords, coords_offset, data)\n }\n\n /**\n * **gluTessBeginPolygon** and\n * [gluTessEndPolygon][.gluTessEndPolygon] delimit\n * the definition of a convex, concave or self-intersecting polygon. Within\n * each **gluTessBeginPolygon**\n * [gluTessEndPolygon][.gluTessEndPolygon] pair,\n * there must be one or more calls to\n * [gluTessBeginContour][.gluTessBeginContour]/\n * [gluTessEndContour][.gluTessEndContour]. Within\n * each contour, there are zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex], [ gluTessBeginContour][.gluTessBeginContour], and [ gluTessEndContour][.gluTessEndContour] reference pages for more details.\n *

\n * **data ** is a reference to a user-defined data structure. If the\n * appropriate callback(s) are specified (see\n * [gluTessCallback][.gluTessCallback]), then this\n * reference is returned to the callback method(s). Thus, it is a convenient\n * way to store per-polygon information.\n *

\n * Once [gluTessEndPolygon][.gluTessEndPolygon] is\n * called, the polygon is tessellated, and the resulting triangles are\n * described through callbacks. See\n * [gluTessCallback][.gluTessCallback] for\n * descriptions of the callback methods.\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n * @param data\n * Specifies a reference to user polygon data .\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginContour gluTessBeginContour\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginPolygon(tessellator: GLUtessellator, data: Any) {\n (tessellator as GLUtessellatorImpl).gluTessBeginPolygon(data)\n }\n\n /**\n * **gluTessBeginContour** and\n * [gluTessEndContour][.gluTessEndContour] delimit\n * the definition of a polygon contour. Within each\n * **gluTessBeginContour**\n * [gluTessEndContour][.gluTessEndContour] pair,\n * there can be zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex] reference page for more details. **gluTessBeginContour**\n * can only be called between\n * [gluTessBeginPolygon][.gluTessBeginPolygon] and\n * [gluTessEndPolygon][.gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessBeginContour()\n }\n\n /**\n * **gluTessEndContour** and\n * [gluTessBeginContour][gluTessBeginContour]\n * delimit the definition of a polygon contour. Within each\n * [gluTessBeginContour][gluTessBeginContour]/\n * **gluTessEndContour** pair, there can be zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex] reference page for more details.\n * [gluTessBeginContour][gluTessBeginContour] can\n * only be called between [ gluTessBeginPolygon][gluTessBeginPolygon] and\n * [gluTessEndPolygon][gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessEndContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndContour()\n }\n\n /**\n * **gluTessEndPolygon** and\n * [gluTessBeginPolygon][gluTessBeginPolygon]\n * delimit the definition of a convex, concave or self-intersecting polygon.\n * Within each [ gluTessBeginPolygon][gluTessBeginPolygon]/ **gluTessEndPolygon** pair, there must be one or\n * more calls to [ gluTessBeginContour][gluTessBeginContour]/[ gluTessEndContour][gluTessEndContour]. Within each contour, there are zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex], [ gluTessBeginContour][gluTessBeginContour] and [ gluTessEndContour][gluTessEndContour] reference pages for more details.\n *

\n * Once **gluTessEndPolygon** is called, the polygon is tessellated, and\n * the resulting triangles are described through callbacks. See\n * [gluTessCallback][gluTessCallback] for\n * descriptions of the callback functions.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n */\n fun gluTessEndPolygon(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndPolygon()\n }\n\n //----------------------------------------------------------------------\n // GLU constants\n // Boolean\n const val GLU_FALSE = 0\n const val GLU_TRUE = 1\n\n // String Name\n const val GLU_VERSION = 100800\n const val GLU_EXTENSIONS = 100801\n\n // Extensions\n const val versionString = \"1.3\"\n const val extensionString = \"GLU_EXT_object_space_tess \"\n\n // ErrorCode\n const val GLU_INVALID_ENUM = 100900\n const val GLU_INVALID_VALUE = 100901\n const val GLU_OUT_OF_MEMORY = 100902\n const val GLU_INVALID_OPERATION = 100904\n\n // TessCallback\n const val GLU_TESS_BEGIN = 100100\n const val GLU_TESS_VERTEX = 100101\n const val GLU_TESS_END = 100102\n const val GLU_TESS_ERROR = 100103\n const val GLU_TESS_EDGE_FLAG = 100104\n const val GLU_TESS_COMBINE = 100105\n const val GLU_TESS_BEGIN_DATA = 100106\n const val GLU_TESS_VERTEX_DATA = 100107\n const val GLU_TESS_END_DATA = 100108\n const val GLU_TESS_ERROR_DATA = 100109\n const val GLU_TESS_EDGE_FLAG_DATA = 100110\n const val GLU_TESS_COMBINE_DATA = 100111\n\n // TessContour\n const val GLU_CW = 100120\n const val GLU_CCW = 100121\n const val GLU_INTERIOR = 100122\n const val GLU_EXTERIOR = 100123\n const val GLU_UNKNOWN = 100124\n\n // TessProperty\n const val GLU_TESS_WINDING_RULE = 100140\n const val GLU_TESS_BOUNDARY_ONLY = 100141\n const val GLU_TESS_TOLERANCE = 100142\n\n // TessError\n const val GLU_TESS_ERROR1 = 100151\n const val GLU_TESS_ERROR2 = 100152\n const val GLU_TESS_ERROR3 = 100153\n const val GLU_TESS_ERROR4 = 100154\n const val GLU_TESS_ERROR5 = 100155\n const val GLU_TESS_ERROR6 = 100156\n const val GLU_TESS_ERROR7 = 100157\n const val GLU_TESS_ERROR8 = 100158\n const val GLU_TESS_MISSING_BEGIN_POLYGON = 100151\n const val GLU_TESS_MISSING_BEGIN_CONTOUR = 100152\n const val GLU_TESS_MISSING_END_POLYGON = 100153\n const val GLU_TESS_MISSING_END_CONTOUR = 100154\n const val GLU_TESS_COORD_TOO_LARGE = 100155\n const val GLU_TESS_NEED_COMBINE_CALLBACK = 100156\n\n // TessWinding\n const val GLU_TESS_WINDING_ODD = 100130\n const val GLU_TESS_WINDING_NONZERO = 100131\n const val GLU_TESS_WINDING_POSITIVE = 100132\n const val GLU_TESS_WINDING_NEGATIVE = 100133\n const val GLU_TESS_WINDING_ABS_GEQ_TWO = 100134\n const val GLU_TESS_MAX_COORD = 1.0e150\n}\n","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\n/**\n * The **GLUtessellatorCallbackAdapter** provides a default implementation of\n * [GLUtessellatorCallback]\n * with empty callback methods. This class can be extended to provide user\n * defined callback methods.\n *\n * @author Eric Veach, July 1994\n * @author Java Port: Pepijn Van Eechhoudt, July 2003\n * @author Java Port: Nathan Parker Burg, August 2003\n * @author Kotlin Port: Eugene Maksymenko, April 2022\n */\nopen class GLUtessellatorCallbackAdapter : GLUtessellatorCallback {\n\toverride fun begin(type: Int) {}\n\toverride fun edgeFlag(boundaryEdge: Boolean) {}\n\toverride fun vertex(vertexData: Any) {}\n\toverride fun end() {}\n\toverride fun error(errnum: Int) {}\n\toverride fun combine(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {}\n\n\toverride fun beginData(type: Int, polygonData: Any) {}\n\toverride fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) {}\n\n\toverride fun vertexData(vertexData: Any, polygonData: Any) {}\n\toverride fun endData(polygonData: Any) {}\n\toverride fun errorData(errnum: Int, polygonData: Any) {}\n\toverride fun combineData(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any) {}\n}","/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n * \n * http://oss.sgi.com/projects/FreeB\n * \n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n * \n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n * \n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n */\npackage earth.worldwind.util.glu.error\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.jvm.JvmStatic\n\nobject Error {\n\tprivate val gluErrorStrings = arrayOf(\n\t\t\"invalid enumerant\",\n\t\t\"invalid value\",\n\t\t\"out of memory\",\n\t\t\"\",\n\t\t\"invalid operation\"\n\t)\n\n\t@JvmStatic\n\tfun gluErrorString(errorCode: Int): String? {\n\t\tif (errorCode == 0) return \"no error\"\n\t\tif (errorCode >= GLU.GLU_INVALID_ENUM && errorCode <= GLU.GLU_INVALID_OPERATION)\n\t\t\treturn gluErrorStrings[errorCode - GLU.GLU_INVALID_ENUM]\n\t\treturn if (errorCode >= GLU.GLU_TESS_ERROR1 && errorCode <= GLU.GLU_TESS_ERROR8)\n\t\t\tgluErrorStrings[errorCode - (GLU.GLU_TESS_ERROR1 - 1)] else null\n\t}\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal class ActiveRegion(\n /**\n * upper edge, directed right to left\n */\n var eUp: GLUhalfEdge\n) {\n /**\n * dictionary node corresponding to eUp\n */\n var nodeUp: DictNode? = null\n /**\n * used to determine which regions are inside the polygon\n */\n var windingNumber = 0\n /**\n * is this region inside the polygon?\n */\n var inside = false\n /**\n * marks fake edges at t = +/-infinity\n */\n var sentinel = false\n /**\n * marks regions where the upper or lower\n * edge has changed, but we haven't checked\n * whether they intersect yet\n */\n var dirty = false\n /**\n * marks temporary edges introduced when\n * we process a \"right vertex\" (one without\n * any edges leaving to the right)\n */\n var fixUpperEdge = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass CachedVertex {\n val coords = DoubleArray(3)\n var data: Any? = null\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass Dict private constructor(\n var head: DictNode,\n var frame: Any,\n var leq: DictLeq\n) {\n\n interface DictLeq {\n fun leq(frame: Any, key1: Any?, key2: Any?): Boolean\n }\n\n companion object {\n fun dictNewDict(frame: Any, leq: DictLeq): Dict {\n return Dict(DictNode(), frame, leq)\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun dictDeleteDict(dict: Dict) {\n// Memory will clear automatically\n// dict.head = null\n// dict.frame = null\n// dict.leq = null\n }\n\n fun dictInsert(dict: Dict, key: Any?): DictNode {\n return dictInsertBefore(dict, dict.head, key)\n }\n\n fun dictInsertBefore(dict: Dict, node: DictNode, key: Any?): DictNode {\n var n = node\n do {\n n = n.prev\n } while (n.key != null && !dict.leq.leq(dict.frame, n.key, key))\n val newNode = DictNode(key).apply {\n prev = n\n next = n.next\n }\n n.next.prev = newNode\n n.next = newNode\n return newNode\n }\n\n fun dictKey(aNode: DictNode) = aNode.key\n\n fun dictSucc(aNode: DictNode) = aNode.next\n\n fun dictPred(aNode: DictNode) = aNode.prev\n\n fun dictMin(aDict: Dict) = aDict.head.next\n\n fun dictMax(aDict: Dict) = aDict.head.prev\n\n fun dictDelete(node: DictNode) {\n node.next.prev = node.prev\n node.prev.next = node.next\n }\n\n fun dictSearch(dict: Dict, key: Any?): DictNode {\n var node = dict.head\n do {\n node = node.next\n } while (node.key != null && !dict.leq.leq(dict.frame, key, node.key))\n return node\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass DictNode(\n var key: Any? = null,\n) {\n var next = this\n var prev = this\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUface {\n /**\n * next face (never NULL)\n */\n var next: GLUface? = null\n /**\n * previous face (never NULL)\n */\n var prev: GLUface? = null\n /**\n * a half edge with this left face\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * room for client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * \"stack\" for conversion to strips\n */\n var trail: GLUface? = null\n /**\n * flag for conversion to strips\n */\n var marked = false\n /**\n * this face is in the polygon interior\n */\n var inside = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUhalfEdge(val first: Boolean) {\n /**\n * doubly-linked list (prev==Sym->next)\n */\n var next: GLUhalfEdge? = null\n /**\n * same edge, opposite direction\n */\n var sym: GLUhalfEdge? = null\n /**\n * next edge CCW around origin\n */\n var oNext: GLUhalfEdge? = null\n /**\n * next edge CCW around left face\n */\n var lNext: GLUhalfEdge? = null\n /**\n * origin vertex (Overtex too long)\n */\n var org: GLUvertex? = null\n /**\n * left face\n */\n var lFace: GLUface? = null\n\n /* Internal data (keep hidden) */\n /**\n * a region with this upper edge (sweep.c)\n */\n internal var activeRegion: ActiveRegion? = null\n /**\n * change in winding number when crossing\n */\n var winding = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUmesh {\n /**\n * dummy header for vertex list\n */\n val vHead = GLUvertex()\n /**\n * dummy header for face list\n */\n val fHead = GLUface()\n /**\n * dummy header for edge list\n */\n internal val eHead = GLUhalfEdge(true)\n /**\n * and its symmetric counterpart\n */\n internal val eHeadSym = GLUhalfEdge(false)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport earth.worldwind.util.glu.GLUtessellatorCallback\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\n\nclass GLUtessellatorImpl private constructor() : GLUtessellator {\n /**\n * what begin/end calls have we seen?\n */\n private var state = TessState.T_DORMANT\n /**\n * lastEdge->Org is the most recent vertex\n */\n private var lastEdge: GLUhalfEdge? = null\n /**\n * stores the input contours, and eventually the tessellation itself\n */\n var mesh: GLUmesh? = null\n\n /*** state needed for projecting onto the sweep plane */\n /**\n * user-specified normal (if provided)\n */\n val normal = DoubleArray(3)\n /**\n * unit vector in s-direction (debugging)\n */\n val sUnit = DoubleArray(3)\n /**\n * unit vector in t-direction (debugging)\n */\n val tUnit = DoubleArray(3)\n\n /*** state needed for the line sweep */\n /**\n * tolerance for merging features\n */\n private var relTolerance = GLU_TESS_DEFAULT_TOLERANCE\n /**\n * rule for determining polygon interior\n */\n var windingRule = GLU.GLU_TESS_WINDING_ODD\n /**\n * fatal error: needed combine callback\n */\n var fatalError = false\n /**\n * edge dictionary for sweep line\n */\n var dict: Dict? = null\n /**\n * priority queue of vertex events\n */\n var pq: PriorityQ? = null\n /**\n * current sweep event being processed\n */\n var event: GLUvertex? = null\n\n /*** state needed for rendering callbacks (see render.c) */\n /**\n * mark boundary edges (use EdgeFlag)\n */\n var flagBoundary = false\n /**\n * Extract contours, not triangles\n */\n var boundaryOnly = false\n /**\n * list of triangles which could not be rendered as strips or fans\n */\n var lonelyTriList: GLUface? = null\n /*** state needed to cache single-contour polygons for renderCache() */\n /**\n * empty cache on next vertex() call\n */\n private var flushCacheOnNextVertex = false\n /**\n * number of cached vertices\n */\n var cacheCount = 0\n /**\n * the vertex data\n */\n val cache = Array(TESS_MAX_CACHE) { CachedVertex() }\n\n /*** rendering callbacks that also pass polygon data */\n /**\n * client data for current polygon\n */\n private var polygonData: Any? = null\n private var callBegin: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlag: GLUtessellatorCallback = NULL_CB\n private var callVertex: GLUtessellatorCallback = NULL_CB\n private var callEnd: GLUtessellatorCallback = NULL_CB\n\n //private var callMesh: GLUtessellatorCallback = NULL_CB\n private var callError: GLUtessellatorCallback = NULL_CB\n private var callCombine: GLUtessellatorCallback = NULL_CB\n private var callBeginData: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlagData: GLUtessellatorCallback = NULL_CB\n private var callVertexData: GLUtessellatorCallback = NULL_CB\n private var callEndData: GLUtessellatorCallback = NULL_CB\n\n //private GLUtessellatorCallback callMeshData;\n private var callErrorData: GLUtessellatorCallback = NULL_CB\n private var callCombineData: GLUtessellatorCallback = NULL_CB\n\n private fun makeDormant() {\n /**\n * Return the tessellator to its original dormant state.\n */\n mesh?.let { Mesh.glMeshDeleteMesh(it) }\n state = TessState.T_DORMANT\n lastEdge = null\n mesh = null\n }\n\n private fun requireState(newState: Int) {\n if (state != newState) gotoState(newState)\n }\n\n private fun gotoState(newState: Int) {\n while (state != newState) {\n /**\n * We change the current state one level at a time, to get to the desired state.\n */\n if (state < newState) {\n if (state == TessState.T_DORMANT) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_POLYGON)\n gluTessBeginPolygon(null)\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_CONTOUR)\n gluTessBeginContour()\n }\n } else {\n if (state == TessState.T_IN_CONTOUR) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_CONTOUR)\n gluTessEndContour()\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_POLYGON)\n /* gluTessEndPolygon( tess ) is too much work! */\n makeDormant()\n }\n }\n }\n }\n\n fun gluDeleteTess() {\n requireState(TessState.T_DORMANT)\n }\n\n fun gluTessProperty(which: Int, value: Double) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> {\n if (value < 0.0 || value > 1.0) callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n else relTolerance = value\n }\n GLU.GLU_TESS_WINDING_RULE -> {\n val windingRule = value.toInt()\n if (windingRule.toDouble() != value) {\n /* not an integer */\n callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n } else {\n when (windingRule) {\n GLU.GLU_TESS_WINDING_ODD,\n GLU.GLU_TESS_WINDING_NONZERO,\n GLU.GLU_TESS_WINDING_POSITIVE,\n GLU.GLU_TESS_WINDING_NEGATIVE,\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> this.windingRule = windingRule\n else -> callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n }\n }\n }\n GLU.GLU_TESS_BOUNDARY_ONLY -> boundaryOnly = value != 0.0\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n /**\n * Returns tessellator property\n */\n fun gluGetTessProperty(which: Int, value: DoubleArray, value_offset: Int) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> value[value_offset] = relTolerance\n GLU.GLU_TESS_WINDING_RULE -> value[value_offset] = windingRule.toDouble()\n GLU.GLU_TESS_BOUNDARY_ONLY -> value[value_offset] = if (boundaryOnly) 1.0 else 0.0\n else -> {\n value[value_offset] = 0.0\n callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n }\n\n fun gluTessNormal(x: Double, y: Double, z: Double) {\n normal[0] = x\n normal[1] = y\n normal[2] = z\n }\n\n fun gluTessCallback(which: Int, aCallback: GLUtessellatorCallback?) {\n when (which) {\n GLU.GLU_TESS_BEGIN -> callBegin = aCallback ?: NULL_CB\n GLU.GLU_TESS_BEGIN_DATA -> callBeginData = aCallback ?: NULL_CB\n GLU.GLU_TESS_EDGE_FLAG -> {\n callEdgeFlag = aCallback ?: NULL_CB\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_EDGE_FLAG_DATA -> {\n run {\n callBegin = aCallback ?: NULL_CB\n callEdgeFlagData = callBegin\n }\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_VERTEX -> callVertex = aCallback ?: NULL_CB\n GLU.GLU_TESS_VERTEX_DATA -> callVertexData = aCallback ?: NULL_CB\n GLU.GLU_TESS_END -> callEnd = aCallback ?: NULL_CB\n GLU.GLU_TESS_END_DATA -> callEndData = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR -> callError = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR_DATA -> callErrorData = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE -> callCombine = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE_DATA -> callCombineData = aCallback ?: NULL_CB\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n private fun addVertex(coords: DoubleArray, vertexData: Any?): Boolean {\n var e = lastEdge\n if (e == null) {\n /* Make a self-loop (one vertex, one edge). */\n e = Mesh.glMeshMakeEdge(mesh!!)\n if (!Mesh.glMeshSplice(e, e.sym!!)) return false\n } else {\n /**\n * Create a new vertex and edge which immediately follow e\n * in the ordering around the left face.\n */\n Mesh.glMeshSplitEdge(e)\n e = e.lNext!!\n }\n\n /* The new vertex is now e.Org. */\n e.org?.data = vertexData\n e.org!!.coords[0] = coords[0]\n e.org!!.coords[1] = coords[1]\n e.org!!.coords[2] = coords[2]\n\n /**\n * The winding of an edge says how the winding number changes as we\n * cross from the edge''s right face to its left face. We add the\n * vertices in such an order that a CCW contour will add +1 to\n * the winding number of the region inside the contour.\n */\n e.winding = 1\n e.sym?.winding = -1\n lastEdge = e\n return true\n }\n\n private fun cacheVertex(coords: DoubleArray, vertexData: Any?) {\n val v = cache[cacheCount]\n v.data = vertexData\n v.coords[0] = coords[0]\n v.coords[1] = coords[1]\n v.coords[2] = coords[2]\n ++cacheCount\n }\n\n private fun flushCache(): Boolean {\n mesh = Mesh.glMeshNewMesh()\n for (i in 0 until cacheCount) {\n val vertex = cache[i]\n if (!addVertex(vertex.coords, vertex.data)) return false\n }\n cacheCount = 0\n flushCacheOnNextVertex = false\n return true\n }\n\n fun gluTessVertex(coords: DoubleArray, coords_offset: Int, vertexData: Any?) {\n var tooLarge = false\n val clamped = DoubleArray(3)\n requireState(TessState.T_IN_CONTOUR)\n if (flushCacheOnNextVertex) {\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n lastEdge = null\n }\n var i = 0\n while (i < 3) {\n var x = coords[i + coords_offset]\n if (x < -GLU.GLU_TESS_MAX_COORD) {\n x = -GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n if (x > GLU.GLU_TESS_MAX_COORD) {\n x = GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n clamped[i] = x\n ++i\n }\n if (tooLarge) {\n callErrorOrErrorData(GLU.GLU_TESS_COORD_TOO_LARGE)\n }\n if (mesh == null) {\n if (cacheCount < TESS_MAX_CACHE) {\n cacheVertex(clamped, vertexData)\n return\n }\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n }\n if (!addVertex(clamped, vertexData)) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun gluTessBeginPolygon(data: Any?) {\n requireState(TessState.T_DORMANT)\n state = TessState.T_IN_POLYGON\n cacheCount = 0\n flushCacheOnNextVertex = false\n mesh = null\n polygonData = data\n }\n\n fun gluTessBeginContour() {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_IN_CONTOUR\n lastEdge = null\n if (cacheCount > 0) {\n /**\n * Just set a flag so we don't get confused by empty contours\n * -- these can be generated accidentally with the obsolete\n * NextContour() interface.\n */\n flushCacheOnNextVertex = true\n }\n }\n\n fun gluTessEndContour() {\n requireState(TessState.T_IN_CONTOUR)\n state = TessState.T_IN_POLYGON\n }\n\n fun gluTessEndPolygon() {\n try {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_DORMANT\n if (this.mesh == null) {\n if (!flagBoundary /*&& callMesh == NULL_CB*/) {\n /**\n * Try some special code to make the easy cases go quickly\n * (eg. convex polygons). This code does NOT handle multiple contours,\n * intersections, edge flags, and of course it does not generate\n * an explicit mesh either.\n */\n if (Render.glRenderCache(this)) {\n polygonData = null\n return\n }\n }\n if (!flushCache()) throw RuntimeException() /* could've used a label*/\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n Normal.glProjectPolygon(this)\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by windingRule.\n * Each interior region is guaranteed be monotone.\n */\n if (!Sweep.glComputeInterior(this)) {\n throw RuntimeException() /* could've used a label */\n }\n val mesh = this.mesh!!\n if (!fatalError) {\n /**\n * If the user wants only the boundary contours, we throw away all edges\n * except those which separate the interior from the exterior.\n * Otherwise we tessellate all the regions marked \"inside\".\n */\n val rc = if (boundaryOnly) {\n TessMono.glMeshSetWindingNumber(mesh, 1, true)\n } else {\n TessMono.glMeshTessellateInterior(mesh)\n }\n if (!rc) throw RuntimeException() /* could've used a label */\n Mesh.glMeshCheckMesh(mesh)\n if (callBegin !== NULL_CB || callEnd !== NULL_CB || callVertex !== NULL_CB || callEdgeFlag !== NULL_CB || callBeginData !== NULL_CB || callEndData !== NULL_CB || callVertexData !== NULL_CB || callEdgeFlagData !== NULL_CB) {\n if (boundaryOnly) {\n Render.glRenderBoundary(this, mesh) /* output boundary contours */\n } else {\n Render.glRenderMesh(this, mesh) /* output strips and fans */\n }\n }\n // if (callMesh != NULL_CB) {\n// /**\n// * Throw away the exterior faces, so that all faces are interior.\n// * This way the user doesn't have to check the \"inside\" flag,\n// * and we don't need to even reveal its existence. It also leaves\n// * the freedom for an implementation to not generate the exterior\n// * faces in the first place.\n// */\n// TessMono.__gl_meshDiscardExterior(mesh);\n// callMesh.mesh(mesh);\t\t/* user wants the mesh itself */\n// mesh = null;\n// polygonData = null;\n// return;\n// }\n }\n Mesh.glMeshDeleteMesh(mesh)\n polygonData = null\n } catch (e: Exception) {\n e.printStackTrace()\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun callBeginOrBeginData(a: Int) {\n if (callBeginData !== NULL_CB) callBeginData.beginData(a, polygonData!!) else callBegin.begin(a)\n }\n\n fun callVertexOrVertexData(a: Any) {\n if (callVertexData !== NULL_CB) callVertexData.vertexData(a, polygonData!!) else callVertex.vertex(a)\n }\n\n fun callEdgeFlagOrEdgeFlagData(a: Boolean) {\n if (callEdgeFlagData !== NULL_CB) callEdgeFlagData.edgeFlagData(a, polygonData!!) else callEdgeFlag.edgeFlag(a)\n }\n\n fun callEndOrEndData() {\n if (callEndData !== NULL_CB) callEndData.endData(polygonData!!) else callEnd.end()\n }\n\n fun callCombineOrCombineData(\n coords: DoubleArray,\n vertexData: Array,\n weights: FloatArray,\n outData: Array\n ) {\n if (callCombineData !== NULL_CB) callCombineData.combineData(coords, vertexData, weights, outData, polygonData!!)\n else callCombine.combine(coords, vertexData, weights, outData)\n }\n\n fun callErrorOrErrorData(a: Int) {\n if (callErrorData !== NULL_CB) callErrorData.errorData(a, polygonData!!) else callError.error(a)\n }\n\n companion object {\n const val TESS_MAX_CACHE = 100\n private const val GLU_TESS_DEFAULT_TOLERANCE = 0.0\n\n //private static final int GLU_TESS_MESH = 100112;\t/* void (*)(GLUmesh *mesh)\t */\n private val NULL_CB = GLUtessellatorCallbackAdapter()\n\n fun gluNewTess(): GLUtessellator = GLUtessellatorImpl()\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUvertex {\n /**\n * next vertex (never NULL)\n */\n var next: GLUvertex? = null\n /**\n * previous vertex (never NULL)\n */\n var prev: GLUvertex? = null\n /**\n * a half-edge with this origin\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * vertex location in 3D\n */\n val coords = DoubleArray(3)\n var s = 0.0\n /**\n * projection onto the sweep plane\n */\n var t = 0.0\n /**\n * to allow deletion from priority queue\n */\n var pqHandle = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Geom {\n /* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->t = 0 and\n * let r be the negated result (this evaluates (uw)(v->s)), then\n * r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n */\n fun edgeEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.t - u.t + (u.t - w.t) * (gapL / (gapL + gapR))\n else v.t - w.t + (w.t - u.t) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n fun edgeSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) (v.t - w.t) * gapL + (v.t - u.t) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * Define versions of EdgeSign, EdgeEval with s and t transposed.\n */\n fun transEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n /* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->s = 0 and\n * let r be the negated result (this evaluates (uw)(v->t)), then\n * r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n */\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.s - u.s + (u.s - w.s) * (gapL / (gapL + gapR))\n else v.s - w.s + (w.s - u.s) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n /**\n * Returns a number whose sign matches TransEval(u,v,w) but which\n * is cheaper to evaluate. Returns > 0, == 0 , or < 0\n * as v is above, on, or below the edge uw.\n */\n fun transSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) (v.s - w.s) * gapL + (v.s - u.s) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * For almost-degenerate situations, the results are not reliable.\n * Unless the floating-point arithmetic can be performed without\n * rounding errors, *any* implementation will give incorrect results\n * on some degenerate inputs, so the client must have some way to\n * handle this situation.\n */\n fun vertCCW(u: GLUvertex, v: GLUvertex, w: GLUvertex) =\n u.s * (v.t - w.t) + v.s * (w.t - u.t) + w.s * (u.t - v.t) >= 0\n\n /**\n * Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n * or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n * this in the rare case that one argument is slightly negative.\n * The implementation is extremely stable numerically.\n * In particular it guarantees that the result r satisfies\n * MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n * even when a and b differ greatly in magnitude.\n */\n fun interpolate(a: Double, x: Double, b: Double, y: Double): Double {\n val a = if (a < 0) 0.0 else a\n val b = if (b < 0) 0.0 else b\n return if (a <= b) {\n if (b == 0.0) (x + y) / 2.0\n else x + (y - x) * (a / (a + b))\n } else y + (x - y) * (b / (a + b))\n }\n\n /**\n * Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n * The computed point is guaranteed to lie in the intersection of the\n * bounding rectangles defined by each edge.\n */\n fun edgeIntersect(\n o1: GLUvertex, d1: GLUvertex, o2: GLUvertex, d2: GLUvertex, v: GLUvertex\n ) {\n var o1 = o1\n var d1 = d1\n var o2 = o2\n var d2 = d2\n\n /**\n * This is certainly not the most efficient way to find the intersection\n * of two line segments, but it is very numerically stable.\n *\n * Strategy: find the two middle vertices in the VertLeq ordering,\n * and interpolate the intersection s-value from these. Then repeat\n * using the TransLeq ordering to find the intersection t-value.\n */\n if (!vertLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!vertLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!vertLeq(o1, o2)) {\n var temp = o1\n o1 = o2\n o2 = temp\n temp = d1\n d1 = d2\n d2 = temp\n }\n if (!vertLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.s = (o2.s + d1.s) / 2.0\n } else if (vertLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = edgeEval(o1, o2, d1)\n var z2 = edgeEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d1.s)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = edgeSign(o1, o2, d1)\n var z2 = -edgeSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d2.s)\n }\n\n /* Now repeat the process for t */\n if (!transLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!transLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!transLeq(o1, o2)) {\n var temp = o2\n o2 = o1\n o1 = temp\n temp = d2\n d2 = d1\n d1 = temp\n }\n if (!transLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.t = (o2.t + d1.t) / 2.0\n } else if (transLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = transEval(o1, o2, d1)\n var z2 = transEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d1.t)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = transSign(o1, o2, d1)\n var z2 = -transSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d2.t)\n }\n }\n\n fun vertEq(u: GLUvertex, v: GLUvertex) = u.s == v.s && u.t == v.t\n\n fun vertLeq(u: GLUvertex, v: GLUvertex) = u.s < v.s || u.s == v.s && u.t <= v.t\n\n /* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n fun transLeq(u: GLUvertex, v: GLUvertex) = u.t < v.t || u.t == v.t && u.s <= v.s\n\n fun edgeGoesLeft(e: GLUhalfEdge) = vertLeq(e.sym?.org!!, e.org!!)\n\n fun edgeGoesRight(e: GLUhalfEdge) = vertLeq(e.org!!, e.sym?.org!!)\n\n fun vertL1dist(u: GLUvertex, v: GLUvertex) = abs(u.s - v.s) + abs(u.t - v.t)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object Mesh {\n /************************ Utility Routines */\n /**\n * MakeEdge creates a new pair of half-edges which form their own loop.\n * No vertex or face structures are allocated, but these must be assigned\n * before the current edge operation is completed.\n */\n fun makeEdge(eNext: GLUhalfEdge): GLUhalfEdge {\n var next = eNext\n val e = GLUhalfEdge(true)\n val eSym = GLUhalfEdge(false)\n\n /* Make sure eNext points to the first edge of the edge pair */\n if (!next.first) {\n next = next.sym!!\n }\n\n /**\n * Insert in circular doubly-linked list before eNext.\n * Note that the prev pointer is stored in Sym->next.\n */\n val ePrev = next.sym?.next!!\n eSym.next = ePrev\n ePrev.sym?.next = e\n e.next = next\n next.sym?.next = eSym\n e.sym = eSym\n e.oNext = e\n e.lNext = eSym\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.sym = e\n eSym.oNext = eSym\n eSym.lNext = e\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return e\n }\n\n /**\n * Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n * CS348a notes (see mesh.h). Basically it modifies the mesh so that\n * a->Onext and b->Onext are exchanged. This can have various effects\n * depending on whether a and b belong to different face or vertex rings.\n * For more explanation see __gl_meshSplice() below.\n */\n fun splice(a: GLUhalfEdge, b: GLUhalfEdge) {\n val aONext = a.oNext!!\n val bONext = b.oNext!!\n aONext.sym?.lNext = b\n bONext.sym?.lNext = a\n a.oNext = bONext\n b.oNext = aONext\n }\n\n /**\n * MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n * origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n * a place to insert the new vertex in the global vertex list. We insert\n * the new vertex *before* vNext so that algorithms which walk the vertex\n * list will not see the newly created vertices.\n */\n fun makeVertex(newVertex: GLUvertex, eOrig: GLUhalfEdge, vNext: GLUvertex) {\n /* insert in circular doubly-linked list before vNext */\n val vPrev = vNext.prev!!\n newVertex.prev = vPrev\n vPrev.next = newVertex\n newVertex.next = vNext\n vNext.prev = newVertex\n newVertex.anEdge = eOrig\n newVertex.data = null\n /* leave coords, s, t undefined */\n\n /* fix other edges on this vertex loop */\n var e = eOrig\n do {\n e.org = newVertex\n e = e.oNext!!\n } while (e !== eOrig)\n }\n\n /**\n * MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n * face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n * a place to insert the new face in the global face list. We insert\n * the new face *before* fNext so that algorithms which walk the face\n * list will not see the newly created faces.\n */\n fun makeFace(newFace: GLUface, eOrig: GLUhalfEdge, fNext: GLUface) {\n /* insert in circular doubly-linked list before fNext */\n val fPrev = fNext.prev!!\n newFace.prev = fPrev\n fPrev.next = newFace\n newFace.next = fNext\n fNext.prev = newFace\n newFace.anEdge = eOrig\n newFace.data = null\n newFace.trail = null\n newFace.marked = false\n\n /**\n * The new face is marked \"inside\" if the old one was. This is a\n * convenience for the common case where a face has been split in two.\n */\n newFace.inside = fNext.inside\n\n /* fix other edges on this face loop */\n var e = eOrig\n do {\n e.lFace = newFace\n e = e.lNext!!\n } while (e !== eOrig)\n }\n\n /**\n * KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n * and removes from the global edge list.\n */\n fun killEdge(eDel: GLUhalfEdge) {\n var del = eDel\n\n /* Half-edges are allocated in pairs, see EdgePair above */\n if (!del.first) {\n del = del.sym!!\n }\n\n /* delete from circular doubly-linked list */\n val eNext = del.next!!\n val ePrev = del.sym?.next!!\n eNext.sym?.next = ePrev\n ePrev.sym?.next = eNext\n }\n\n /**\n * KillVertex( vDel ) destroys a vertex and removes it from the global\n * vertex list. It updates the vertex loop to point to a given new vertex.\n */\n fun killVertex(vDel: GLUvertex, newOrg: GLUvertex?) {\n val eStart = vDel.anEdge!!\n\n /* change the origin of all affected edges */\n var e = eStart\n do {\n e.org = newOrg\n e = e.oNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val vPrev = vDel.prev!!\n val vNext = vDel.next!!\n vNext.prev = vPrev\n vPrev.next = vNext\n }\n\n /**\n * KillFace( fDel ) destroys a face and removes it from the global face\n * list. It updates the face loop to point to a given new face.\n */\n fun killFace(fDel: GLUface, newLface: GLUface?) {\n val eStart = fDel.anEdge!!\n\n /* change the left face of all affected edges */\n var e = eStart\n do {\n e.lFace = newLface\n e = e.lNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fDel.prev!!\n val fNext = fDel.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /****************** Basic Edge Operations */\n /**\n * __gl_meshMakeEdge creates one edge, two vertices, and a loop (face).\n * The loop consists of the two new half-edges.\n */\n fun glMeshMakeEdge(mesh: GLUmesh): GLUhalfEdge {\n val newVertex1 = GLUvertex()\n val newVertex2 = GLUvertex()\n val newFace = GLUface()\n val e = makeEdge(mesh.eHead)\n makeVertex(newVertex1, e, mesh.vHead)\n makeVertex(newVertex2, e.sym!!, mesh.vHead)\n makeFace(newFace, e, mesh.fHead)\n return e\n }\n\n /**\n * __gl_meshSplice( eOrg, eDst ) is the basic operation for changing the\n * mesh connectivity and topology. It changes the mesh so that\n *\teOrg->Onext <- OLD( eDst->Onext )\n *\teDst->Onext <- OLD( eOrg->Onext )\n * where OLD(...) means the value before the meshSplice operation.\n *\n * This can have two effects on the vertex structure:\n * - if eOrg->Org != eDst->Org, the two vertices are merged together\n * - if eOrg->Org == eDst->Org, the origin is split into two vertices\n * In both cases, eDst->Org is changed and eOrg->Org is untouched.\n *\n * Similarly (and independently) for the face structure,\n * - if eOrg->Lface == eDst->Lface, one loop is split into two\n * - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n * In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n *\n * Some special cases:\n * If eDst == eOrg, the operation has no effect.\n * If eDst == eOrg->Lnext, the new face will have a single edge.\n * If eDst == eOrg->Lprev, the old face will have a single edge.\n * If eDst == eOrg->Onext, the new vertex will have a single edge.\n * If eDst == eOrg->Oprev, the old vertex will have a single edge.\n */\n fun glMeshSplice(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): Boolean {\n var joiningLoops = false\n var joiningVertices = false\n if (eOrg === eDst) return true\n if (eDst.org !== eOrg.org) {\n /* We are merging two disjoint vertices -- destroy eDst->Org */\n joiningVertices = true\n killVertex(eDst.org!!, eOrg.org)\n }\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Change the edge structure */\n splice(eDst, eOrg)\n if (!joiningVertices) {\n val newVertex = GLUvertex()\n\n /**\n * We split one vertex into two -- the new vertex is eDst.Org.\n * Make sure the old vertex points to a valid half-edge.\n */\n makeVertex(newVertex, eDst, eOrg.org!!)\n eOrg.org?.anEdge = eOrg\n }\n if (!joiningLoops) {\n val newFace = GLUface()\n\n /**\n * We split one loop into two -- the new loop is eDst.Lface.\n * Make sure the old face points to a valid half-edge.\n */\n makeFace(newFace, eDst, eOrg.lFace!!)\n eOrg.lFace?.anEdge = eOrg\n }\n return true\n }\n\n /**\n * __gl_meshDelete( eDel ) removes the edge eDel. There are several cases:\n * if (eDel.Lface != eDel.Rface), we join two loops into one; the loop\n * eDel.Lface is deleted. Otherwise, we are splitting one loop into two;\n * the newly created loop will contain eDel.Dst. If the deletion of eDel\n * would create isolated vertices, those are deleted as well.\n *\n * This function could be implemented as two calls to __gl_meshSplice\n * plus a few calls to memFree, but this would allocate and delete\n * unnecessary vertices and faces.\n */\n fun glMeshDelete(eDel: GLUhalfEdge): Boolean {\n val eDelSym = eDel.sym!!\n var joiningLoops = false\n\n /** First step: disconnect the origin vertex eDel.Org. We make all\n * changes to get a consistent mesh in this \"intermediate\" state.\n */\n if (eDel.lFace !== eDel.sym?.lFace) {\n /* We are joining two loops into one -- remove the left face */\n joiningLoops = true\n killFace(eDel.lFace!!, eDel.sym?.lFace)\n }\n if (eDel.oNext === eDel) {\n killVertex(eDel.org!!, null)\n } else {\n /* Make sure that eDel.Org and eDel.Sym.Lface point to valid half-edges */\n eDel.sym?.lFace?.anEdge = eDel.sym?.lNext\n eDel.org?.anEdge = eDel.oNext\n splice(eDel, eDel.sym?.lNext!!)\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We are splitting one loop into two -- create a new loop for eDel. */\n makeFace(newFace, eDel, eDel.lFace!!)\n }\n }\n\n /**\n * Claim: the mesh is now in a consistent state, except that eDel.Org\n * may have been deleted. Now we disconnect eDel.Dst.\n */\n if (eDelSym.oNext === eDelSym) {\n killVertex(eDelSym.org!!, null)\n killFace(eDelSym.lFace!!, null)\n } else {\n /* Make sure that eDel.Dst and eDel.Lface point to valid half-edges */\n eDel.lFace?.anEdge = eDelSym.sym?.lNext\n eDelSym.org?.anEdge = eDelSym.oNext\n splice(eDelSym, eDelSym.sym?.lNext!!)\n }\n\n /* Any isolated vertices or faces have already been freed. */\n killEdge(eDel)\n return true\n }\n\n /******************** Other Edge Operations */\n /**\n * All these routines can be implemented with the basic edge\n * operations above. They are provided for convenience and efficiency.\n */\n /**\n * __gl_meshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n * eNew == eOrg.Lnext, and eNew.Dst is a newly created vertex.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshAddEdgeVertex(eOrg: GLUhalfEdge): GLUhalfEdge {\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n run {\n val newVertex = GLUvertex()\n makeVertex(newVertex, eNewSym, eNew.org!!)\n }\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n return eNew\n }\n\n /**\n * __gl_meshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n * such that eNew == eOrg.Lnext. The new vertex is eOrg.Sym.Org == eNew.Org.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshSplitEdge(eOrg: GLUhalfEdge): GLUhalfEdge {\n val tempHalfEdge = glMeshAddEdgeVertex(eOrg)\n val eNew = tempHalfEdge.sym!!\n\n /* Disconnect eOrg from eOrg.Sym.Org and connect it to eNew.Org */\n splice(eOrg.sym!!, eOrg.sym?.sym?.lNext!!)\n splice(eOrg.sym!!, eNew)\n\n /* Set the vertex and face information */\n eOrg.sym?.org = eNew.org\n eNew.sym?.org?.anEdge = eNew.sym /* may have pointed to eOrg.Sym */\n eNew.sym?.lFace = eOrg.sym?.lFace\n eNew.winding = eOrg.winding /* copy old winding information */\n eNew.sym?.winding = eOrg.sym!!.winding\n return eNew\n }\n\n /**\n * __gl_meshConnect( eOrg, eDst ) creates a new edge from eOrg.Sym.Org\n * to eDst.Org, and returns the corresponding half-edge eNew.\n * If eOrg.Lface == eDst.Lface, this splits one loop into two,\n * and the newly created loop is eNew.Lface. Otherwise, two disjoint\n * loops are merged into one, and the loop eDst.Lface is destroyed.\n *\n * If (eOrg == eDst), the new face will have only two edges.\n * If (eOrg.Lnext == eDst), the old face is reduced to a single edge.\n * If (eOrg.Lnext.Lnext == eDst), the old face is reduced to two edges.\n */\n fun glMeshConnect(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): GLUhalfEdge {\n var joiningLoops = false\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n splice(eNewSym, eDst)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n eNewSym.org = eDst.org\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n\n /* Make sure the old face points to a valid half-edge */\n eOrg.lFace?.anEdge = eNewSym\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We split one loop into two -- the new loop is eNew.Lface */\n makeFace(newFace, eNew, eOrg.lFace!!)\n }\n return eNew\n }\n\n /******************** Other Operations */\n /**\n * __gl_meshZapFace( fZap ) destroys a face and removes it from the\n * global face list. All edges of fZap will have a null pointer as their\n * left face. Any edges which also have a null pointer as their right face\n * are deleted entirely (along with any isolated vertices this produces).\n * An entire mesh can be deleted by zapping its faces, one at a time,\n * in any order. Zapped faces cannot be used in further mesh operations!\n */\n fun glMeshZapFace(fZap: GLUface) {\n val eStart = fZap.anEdge!!\n\n /* walk around face, deleting edges whose right face is also null */\n var eNext = eStart.lNext!!\n do {\n val e = eNext\n eNext = e.lNext!!\n e.lFace = null\n if (e.sym?.lFace == null) {\n /* delete the edge -- see __gl_MeshDelete above */\n if (e.oNext === e) {\n killVertex(e.org!!, null)\n } else {\n /* Make sure that e.Org points to a valid half-edge */\n e.org?.anEdge = e.oNext\n splice(e, e.sym?.lNext!!)\n }\n val eSym = e.sym!!\n if (eSym.oNext === eSym) {\n killVertex(eSym.org!!, null)\n } else {\n /* Make sure that eSym.Org points to a valid half-edge */\n eSym.org?.anEdge = eSym.oNext\n splice(eSym, eSym.sym?.lNext!!)\n }\n killEdge(e)\n }\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fZap.prev!!\n val fNext = fZap.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /**\n * __gl_meshNewMesh() creates a new mesh with no edges, no vertices,\n * and no loops (what we usually call a \"face\").\n */\n fun glMeshNewMesh(): GLUmesh {\n val mesh = GLUmesh()\n val v = mesh.vHead\n val f = mesh.fHead\n val e = mesh.eHead\n val eSym = mesh.eHeadSym\n v.prev = v\n v.next = v.prev\n v.anEdge = null\n v.data = null\n f.prev = f\n f.next = f.prev\n f.anEdge = null\n f.data = null\n f.trail = null\n f.marked = false\n f.inside = false\n e.next = e\n e.sym = eSym\n e.oNext = null\n e.lNext = null\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.next = eSym\n eSym.sym = e\n eSym.oNext = null\n eSym.lNext = null\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return mesh\n }\n\n /**\n * glMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n * both meshes, and returns the new mesh (the old meshes are destroyed).\n */\n fun glMeshUnion(mesh1: GLUmesh, mesh2: GLUmesh): GLUmesh {\n val f1 = mesh1.fHead\n val v1 = mesh1.vHead\n val e1 = mesh1.eHead\n val f2 = mesh2.fHead\n val v2 = mesh2.vHead\n val e2 = mesh2.eHead\n\n /* Add the faces, vertices, and edges of mesh2 to those of mesh1 */\n if (f2.next !== f2) {\n f1.prev?.next = f2.next\n f2.next?.prev = f1.prev\n f2.prev?.next = f1\n f1.prev = f2.prev\n }\n if (v2.next !== v2) {\n v1.prev?.next = v2.next\n v2.next?.prev = v1.prev\n v2.prev?.next = v1\n v1.prev = v2.prev\n }\n if (e2.next !== e2) {\n e1.sym?.next?.sym?.next = e2.next\n e2.next?.sym?.next = e1.sym?.next\n e2.sym?.next?.sym?.next = e1\n e1.sym?.next = e2.sym?.next\n }\n return mesh1\n }\n\n /**\n * glMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMeshZap(mesh: GLUmesh) {\n val fHead = mesh.fHead\n while (fHead.next !== fHead) {\n glMeshZapFace(fHead.next!!)\n }\n }\n\n /**\n * __gl_meshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMesh(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n f = fNext\n }\n var v = mesh.vHead.next!!\n while (v !== mesh.vHead) {\n val vNext = v.next!!\n v = vNext\n }\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n /* One call frees both e and e.Sym (see EdgePair above) */\n val eNext = e.next!!\n e = eNext\n }\n }\n\n /**\n * __gl_meshCheckMesh( mesh ) checks a mesh for self-consistency.\n */\n fun glMeshCheckMesh(mesh: GLUmesh) {\n val fHead = mesh.fHead\n val vHead = mesh.vHead\n val eHead = mesh.eHead\n var fPrev = fHead\n while (true) {\n val f = fPrev.next!!\n if (f === fHead) break\n var e = f.anEdge!!\n do e = e.lNext!! while (e !== f.anEdge)\n fPrev = f\n }\n var vPrev = vHead\n while (true) {\n val v = vPrev.next!!\n if (v === vHead) break\n var e = v.anEdge!!\n do {\n e = e.oNext!!\n } while (e !== v.anEdge)\n vPrev = v\n }\n var ePrev = eHead\n while (true) {\n val e = ePrev.next!!\n if (e === eHead) break\n ePrev = e\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\ninternal object Normal {\n private const val SLANTED_SWEEP = false\n private var S_UNIT_X = 0.0 /* Pre-normalized */\n private var S_UNIT_Y = 0.0\n private const val TRUE_PROJECT = false\n\n init {\n if (SLANTED_SWEEP) {\n /**\n * The \"feature merging\" is not intended to be complete. There are\n * special cases where edges are nearly parallel to the sweep line\n * which are not implemented. The algorithm should still behave\n * robustly (ie. produce a reasonable tesselation) in the presence\n * of such edges, however it may miss features which could have been\n * merged. We could minimize this effect by choosing the sweep line\n * direction to be something unusual (ie. not parallel to one of the\n * coordinate axes).\n */\n S_UNIT_X = 0.5094153956495538 /* Pre-normalized */\n S_UNIT_Y = 0.8605207462201063\n } else {\n S_UNIT_X = 1.0\n S_UNIT_Y = 0.0\n }\n }\n\n private fun dot(u: DoubleArray, v: DoubleArray): Double {\n return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]\n }\n\n fun normalize(v: DoubleArray) {\n var len = v[0] * v[0] + v[1] * v[1] + v[2] * v[2]\n len = sqrt(len)\n v[0] /= len\n v[1] /= len\n v[2] /= len\n }\n\n fun longAxis(v: DoubleArray): Int {\n var i = 0\n if (abs(v[1]) > abs(v[0])) {\n i = 1\n }\n if (abs(v[2]) > abs(v[i])) {\n i = 2\n }\n return i\n }\n\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray) {\n val vHead = tess.mesh?.vHead!!\n val maxVal = DoubleArray(3)\n val minVal = DoubleArray(3)\n val minVert = arrayOfNulls(3)\n val maxVert = arrayOfNulls(3)\n val d1 = DoubleArray(3)\n val d2 = DoubleArray(3)\n val tNorm = DoubleArray(3)\n maxVal[2] = -2 * GLU.GLU_TESS_MAX_COORD\n maxVal[1] = maxVal[2]\n maxVal[0] = maxVal[1]\n minVal[2] = 2 * GLU.GLU_TESS_MAX_COORD\n minVal[1] = minVal[2]\n minVal[0] = minVal[1]\n var v = vHead.next!!\n while (v !== vHead) {\n var i = 0\n while (i < 3) {\n val c = v.coords[i]\n if (c < minVal[i]) {\n minVal[i] = c\n minVert[i] = v\n }\n if (c > maxVal[i]) {\n maxVal[i] = c\n maxVert[i] = v\n }\n ++i\n }\n v = v.next!!\n }\n\n /**\n * Find two vertices separated by at least 1/sqrt(3) of the maximum\n * distance between any two vertices\n */\n var i = 0\n if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {\n i = 1\n }\n if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {\n i = 2\n }\n if (minVal[i] >= maxVal[i]) {\n /* All vertices are the same -- normal doesn't matter */\n norm[0] = 0.0\n norm[1] = 0.0\n norm[2] = 1.0\n return\n }\n\n /**\n * Look for a third vertex which forms the triangle with maximum area\n * (Length of normal == twice the triangle area)\n */\n var maxLen2 = 0.0\n val v1 = minVert[i]!!\n val v2 = maxVert[i]!!\n d1[0] = v1.coords[0] - v2.coords[0]\n d1[1] = v1.coords[1] - v2.coords[1]\n d1[2] = v1.coords[2] - v2.coords[2]\n v = vHead.next!!\n while (v !== vHead) {\n d2[0] = v.coords[0] - v2.coords[0]\n d2[1] = v.coords[1] - v2.coords[1]\n d2[2] = v.coords[2] - v2.coords[2]\n tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1]\n tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2]\n tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0]\n val tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2]\n if (tLen2 > maxLen2) {\n maxLen2 = tLen2\n norm[0] = tNorm[0]\n norm[1] = tNorm[1]\n norm[2] = tNorm[2]\n }\n v = v.next!!\n }\n if (maxLen2 <= 0) {\n /* All points lie on a single line -- any decent normal will do */\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n norm[longAxis(d1)] = 1.0\n }\n }\n\n fun checkOrientation(tess: GLUtessellatorImpl) {\n val fHead = tess.mesh?.fHead!!\n val vHead = tess.mesh?.vHead!!\n\n /**\n * When we compute the normal automatically, we choose the orientation\n * so that the the sum of the signed areas of all contours is non-negative.\n */\n var area = 0.0\n var f = fHead.next!!\n while (f !== fHead) {\n var e = f.anEdge!!\n if (e.winding <= 0) {\n f = f.next!!\n continue\n }\n do {\n area += (e.org!!.s - e.sym!!.org!!.s) * (e.org!!.t + e.sym!!.org!!.t)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.next!!\n }\n if (area < 0) {\n /* Reverse the orientation by flipping all the t-coordinates */\n var v = vHead.next!!\n while (v !== vHead) {\n v.t = -v.t\n v = v.next!!\n }\n tess.tUnit[0] = -tess.tUnit[0]\n tess.tUnit[1] = -tess.tUnit[1]\n tess.tUnit[2] = -tess.tUnit[2]\n }\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n fun glProjectPolygon(tess: GLUtessellatorImpl) {\n val vHead = tess.mesh?.vHead!!\n val norm = DoubleArray(3)\n var computedNormal = false\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm)\n computedNormal = true\n }\n val sUnit = tess.sUnit\n val tUnit = tess.tUnit\n val i = longAxis(norm)\n if (TRUE_PROJECT) {\n /**\n * Choose the initial sUnit vector to be approximately perpendicular\n * to the normal.\n */\n normalize(norm)\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n\n /* Now make it exactly perpendicular */\n val w = dot(sUnit, norm)\n sUnit[0] -= w * norm[0]\n sUnit[1] -= w * norm[1]\n sUnit[2] -= w * norm[2]\n normalize(sUnit)\n\n /* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */\n tUnit[0] = norm[1] * sUnit[2] - norm[2] * sUnit[1]\n tUnit[1] = norm[2] * sUnit[0] - norm[0] * sUnit[2]\n tUnit[2] = norm[0] * sUnit[1] - norm[1] * sUnit[0]\n normalize(tUnit)\n } else {\n /* Project perpendicular to a coordinate axis -- better numerically */\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n tUnit[i] = 0.0\n tUnit[(i + 1) % 3] = if (norm[i] > 0) -S_UNIT_Y else S_UNIT_Y\n tUnit[(i + 2) % 3] = if (norm[i] > 0) S_UNIT_X else -S_UNIT_X\n }\n\n /* Project the vertices onto the sweep plane */\n var v = vHead.next!!\n while (v !== vHead) {\n v.s = dot(v.coords, sUnit)\n v.t = dot(v.coords, tUnit)\n v = v.next!!\n }\n if (computedNormal) {\n checkOrientation(tess)\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nabstract class PriorityQ {\n class PQnode {\n var handle = 0\n }\n\n class PQhandleElem {\n var key: Any? = null\n var node = 0\n }\n\n interface Leq {\n fun leq(key1: Any?, key2: Any?): Boolean\n }\n\n abstract fun pqDeletePriorityQ()\n abstract fun pqInit(): Boolean\n abstract fun pqInsert(keyNew: Any?): Int\n abstract fun pqExtractMin(): Any?\n abstract fun pqDelete(hCurr: Int)\n abstract fun pqMinimum(): Any?\n abstract fun pqIsEmpty(): Boolean // #endif\n\n companion object {\n const val INIT_SIZE = 32\n\n fun leq(x: Any, y: Any) = Geom.vertLeq(x as GLUvertex, y as GLUvertex)\n\n fun pqNewPriorityQ(): PriorityQ = PriorityQSort()\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal class PriorityQHeap : PriorityQ() {\n var nodes = Array(INIT_SIZE + 1) { PQnode() }\n var handles = Array(INIT_SIZE + 1) { PQhandleElem() }\n var size = 0\n var max = INIT_SIZE\n var freeList = 0\n var initialized = false\n\n init {\n nodes[1].handle = 1\n handles[1].key = null\n }\n\n /* really __gl_pqHeapDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n handles = emptyArray()\n nodes = emptyArray()\n }\n\n fun floatDown(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n var child = c shl 1\n if (child < size && leq(h[n[child + 1].handle].key!!, h[n[child].handle].key!!)) {\n ++child\n }\n val hChild = n[child].handle\n if (child > size || leq(h[hCurr].key!!, h[hChild].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hChild\n h[hChild].node = c\n c = child\n }\n }\n\n fun floatUp(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n val parent = c shr 1\n val hParent = n[parent].handle\n if (parent == 0 || leq(h[hParent].key!!, h[hCurr].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hParent\n h[hParent].node = c\n c = parent\n }\n }\n\n /* really __gl_pqHeapInit */\n override fun pqInit(): Boolean {\n /* This method of building a heap is O(n), rather than O(n lg n). */\n var i = size\n while (i >= 1) {\n floatDown(i)\n --i\n }\n initialized = true\n return true\n }\n\n /* really __gl_pqHeapInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n val free: Int\n val curr = ++size\n if (curr * 2 > max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n nodes = Array(max + 1) { if (it < nodes.size) nodes[it] else PQnode() }\n handles = Array(max + 1) { if (it < handles.size) handles[it] else PQhandleElem() }\n }\n if (freeList == 0) {\n free = curr\n } else {\n free = freeList\n freeList = handles[free].node\n }\n nodes[curr].handle = free\n handles[free].node = curr\n handles[free].key = keyNew\n if (initialized) {\n floatUp(curr)\n }\n return free\n }\n\n /* really __gl_pqHeapExtractMin */\n override fun pqExtractMin(): Any? {\n val n = nodes\n val h = handles\n val hMin = n[1].handle\n val min = h[hMin].key\n if (size > 0) {\n n[1].handle = n[size].handle\n h[n[1].handle].node = 1\n h[hMin].key = null\n h[hMin].node = freeList\n freeList = hMin\n if (--size > 0) {\n floatDown(1)\n }\n }\n return min\n }\n\n /* really __gl_pqHeapDelete */\n override fun pqDelete(hCurr: Int) {\n val n = nodes\n val h = handles\n val curr = h[hCurr].node\n n[curr].handle = n[size].handle\n h[n[curr].handle].node = curr\n if (curr <= --size) {\n if (curr <= 1 || leq(h[n[curr shr 1].handle].key!!, h[n[curr].handle].key!!)) {\n floatDown(curr)\n } else {\n floatUp(curr)\n }\n }\n h[hCurr].key = null\n h[hCurr].node = freeList\n freeList = hCurr\n }\n\n override fun pqMinimum(): Any? {\n return handles[nodes[1].handle].key\n }\n\n override fun pqIsEmpty(): Boolean {\n return size == 0\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\ninternal class PriorityQSort: PriorityQ() {\n val heap = PriorityQHeap()\n var keys: Array? = arrayOfNulls(INIT_SIZE)\n\n // JAVA: 'order' contains indices into the keys array.\n // This simulates the indirect pointers used in the original C code\n // (from Frank Suykens, Luciad.com).\n var order: IntArray? = null\n var size = 0\n var max = INIT_SIZE\n var initialized = false\n\n /* really __gl_pqSortDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n heap.pqDeletePriorityQ()\n order = null\n keys = null\n }\n\n private class Stack {\n var p = 0\n var r = 0\n }\n\n /* really __gl_pqSortInit */\n override fun pqInit(): Boolean {\n val stack = arrayOfNulls(50)\n for (k in stack.indices) {\n stack[k] = Stack()\n }\n var top = 0\n var seed = 2016473283\n\n /**\n * Create an array of indirect pointers to the keys, so that we\n * the handles we have returned are still valid.\n */\n order = IntArray(size + 1)\n /* the previous line is a patch to compensate for the fact that IBM */\n /* machines return a null on a malloc of zero bytes (unlike SGI), */\n /* so we have to put in this defense to guard against a memory */\n /* fault four lines down. from fossum@austin.ibm.com. */\n var p = 0\n var r = size - 1\n var piv = 0\n var i = p\n while (i <= r) {\n // indirect pointers: keep an index into the keys array, not a direct pointer to its contents\n order!![i] = piv\n ++piv\n ++i\n }\n\n /**\n * Sort the indirect pointers in descending order,\n * using randomized Quicksort\n */\n stack[top]?.p = p\n stack[top]?.r = r\n ++top\n while (--top >= 0) {\n p = stack[top]!!.p\n r = stack[top]!!.r\n while (r > p + 10) {\n seed = abs(seed * 1539415821 + 1)\n i = p + seed % (r - p + 1)\n piv = order!![i]\n order!![i] = order!![p]\n order!![p] = piv\n i = p - 1\n var j = r + 1\n do {\n do {\n ++i\n } while (gt(keys!![order!![i]]!!, keys!![piv]!!))\n do {\n --j\n } while (lt(keys!![order!![j]]!!, keys!![piv]!!))\n swap(order!!, i, j)\n } while (i < j)\n swap(order!!, i, j) /* Undo last swap */\n if (i - p < r - j) {\n stack[top]?.p = j + 1\n stack[top]?.r = r\n ++top\n r = i - 1\n } else {\n stack[top]?.p = p\n stack[top]?.r = i - 1\n ++top\n p = j + 1\n }\n }\n /* Insertion sort small lists */\n i = p + 1\n while (i <= r) {\n piv = order!![i]\n var j = i\n while (j > p && lt(keys!![order!![j - 1]]!!, keys!![piv]!!)) {\n order!![j] = order!![j - 1]\n --j\n }\n order!![j] = piv\n ++i\n }\n }\n max = size\n initialized = true\n heap.pqInit() /* always succeeds */\n\n/* #ifndef NDEBUG\n p = order;\n r = p + size - 1;\n for (i = p; i < r; ++i) {\n Assertion.doAssert(LEQ( * * (i + 1), **i ));\n }\n #endif*/\n return true\n }\n\n /* really __gl_pqSortInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n if (initialized) {\n return heap.pqInsert(keyNew)\n }\n val curr = size\n if (++size >= max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n // pq->keys = (PQHeapKey *)memRealloc( pq->keys,(size_t)(pq->max * sizeof( pq->keys[0] )));\n val pqKeys = arrayOfNulls(max)\n keys?.copyInto(pqKeys)\n keys = pqKeys\n }\n keys!![curr] = keyNew\n\n /* Negative handles index the sorted array. */\n return -(curr + 1)\n }\n\n /* really __gl_pqSortExtractMin */\n override fun pqExtractMin(): Any? {\n if (size == 0) {\n return heap.pqExtractMin()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heap.pqExtractMin()\n }\n }\n do {\n --size\n } while (size > 0 && keys!![order!![size - 1]] == null)\n return sortMin\n }\n\n /* really __gl_pqSortMinimum */\n override fun pqMinimum(): Any? {\n if (size == 0) {\n return heap.pqMinimum()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heapMin\n }\n }\n return sortMin\n }\n\n /* really __gl_pqSortIsEmpty */\n override fun pqIsEmpty(): Boolean {\n return size == 0 && heap.pqIsEmpty()\n }\n\n /* really __gl_pqSortDelete */\n override fun pqDelete(hCurr: Int) {\n var curr = hCurr\n if (curr >= 0) {\n heap.pqDelete(curr)\n return\n }\n curr = -(curr + 1)\n keys!![curr] = null\n while (size > 0 && keys!![order!![size - 1]] == null) {\n --size\n }\n }\n\n companion object {\n private fun lt(x: Any, y: Any): Boolean {\n return !leq(y, x)\n }\n\n private fun gt(x: Any, y: Any): Boolean {\n return !leq(x, y)\n }\n\n private fun swap(array: IntArray, a: Int, b: Int) {\n val tmp = array[a]\n array[a] = array[b]\n array[b] = tmp\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.kgl.GL_LINE_LOOP\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_FAN\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Render {\n private const val USE_OPTIMIZED_CODE_PATH = false\n private val renderFan = RenderFan()\n private val renderStrip = RenderStrip()\n private val renderTriangle = RenderTriangle()\n\n /************************ Strips and Fans decomposition */\n /**\n * __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle\n * fans, strips, and separate triangles. A substantial effort is made\n * to use as few rendering primitives as possible (ie. to make the fans\n * and strips as large as possible).\n *\n * The rendering output is provided as callbacks (see the api).\n */\n fun glRenderMesh(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n /* Make a list of separate triangles so we can render them all at once */\n tess.lonelyTriList = null\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n f.marked = false\n f = f.next!!\n }\n f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /**\n * We examine all faces in an arbitrary order. Whenever we find\n * an unprocessed face F, we output a group of faces including F\n * whose size is maximum.\n */\n if (f.inside && !f.marked) {\n renderMaximumFaceGroup(tess, f)\n }\n f = f.next!!\n }\n if (tess.lonelyTriList != null) {\n renderLonelyTriangles(tess, tess.lonelyTriList)\n tess.lonelyTriList = null\n }\n }\n\n /**\n * We want to find the largest triangle fan or strip of unmarked faces\n * which includes the given face fOrig. There are 3 possible fans\n * passing through fOrig (one centered at each vertex), and 3 possible\n * strips (one for each CCW permutation of the vertices). Our strategy\n * is to try all of these, and take the primitive which uses the most\n * triangles (a greedy approach).\n */\n fun renderMaximumFaceGroup(tess: GLUtessellatorImpl, fOrig: GLUface) {\n val e = fOrig.anEdge!!\n var max = FaceCount()\n max.size = 1\n max.eStart = e\n max.render = renderTriangle\n if (!tess.flagBoundary) {\n var newFace = maximumFan(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n }\n max.render?.render(tess, max.eStart!!, max.size)\n }\n\n /* Macros which keep track of faces we have marked temporarily, and allow\n * us to backtrack when necessary. With triangle fans, this is not\n * really necessary, since the only awkward case is a loop of triangles\n * around a single origin vertex. However with strips the situation is\n * more complicated, and we need a general tracking method like the\n * one here.\n */\n private fun marked(f: GLUface): Boolean {\n return !f.inside || f.marked\n }\n\n private fun addToTrail(f: GLUface, t: GLUface?): GLUface {\n f.trail = t\n f.marked = true\n return f\n }\n\n private fun freeTrail(t: GLUface?) {\n var t = t\n while (t != null) {\n t.marked = false\n t = t.trail\n }\n }\n\n /**\n * eOrig.Lface is the face we want to render. We want to find the size\n * of a maximal fan around eOrig.Org. To do this we just walk around\n * the origin vertex as far as possible in both directions.\n */\n fun maximumFan(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderFan)\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++newFace.size\n e = e.oNext!!\n }\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++newFace.size\n e = e.sym?.lNext!!\n }\n newFace.eStart = e\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n private fun isEven(n: Long): Boolean {\n return n and 0x1L == 0L\n }\n\n /**\n * Here we are looking for a maximal strip that contains the vertices\n * eOrig.Org, eOrig.Dst, eOrig.Lnext.Dst (in that order or the\n * reverse, such that all triangles are oriented CCW).\n *\n * Again we walk forward and backward as far as possible. However for\n * strips there is a twist: to get CCW orientations, there must be\n * an *even* number of triangles in the strip on one side of eOrig.\n * We walk the strip starting on a side with an even number of triangles;\n * if both side have an odd number, we are forced to shorten one side.\n */\n fun maximumStrip(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderStrip)\n var headSize = 0L\n var tailSize = 0L\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.lNext?.sym!!\n if (marked(e.lFace!!)) break\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.oNext!!\n }\n val eTail = e\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.lNext!!\n if (marked(e.sym?.lFace!!)) break\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.oNext?.sym!!\n }\n val eHead = e\n newFace.size = tailSize + headSize\n when {\n isEven(tailSize) -> {\n newFace.eStart = eTail.sym\n }\n isEven(headSize) -> {\n newFace.eStart = eHead\n }\n else -> {\n /**\n * Both sides have odd length, we must shorten one of them. In fact,\n * we must start from eHead to guarantee inclusion of eOrig.Lface.\n */\n --newFace.size\n newFace.eStart = eHead.oNext\n }\n }\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n /**\n * Now we render all the separate triangles which could not be\n * grouped into a triangle fan or strip.\n */\n fun renderLonelyTriangles(tess: GLUtessellatorImpl, f: GLUface?) {\n var f = f\n var edgeState = -1 /* force edge state output for first vertex */\n tess.callBeginOrBeginData(GL_TRIANGLES)\n while (f != null) {\n /* Loop once for each edge (there will always be 3 edges) */\n var e = f.anEdge!!\n do {\n if (tess.flagBoundary) {\n /**\n * Set the \"edge state\" to true just before we output the\n * first vertex of each edge on the polygon boundary.\n */\n val newState = if (!e.sym!!.lFace!!.inside) 1 else 0\n if (edgeState != newState) {\n edgeState = newState\n tess.callEdgeFlagOrEdgeFlagData(edgeState != 0)\n }\n }\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.trail\n }\n tess.callEndOrEndData()\n }\n\n /************************ Boundary contour decomposition */\n /**\n * __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one\n * contour for each face marked \"inside\". The rendering output is\n * provided as callbacks (see the api).\n */\n fun glRenderBoundary(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n if (f.inside) {\n tess.callBeginOrBeginData(GL_LINE_LOOP)\n var e = f.anEdge!!\n do {\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n tess.callEndOrEndData()\n }\n f = f.next!!\n }\n }\n\n /************************ Quick-and-dirty decomposition */\n private const val SIGN_INCONSISTENT = 2\n /**\n * If check==false, we compute the polygon normal and place it in norm[].\n * If check==true, we check that each triangle in the fan from v0 has a\n * consistent orientation with respect to norm[]. If triangles are\n * consistently oriented CCW, return 1; if CW, return -1; if all triangles\n * are degenerate return 0; otherwise (no consistent orientation) return\n * SIGN_INCONSISTENT.\n */\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray, check: Boolean): Int {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val n = DoubleArray(3)\n var sign = 0\n\n /**\n * Find the polygon normal. It is important to get a reasonable\n * normal even when the polygon is self-intersecting (eg. a bowtie).\n * Otherwise, the computed normal could be very tiny, but perpendicular\n * to the true plane of the polygon due to numerical noise. Then all\n * the triangles would appear to be degenerate and we would incorrectly\n * decompose the polygon as a fan (or simply not render it at all).\n *\n * We use a sum-of-triangles normal algorithm rather than the more\n * efficient sum-of-trapezoids method (used in CheckOrientation()\n * in normal.c). This lets us explicitly reverse the signed area\n * of some triangles to get a reasonable normal in the self-intersecting\n * case.\n */\n if (!check) {\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n }\n var vc = 1\n var xc = v[vc].coords[0] - v[0].coords[0]\n var yc = v[vc].coords[1] - v[0].coords[1]\n var zc = v[vc].coords[2] - v[0].coords[2]\n while (++vc < vn) {\n val xp = xc\n val yp = yc\n val zp = zc\n xc = v[vc].coords[0] - v[0].coords[0]\n yc = v[vc].coords[1] - v[0].coords[1]\n zc = v[vc].coords[2] - v[0].coords[2]\n\n /* Compute (vp - v0) cross (vc - v0) */\n n[0] = yp * zc - zp * yc\n n[1] = zp * xc - xp * zc\n n[2] = xp * yc - yp * xc\n val dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2]\n if (!check) {\n /**\n * Reverse the contribution of back-facing triangles to get\n * a reasonable normal for self-intersecting polygons (see above)\n */\n if (dot >= 0) {\n norm[0] += n[0]\n norm[1] += n[1]\n norm[2] += n[2]\n } else {\n norm[0] -= n[0]\n norm[1] -= n[1]\n norm[2] -= n[2]\n }\n } else if (dot != 0.0) {\n /* Check the new orientation for consistency with previous triangles */\n sign = if (dot > 0) {\n if (sign < 0) return SIGN_INCONSISTENT\n 1\n } else {\n if (sign > 0) return SIGN_INCONSISTENT\n -1\n }\n }\n }\n return sign\n }\n\n /**\n * __gl_renderCache( tess ) takes a single contour and tries to render it\n * as a triangle fan. This handles convex polygons, as well as some\n * non-convex polygons if we get lucky.\n *\n * Returns true if the polygon was successfully rendered. The rendering\n * output is provided as callbacks (see the api).\n */\n fun glRenderCache(tess: GLUtessellatorImpl): Boolean {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val norm = DoubleArray(3)\n if (tess.cacheCount < 3) {\n /* Degenerate contour -- no output */\n return true\n }\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm, false)\n }\n val sign = computeNormal(tess, norm, true)\n if (sign == SIGN_INCONSISTENT) {\n /* Fan triangles did not have a consistent orientation */\n return false\n }\n if (sign == 0) {\n /* All triangles were degenerate */\n return true\n }\n return if (!USE_OPTIMIZED_CODE_PATH) {\n false\n } else {\n /* Make sure we do the right thing for each winding rule */\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD, GLU.GLU_TESS_WINDING_NONZERO -> {}\n GLU.GLU_TESS_WINDING_POSITIVE -> if (sign < 0) return true\n GLU.GLU_TESS_WINDING_NEGATIVE -> if (sign > 0) return true\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return true\n }\n tess.callBeginOrBeginData(if (tess.boundaryOnly) GL_LINE_LOOP else if (tess.cacheCount > 3) GL_TRIANGLE_FAN else GL_TRIANGLES)\n tess.callVertexOrVertexData(v[0].data!!)\n if (sign > 0) {\n var vc = 1\n while (vc < vn) {\n tess.callVertexOrVertexData(v[vc].data!!)\n ++vc\n }\n } else {\n var vc = vn - 1\n while (vc > 0) {\n tess.callVertexOrVertexData(v[vc].data!!)\n --vc\n }\n }\n tess.callEndOrEndData()\n true\n }\n }\n\n /**\n * This structure remembers the information we need about a primitive\n * to be able to render it later, once we have determined which\n * primitive is able to use the most triangles.\n */\n internal class FaceCount {\n constructor()\n constructor(size: Long, eStart: GLUhalfEdge?, render: RenderCallBack?) {\n this.size = size\n this.eStart = eStart\n this.render = render\n }\n\n /**\n * number of triangles used\n */\n var size = 0L\n /**\n * edge where this primitive starts\n */\n var eStart: GLUhalfEdge? = null\n var render: RenderCallBack? = null\n }\n\n internal interface RenderCallBack {\n fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long)\n }\n\n private class RenderTriangle : RenderCallBack {\n /**\n * Just add the triangle to a triangle list, so we can render all\n * the separate triangles at once.\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n tess.lonelyTriList = addToTrail(e.lFace!!, tess.lonelyTriList)\n }\n }\n\n private class RenderFan : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a fan starting from\n * edge \"e\". The fan *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_FAN)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n\n private class RenderStrip : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a strip starting from\n * edge \"e\". The strip *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_STRIP)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.lNext?.sym!!\n tess.callVertexOrVertexData(e.org?.data!!)\n if (marked(e.lFace!!)) break\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.tessellator.Dict.DictLeq\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Sweep {\n // #ifdef FOR_TRITE_TEST_PROGRAM\n // extern void DebugEvent( GLUtessellator *tess );\n // #else\n @Suppress(\"UNUSED_PARAMETER\")\n private fun debugEvent(tess: GLUtessellatorImpl) {}\n\n // #endif\n /*\n * Invariants for the Edge Dictionary.\n * - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n * at any valid location of the sweep event\n * - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n * share a common endpoint\n * - for each e, e.Dst has been processed, but not e.Org\n * - each edge e satisfies VertLeq(e.Dst,event) && VertLeq(event,e.Org)\n * where \"event\" is the current sweep line event.\n * - no edge e has zero length\n *\n * Invariants for the Mesh (the processed portion).\n * - the portion of the mesh left of the sweep line is a planar graph,\n * ie. there is *some* way to embed it in the plane\n * - no processed edge has zero length\n * - no two processed vertices have identical coordinates\n * - each \"inside\" region is monotone, ie. can be broken into two chains\n * of monotonically increasing vertices according to VertLeq(v1,v2)\n * - a non-invariant: these chains may intersect (very slightly)\n *\n * Invariants for the Sweep.\n * - if none of the edges incident to the event vertex have an activeRegion\n * (ie. none of these edges are in the edge dictionary), then the vertex\n * has only right-going edges.\n * - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n * by ConnectRightVertex), then it is the only right-going edge from\n * its associated vertex. (This says that these edges exist only\n * when it is necessary.)\n */\n /**\n * When we merge two edges into one, we need to compute the combined\n * winding of the new edge.\n */\n private fun addWinding(eDst: GLUhalfEdge, eSrc: GLUhalfEdge) {\n eDst.winding += eSrc.winding\n eDst.sym!!.winding += eSrc.sym!!.winding\n }\n\n private fun regionBelow(r: ActiveRegion): ActiveRegion {\n return Dict.dictKey(Dict.dictPred(r.nodeUp!!)) as ActiveRegion\n }\n\n private fun regionAbove(r: ActiveRegion): ActiveRegion? {\n return Dict.dictKey(Dict.dictSucc(r.nodeUp!!)) as ActiveRegion?\n }\n\n /**\n * Both edges must be directed from right to left (this is the canonical\n * direction for the upper edge of each region).\n *\n * The strategy is to evaluate a \"t\" value for each edge at the\n * current sweep line position, given by tess.event. The calculations\n * are designed to be very stable, but of course they are not perfect.\n *\n * Special case: if both edge destinations are at the sweep event,\n * we sort the edges by slope (they would otherwise compare equally).\n */\n fun edgeLeq(tess: GLUtessellatorImpl, reg1: ActiveRegion, reg2: ActiveRegion): Boolean {\n val event = tess.event!!\n val e1 = reg1.eUp\n val e2 = reg2.eUp\n if (e1.sym?.org === event) {\n return if (e2.sym?.org === event) {\n /**\n * Two edges right of the sweep line which meet at the sweep event.\n * Sort them by slope.\n */\n if (Geom.vertLeq(e1.org!!, e2.org!!)) {\n Geom.edgeSign(e2.sym?.org!!, e1.org!!, e2.org!!) <= 0\n } else Geom.edgeSign(e1.sym?.org!!, e2.org!!, e1.org!!) >= 0\n } else Geom.edgeSign(e2.sym?.org!!, event, e2.org!!) <= 0\n }\n if (e2.sym?.org === event) {\n return Geom.edgeSign(e1.sym?.org!!, event, e1.org!!) >= 0\n }\n\n /* General case - compute signed distance *from* e1, e2 to event */\n val t1 = Geom.edgeEval(e1.sym?.org!!, event, e1.org!!)\n val t2 = Geom.edgeEval(e2.sym?.org!!, event, e2.org!!)\n return t1 >= t2\n }\n\n fun deleteRegion(reg: ActiveRegion) {\n reg.eUp.activeRegion = null\n Dict.dictDelete(reg.nodeUp!!) /* __gl_dictListDelete */\n }\n\n /**\n * Replace an upper edge which needs fixing (see ConnectRightVertex).\n */\n fun fixUpperEdge(reg: ActiveRegion, newEdge: GLUhalfEdge): Boolean {\n if (!Mesh.glMeshDelete(reg.eUp)) return false\n reg.fixUpperEdge = false\n reg.eUp = newEdge\n newEdge.activeRegion = reg\n return true\n }\n\n fun topLeftRegion(reg: ActiveRegion): ActiveRegion? {\n var reg = reg\n val org = reg.eUp.org\n\n /* Find the region above the uppermost edge with the same origin */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.org === org)\n\n /**\n * If the edge above was a temporary edge introduced by ConnectRightVertex,\n * now is the time to fix it.\n */\n if (reg.fixUpperEdge) {\n val e = Mesh.glMeshConnect(regionBelow(reg).eUp.sym!!, reg.eUp.lNext!!)\n if (!fixUpperEdge(reg, e)) return null\n reg = regionAbove(reg)!!\n }\n return reg\n }\n\n fun topRightRegion(reg: ActiveRegion): ActiveRegion {\n var reg = reg\n val dst = reg.eUp.sym?.org\n\n /* Find the region above the uppermost edge with the same destination */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.sym?.org === dst)\n return reg\n }\n\n /**\n * Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n * (according to where the new edge belongs in the sweep-line dictionary).\n * The upper edge of the new region will be \"eNewUp\".\n * Winding number and \"inside\" flag are not updated.\n */\n fun addRegionBelow(\n tess: GLUtessellatorImpl,\n regAbove: ActiveRegion,\n eNewUp: GLUhalfEdge\n ): ActiveRegion {\n val regNew = ActiveRegion(eNewUp)\n /* __gl_dictListInsertBefore */\n regNew.nodeUp = Dict.dictInsertBefore(tess.dict!!, regAbove.nodeUp!!, regNew)\n regNew.fixUpperEdge = false\n regNew.sentinel = false\n regNew.dirty = false\n eNewUp.activeRegion = regNew\n return regNew\n }\n\n fun isWindingInside(tess: GLUtessellatorImpl, n: Int): Boolean {\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD -> return n and 1 != 0\n GLU.GLU_TESS_WINDING_NONZERO -> return n != 0\n GLU.GLU_TESS_WINDING_POSITIVE -> return n > 0\n GLU.GLU_TESS_WINDING_NEGATIVE -> return n < 0\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return n >= 2 || n <= -2\n }\n throw RuntimeException()\n /*NOTREACHED*/\n }\n\n fun computeWinding(tess: GLUtessellatorImpl, reg: ActiveRegion) {\n reg.windingNumber = regionAbove(reg)!!.windingNumber + reg.eUp.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n }\n\n /**\n * Delete a region from the sweep line. This happens when the upper\n * and lower chains of a region meet (at a vertex on the sweep line).\n * The \"inside\" flag is copied to the appropriate mesh face (we could\n * not do this before -- since the structure of the mesh is always\n * changing, this face may not have even existed until now).\n */\n fun finishRegion(reg: ActiveRegion) {\n val e = reg.eUp\n val f = e.lFace!!\n f.inside = reg.inside\n f.anEdge = e /* optimization for __gl_meshTessellateMonoRegion() */\n deleteRegion(reg)\n }\n\n /**\n * We are given a vertex with one or more left-going edges. All affected\n * edges should be in the edge dictionary. Starting at regFirst.eUp,\n * we walk down deleting all regions where both edges have the same\n * origin vOrg. At the same time we copy the \"inside\" flag from the\n * active region to the face, since at this point each face will belong\n * to at most one region (this was not necessarily true until this point\n * in the sweep). The walk stops at the region above regLast; if regLast\n * is null we walk as far as possible. At the same time we relink the\n * mesh if necessary, so that the ordering of edges around vOrg is the\n * same as in the dictionary.\n */\n fun finishLeftRegions(regFirst: ActiveRegion, regLast: ActiveRegion?): GLUhalfEdge {\n var regPrev = regFirst\n var ePrev = regFirst.eUp\n while (regPrev !== regLast) {\n regPrev.fixUpperEdge = false /* placement was OK */\n val reg = regionBelow(regPrev)\n var e = reg.eUp\n if (e.org !== ePrev.org) {\n if (!reg.fixUpperEdge) {\n /**\n * Remove the last left-going edge. Even though there are no further\n * edges in the dictionary with this origin, there may be further\n * such edges in the mesh (if we are adding left edges to a vertex\n * that has already been processed). Thus it is important to call\n * FinishRegion rather than just DeleteRegion.\n */\n finishRegion(regPrev)\n break\n }\n /**\n * If the edge below was a temporary edge introduced by\n * ConnectRightVertex, now is the time to fix it.\n */\n e = Mesh.glMeshConnect(ePrev.oNext?.sym!!, e.sym!!)\n if (!fixUpperEdge(reg, e)) throw RuntimeException()\n }\n\n /* Relink edges so that ePrev.Onext == e */\n if (ePrev.oNext !== e) {\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev, e)) throw RuntimeException()\n }\n finishRegion(regPrev) /* may change reg.eUp */\n ePrev = reg.eUp\n regPrev = reg\n }\n return ePrev\n }\n\n /**\n * Purpose: insert right-going edges into the edge dictionary, and update\n * winding numbers and mesh connectivity appropriately. All right-going\n * edges share a common origin vOrg. Edges are inserted CCW starting at\n * eFirst; the last edge inserted is eLast.Sym.Lnext. If vOrg has any\n * left-going edges already processed, then eTopLeft must be the edge\n * such that an imaginary upward vertical segment from vOrg would be\n * contained between eTopLeft.Sym.Lnext and eTopLeft; otherwise eTopLeft\n * should be null.\n */\n fun addRightEdges(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eFirst: GLUhalfEdge, eLast: GLUhalfEdge?, eTopLeft: GLUhalfEdge?,\n cleanUp: Boolean\n ) {\n var eTopLeft = eTopLeft\n var firstTime = true\n\n /* Insert the new right-going edges in the dictionary */\n var e = eFirst\n do {\n addRegionBelow(tess, regUp, e.sym!!)\n e = e.oNext!!\n } while (e !== eLast)\n\n /**\n * Walk *all* right-going edges from e.Org, in the dictionary order,\n * updating the winding numbers of each region, and re-linking the mesh\n * edges to match the dictionary ordering (if necessary).\n */\n if (eTopLeft == null) {\n eTopLeft = regionBelow(regUp).eUp.sym?.oNext\n }\n var regPrev = regUp\n var ePrev = eTopLeft!!\n var reg: ActiveRegion\n while (true) {\n reg = regionBelow(regPrev)\n e = reg.eUp.sym!!\n if (e.org !== ePrev.org) break\n if (e.oNext !== ePrev) {\n /* Unlink e from its current position, and relink below ePrev */\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev.sym?.lNext!!, e)) throw RuntimeException()\n }\n /* Compute the winding number and \"inside\" flag for the new regions */\n reg.windingNumber = regPrev.windingNumber - e.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n\n /**\n * Check for two outgoing edges with same slope -- process these\n * before any intersection tests (see example in __gl_computeInterior).\n */\n regPrev.dirty = true\n if (!firstTime && checkForRightSplice(tess, regPrev)) {\n addWinding(e, ePrev)\n deleteRegion(regPrev)\n if (!Mesh.glMeshDelete(ePrev)) throw RuntimeException()\n }\n firstTime = false\n regPrev = reg\n ePrev = e\n }\n regPrev.dirty = true\n if (cleanUp) {\n /* Check for intersections between newly adjacent edges. */\n walkDirtyRegions(tess, regPrev)\n }\n }\n\n fun callCombine(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n data: Array, weights: FloatArray, needed: Boolean\n ) {\n val coords = DoubleArray(3)\n\n /* Copy coord data in case the callback changes it. */\n coords[0] = isect.coords[0]\n coords[1] = isect.coords[1]\n coords[2] = isect.coords[2]\n val outData = arrayOfNulls(1)\n tess.callCombineOrCombineData(coords, data, weights, outData)\n isect.data = outData[0]\n if (isect.data == null) {\n if (!needed) {\n isect.data = data[0]\n } else if (!tess.fatalError) {\n /**\n * The only way fatal error is when two edges are found to intersect,\n * but the user has not provided the callback necessary to handle\n * generated intersection points.\n */\n tess.callErrorOrErrorData(GLU.GLU_TESS_NEED_COMBINE_CALLBACK)\n tess.fatalError = true\n }\n }\n }\n\n /**\n * Two vertices with idential coordinates are combined into one.\n * e1.Org is kept, while e2.Org is discarded.\n */\n fun spliceMergeVertices(tess: GLUtessellatorImpl, e1: GLUhalfEdge, e2: GLUhalfEdge) {\n val data = arrayOfNulls(4)\n val weights = floatArrayOf(0.5f, 0.5f, 0.0f, 0.0f)\n data[0] = e1.org?.data\n data[1] = e2.org?.data\n callCombine(tess, e1.org!!, data, weights, false)\n if (!Mesh.glMeshSplice(e1, e2)) throw RuntimeException()\n }\n\n /**\n * Find some weights which describe how the intersection vertex is\n * a linear combination of \"org\" and \"dest\". Each of the two edges\n * which generated \"isect\" is allocated 50% of the weight; each edge\n * splits the weight between its org and dst according to the\n * relative distance to \"isect\".\n */\n fun vertexWeights(\n isect: GLUvertex, org: GLUvertex, dst: GLUvertex,\n weights: FloatArray\n ) {\n val t1 = Geom.vertL1dist(org, isect)\n val t2 = Geom.vertL1dist(dst, isect)\n weights[0] = (0.5 * t2 / (t1 + t2)).toFloat()\n weights[1] = (0.5 * t1 / (t1 + t2)).toFloat()\n isect.coords[0] += weights[0] * org.coords[0] + weights[1] * dst.coords[0]\n isect.coords[1] += weights[0] * org.coords[1] + weights[1] * dst.coords[1]\n isect.coords[2] += weights[0] * org.coords[2] + weights[1] * dst.coords[2]\n }\n\n /**\n * We've computed a new intersection point, now we need a \"data\" pointer\n * from the user so that we can refer to this new vertex in the\n * rendering callbacks.\n */\n fun getIntersectData(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n orgUp: GLUvertex, dstUp: GLUvertex,\n orgLo: GLUvertex, dstLo: GLUvertex\n ) {\n val data = arrayOfNulls(4)\n val weights = FloatArray(4)\n val weights1 = FloatArray(2)\n val weights2 = FloatArray(2)\n data[0] = orgUp.data\n data[1] = dstUp.data\n data[2] = orgLo.data\n data[3] = dstLo.data\n isect.coords[2] = 0.0\n isect.coords[1] = isect.coords[2]\n isect.coords[0] = isect.coords[1]\n vertexWeights(isect, orgUp, dstUp, weights1)\n vertexWeights(isect, orgLo, dstLo, weights2)\n weights1.copyInto(weights, 0)\n weights2.copyInto(weights, 2)\n callCombine(tess, isect, data, weights, true)\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Org is above eLo, or eLo.Org is below eUp (depending on which\n * origin is leftmost).\n *\n * The main purpose is to splice right-going edges with the same\n * dest vertex and nearly identical slopes (ie. we can't distinguish\n * the slopes numerically). However the splicing can also help us\n * to recover from numerical errors. For example, suppose at one\n * point we checked eUp and eLo, and decided that eUp.Org is barely\n * above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * our test so that now eUp.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants.\n *\n * One possibility is to check these edges for intersection again\n * (ie. CheckForIntersect). This is what we do if possible. However\n * CheckForIntersect requires that tess.event lies between eUp and eLo,\n * so that it has something to fall back on when the intersection\n * calculation gives us an unusable answer. So, for those cases where\n * we can't check for intersection, this routine fixes the problem\n * by just splicing the offending vertex into the other edge.\n * This is a guaranteed solution, no matter how degenerate things get.\n * Basically this is a combinatorial solution to a numerical problem.\n */\n fun checkForRightSplice(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.org!!, eLo.org!!)) {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Org appears to be below eLo */\n if (!Geom.vertEq(eUp.org!!, eLo.org!!)) {\n /* Splice eUp.Org into eLo */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n } else if (eUp.org !== eLo.org) {\n /* merge the two vertices, discarding eUp.Org */\n tess.pq?.pqDelete(eUp.org?.pqHandle!!) /* __gl_pqSortDelete */\n spliceMergeVertices(tess, eLo.sym?.lNext!!, eUp)\n }\n } else {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Org appears to be above eUp, so splice eLo.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n }\n return true\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Sym.Org is above eLo, or eLo.Sym.Org is below eUp (depending on which\n * destination is rightmost).\n *\n * Theoretically, this should always be true. However, splitting an edge\n * into two pieces can change the results of previous tests. For example,\n * suppose at one point we checked eUp and eLo, and decided that eUp.Sym.Org\n * is barely above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * the test so that now eUp.Sym.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants\n * (otherwise new edges might get inserted in the wrong place in the\n * dictionary, and bad stuff will happen).\n *\n * We fix the problem by just splicing the offending vertex into the\n * other edge.\n */\n fun checkForLeftSplice(regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.sym?.org!!, eLo.sym?.org!!)) {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.sym?.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Sym.Org is above eUp, so splice eLo.Sym.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n val e = Mesh.glMeshSplitEdge(eUp)\n if (!Mesh.glMeshSplice(eLo.sym!!, e)) throw RuntimeException()\n e.lFace?.inside = regUp.inside\n } else {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.sym?.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Sym.Org is below eLo, so splice eUp.Sym.Org into eLo */\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n val e = Mesh.glMeshSplitEdge(eLo)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym!!)) throw RuntimeException()\n e.sym?.lFace?.inside = regUp.inside\n }\n return true\n }\n\n /**\n * Check the upper and lower edges of the given region to see if\n * they intersect. If so, create the intersection and add it\n * to the data structures.\n *\n * Returns true if adding the new intersection resulted in a recursive\n * call to AddRightEdges(); in this case all \"dirty\" regions have been\n * checked for intersections, and possibly regUp has been deleted.\n */\n fun checkForIntersect(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n val orgUp = eUp.org!!\n val orgLo = eLo.org!!\n val dstUp = eUp.sym?.org!!\n val dstLo = eLo.sym?.org!!\n val isect = GLUvertex()\n if (orgUp === orgLo) return false /* right endpoints are the same */\n val tMinUp = orgUp.t.coerceAtMost(dstUp.t)\n val tMaxLo = orgLo.t.coerceAtLeast(dstLo.t)\n if (tMinUp > tMaxLo) return false /* t ranges do not overlap */\n if (Geom.vertLeq(orgUp, orgLo)) {\n if (Geom.edgeSign(dstLo, orgUp, orgLo) > 0) return false\n } else {\n if (Geom.edgeSign(dstUp, orgLo, orgUp) < 0) return false\n }\n\n /* At this point the edges intersect, at least marginally */\n debugEvent(tess)\n Geom.edgeIntersect(dstUp, orgUp, dstLo, orgLo, isect)\n if (Geom.vertLeq(isect, tess.event!!)) {\n /**\n * The intersection point lies slightly to the left of the sweep line,\n * so move it until it''s slightly to the right of the sweep line.\n * (If we had perfect numerical precision, this would never happen\n * in the first place). The easiest and safest thing to do is\n * replace the intersection by tess.event.\n */\n isect.s = tess.event!!.s\n isect.t = tess.event!!.t\n }\n /**\n * Similarly, if the computed intersection lies to the right of the\n * rightmost origin (which should rarely happen), it can cause\n * unbelievable inefficiency on sufficiently degenerate inputs.\n * (If you have the test program, try running test54.d with the\n * \"X zoom\" option turned on).\n */\n val orgMin = if (Geom.vertLeq(orgUp, orgLo)) orgUp else orgLo\n if (Geom.vertLeq(orgMin, isect)) {\n isect.s = orgMin.s\n isect.t = orgMin.t\n }\n if (Geom.vertEq(isect, orgUp) || Geom.vertEq(isect, orgLo)) {\n /* Easy case -- intersection at one of the right endpoints */\n checkForRightSplice(tess, regUp)\n return false\n }\n if ((!Geom.vertEq(dstUp, tess.event!!)\n && Geom.edgeSign(dstUp, tess.event!!, isect) >= 0)\n || (!Geom.vertEq(dstLo, tess.event!!)\n && Geom.edgeSign(dstLo, tess.event!!, isect) <= 0)\n ) {\n /**\n * Very unusual -- the new upper or lower edge would pass on the\n * wrong side of the sweep event, or through it. This can happen\n * due to very small numerical errors in the intersection calculation.\n */\n if (dstLo === tess.event) {\n /* Splice dstLo into eUp, and process the new region(s) */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eUp = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n addRightEdges(tess, regUp, eUp.sym?.lNext!!, eUp, eUp, true)\n return true\n }\n if (dstUp === tess.event) {\n /* Splice dstUp into eLo, and process the new region(s) */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo = regUp\n regUp = topRightRegion(regUp)\n val e = regionBelow(regUp).eUp.sym?.oNext\n regLo.eUp = eLo.sym?.lNext!!\n eLo = finishLeftRegions(regLo, null)\n addRightEdges(tess, regUp, eLo.oNext!!, eUp.sym?.oNext, e, true)\n return true\n }\n /**\n * Special case: called from ConnectRightVertex. If either\n * edge passes on the wrong side of tess.event, split it\n * (and wait for ConnectRightVertex to splice it appropriately).\n */\n if (Geom.edgeSign(dstUp, tess.event!!, isect) >= 0) {\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n eUp.org?.s = tess.event!!.s\n eUp.org?.t = tess.event!!.t\n }\n if (Geom.edgeSign(dstLo, tess.event!!, isect) <= 0) {\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n Mesh.glMeshSplitEdge(eLo.sym!!)\n eLo.org?.s = tess.event!!.s\n eLo.org?.t = tess.event!!.t\n }\n /* leave the rest for ConnectRightVertex */\n return false\n }\n\n /**\n * General case -- split both edges, splice into new vertex.\n * When we do the splice operation, the order of the arguments is\n * arbitrary as far as correctness goes. However, when the operation\n * creates a new face, the work done is proportional to the size of\n * the new face. We expect the faces in the processed part of\n * the mesh (ie. eUp.Lface) to be smaller than the faces in the\n * unprocessed original contours (which will be eLo.Sym.Lnext.Lface).\n */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n eUp.org?.s = isect.s\n eUp.org?.t = isect.t\n eUp.org?.pqHandle = tess.pq!!.pqInsert(eUp.org) /* __gl_pqSortInsert */\n getIntersectData(tess, eUp.org!!, orgUp, dstUp, orgLo, dstLo)\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n regionAbove(regUp)?.dirty = regUp.dirty\n return false\n }\n\n /**\n * When the upper or lower edge of any region changes, the region is\n * marked \"dirty\". This routine walks through all the dirty regions\n * and makes sure that the dictionary invariants are satisfied\n * (see the comments at the beginning of this file). Of course\n * new dirty regions can be created as we make changes to restore\n * the invariants.\n */\n fun walkDirtyRegions(tess: GLUtessellatorImpl, regUp: ActiveRegion) {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n while (true) {\n\n /* Find the lowest dirty region (we walk from the bottom up). */\n while (regLo.dirty) {\n regUp = regLo\n regLo = regionBelow(regLo)\n }\n if (!regUp.dirty) {\n regLo = regUp\n regUp = regionAbove(regUp) ?: return\n if (!regUp.dirty) return /* We've walked all the dirty regions */\n }\n regUp.dirty = false\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n if (eUp.sym?.org !== eLo.sym?.org) {\n /* Check that the edge ordering is obeyed at the Dst vertices. */\n if (checkForLeftSplice(regUp)) {\n\n /**\n * If the upper or lower edge was marked fixUpperEdge, then\n * we no longer need it (since these edges are needed only for\n * vertices which otherwise have no right-going edges).\n */\n if (regLo.fixUpperEdge) {\n deleteRegion(regLo)\n if (!Mesh.glMeshDelete(eLo)) throw RuntimeException()\n regLo = regionBelow(regUp)\n eLo = regLo.eUp\n } else if (regUp.fixUpperEdge) {\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n eUp = regUp.eUp\n }\n }\n }\n if (eUp.org !== eLo.org) {\n if (eUp.sym?.org !== eLo.sym?.org && !regUp.fixUpperEdge && !regLo.fixUpperEdge\n && (eUp.sym?.org === tess.event || eLo.sym?.org === tess.event)\n ) {\n /**\n * When all else fails in CheckForIntersect(), it uses tess.event\n * as the intersection location. To make this possible, it requires\n * that tess.event lie between the upper and lower edges, and also\n * that neither of these is marked fixUpperEdge (since in the worst\n * case it might splice one of these edges into tess.event, and\n * violate the invariant that fixable edges are the only right-going\n * edge from their associated vertex).\n */\n if (checkForIntersect(tess, regUp)) {\n /* WalkDirtyRegions() was called recursively; we're done */\n return\n }\n } else {\n /**\n * Even though we can't use CheckForIntersect(), the Org vertices\n * may violate the dictionary edge ordering. Check and correct this.\n */\n checkForRightSplice(tess, regUp)\n }\n }\n if (eUp.org === eLo.org && eUp.sym?.org === eLo.sym?.org) {\n /* A degenerate loop consisting of only two edges -- delete it. */\n addWinding(eLo, eUp)\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n }\n }\n }\n\n /**\n * Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n * to the unprocessed portion of the mesh. Since there are no right-going\n * edges, two regions (one above vEvent and one below) are being merged\n * into one. \"regUp\" is the upper of these two regions.\n *\n * There are two reasons for doing this (adding a right-going edge):\n * - if the two regions being merged are \"inside\", we must add an edge\n * to keep them separated (the combined region would not be monotone).\n * - in any case, we must leave some record of vEvent in the dictionary,\n * so that we can merge vEvent with features that we have not seen yet.\n * For example, maybe there is a vertical edge which passes just to\n * the right of vEvent; we would like to splice vEvent into this edge.\n *\n * However, we don't want to connect vEvent to just any vertex. We don''t\n * want the new edge to cross any other edges; otherwise we will create\n * intersection vertices even when the input data had no self-intersections.\n * (This is a bad thing; if the user's input data has no intersections,\n * we don't want to generate any false intersections ourselves.)\n *\n * Our eventual goal is to connect vEvent to the leftmost unprocessed\n * vertex of the combined region (the union of regUp and regLo).\n * But because of unseen vertices with all right-going edges, and also\n * new vertices which may be created by edge intersections, we don''t\n * know where that leftmost unprocessed vertex is. In the meantime, we\n * connect vEvent to the closest vertex of either chain, and mark the region\n * as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n * to the next processed vertex on the boundary of the combined region.\n * Quite possibly the vertex we connected to will turn out to be the\n * closest one, in which case we won''t need to make any changes.\n */\n fun connectRightVertex(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eBottomLeft: GLUhalfEdge\n ) {\n var regUp = regUp\n var eBottomLeft = eBottomLeft\n var eTopLeft = eBottomLeft.oNext!!\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n var degenerate = false\n if (eUp.sym?.org !== eLo.sym?.org) {\n checkForIntersect(tess, regUp)\n }\n\n /**\n * Possible new degeneracies: upper or lower edge of regUp may pass\n * through vEvent, or may coincide with new intersection vertex\n */\n if (Geom.vertEq(eUp.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eTopLeft.sym?.lNext!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eTopLeft = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n degenerate = true\n }\n if (Geom.vertEq(eLo.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eBottomLeft, eLo.sym?.lNext!!)) throw RuntimeException()\n eBottomLeft = finishLeftRegions(regLo, null)\n degenerate = true\n }\n if (degenerate) {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n return\n }\n\n /**\n * Non-degenerate situation -- need to add a temporary, fixable edge.\n * Connect to the closer of eLo.Org, eUp.Org.\n */\n var eNew = if (Geom.vertLeq(eLo.org!!, eUp.org!!)) eLo.sym?.lNext!! else eUp\n eNew = Mesh.glMeshConnect(eBottomLeft.oNext?.sym!!, eNew)\n\n /**\n * Prevent cleanup, otherwise eNew might disappear before we've even\n * had a chance to mark it as a temporary edge.\n */\n addRightEdges(tess, regUp, eNew, eNew.oNext, eNew.oNext, false)\n eNew.sym?.activeRegion?.fixUpperEdge = true\n walkDirtyRegions(tess, regUp)\n }\n\n /**\n * Because vertices at exactly the same location are merged together\n * before we process the sweep event, some degenerate cases can't occur.\n * However if someone eventually makes the modifications required to\n * merge features which are close together, the cases below marked\n * TOLERANCE_NONZERO will be useful. They were debugged before the\n * code to merge identical vertices in the main loop was added.\n */\n private const val TOLERANCE_NONZERO = false\n /**\n * The event vertex lies exacty on an already-processed edge or vertex.\n * Adding the new vertex involves splicing it into the already-processed\n * part of the mesh.\n */\n fun connectLeftDegenerate(\n tess: GLUtessellatorImpl,\n regUp: ActiveRegion, vEvent: GLUvertex\n ) {\n var regUp = regUp\n val e = regUp.eUp\n if (Geom.vertEq(e.org!!, vEvent)) {\n /**\n * e.Org is an unprocessed vertex - just combine them, and wait\n * for e.Org to be pulled from the queue\n */\n spliceMergeVertices(tess, e, vEvent.anEdge!!)\n return\n }\n if (!Geom.vertEq(e.sym?.org!!, vEvent)) {\n /* General case -- splice vEvent into edge e which passes through it */\n Mesh.glMeshSplitEdge(e.sym!!)\n if (regUp.fixUpperEdge) {\n /* This edge was fixable -- delete unused portion of original edge */\n if (!Mesh.glMeshDelete(e.oNext!!)) throw RuntimeException()\n regUp.fixUpperEdge = false\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, e)) throw RuntimeException()\n sweepEvent(tess, vEvent) /* recurse */\n return\n }\n regUp = topRightRegion(regUp)\n val reg = regionBelow(regUp)\n var eTopRight = reg.eUp.sym!!\n val eLast = eTopRight.oNext\n var eTopLeft = eLast\n if (reg.fixUpperEdge) {\n /**\n * Here e.Sym.Org has only a single fixable edge going right.\n * We can delete it since now we have some real right-going edges.\n */\n deleteRegion(reg)\n if (!Mesh.glMeshDelete(eTopRight)) throw RuntimeException()\n eTopRight = eTopLeft?.sym?.lNext!!\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, eTopRight)) throw RuntimeException()\n if (!Geom.edgeGoesLeft(eTopLeft!!)) {\n /* e.Sym.Org had no left-going edges -- indicate this to AddRightEdges() */\n eTopLeft = null\n }\n addRightEdges(tess, regUp, eTopRight.oNext!!, eLast, eTopLeft, true)\n }\n\n /**\n * Purpose: connect a \"left\" vertex (one where both edges go right)\n * to the processed portion of the mesh. Let R be the active region\n * containing vEvent, and let U and L be the upper and lower edge\n * chains of R. There are two possibilities:\n *\n * - the normal case: split R into two regions, by connecting vEvent to\n * the rightmost vertex of U or L lying to the left of the sweep line\n *\n * - the degenerate case: if vEvent is close enough to U or L, we\n * merge vEvent into that edge chain. The subcases are:\n *\t- merging with the rightmost vertex of U or L\n *\t- merging with the active edge of U or L\n *\t- merging with an already-processed portion of U or L\n */\n fun connectLeftVertex(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n /* Get a pointer to the active region containing vEvent */\n val tmp = ActiveRegion(vEvent.anEdge?.sym!!)\n val regUp = Dict.dictKey(Dict.dictSearch(tess.dict!!, tmp)) as ActiveRegion\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n\n /* Try merging with U or L first */\n if (Geom.edgeSign(eUp.sym?.org!!, vEvent, eUp.org!!) == 0.0) {\n connectLeftDegenerate(tess, regUp, vEvent)\n return\n }\n\n /**\n * Connect vEvent to rightmost processed vertex of either chain.\n * e.Sym.Org is the vertex that we will connect to vEvent.\n */\n val reg = if (Geom.vertLeq(eLo.sym?.org!!, eUp.sym?.org!!)) regUp else regLo\n if (regUp.inside || reg.fixUpperEdge) {\n val eNew = if (reg === regUp) {\n Mesh.glMeshConnect(vEvent.anEdge?.sym!!, eUp.lNext!!)\n } else {\n val tempHalfEdge = Mesh.glMeshConnect(eLo.sym?.oNext?.sym!!, vEvent.anEdge!!)\n tempHalfEdge.sym!!\n }\n if (reg.fixUpperEdge) {\n if (!fixUpperEdge(reg, eNew)) throw RuntimeException()\n } else {\n computeWinding(tess, addRegionBelow(tess, regUp, eNew))\n }\n sweepEvent(tess, vEvent)\n } else {\n /**\n * The new vertex is in a region which does not belong to the polygon.\n * We don''t need to connect this vertex to the rest of the mesh.\n */\n addRightEdges(tess, regUp, vEvent.anEdge!!, vEvent.anEdge, null, true)\n }\n }\n\n /**\n * Does everything necessary when the sweep line crosses a vertex.\n * Updates the mesh and the edge dictionary.\n */\n fun sweepEvent(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n tess.event = vEvent /* for access in EdgeLeq() */\n debugEvent(tess)\n\n /**\n * Check if this vertex is the right endpoint of an edge that is\n * already in the dictionary. In this case we don't need to waste\n * time searching for the location to insert new edges.\n */\n var e = vEvent.anEdge!!\n while (e.activeRegion == null) {\n e = e.oNext!!\n if (e === vEvent.anEdge) {\n /* All edges go right -- not incident to any processed edges */\n connectLeftVertex(tess, vEvent)\n return\n }\n }\n\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n val regUp = topLeftRegion(e.activeRegion!!)!!\n val reg = regionBelow(regUp)\n val eTopLeft = reg.eUp\n val eBottomLeft = finishLeftRegions(reg, null)\n\n /**\n * Next we process all the right-going edges from vEvent. This\n * involves adding the edges to the dictionary, and creating the\n * associated \"active regions\" which record information about the\n * regions between adjacent dictionary edges.\n */\n if (eBottomLeft.oNext === eTopLeft) {\n /* No right-going edges -- add a temporary \"fixable\" edge */\n connectRightVertex(tess, regUp, eBottomLeft)\n } else {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n }\n }\n\n /**\n * Make the sentinel coordinates big enough that they will never be\n * merged with real input features. (Even with the largest possible\n * input contour and the maximum tolerance of 1.0, no merging will be\n * done with coordinates larger than 3 * GLU_TESS_MAX_COORD).\n */\n private const val SENTINEL_COORD = 4.0 * GLU.GLU_TESS_MAX_COORD\n /**\n * We add two sentinel edges above and below all other edges,\n * to avoid special cases at the top and bottom.\n */\n fun addSentinel(tess: GLUtessellatorImpl, t: Double) {\n val e = Mesh.glMeshMakeEdge(tess.mesh!!)\n e.org?.s = SENTINEL_COORD\n e.org?.t = t\n e.sym?.org?.s = -SENTINEL_COORD\n e.sym?.org?.t = t\n tess.event = e.sym?.org /* initialize it */\n val reg = ActiveRegion(e)\n reg.windingNumber = 0\n reg.inside = false\n reg.fixUpperEdge = false\n reg.sentinel = true\n reg.dirty = false\n reg.nodeUp = Dict.dictInsert(tess.dict!!, reg) /* __gl_dictListInsertBefore */\n }\n\n /**\n * We maintain an ordering of edge intersections with the sweep line.\n * This order is maintained in a dynamic dictionary.\n */\n fun initEdgeDict(tess: GLUtessellatorImpl) {\n /* __gl_dictListNewDict */\n tess.dict = Dict.dictNewDict(\n tess,\n object : DictLeq {\n override fun leq(frame: Any, key1: Any?, key2: Any?): Boolean {\n return edgeLeq(\n tess,\n key1 as ActiveRegion,\n key2 as ActiveRegion\n )\n }\n }\n )\n addSentinel(tess, -SENTINEL_COORD)\n addSentinel(tess, SENTINEL_COORD)\n }\n\n fun doneEdgeDict(tess: GLUtessellatorImpl) {\n while (true) {\n val reg = Dict.dictKey(Dict.dictMin(tess.dict!!)) as ActiveRegion? ?: break\n /**\n * At the end of all processing, the dictionary should contain\n * only the two sentinel edges, plus at most one \"fixable\" edge\n * created by ConnectRightVertex().\n */\n deleteRegion(reg)\n /* __gl_meshDelete( reg.eUp )*/\n }\n Dict.dictDeleteDict(tess.dict!!) /* __gl_dictListDeleteDict */\n }\n\n /**\n * Remove zero-length edges, and contours with fewer than 3 vertices.\n */\n fun removeDegenerateEdges(tess: GLUtessellatorImpl) {\n val eHead = tess.mesh?.eHead!!\n\n /*LINTED*/\n var e = eHead.next!!\n while (e !== eHead) {\n var eNext = e.next!!\n var eLnext = e.lNext!!\n if (Geom.vertEq(e.org!!, e.sym?.org!!) && e.lNext?.lNext !== e) {\n /* Zero-length edge, contour has at least 3 edges */\n spliceMergeVertices(tess, eLnext, e) /* deletes e.Org */\n if (!Mesh.glMeshDelete(e)) throw RuntimeException() /* e is a self-loop */\n e = eLnext\n eLnext = e.lNext!!\n }\n if (eLnext.lNext === e) {\n /* Degenerate contour (one or two edges) */\n if (eLnext !== e) {\n if (eLnext === eNext || eLnext === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(eLnext)) throw RuntimeException()\n }\n if (e === eNext || e === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(e)) throw RuntimeException()\n }\n e = eNext\n }\n }\n\n /**\n * Insert all vertices into the priority queue which determines the\n * order in which vertices cross the sweep line.\n */\n fun initPriorityQ(tess: GLUtessellatorImpl): Boolean {\n /* __gl_pqSortNewPriorityQ */\n tess.pq =\n PriorityQ.pqNewPriorityQ()\n val pq = tess.pq!!\n val vHead = tess.mesh?.vHead!!\n var v = vHead.next!!\n while (v !== vHead) {\n v.pqHandle = pq.pqInsert(v) /* __gl_pqSortInsert */\n v = v.next!!\n }\n if (!pq.pqInit()) { /* __gl_pqSortInit */\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n tess.pq = null\n return false\n }\n return true\n }\n\n fun donePriorityQ(tess: GLUtessellatorImpl) {\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n }\n\n /**\n * Delete any degenerate faces with only two edges. WalkDirtyRegions()\n * will catch almost all of these, but it won't catch degenerate faces\n * produced by splice operations on already-processed edges.\n * The two places this can happen are in FinishLeftRegions(), when\n * we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n * and in CheckForLeftSplice(), where we splice already-processed\n * edges to ensure that our dictionary invariants are not violated\n * by numerical errors.\n *\n * In both these cases it is *very* dangerous to delete the offending\n * edge at the time, since one of the routines further up the stack\n * will sometimes be keeping a pointer to that edge.\n */\n fun removeDegenerateFaces(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n val e = f.anEdge!!\n if (e.lNext?.lNext === e) {\n /* A face with only two edges */\n addWinding(e.oNext!!, e)\n if (!Mesh.glMeshDelete(e)) return false\n }\n f = fNext\n }\n return true\n }\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by tess.windingRule.\n * Each interior region is guaranteed be monotone.\n */\n fun glComputeInterior(tess: GLUtessellatorImpl): Boolean {\n tess.fatalError = false\n\n /**\n * Each vertex defines an event for our sweep line. Start by inserting\n * all the vertices in a priority queue. Events are processed in\n * lexicographic order, ie.\n *\n *\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n */\n removeDegenerateEdges(tess)\n if (!initPriorityQ(tess)) return false /* if error */\n initEdgeDict(tess)\n\n /* __gl_pqSortExtractMin */\n while (true) {\n val v = tess.pq?.pqExtractMin() as GLUvertex? ?: break\n while (true) {\n var vNext = tess.pq?.pqMinimum() as GLUvertex? /* __gl_pqSortMinimum */\n if (vNext == null || !Geom.vertEq(vNext, v)) break\n\n /**\n * Merge together all vertices at exactly the same location.\n * This is more efficient than processing them one at a time,\n * simplifies the code (see ConnectLeftDegenerate), and is also\n * important for correct handling of certain degenerate cases.\n * For example, suppose there are two identical edges A and B\n * that belong to different contours (so without this code they would\n * be processed by separate sweep events). Suppose another edge C\n * crosses A and B from above. When A is processed, we split it\n * at its intersection point with C. However this also splits C,\n * so when we insert B we may compute a slightly different\n * intersection point. This might leave two edges with a small\n * gap between them. This kind of error is especially obvious\n * when using boundary extraction (GLU_TESS_BOUNDARY_ONLY).\n */\n vNext = tess.pq?.pqExtractMin() as GLUvertex /* __gl_pqSortExtractMin*/\n spliceMergeVertices(tess, v.anEdge!!, vNext.anEdge!!)\n }\n sweepEvent(tess, v)\n }\n\n /* Set tess.event for debugging purposes */\n /* __GL_DICTLISTKEY */\n /* __GL_DICTLISTMIN */\n tess.event = (Dict.dictKey(\n Dict.dictMin(\n tess.dict!!\n )\n ) as ActiveRegion).eUp.org\n debugEvent(tess)\n doneEdgeDict(tess)\n donePriorityQ(tess)\n if (!removeDegenerateFaces(tess.mesh!!)) return false\n Mesh.glMeshCheckMesh(tess.mesh!!)\n return true\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessMono {\n /**\n * __gl_meshTessellateMonoRegion( face ) tessellates a monotone region\n * (what else would it do??) The region must consist of a single\n * loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n * case means that any vertical line intersects the interior of the\n * region in a single interval.\n *\n * Tessellation consists of adding interior edges (actually pairs of\n * half-edges), to split the region into non-overlapping triangles.\n *\n * The basic idea is explained in Preparata and Shamos (which I don''t\n * have handy right now), although their implementation is more\n * complicated than this one. The are two edge chains, an upper chain\n * and a lower chain. We process all vertices from both chains in order,\n * from right to left.\n *\n * The algorithm ensures that the following invariant holds after each\n * vertex is processed: the untessellated region consists of two\n * chains, where one chain (say the upper) is a single edge, and\n * the other chain is concave. The left vertex of the single edge\n * is always to the left of all vertices in the concave chain.\n *\n * Each step consists of adding the rightmost unprocessed vertex to one\n * of the two chains, and forming a fan of triangles from the rightmost\n * of two chain endpoints. Determining whether we can add each triangle\n * to the fan is a simple orientation test. By making the fan as large\n * as possible, we restore the invariant (check it yourself).\n */\n fun glMeshTessellateMonoRegion(face: GLUface) {\n /**\n * All edges are oriented CCW around the boundary of the region.\n * First, find the half-edge whose origin vertex is rightmost.\n * Since the sweep goes from left to right, face->anEdge should\n * be close to the edge we want.\n */\n var up = face.anEdge!!\n while (Geom.vertLeq(up.sym?.org!!, up.org!!)) {\n up = up.oNext?.sym!!\n }\n while (Geom.vertLeq(up.org!!, up.sym?.org!!)) {\n up = up.lNext!!\n }\n var lo = up.oNext?.sym!!\n while (up.lNext !== lo) {\n if (Geom.vertLeq(up.sym?.org!!, lo.org!!)) {\n /**\n * up.Sym.Org is on the left. It is safe to form triangles from lo.Org.\n * The EdgeGoesLeft test guarantees progress even when some triangles\n * are CW, given that the upper and lower chains are truly monotone.\n */\n while (lo.lNext !== up && (Geom.edgeGoesLeft(lo.lNext!!)\n || Geom.edgeSign(lo.org!!, lo.sym?.org!!, lo.lNext?.sym?.org!!) <= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n lo = lo.oNext?.sym!!\n } else {\n /* lo.Org is on the left. We can make CCW triangles from up.Sym.Org. */\n while (lo.lNext !== up && (Geom.edgeGoesRight(up.oNext?.sym!!)\n || Geom.edgeSign(up.sym?.org!!, up.org!!, up.oNext?.sym?.org!!) >= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(up, up.oNext?.sym!!)\n up = tempHalfEdge.sym!!\n }\n up = up.lNext!!\n }\n }\n while (lo.lNext?.lNext !== up) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n }\n\n /**\n * __gl_meshTessellateInterior( mesh ) tessellates each region of\n * the mesh which is marked \"inside\" the polygon. Each such region\n * must be monotone.\n */\n fun glMeshTessellateInterior(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Make sure we don''t try to tessellate the new triangles. */\n val next = f.next!!\n if (f.inside) {\n glMeshTessellateMonoRegion(f)\n }\n f = next\n }\n return true\n }\n\n /**\n * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n * which are not marked \"inside\" the polygon. Since further mesh operations\n * on NULL faces are not allowed, the main purpose is to clean up the\n * mesh so that exterior loops are not represented in the data structure.\n */\n fun glMeshDiscardExterior(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Since f will be destroyed, save its next pointer. */\n val next = f.next!!\n if (!f.inside) {\n Mesh.glMeshZapFace(f)\n }\n f = next\n }\n }\n\n /**\n * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n * winding numbers on all edges so that regions marked \"inside\" the\n * polygon have a winding number of \"value\", and regions outside\n * have a winding number of 0.\n *\n * If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n * separate an interior region from an exterior one.\n */\n fun glMeshSetWindingNumber(mesh: GLUmesh, value: Int, keepOnlyBoundary: Boolean): Boolean {\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n val eNext = e.next!!\n if (e.sym?.lFace?.inside != e.lFace?.inside) {\n\n /* This is a boundary edge (one side is interior, one is exterior). */\n e.winding = if (e.lFace!!.inside) value else -value\n } else {\n\n /* Both regions are interior, or both are exterior. */\n if (!keepOnlyBoundary) {\n e.winding = 0\n } else {\n if (!Mesh.glMeshDelete(e)) return false\n }\n }\n e = eNext\n }\n return true\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessState {\n const val T_DORMANT = 0\n const val T_IN_POLYGON = 1\n const val T_IN_CONTOUR = 2\n}","package earth.worldwind.util.http\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.*\n\n/**\n * Returns new platform-dependent HTTP client instance configured by default.\n * In case some special configuration will be required on each platform, then make this function \"expected\".\n */\n@Suppress(\"FunctionName\")\nfun DefaultHttpClient(\n connectTimeout: Long = 3000L,\n requestTimeout: Long = 30000L,\n config: HttpClientConfig<*>.() -> Unit = {}\n) = HttpClient {\n config(this)\n\n install(HttpTimeout) {\n connectTimeoutMillis = connectTimeout\n requestTimeoutMillis = requestTimeout\n }\n}\n","package earth.worldwind.util.kgl\n\nexpect class KglShader {\n companion object{ val NONE: KglShader }\n fun isValid(): Boolean\n}\nexpect class KglProgram {\n companion object{ val NONE: KglProgram }\n fun isValid(): Boolean\n}\nexpect class KglUniformLocation {\n companion object{ val NONE: KglUniformLocation }\n fun isValid(): Boolean\n}\nexpect class KglBuffer {\n companion object{ val NONE: KglBuffer }\n fun isValid(): Boolean\n}\nexpect class KglTexture {\n companion object{ val NONE: KglTexture }\n fun isValid(): Boolean\n}\nexpect class KglFramebuffer {\n companion object{ val NONE: KglFramebuffer }\n fun isValid(): Boolean\n}\n\nconst val GL_ACTIVE_TEXTURE = 0x84E0\nconst val GL_DEPTH_BUFFER_BIT = 0x00000100\nconst val GL_STENCIL_BUFFER_BIT = 0x00000400\nconst val GL_COLOR_BUFFER_BIT = 0x00004000\nconst val GL_FALSE = 0\nconst val GL_TRUE = 1\nconst val GL_POINTS = 0x0000\nconst val GL_LINES = 0x0001\nconst val GL_LINE_LOOP = 0x0002\nconst val GL_LINE_STRIP = 0x0003\nconst val GL_TRIANGLES = 0x0004\nconst val GL_TRIANGLE_STRIP = 0x0005\nconst val GL_TRIANGLE_FAN = 0x0006\nconst val GL_ZERO = 0\nconst val GL_ONE = 1\nconst val GL_SRC_COLOR = 0x0300\nconst val GL_ONE_MINUS_SRC_COLOR = 0x0301\nconst val GL_SRC_ALPHA = 0x0302\nconst val GL_ONE_MINUS_SRC_ALPHA = 0x0303\nconst val GL_DST_ALPHA = 0x0304\nconst val GL_ONE_MINUS_DST_ALPHA = 0x0305\nconst val GL_DST_COLOR = 0x0306\nconst val GL_ONE_MINUS_DST_COLOR = 0x0307\nconst val GL_SRC_ALPHA_SATURATE = 0x0308\nconst val GL_FUNC_ADD = 0x8006\nconst val GL_BLEND_EQUATION = 0x8009\nconst val GL_BLEND_EQUATION_RGB = 0x8009\nconst val GL_BLEND_EQUATION_ALPHA = 0x883D\nconst val GL_FUNC_SUBTRACT = 0x800A\nconst val GL_FUNC_REVERSE_SUBTRACT = 0x800B\nconst val GL_BLEND_DST_RGB = 0x80C8\nconst val GL_BLEND_SRC_RGB = 0x80C9\nconst val GL_BLEND_DST_ALPHA = 0x80CA\nconst val GL_BLEND_SRC_ALPHA = 0x80CB\nconst val GL_CONSTANT_COLOR = 0x8001\nconst val GL_ONE_MINUS_CONSTANT_COLOR = 0x8002\nconst val GL_CONSTANT_ALPHA = 0x8003\nconst val GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004\nconst val GL_BLEND_COLOR = 0x8005\nconst val GL_ARRAY_BUFFER = 0x8892\nconst val GL_ELEMENT_ARRAY_BUFFER = 0x8893\nconst val GL_ARRAY_BUFFER_BINDING = 0x8894\nconst val GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895\nconst val GL_STREAM_DRAW = 0x88E0\nconst val GL_STATIC_DRAW = 0x88E4\nconst val GL_DYNAMIC_DRAW = 0x88E8\nconst val GL_BUFFER_SIZE = 0x8764\nconst val GL_BUFFER_USAGE = 0x8765\nconst val GL_CURRENT_VERTEX_ATTRIB = 0x8626\nconst val GL_FRONT = 0x0404\nconst val GL_BACK = 0x0405\nconst val GL_FRONT_AND_BACK = 0x0408\nconst val GL_TEXTURE_2D = 0x0DE1\nconst val GL_CULL_FACE = 0x0B44\nconst val GL_BLEND = 0x0BE2\nconst val GL_DITHER = 0x0BD0\nconst val GL_STENCIL_TEST = 0x0B90\nconst val GL_DEPTH_TEST = 0x0B71\nconst val GL_SCISSOR_TEST = 0x0C11\nconst val GL_POLYGON_OFFSET_FILL = 0x8037\nconst val GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nconst val GL_SAMPLE_COVERAGE = 0x80A0\nconst val GL_NO_ERROR = 0\nconst val GL_INVALID_ENUM = 0x0500\nconst val GL_INVALID_VALUE = 0x0501\nconst val GL_INVALID_OPERATION = 0x0502\nconst val GL_OUT_OF_MEMORY = 0x0505\nconst val GL_INVALID_FRAMEBUFFER_OPERATION = 0x506\nconst val GL_CW = 0x0900\nconst val GL_CCW = 0x0901\nconst val GL_LINE_WIDTH = 0x0B21\nconst val GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nconst val GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\nconst val GL_CULL_FACE_MODE = 0x0B45\nconst val GL_FRONT_FACE = 0x0B46\nconst val GL_DEPTH_RANGE = 0x0B70\nconst val GL_DEPTH_WRITEMASK = 0x0B72\nconst val GL_DEPTH_CLEAR_VALUE = 0x0B73\nconst val GL_DEPTH_FUNC = 0x0B74\nconst val GL_STENCIL_CLEAR_VALUE = 0x0B91\nconst val GL_STENCIL_FUNC = 0x0B92\nconst val GL_STENCIL_FAIL = 0x0B94\nconst val GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95\nconst val GL_STENCIL_PASS_DEPTH_PASS = 0x0B96\nconst val GL_STENCIL_REF = 0x0B97\nconst val GL_STENCIL_VALUE_MASK = 0x0B93\nconst val GL_STENCIL_WRITEMASK = 0x0B98\nconst val GL_STENCIL_BACK_FUNC = 0x8800\nconst val GL_STENCIL_BACK_FAIL = 0x8801\nconst val GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802\nconst val GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803\nconst val GL_STENCIL_BACK_REF = 0x8CA3\nconst val GL_STENCIL_BACK_VALUE_MASK = 0x8CA4\nconst val GL_STENCIL_BACK_WRITEMASK = 0x8CA5\nconst val GL_VIEWPORT = 0x0BA2\nconst val GL_SCISSOR_BOX = 0x0C10\nconst val GL_COLOR_CLEAR_VALUE = 0x0C22\nconst val GL_COLOR_WRITEMASK = 0x0C23\nconst val GL_UNPACK_ALIGNMENT = 0x0CF5\nconst val GL_PACK_ALIGNMENT = 0x0D05\nconst val GL_MAX_TEXTURE_SIZE = 0x0D33\nconst val GL_MAX_VIEWPORT_DIMS = 0x0D3A\nconst val GL_SUBPIXEL_BITS = 0x0D50\nconst val GL_RED_BITS = 0x0D52\nconst val GL_GREEN_BITS = 0x0D53\nconst val GL_BLUE_BITS = 0x0D54\nconst val GL_ALPHA_BITS = 0x0D55\nconst val GL_DEPTH_BITS = 0x0D56\nconst val GL_STENCIL_BITS = 0x0D57\nconst val GL_POLYGON_OFFSET_UNITS = 0x2A00\nconst val GL_POLYGON_OFFSET_FACTOR = 0x8038\nconst val GL_TEXTURE_BINDING_2D = 0x8069\nconst val GL_SAMPLE_BUFFERS = 0x80A8\nconst val GL_SAMPLES = 0x80A9\nconst val GL_SAMPLE_COVERAGE_VALUE = 0x80AA\nconst val GL_SAMPLE_COVERAGE_INVERT = 0x80AB\nconst val GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2\nconst val GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\nconst val GL_DONT_CARE = 0x1100\nconst val GL_FASTEST = 0x1101\nconst val GL_NICEST = 0x1102\nconst val GL_GENERATE_MIPMAP_HINT = 0x8192\nconst val GL_BYTE = 0x1400\nconst val GL_UNSIGNED_BYTE = 0x1401\nconst val GL_SHORT = 0x1402\nconst val GL_UNSIGNED_SHORT = 0x1403\nconst val GL_INT = 0x1404\nconst val GL_UNSIGNED_INT = 0x1405\nconst val GL_FLOAT = 0x1406\nconst val GL_FIXED = 0x140C\nconst val GL_STENCIL_INDEX = 0x1901\nconst val GL_DEPTH_COMPONENT = 0x1902\nconst val GL_RED = 0x1903\nconst val GL_GREEN = 0x1904\nconst val GL_BLUE = 0x1905\nconst val GL_ALPHA = 0x1906\nconst val GL_RGB = 0x1907\nconst val GL_RGBA = 0x1908\nconst val GL_LUMINANCE = 0x1909\nconst val GL_LUMINANCE_ALPHA = 0x190A\nconst val GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nconst val GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nconst val GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nconst val GL_FRAGMENT_SHADER = 0x8B30\nconst val GL_VERTEX_SHADER = 0x8B31\nconst val GL_MAX_VERTEX_ATTRIBS = 0x8869\nconst val GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nconst val GL_MAX_VARYING_VECTORS = 0x8DFC\nconst val GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nconst val GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nconst val GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nconst val GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nconst val GL_SHADER_TYPE = 0x8B4F\nconst val GL_DELETE_STATUS = 0x8B80\nconst val GL_LINK_STATUS = 0x8B82\nconst val GL_VALIDATE_STATUS = 0x8B83\nconst val GL_ATTACHED_SHADERS = 0x8B85\nconst val GL_ACTIVE_UNIFORMS = 0x8B86\nconst val GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87\nconst val GL_ACTIVE_ATTRIBUTES = 0x8B89\nconst val GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A\nconst val GL_SHADING_LANGUAGE_VERSION = 0x8B8C\nconst val GL_CURRENT_PROGRAM = 0x8B8D\nconst val GL_NEVER = 0x0200\nconst val GL_LESS = 0x0201\nconst val GL_EQUAL = 0x0202\nconst val GL_LEQUAL = 0x0203\nconst val GL_GREATER = 0x0204\nconst val GL_NOTEQUAL = 0x0205\nconst val GL_GEQUAL = 0x0206\nconst val GL_ALWAYS = 0x0207\nconst val GL_KEEP = 0x1E00\nconst val GL_REPLACE = 0x1E01\nconst val GL_INCR = 0x1E02\nconst val GL_DECR = 0x1E03\nconst val GL_INVERT = 0x150A\nconst val GL_INCR_WRAP = 0x8507\nconst val GL_DECR_WRAP = 0x8508\nconst val GL_VENDOR = 0x1F00\nconst val GL_RENDERER = 0x1F01\nconst val GL_VERSION = 0x1F02\nconst val GL_EXTENSIONS = 0x1F03\nconst val GL_NEAREST = 0x2600\nconst val GL_LINEAR = 0x2601\nconst val GL_NEAREST_MIPMAP_NEAREST = 0x2700\nconst val GL_LINEAR_MIPMAP_NEAREST = 0x2701\nconst val GL_NEAREST_MIPMAP_LINEAR = 0x2702\nconst val GL_LINEAR_MIPMAP_LINEAR = 0x2703\nconst val GL_TEXTURE_MAG_FILTER = 0x2800\nconst val GL_TEXTURE_MIN_FILTER = 0x2801\nconst val GL_TEXTURE_WRAP_S = 0x2802\nconst val GL_TEXTURE_WRAP_T = 0x2803\nconst val GL_TEXTURE = 0x1702\nconst val GL_TEXTURE_CUBE_MAP = 0x8513\nconst val GL_TEXTURE_BINDING_CUBE_MAP = 0x8514\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A\nconst val GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nconst val GL_TEXTURE0 = 0x84C0\nconst val GL_TEXTURE1 = 0x84C1\nconst val GL_TEXTURE2 = 0x84C2\nconst val GL_TEXTURE3 = 0x84C3\nconst val GL_TEXTURE4 = 0x84C4\nconst val GL_TEXTURE5 = 0x84C5\nconst val GL_TEXTURE6 = 0x84C6\nconst val GL_TEXTURE7 = 0x84C7\nconst val GL_TEXTURE8 = 0x84C8\nconst val GL_TEXTURE9 = 0x84C9\nconst val GL_TEXTURE10 = 0x84CA\nconst val GL_TEXTURE11 = 0x84CB\nconst val GL_TEXTURE12 = 0x84CC\nconst val GL_TEXTURE13 = 0x84CD\nconst val GL_TEXTURE14 = 0x84CE\nconst val GL_TEXTURE15 = 0x84CF\nconst val GL_TEXTURE16 = 0x84D0\nconst val GL_TEXTURE17 = 0x84D1\nconst val GL_TEXTURE18 = 0x84D2\nconst val GL_TEXTURE19 = 0x84D3\nconst val GL_TEXTURE20 = 0x84D4\nconst val GL_TEXTURE21 = 0x84D5\nconst val GL_TEXTURE22 = 0x84D6\nconst val GL_TEXTURE23 = 0x84D7\nconst val GL_TEXTURE24 = 0x84D8\nconst val GL_TEXTURE25 = 0x84D9\nconst val GL_TEXTURE26 = 0x84DA\nconst val GL_TEXTURE27 = 0x84DB\nconst val GL_TEXTURE28 = 0x84DC\nconst val GL_TEXTURE29 = 0x84DD\nconst val GL_TEXTURE30 = 0x84DE\nconst val GL_TEXTURE31 = 0x84DF\nconst val GL_REPEAT = 0x2901\nconst val GL_CLAMP_TO_EDGE = 0x812F\nconst val GL_MIRRORED_REPEAT = 0x8370\nconst val GL_FLOAT_VEC2 = 0x8B50\nconst val GL_FLOAT_VEC3 = 0x8B51\nconst val GL_FLOAT_VEC4 = 0x8B52\nconst val GL_INT_VEC2 = 0x8B53\nconst val GL_INT_VEC3 = 0x8B54\nconst val GL_INT_VEC4 = 0x8B55\nconst val GL_BOOL = 0x8B56\nconst val GL_BOOL_VEC2 = 0x8B57\nconst val GL_BOOL_VEC3 = 0x8B58\nconst val GL_BOOL_VEC4 = 0x8B59\nconst val GL_FLOAT_MAT2 = 0x8B5A\nconst val GL_FLOAT_MAT3 = 0x8B5B\nconst val GL_FLOAT_MAT4 = 0x8B5C\nconst val GL_SAMPLER_2D = 0x8B5E\nconst val GL_SAMPLER_CUBE = 0x8B60\nconst val GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622\nconst val GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623\nconst val GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624\nconst val GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625\nconst val GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A\nconst val GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645\nconst val GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F\nconst val GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A\nconst val GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B\nconst val GL_COMPILE_STATUS = 0x8B81\nconst val GL_INFO_LOG_LENGTH = 0x8B84\nconst val GL_SHADER_SOURCE_LENGTH = 0x8B88\nconst val GL_SHADER_COMPILER = 0x8DFA\nconst val GL_SHADER_BINARY_FORMATS = 0x8DF8\nconst val GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9\nconst val GL_LOW_FLOAT = 0x8DF0\nconst val GL_MEDIUM_FLOAT = 0x8DF1\nconst val GL_HIGH_FLOAT = 0x8DF2\nconst val GL_LOW_INT = 0x8DF3\nconst val GL_MEDIUM_INT = 0x8DF4\nconst val GL_HIGH_INT = 0x8DF5\nconst val GL_FRAMEBUFFER = 0x8D40\nconst val GL_RENDERBUFFER = 0x8D41\nconst val GL_RGBA4 = 0x8056\nconst val GL_RGBA8 = 0x8058\nconst val GL_BGR = 0x80e0\nconst val GL_BGRA = 0x80e1\nconst val GL_RGB5_A1 = 0x8057\nconst val GL_RGB565 = 0x8D62\nconst val GL_DEPTH_COMPONENT16 = 0x81A5\nconst val GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nconst val GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nconst val GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nconst val GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB\nconst val GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC\nconst val GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\nconst val GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56\nconst val GL_FRAMEBUFFER_UNDEFINED = 0x8219\nconst val GL_COLOR_ATTACHMENT0 = 0x8CE0\nconst val GL_COLOR_ATTACHMENT1 = 0x8CE1\nconst val GL_COLOR_ATTACHMENT2 = 0x8CE2\nconst val GL_COLOR_ATTACHMENT3 = 0x8CE3\nconst val GL_COLOR_ATTACHMENT4 = 0x8CE4\nconst val GL_COLOR_ATTACHMENT5 = 0x8CE5\nconst val GL_COLOR_ATTACHMENT6 = 0x8CE6\nconst val GL_COLOR_ATTACHMENT7 = 0x8CE7\nconst val GL_COLOR_ATTACHMENT8 = 0x8CE8\nconst val GL_COLOR_ATTACHMENT9 = 0x8CE9\nconst val GL_COLOR_ATTACHMENT10 = 0x8CEA\nconst val GL_COLOR_ATTACHMENT11 = 0x8CEB\nconst val GL_COLOR_ATTACHMENT12 = 0x8CEC\nconst val GL_COLOR_ATTACHMENT13 = 0x8CED\nconst val GL_COLOR_ATTACHMENT14 = 0x8CEE\nconst val GL_COLOR_ATTACHMENT15 = 0x8CEF\nconst val GL_COLOR_ATTACHMENT16 = 0x8CF0\nconst val GL_COLOR_ATTACHMENT17 = 0x8CF1\nconst val GL_COLOR_ATTACHMENT18 = 0x8CF2\nconst val GL_COLOR_ATTACHMENT19 = 0x8CF3\nconst val GL_COLOR_ATTACHMENT20 = 0x8CF4\nconst val GL_COLOR_ATTACHMENT21 = 0x8CF5\nconst val GL_COLOR_ATTACHMENT22 = 0x8CF6\nconst val GL_COLOR_ATTACHMENT23 = 0x8CF7\nconst val GL_COLOR_ATTACHMENT24 = 0x8CF8\nconst val GL_COLOR_ATTACHMENT25 = 0x8CF9\nconst val GL_COLOR_ATTACHMENT26 = 0x8CFA\nconst val GL_COLOR_ATTACHMENT27 = 0x8CFB\nconst val GL_COLOR_ATTACHMENT28 = 0x8CFC\nconst val GL_COLOR_ATTACHMENT29 = 0x8CFD\nconst val GL_COLOR_ATTACHMENT30 = 0x8CFE\nconst val GL_COLOR_ATTACHMENT31 = 0x8CFF\nconst val GL_DEPTH_ATTACHMENT = 0x8D00\nconst val GL_STENCIL_ATTACHMENT = 0x8D20\nconst val GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\nconst val GL_R8 = 0x8229\nconst val GL_R16 = 0x822A\nconst val GL_RG8 = 0x822B\nconst val GL_RG16 = 0x822C\nconst val GL_R16F = 0x822D\nconst val GL_R32F = 0x822E\nconst val GL_RG16F = 0x822F\nconst val GL_RG32F = 0x8230\nconst val GL_R8I = 0x8231\nconst val GL_R8UI = 0x8232\nconst val GL_R16I = 0x8233\nconst val GL_R16UI = 0x8234\nconst val GL_R32I = 0x8235\nconst val GL_R32UI = 0x8236\nconst val GL_RG8I = 0x8237\nconst val GL_RG8UI = 0x8238\nconst val GL_RG16I = 0x8239\nconst val GL_RG16UI = 0x823A\nconst val GL_RG32I = 0x823B\nconst val GL_RG32UI = 0x823C\nconst val GL_RG = 0x8227\nconst val GL_COMPRESSED_RED = 0x8225\nconst val GL_COMPRESSED_RG = 0x8226\n\ninterface Kgl {\n abstract val hasMaliOOMBug: Boolean\n \n fun createShader(type: Int): KglShader\n fun shaderSource(shader: KglShader, source: String)\n fun compileShader(shader: KglShader)\n fun deleteShader(shader: KglShader)\n\n fun getShaderParameteri(shader: KglShader, pname: Int): Int\n\n fun getProgramInfoLog(program: KglProgram) : String\n fun getShaderInfoLog(shader: KglShader) : String\n\n fun createProgram(): KglProgram\n fun attachShader(program: KglProgram, shader: KglShader)\n fun linkProgram(program: KglProgram)\n fun useProgram(program: KglProgram)\n fun deleteProgram(program: KglProgram)\n\n fun getProgramParameteri(program: KglProgram, pname: Int): Int\n\n fun getUniformLocation(program: KglProgram, name: String): KglUniformLocation\n fun bindAttribLocation(program: KglProgram, index: Int, name: String)\n\n fun enable(cap: Int)\n fun disable(cap: Int)\n\n fun enableVertexAttribArray(location: Int)\n fun disableVertexAttribArray(location: Int)\n\n fun getParameteri(pname: Int): Int\n fun getParameterf(pname: Int): Float\n fun getParameteriv(pname: Int): IntArray\n fun getParameterfv(pname: Int): FloatArray\n\n fun createBuffer(): KglBuffer\n fun bindBuffer(target: Int, buffer: KglBuffer)\n fun bufferData(target: Int, size: Int, sourceData: ShortArray, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: IntArray, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: FloatArray, usage: Int, offset: Int = 0)\n fun deleteBuffer(buffer: KglBuffer)\n\n fun vertexAttribPointer(location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n\n fun uniform1f(location: KglUniformLocation, f: Float)\n fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform1i(location: KglUniformLocation, i: Int)\n\n fun uniform2f(location: KglUniformLocation, x: Float, y: Float)\n fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform2i(location: KglUniformLocation, x: Int, y: Int)\n\n fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float)\n fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int)\n\n fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int)\n\n fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n\n fun cullFace(mode: Int)\n fun frontFace (mode: Int)\n\n fun polygonOffset(factor: Float, units: Float)\n\n fun depthFunc(func: Int)\n fun depthMask(mask: Boolean)\n\n fun blendFunc(sFactor: Int, dFactor: Int)\n\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n fun clearColor(r: Float, g: Float, b: Float, a: Float)\n fun clear(mask: Int)\n\n fun createTexture(): KglTexture\n fun deleteTexture(texture: KglTexture)\n fun texImage2D(target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?)\n fun activeTexture(texture: Int)\n fun bindTexture(target: Int, texture: KglTexture)\n fun generateMipmap(target: Int)\n fun texParameteri(target: Int, pname: Int, value: Int)\n\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n\n fun getError(): Int\n fun finish()\n\n fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer)\n fun createFramebuffer(): KglFramebuffer\n fun deleteFramebuffer(framebuffer: KglFramebuffer)\n fun checkFramebufferStatus(target: Int): Int\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int)\n\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray)\n fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean)\n fun lineWidth(width: Float)\n fun pixelStorei(pname: Int, param: Int)\n}\n","package earth.worldwind.util.math\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Viewport\nimport kotlin.math.*\n\n/**\n * Restricts a value to the range [min, max] degrees, clamping values outside the range. Values less than min are\n * returned as min, and values greater than max are returned as max. Values within the range are returned\n * unmodified.\n *
\n * The result of this method is undefined if min is greater than max.\n *\n * @param value the values to clamp\n * @param min the minimum value\n * @param max the maximum value\n *\n * @return the specified values clamped to the range [min, max] degrees\n */\nfun clamp(value: Double, min: Double, max: Double) = value.coerceIn(min, max)\n\n/**\n * Returns the fractional part of a specified number\n *\n * @param value the number whose fractional part to compute\n *\n * @return The fractional part of the specified number: value - floor(value)\n */\nfun fract(value: Double) = value - floor(value)\n\n/**\n * Computes the linear interpolation of two values according to a specified fractional amount. The fractional amount\n * is interpreted as a relative proportion of the two values, where 0.0 indicates the first value, 0.5 indicates a\n * 50/50 mix of the two values, and 1.0 indicates the second value.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two values in the range [0, 1]\n * @param value1 the first value\n * @param value2 the second value\n *\n * @return the interpolated value\n */\nfun interpolate(amount: Double, value1: Double, value2: Double) = (1 - amount) * value1 + amount * value2\n\n/**\n * Returns the integer modulus of a specified number. This differs from the % operator in that the result is\n * always positive when the modulus is positive. For example -1 % 10 = -1, whereas mod(-1, 10) = 1.\n *\n * @param value the integer number whose modulus to compute\n * @param modulus the modulus\n *\n * @return the remainder after dividing the number by the modulus\n */\nfun mod(value: Int, modulus: Int) = (value % modulus + modulus) % modulus\n\n/**\n * Computes the bounding rectangle for a unit square after applying a transformation matrix to the square's four\n * corners.\n *\n * @param unitSquareTransform the matrix to apply to the unit square\n * @param result a pre-allocated Viewport in which to return the computed bounding rectangle\n *\n * @return the result argument set to the computed bounding rectangle\n */\nfun boundingRectForUnitSquare(unitSquareTransform: Matrix4, result: Viewport): Viewport {\n val m = unitSquareTransform.m\n\n // transform of (0, 0)\n val x1 = m[3]\n val y1 = m[7]\n\n // transform of (1, 0)\n val x2 = m[0] + m[3]\n val y2 = m[4] + m[7]\n\n // transform of (0, 1)\n val x3 = m[1] + m[3]\n val y3 = m[5] + m[7]\n\n // transform of (1, 1)\n val x4 = m[0] + m[1] + m[3]\n val y4 = m[4] + m[5] + m[7]\n val minX = min(min(x1, x2), min(x3, x4)).toInt()\n val maxX = max(max(x1, x2), max(x3, x4)).toInt()\n val minY = min(min(y1, y2), min(y3, y4)).toInt()\n val maxY = max(max(y1, y2), max(y3, y4)).toInt()\n return result.set(minX, minY, maxX - minX, maxY - minY)\n}\n\n/**\n * Indicates whether a specified value is a power of two.\n *\n * @param value the value to test\n *\n * @return true if the specified value is a power of two, false othwerwise\n */\nfun isPowerOfTwo(value: Int) = value != 0 && value and value - 1 == 0\n\n/**\n * Returns the value that is the nearest power of 2 greater than or equal to the given value.\n *\n * @param value the reference value. The power of 2 returned is greater than or equal to this value.\n *\n * @return the value that is the nearest power of 2 greater than or equal to the reference value\n */\nfun powerOfTwoCeiling(value: Int): Int {\n val pow = ceil(ln(value.toDouble()) / ln(2.0)).toInt()\n return 1 shl pow\n}","package earth.worldwind\n\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.*\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.WheelEvent\nimport kotlin.math.cos\nimport kotlin.math.max\nimport kotlin.math.sin\n\n/**\n * This class provides the default window controller for WorldWind for controlling the globe via user interaction.\n */\nopen class BasicWorldWindowController(wwd: WorldWindow): WorldWindowController(wwd) {\n val primaryDragRecognizer = DragRecognizer(wwd.canvas).also { it.addListener(this) }\n val secondaryDragRecognizer = DragRecognizer(wwd.canvas).also {\n it.addListener(this)\n it.button = 2 // secondary mouse button\n }\n val panRecognizer = PanRecognizer(wwd.canvas).also { it.addListener(this) }\n val pinchRecognizer = PinchRecognizer(wwd.canvas).also { it.addListener(this) }\n val rotationRecognizer = RotationRecognizer(wwd.canvas).also { it.addListener(this) }\n val tiltRecognizer = TiltRecognizer(wwd.canvas).also { it.addListener(this) }\n// val tapRecognizer = TapRecognizer(wwd.canvas).also { it.addListener(this) }\n// val clickRecognizer = ClickRecognizer(wwd.canvas).also { it.addListener(this) }\n /**\n * A copy of the viewing parameters at the start of a gesture as a look at view.\n */\n protected val beginLookAt = LookAt()\n /**\n * The current state of the viewing parameters during a gesture as a look at view.\n */\n protected val lookAt = LookAt()\n protected val beginPoint = Vec2()\n protected val lastPoint = Vec2()\n protected var lastRotation = 0.0\n protected var lastWheelEvent = 0\n protected var activeGestures = 0\n\n init {\n // Establish the dependencies between gesture recognizers. The pan, pinch and rotate gesture may recognize\n // simultaneously with each other.\n panRecognizer.recognizeSimultaneouslyWith(pinchRecognizer)\n panRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n pinchRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n\n // Since the tilt gesture is a subset of the pan gesture, pan will typically recognize before tilt,\n // effectively suppressing tilt. Establish a dependency between the other touch gestures and tilt to provide\n // tilt an opportunity to recognize.\n panRecognizer.requireRecognizerToFail(tiltRecognizer)\n pinchRecognizer.requireRecognizerToFail(tiltRecognizer)\n rotationRecognizer.requireRecognizerToFail(tiltRecognizer)\n }\n\n override fun handleEvent(event: Event) {\n super.handleEvent(event)\n if (!event.defaultPrevented) {\n if (event.type == \"wheel\") {\n event.preventDefault()\n handleWheelEvent(event as WheelEvent)\n } else GestureRecognizer.allRecognizers.forEach { r -> if (r.target == wwd.canvas) r.handleEvent(event) }\n }\n }\n\n override fun gestureStateChanged(recognizer: GestureRecognizer) {\n when(recognizer) {\n primaryDragRecognizer, panRecognizer -> handlePanOrDrag(recognizer)\n secondaryDragRecognizer -> handleSecondaryDrag(recognizer)\n pinchRecognizer -> handlePinch(recognizer as PinchRecognizer)\n rotationRecognizer -> handleRotation(recognizer as RotationRecognizer)\n tiltRecognizer -> handleTilt(recognizer)\n// clickRecognizer, tapRecognizer -> handleClickOrTap(recognizer)\n }\n }\n\n// protected open fun handleClickOrTap(recognizer: GestureRecognizer) {\n// if (recognizer.state == RECOGNIZED) {\n// val pickPoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n//\n// // Identify if the top picked object contains a URL for hyperlinking\n// val pickList = wwd.pick(pickPoint)\n// val userObject = pickList.topPickedObject?.userObject\n// // If the url object was appended, open the hyperlink\n// if (userObject is Renderable && userObject.hasUserProperty(\"url\")) {\n// window.open(userObject.getUserProperty(\"url\") as String, \"_blank\")\n// }\n// }\n// }\n\n protected open fun handlePanOrDrag(recognizer: GestureRecognizer) {\n if (wwd.engine.globe.is2D) handlePanOrDrag2D(recognizer) else handlePanOrDrag3D(recognizer)\n }\n\n protected open fun handlePanOrDrag3D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastPoint.set(0.0, 0.0)\n }\n CHANGED -> {\n // Convert the translation from screen coordinates to arc degrees. Use the view's range as a\n // metric for converting screen pixels to meters, and use the globe's radius for converting from meters\n // to arc degrees. Transform viewport pixel size to canvas client pixel size.\n val globe = wwd.engine.globe\n val globeRadius = max(globe.equatorialRadius, globe.polarRadius)\n val distance = max(1.0, lookAt.range)\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(distance) * wwd.engine.densityFactor\n val forwardMeters = (ty - lastPoint.y) * metersPerPixel\n val sideMeters = -(tx - lastPoint.x) * metersPerPixel\n val forwardRadians = forwardMeters / globeRadius\n val sideRadians = sideMeters / globeRadius\n\n // Apply the change in latitude and longitude to the view, relative to the current heading.\n val sinHeading = sin(lookAt.heading.inRadians)\n val cosHeading = cos(lookAt.heading.inRadians)\n lookAt.position.apply {\n latitude = latitude.plusRadians(forwardRadians * cosHeading - sideRadians * sinHeading)\n longitude = longitude.plusRadians(forwardRadians * sinHeading + sideRadians * cosHeading)\n }\n lastPoint.set(tx, ty)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePanOrDrag2D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val x = recognizer.clientX.toDouble()\n val y = recognizer.clientY.toDouble()\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n beginPoint.set(x, y)\n lastPoint.set(x, y)\n }\n CHANGED -> {\n val x1 = lastPoint.x\n val y1 = lastPoint.y\n val x2 = beginPoint.x + tx\n val y2 = beginPoint.y + ty\n lastPoint.set(x2, y2)\n // Transform the original view's modelview matrix to account for the gesture's change.\n wwd.engine.moveLookAt(lookAt, wwd.canvasCoordinates(x1, y1), wwd.canvasCoordinates(x2, y2))\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleSecondaryDrag(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the current translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the gesture translation to a fraction of an angle.\n val headingDegrees = 180.0 * tx / wwd.canvas.clientWidth\n val tiltDegrees = 90.0 * ty / wwd.canvas.clientHeight\n\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.heading = beginLookAt.heading.plusDegrees(headingDegrees)\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePinch(recognizer: PinchRecognizer) {\n val state = recognizer.state\n val scale = recognizer.scaleWithOffset\n\n when(state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> if (scale != 0.0) {\n // Apply the change in pinch scale to this view's range, relative to the range when the gesture began.\n lookAt.range = beginLookAt.range / scale\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleRotation(recognizer: RotationRecognizer) {\n val state = recognizer.state\n val rotation = recognizer.rotationWithOffset\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastRotation = 0.0\n }\n CHANGED -> {\n // Apply the change in gesture rotation to this view's current heading. We apply relative to the\n // current heading rather than the heading when the gesture began in order to work simultaneously with\n // pan operations that also modify the current heading.\n lookAt.heading = lookAt.heading.minusDegrees(rotation - lastRotation)\n lastRotation = rotation\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleTilt(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the gesture translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the translation to a fraction of an angle.\n val tiltDegrees = -90.0 * ty / wwd.canvas.clientHeight\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleWheelEvent(event: WheelEvent) {\n val timeStamp = event.timeStamp.toInt()\n if (timeStamp - lastWheelEvent > 500) {\n wwd.engine.cameraAsLookAt(lookAt)\n lastWheelEvent = timeStamp\n }\n\n // Normalize the wheel delta based on the wheel delta mode. This produces a roughly consistent delta across\n // browsers and input devices.\n val normalizedDelta = when(event.deltaMode) {\n WheelEvent.DOM_DELTA_PIXEL -> event.deltaY\n WheelEvent.DOM_DELTA_LINE -> event.deltaY * 20.0\n WheelEvent.DOM_DELTA_PAGE -> event.deltaY * 200.0\n else -> event.deltaY\n }\n\n // Compute a zoom scale factor by adding a fraction of the normalized delta to 1. When multiplied by the\n // view's range, this has the effect of zooming out or zooming in depending on whether the delta is\n // positive or negative, respectfully.\n val scale = 1.0 + (normalizedDelta / 1000.0)\n\n // Apply the scale to this view's properties.\n lookAt.range *= scale\n applyChanges()\n }\n\n protected open fun applyChanges() {\n // Update camera view\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n protected open fun gestureDidBegin() {\n if (activeGestures++ == 0) {\n wwd.engine.cameraAsLookAt(beginLookAt)\n lookAt.copy(beginLookAt)\n }\n }\n\n protected open fun gestureDidEnd() {\n // this should always be the case, but we check anyway\n if (activeGestures > 0) activeGestures--\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.LookAt\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.KeyboardEvent\n\n/**\n * The KeyboardControls module provides keyboard controls for the globe.\n * Note: the canvas must be focusable this can be accomplished by establishing the \"tabindex\"\n * on the canvas element.\n */\nopen class KeyboardControls(\n /**\n * The WorldWindow associated with these controls.\n */\n protected val wwd: WorldWindow\n) {\n /**\n * Enable/disable keyboard events processing\n */\n var isEnabled = true\n /**\n * The incremental amount to increase or decrease the eye distance (for zoom) each cycle.\n */\n var zoomIncrement = 0.01f\n /**\n * The scale factor governing the pan speed. Increased values cause faster panning.\n */\n var panIncrement = 0.0000000005f\n /**\n * The incremental amount to increase or decrease the tilt (in degrees) each cycle.\n */\n var tiltIncrement = 0.5\n /**\n * The current state of the viewing parameters during an operation as a look at view.\n */\n protected val lookAt = LookAt()\n /**\n * Is key down?\n */\n protected var isKeyDown = false\n /**\n * Controls the globe with the keyboard.\n */\n protected val handleKeyDown = EventListener { event ->\n if (!isEnabled || event !is KeyboardEvent) return@EventListener\n\n isKeyDown = true\n wwd.engine.cameraAsLookAt(lookAt)\n\n // TODO: find a way to make this code portable for different keyboard layouts\n when (event.keyCode) {\n 187, 61 -> { // + key || +/= key\n handleZoom(\"zoomIn\")\n event.preventDefault()\n }\n 189, 173 -> { // - key || _/- key\n handleZoom(\"zoomOut\")\n event.preventDefault()\n }\n 33 -> { // Page Up\n handleTilt(\"tiltUp\")\n event.preventDefault()\n }\n 34 -> { // Page down\n handleTilt(\"tiltDown\")\n event.preventDefault()\n }\n 37 -> { // Left arrow\n handlePan(\"panLeft\")\n event.preventDefault()\n }\n 38 -> { // Up arrow\n handlePan(\"panUp\")\n event.preventDefault()\n }\n 39 -> { // Right arrow\n handlePan(\"panRight\")\n event.preventDefault()\n }\n 40 -> { // Down arrow\n handlePan(\"panDown\")\n event.preventDefault()\n }\n 78 -> { // N key\n resetHeading()\n event.preventDefault()\n }\n 82 -> { // R key\n resetHeadingAndTilt()\n event.preventDefault()\n }\n }\n }\n /**\n * On keyboard event finished.\n */\n protected val handleKeyUp = EventListener { event->\n if (isKeyDown) {\n isKeyDown = false\n event.preventDefault()\n }\n }\n\n init {\n // The tabIndex must be set for the keyboard controls to work\n val tabIndex = wwd.canvas.tabIndex\n if (tabIndex < 0) wwd.canvas.tabIndex = 0\n // Add keyboard listeners\n wwd.addEventListener(\"keydown\", handleKeyDown)\n wwd.addEventListener(\"keyup\", handleKeyUp)\n // Ensure keyboard controls are operational by setting the focus to the canvas\n wwd.addEventListener(\"click\", EventListener { if (isEnabled) wwd.canvas.focus() })\n }\n\n /**\n * Reset the view to North up.\n */\n protected open fun resetHeading() {\n lookAt.heading = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * Reset the view to North up and nadir.\n */\n protected open fun resetHeadingAndTilt() {\n lookAt.heading = Angle.ZERO\n lookAt.tilt = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * This function is called by the timer to perform the Pan operation.\n */\n protected open fun handlePan(operation: String) {\n if (isKeyDown) {\n var heading = lookAt.heading\n val distance = panIncrement * lookAt.range\n when (operation) {\n \"panDown\" -> heading -= Angle.POS180\n \"panLeft\" -> heading -= Angle.POS90\n \"panRight\" -> heading += Angle.POS90\n }\n lookAt.position.greatCircleLocation(heading, distance, lookAt.position)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handlePan, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Range operation.\n */\n protected open fun handleZoom(operation: String) {\n if (isKeyDown) {\n if (operation == \"zoomIn\") lookAt.range *= (1 - zoomIncrement)\n else if (operation == \"zoomOut\") lookAt.range *= (1 + zoomIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleZoom, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Tilt operation.\n */\n protected open fun handleTilt(operation: String) {\n if (isKeyDown) {\n if (operation == \"tiltUp\") lookAt.tilt = lookAt.tilt.minusDegrees(tiltIncrement)\n else if (operation == \"tiltDown\") lookAt.tilt = lookAt.tilt.plusDegrees(tiltIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleTilt, 50, operation)\n }\n }\n}","package earth.worldwind\n\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.gesture.SelectDragDetector\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.WebKgl\nimport kotlinx.browser.window\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.WebGLContextAttributes\nimport org.khronos.webgl.WebGLContextEvent\nimport org.khronos.webgl.WebGLRenderingContext\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.roundToInt\n\n/**\n * Represents a WorldWind window for an HTML canvas.\n */\nopen class WorldWindow(\n /**\n * The HTML canvas associated with this WorldWindow.\n */\n val canvas: HTMLCanvasElement,\n /**\n * Render resource cache capacity in bytes\n */\n cacheCapacity: Long = RenderResourceCache.recommendedCapacity()\n) {\n /**\n * WebGL context associated with the HTML canvas.\n */\n protected val gl = createContext(canvas)\n /**\n * Main WorldWindow scope to execute jobs which should be cancelled on GL context lost\n */\n val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * Main WorldWind engine, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\n open val engine = WorldWind(WebKgl(gl), RenderResourceCache(cacheCapacity))\n /**\n * List of registered event listeners for the specified event type on this WorldWindow's canvas.\n */\n protected val eventListeners = mutableMapOf()\n /**\n * The controller used to manipulate the globe.\n */\n var controller: WorldWindowController = BasicWorldWindowController(this)\n /**\n * The controller used to manipulate the globe with the keyboard.\n */\n open val keyboardControls = KeyboardControls(this)\n /**\n * Renderable selection and drag gestures detector. Assign [SelectDragDetector.callback] to handle events.\n */\n open val selectDragDetector = SelectDragDetector(this)\n /**\n * The list of callbacks to call immediately before and immediately after performing a redrawn. The callbacks\n * have two arguments: this WorldWindow and the redraw stage, e.g., redrawCallback(worldWindow, stage);.\n * The stage will be either WorldWind.BEFORE_REDRAW or WorldWind.AFTER_REDRAW indicating whether the\n * callback has been called either immediately before or immediately after a redrawn, respectively.\n * Applications may add functions to this array or remove them.\n */\n val redrawCallbacks = mutableSetOf<(WorldWindow, RedrawStage)->Unit>()\n protected val frame = Frame()\n protected var redrawRequestId = 0\n protected var isRedrawRequested = false\n\n protected class EventListenerEntry(val callback: (Event) -> Unit) {\n val listeners = mutableListOf()\n }\n\n init {\n // Prevent the browser's default actions in response to mouse and touch events, which interfere with\n // navigation. Register these event listeners before any others to ensure that they're called last.\n val preventDefaultListener = EventListener { e -> e.preventDefault() }\n addEventListener(\"mousedown\", preventDefaultListener)\n addEventListener(\"touchstart\", preventDefaultListener)\n addEventListener(\"contextmenu\", preventDefaultListener)\n addEventListener(\"wheel\", preventDefaultListener)\n\n // Redirect various UI interactions to the appropriate handler.\n val onGestureEvent = EventListener { e -> controller.handleEvent(e) }\n if (window.navigator.maxTouchPoints == 0) {\n // Prevent the browser's default actions in response to pointer events which interfere with navigation.\n // This CSS style property is configured here to ensure that it's set for all applications.\n canvas.style.setProperty(\"touch-action\", \"none\")\n\n addEventListener(\"pointerdown\", onGestureEvent)\n window.addEventListener(\"pointermove\", onGestureEvent, false) // get pointermove events outside event target\n window.addEventListener(\"pointercancel\", onGestureEvent, false) // get pointercancel events outside event target\n window.addEventListener(\"pointerup\", onGestureEvent, false) // get pointerup events outside event target\n } else {\n addEventListener(\"mousedown\", onGestureEvent)\n window.addEventListener(\"mousemove\", onGestureEvent, false) // get mousemove events outside event target\n window.addEventListener(\"mouseup\", onGestureEvent, false) // get mouseup events outside event target\n addEventListener(\"touchstart\", onGestureEvent)\n addEventListener(\"touchmove\", onGestureEvent)\n addEventListener(\"touchend\", onGestureEvent)\n addEventListener(\"touchcancel\", onGestureEvent)\n }\n addEventListener(\"wheel\", onGestureEvent)\n\n // Set up to handle WebGL context events.\n canvas.addEventListener(\"webglcontextlost\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Inform WebGL that we handle context restoration, enabling the context restored event to be delivered.\n event.preventDefault()\n // Notify the draw context that the WebGL rendering context has been lost.\n contextLost()\n }, false)\n canvas.addEventListener(\"webglcontextrestored\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Notify the draw context that the WebGL rendering context has been restored.\n contextRestored()\n }, false)\n\n // Set up WebGL context and start rendering to the WebGL context in an animation frame loop.\n this.contextRestored()\n }\n\n /**\n * Registers an event listener for the specified event type on this WorldWindow's canvas. This function\n * delegates the processing of events to the WorldWindow's canvas. For details on this function and its\n * arguments, see the W3C [org.w3c.dom.events.EventTarget] documentation.\n * @see EventTarget\n *\n * When an event occurs, this calls the registered event listeners in order of reverse registration.\n *\n * @param type The event type to listen for.\n * @param listener The [EventListener] to call when the event occurs.\n */\n fun addEventListener(type: String, listener: EventListener) {\n var entry = eventListeners[type]\n if (entry == null) {\n entry = EventListenerEntry { event ->\n event.asDynamic().worldWindow = this@WorldWindow\n // calls listeners in reverse registration order\n entry?.listeners?.forEach{ l -> l.handleEvent(event) }\n }.also { eventListeners[type] = it }\n }\n\n if (!entry.listeners.contains(listener)) { // suppress duplicate listeners\n entry.listeners.add(0, listener) // insert the listener at the beginning of the list\n // first listener added, add the event listener callback\n if (entry.listeners.size == 1) canvas.addEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Removes an event listener for the specified event type from this WorldWindow's canvas. The listener must be\n * the same object passed to addEventListener. Calling removeEventListener with arguments that do not identify a\n * currently registered listener has no effect.\n *\n * @param type Indicates the event type the listener registered for.\n * @param listener The listener to remove.\n */\n fun removeEventListener(type: String, listener: EventListener) {\n val entry = eventListeners[type] ?: return // no entry for the specified type\n if (entry.listeners.remove(listener) && entry.listeners.isEmpty()) {\n canvas.removeEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Causes this WorldWindow to redraw itself at the next available opportunity. The redrawn occurs on the main\n * thread at a time of the browser's discretion. Applications should call redraw after changing the World\n * Window's state, but should not expect that change to be reflected on screen immediately after this function\n * returns. This is the preferred method for requesting a redrawn of the WorldWindow.\n */\n fun requestRedraw() { isRedrawRequested = true } // redraw during the next animation frame\n\n /**\n * Converts window coordinates to coordinates relative to this WorldWindow's canvas.\n * @param x The X coordinate to convert.\n * @param y The Y coordinate to convert.\n * @returns The converted coordinates.\n */\n fun canvasCoordinates(x: Number, y: Number): Vec2 {\n val bbox = canvas.getBoundingClientRect()\n val xc = x.toDouble() - (bbox.left + canvas.clientLeft) // * canvas.width / bbox.width\n val yc = y.toDouble() - (bbox.top + canvas.clientTop) // * canvas.height / bbox.height\n return Vec2(xc, yc)\n }\n\n /**\n * Requests the WorldWind objects displayed at a specified screen-coordinate point.\n *\n * If the point intersects the terrain, the returned list contains an object identifying the associated geographic\n * position. This returns an empty list when nothing in the WorldWind scene intersects the specified point.\n *\n * @param pickPoint The point to examine in this WorldWindow's screen coordinates.\n * @returns A list of picked WorldWind objects at the specified pick point.\n */\n fun pick(pickPoint: Vec2) = pickShapesInRegion(pickPoint.x, pickPoint.y)\n\n /**\n * Requests the WorldWind objects displayed within a specified screen-coordinate region. This returns all\n * objects that intersect the specified region, regardless of whether an object is actually visible, and\n * marks objects that are visible as on top.\n *\n * @param x the X coordinate relative to this WorldWindow's canvas.\n * @param y the Y coordinate relative to this WorldWindow's canvas.\n * @param width the width in canvas pixels\n * @param height the height in canvas pixels\n * @param pickCenter picks top shape and terrain in rectangle center as priority\n *\n * @returns A list of visible WorldWind objects within the specified region.\n */\n fun pickShapesInRegion(\n x: Double, y: Double, width: Double = 0.0, height: Double = 0.0, pickCenter: Boolean = true\n ): PickedObjectList {\n // Allocate a list in which to collect and return the picked objects.\n val pickedObjects = PickedObjectList()\n\n // Nothing can be picked if viewport is undefined.\n val viewport = engine.viewport\n if (viewport.isEmpty) return pickedObjects\n\n // Determine pick viewport\n val pickViewport = if (width != 0.0 && height != 0.0) Viewport(\n floor(x).toInt(), viewport.height - ceil(y + height).toInt(), ceil(width).toInt(), ceil(height).toInt()\n ) else Viewport(x.roundToInt() - 1, viewport.height - y.roundToInt() - 1, 3, 3)\n if (!pickViewport.intersect(viewport)) return pickedObjects\n\n // Prepare pick frame\n frame.pickedObjects = pickedObjects\n frame.pickViewport = pickViewport\n if (pickCenter) {\n // Compute the pick point in OpenGL screen coordinates, rounding to the nearest whole pixel. Nothing can be picked\n // if pick point is outside the WorldWindow's viewport.\n val px = pickViewport.x + pickViewport.width / 2.0\n val py = pickViewport.y + pickViewport.height / 2.0\n if(viewport.contains(px, py)) {\n val pickRay = Line()\n if (engine.rayThroughScreenPoint(px, viewport.height - py, pickRay)) {\n frame.pickPoint = Vec2(px, py)\n frame.pickRay = pickRay\n }\n }\n }\n frame.isPickMode = true\n redrawFrame()\n\n return pickedObjects\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been lost. This function removes all\n * cached WebGL resources and resets all properties tracking the current WebGL state.\n */\n protected open fun contextLost() {\n // Stop the rendering animation frame loop, resuming only if the WebGL context is restored.\n window.cancelAnimationFrame(redrawRequestId)\n\n // Remove all cached WebGL resources, which are now invalid.\n engine.reset()\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been restored. This function prepares\n * this draw context to resume rendering.\n */\n protected open fun contextRestored() {\n // Remove all cached WebGL resources, which are now invalid.\n engine.renderResourceCache.clear()\n\n // Specify the default WorldWind OpenGL state.\n engine.setupDrawContext()\n\n // Store current screen density factor\n engine.densityFactor = window.devicePixelRatio.toFloat()\n\n // Enable WebGL depth texture extension to be able to use GL_DEPTH_COMPONENT texture format\n gl.getExtension(\"WEBGL_depth_texture\")\n\n // Subscribe on events from WorldWind's global event bus.\n mainScope.launch {\n WorldWind.events.collect {\n when (it) {\n is WorldWind.Event.RequestRedraw -> requestRedraw()\n is WorldWind.Event.UnmarkResourceAbsent -> {\n engine.renderResourceCache.absentResourceList.unmarkResourceAbsent(it.resourceId)\n }\n }\n }\n }\n\n // Request redraw at least once.\n requestRedraw()\n\n // Resume the rendering animation frame loop until the WebGL context is lost.\n animationFrameLoop()\n }\n\n protected open fun animationFrameLoop() {\n // Render to the WebGL context as needed.\n redrawIfNeeded()\n\n // Continue the animation frame loop until the WebGL context is lost.\n redrawRequestId = window.requestAnimationFrame { animationFrameLoop() }\n }\n\n protected open fun redrawIfNeeded() {\n // Check if the drawing buffer needs to resize to match its screen size, which requires a redrawn.\n resize()\n\n // Redraw the WebGL drawing buffer only when necessary.\n if (!isRedrawRequested) return\n isRedrawRequested = false\n redrawFrame()\n }\n\n protected open fun redrawFrame() {\n val isPickMode = frame.isPickMode\n try {\n // Prepare to redraw and notify redraw callbacks that a redrawn is about to occur.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.BEFORE_REDRAW)\n // Render frame. Propagate redraw requests submitted during rendering.\n if (engine.renderFrame(frame) || isPickMode) requestRedraw()\n // Redraw the WebGL drawing buffer.\n engine.drawFrame(frame)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"WorldWindow\", \"drawFrame\", \"Exception occurred during redrawing.\\n$e\"\n )\n } finally {\n // Recycle each frame to be reused\n frame.recycle()\n // Notify redraw callbacks that a redrawn has completed.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.AFTER_REDRAW)\n }\n }\n\n protected open fun resize() {\n // Check if canvas size is changed\n val width = (gl.canvas.clientWidth * engine.densityFactor).roundToInt()\n val height = (gl.canvas.clientHeight * engine.densityFactor).roundToInt()\n\n if (gl.canvas.width != width || gl.canvas.height != height || engine.viewport.isEmpty) {\n // Make the canvas drawing buffer size match its screen size.\n gl.canvas.width = width\n gl.canvas.height = height\n\n // Set the WebGL viewport to match the canvas drawing buffer size.\n engine.setupViewport(gl.drawingBufferWidth, gl.drawingBufferHeight)\n\n // Cause this WorldWindow to redraw with the new size.\n requestRedraw()\n }\n }\n\n protected open fun callRedrawCallbacks(stage: RedrawStage) = redrawCallbacks.forEach {\n try {\n it(this, stage)\n } catch (e: Exception) {\n // Keep going. Execute the rest of the callbacks.\n log(ERROR, \"Exception calling redraw callback.\\n$e\")\n }\n }\n\n companion object {\n /**\n * Create the WebGL context associated with the HTML canvas.\n */\n protected fun createContext(canvas: HTMLCanvasElement): WebGLRenderingContext {\n // Request a WebGL context with antialiasing is disabled. Antialiasing causes gaps to appear at the edges of\n // terrain tiles.\n val glAttrs = WebGLContextAttributes(antialias = false)\n val context = canvas.getContext(\"webgl\", glAttrs)\n ?: canvas.getContext(\"experimental-webgl\", glAttrs)\n require(context is WebGLRenderingContext) {\n logMessage(ERROR, \"WorldWindow\", \"createContext\", \"webglNotSupported\")\n }\n return context\n }\n }\n\n enum class RedrawStage {\n /**\n * Indicates that a redrawn callback has been called immediately after a redrawn.\n */\n AFTER_REDRAW,\n /**\n * Indicates that a redrawn callback has been called immediately before a redrawn.\n */\n BEFORE_REDRAW;\n }\n}","package earth.worldwind\n\nimport earth.worldwind.gesture.GestureListener\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\n\n/**\n * This class provides a base window controller with required properties and methods which subclasses may\n * inherit from to create custom window controllers for controlling the globe via user interaction.\n */\nabstract class WorldWindowController(\n /**\n * The WorldWindow associated with this controller.\n */\n protected val wwd: WorldWindow\n): EventListener, GestureListener {\n protected val gestureEventListeners = mutableListOf()\n\n override fun handleEvent(event: Event) {\n for (i in gestureEventListeners.indices) {\n gestureEventListeners[i].handleEvent(event)\n if (event.defaultPrevented) break\n }\n }\n\n /**\n * Registers a gesture event listener on this controller. Registering event listeners using this function\n * enables applications to prevent the controller's default behavior.\n *\n * When an event occurs, application event listeners are called before WorldWindowController event listeners.\n *\n * @param listener The function to call when the event occurs.\n */\n protected open fun addGestureListener(listener: EventListener) { gestureEventListeners += listener }\n\n /**\n * Removes a gesture event listener from this controller. The listener must be the same object passed to\n * addGestureListener. Calling removeGestureListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addGestureListener.\n */\n protected open fun removeGestureListener(listener: EventListener) { gestureEventListeners -= listener }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple mouse clicks.\n */\nopen class ClickRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfClicks = 1\n var button: Short = 0\n var maxMouseMovement = 5\n var maxClickDuration = 500\n var maxClickInterval = 400\n protected val clicks = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n clicks.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (button != event.button) state = FAILED else {\n clicks.add(Click(clientX, clientY))\n failAfterDelay(maxClickDuration) // fail if the click is down too long\n }\n }\n\n override fun mouseMove(event: MouseEvent) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxMouseMovement * window.devicePixelRatio) state = FAILED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (mouseButtonMask != 0) return // wait until the last button is up\n if (clicks.size == numberOfClicks) {\n clientX = clicks[0].clientX\n clientY = clicks[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxClickInterval) // fail if the interval between clicks is too long\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() { timeout?.let { window.clearTimeout(it) }.also { timeout = null } }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for mouse drag gestures.\n */\nopen class DragRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var button: Short = 0\n var interpretDistance = 5\n\n override fun mouseMove(event: MouseEvent) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) {\n state = if (shouldRecognize()) {\n resetTranslation() // set translation to zero when the drag begins\n BEGAN\n } else {\n FAILED\n }\n }\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (mouseButtonMask == 0) { // last button up\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state == POSSIBLE) state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret mouse movement when the cursor moves far enough\n }\n\n /**\n * @return true when the specified button is the only button down\n */\n protected open fun shouldRecognize() = 1 shl button.toInt() == mouseButtonMask\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.util.Logger\nimport org.w3c.dom.Touch\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport org.w3c.dom.pointerevents.PointerEvent\n\n/**\n * Gesture recognizers translate user input event streams into higher level actions. A gesture\n * recognizer is associated with an event target, which dispatches mouse and keyboard events to the gesture\n * recognizer. When a gesture recognizer has received enough information from the event stream to interpret the\n * action, it calls its callback functions. Callback functions may be specified at construction or added to the\n * [gestureCallbacks] list after construction.\n */\nabstract class GestureRecognizer(\n /**\n * Indicates the document element this gesture recognizer observes for mouse and touch events.\n */\n val target: EventTarget,\n /**\n * An optional function to call when this gesture is recognized. If non-null, the\n * function is called when this gesture is recognized, and is passed a single argument: this gesture recognizer,\n * e.g., gestureCallback(recognizer).\n */\n callback: ((GestureRecognizer)->Unit)?\n): EventListener {\n /**\n * Indicates whether this gesture recognizer is enabled. When false, this gesture recognizer will ignore any events\n * dispatched by its target.\n */\n var isEnabled = true\n /**\n * Indicates this gesture's current state. Possible values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN],\n * [CHANGED], [CANCELLED] and [ENDED].\n */\n var state = POSSIBLE\n set(newState) {\n nextState = null // clear any pending state transition\n when (newState) {\n POSSIBLE -> field = newState\n FAILED -> {\n field = newState\n updateRecognizersWaitingForFailure()\n resetIfEventsEnded()\n }\n RECOGNIZED -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Recognized\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n BEGAN -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Began\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n }\n }\n CHANGED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n }\n CANCELLED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n ENDED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n }\n /**\n * Indicates the X coordinate of this gesture.\n */\n var clientX = 0\n /**\n * Returns the Y coordinate of this gesture.\n */\n var clientY = 0\n /**\n * Indicates this gesture's translation along the X axis since the gesture started.\n */\n var translationX = 0.0\n private set\n /**\n * Indicates this gesture's translation along the Y axis since the gesture started.\n */\n var translationY = 0.0\n private set\n /**\n * Indicates the currently pressed mouse buttons as a bitmask. A value of 0 indicates that no buttons are\n * pressed. A nonzero value indicates that one or more buttons are pressed as follows: bit 1 indicates the\n * primary button, bit 2 indicates the auxiliary button, bit 3 indicates the secondary button.\n */\n var mouseButtonMask = 0\n private set\n /**\n * Indicates the number of active touches.\n */\n val touchCount get() = touches.size\n /**\n * The list of functions to call when this gesture is recognized. The functions have a single argument:\n * this gesture recognizer, e.g., gestureCallback(recognizer). Applications may\n * add functions to this array or remove them.\n */\n val gestureCallbacks = mutableListOf<(GestureRecognizer)->Unit>()\n private var nextState: GestureState? = null\n private var clientStartX = 0\n private var clientStartY = 0\n private var translationWeight = 0.4\n private val touches = mutableListOf()\n private var touchCentroidShiftX = 0\n private var touchCentroidShiftY = 0\n private val canRecognizeWith = mutableSetOf()\n private val requiresFailureOf = mutableSetOf()\n private val requiredToFailBy = mutableSetOf()\n private val listenerList = mutableListOf()\n\n companion object {\n val allRecognizers = mutableListOf()\n }\n\n init {\n // Add the optional gesture callback.\n callback?.let { gestureCallbacks += it }\n\n // Add this recognizer to the list of all recognizers.\n allRecognizers += this\n }\n\n /**\n * Registers a gesture state listener on this GestureRecognizer. Registering state listeners using this function\n * enables applications to receive notifications of gesture recognition.\n *\n * @param listener The function to call when the event occurs.\n */\n fun addListener(listener: GestureListener) { listenerList += listener }\n\n /**\n * Removes a gesture state listener from this GestureRecognizer. The listener must be the same object passed to\n * addListener. Calling removeListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addListener.\n */\n fun removeListener(listener: GestureListener) { listenerList -= listener }\n\n fun touch(index: Int): TouchWrapper {\n require(index in touches.indices) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"touch\", \"indexOutOfRange\")\n }\n return touches[index]\n }\n\n fun recognizeSimultaneouslyWith(recognizer: GestureRecognizer) {\n canRecognizeWith.add(recognizer)\n recognizer.canRecognizeWith.add(this)\n }\n\n fun canRecognizeSimultaneouslyWith(recognizer: GestureRecognizer) = canRecognizeWith.contains(recognizer)\n\n fun requireRecognizerToFail(recognizer: GestureRecognizer) {\n requiresFailureOf.add(recognizer)\n recognizer.requiredToFailBy.add(this)\n }\n\n fun requiresRecognizerToFail(recognizer: GestureRecognizer) = requiresFailureOf.contains(recognizer)\n\n fun requiredToFailByRecognizer(recognizer: GestureRecognizer) = requiredToFailBy.contains(recognizer)\n\n open fun reset() {\n state = POSSIBLE\n nextState = null\n clientX = 0\n clientY = 0\n clientStartX = 0\n clientStartY = 0\n translationX = 0.0\n translationY = 0.0\n mouseButtonMask = 0\n touches.clear()\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun resetTranslation() {\n clientStartX = clientX\n clientStartY = clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun prepareToRecognize() {}\n\n protected open fun mouseDown(event: MouseEvent) {}\n protected open fun mouseMove(event: MouseEvent) {}\n protected open fun mouseUp(event: MouseEvent) {}\n\n protected open fun touchStart(touch: TouchWrapper) {}\n protected open fun touchMove(touch: TouchWrapper) {}\n protected open fun touchCancel(touch: TouchWrapper) {}\n protected open fun touchEnd(touch: TouchWrapper) {}\n \n protected open fun updateRecognizersWaitingForFailure() {\n // Transition gestures that are waiting for this gesture to transition to Failed.\n requiredToFailBy.forEach { r -> r.nextState?.let { r.state = it } }\n }\n\n protected open fun tryToRecognize(newState: GestureState): Boolean {\n // Transition to Failed if another gesture can prevent this gesture from recognizing.\n if (allRecognizers.any { r -> canBePreventedByRecognizer(r) }) {\n state = FAILED\n return false\n }\n\n // Delay the transition to Recognized/Began if this gesture is waiting for a gesture in the Possible state.\n if (allRecognizers.any { r -> isWaitingForRecognizerToFail(r) }) {\n nextState = newState\n return false\n }\n\n // Transition to Failed state all other gestures that can be prevented from recognizing by this gesture.\n allRecognizers.filter { r -> canPreventRecognizer(r) }.forEach { r -> r.state = FAILED }\n return true\n }\n\n protected open fun canPreventRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE &&\n (requiredToFailByRecognizer(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun canBePreventedByRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == RECOGNIZED &&\n (requiresRecognizerToFail(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun isWaitingForRecognizerToFail(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE && requiresRecognizerToFail(that)\n\n protected open fun notifyListeners() = listenerList.forEach { l -> l.gestureStateChanged(this) }\n\n protected open fun callGestureCallbacks() = gestureCallbacks.forEach { c -> c(this) }\n\n override fun handleEvent(event: Event) {\n if (!isEnabled) return\n\n if (event.defaultPrevented && state == POSSIBLE) return // ignore cancelled events while in the Possible state\n\n try {\n when {\n event.type == \"mousedown\" && event is MouseEvent -> handleMouseDown(event)\n event.type == \"mousemove\" && event is MouseEvent -> handleMouseMove(event)\n event.type == \"mouseup\" && event is MouseEvent -> handleMouseUp(event)\n event.type == \"touchstart\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchStart(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchmove\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchMove(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchcancel\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchCancel(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchend\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchEnd(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseDown(event)\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseMove(event)\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"mouse\" -> {\n // Intentionally left blank. The W3C Pointer Events specification is ambiguous on what cancel means\n // for mouse input, and there is no evidence that this event is actually generated (6/19/2015).\n }\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseUp(event)\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchStart(wrapPointer(event))\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchMove(wrapPointer(event))\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchCancel(wrapPointer(event))\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchEnd(wrapPointer(event))\n else -> Logger.logMessage(Logger.INFO, \"GestureRecognizer\", \"handleEvent\",\n \"Unrecognized event type: ${event.type}\")\n }\n } catch (e: Exception) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"handleEvent\", \"Error handling event.\\n$e\")\n }\n }\n\n protected open fun handleMouseDown(event: MouseEvent) {\n if (event.type == \"mousedown\" && touches.size > 0) return // ignore synthesized mouse down events on Android Chrome\n\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask != 0) return // ignore redundant mouse down events\n\n if (mouseButtonMask == 0) { // first button down\n clientX = event.clientX\n clientY = event.clientY\n clientStartX = event.clientX\n clientStartY = event.clientY\n translationX = 0.0\n translationY = 0.0\n }\n\n mouseButtonMask = mouseButtonMask or buttonBit\n mouseDown(event)\n }\n\n protected open fun handleMouseMove(event: MouseEvent) {\n if (mouseButtonMask == 0) return // ignore mouse move events when this recognizer does not consider any button to be down\n\n if (clientX == event.clientX && clientY == event.clientY) return // ignore redundant mouse move events\n\n val dx = event.clientX - clientStartX\n val dy = event.clientY - clientStartY\n val w = translationWeight\n clientX = event.clientX\n clientY = event.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n mouseMove(event)\n }\n\n protected open fun handleMouseUp(event: MouseEvent) {\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask == 0) return // ignore mouse up events for buttons this recognizer does not consider to be down\n\n mouseButtonMask = mouseButtonMask and buttonBit.inv()\n mouseUp(event)\n\n if (mouseButtonMask == 0) resetIfEventsEnded() // last button up\n }\n\n protected open fun handleTouchStart(touch: TouchWrapper) {\n touches.add(touch)\n\n if (touches.size == 1) { // first touch\n clientX = touch.clientX\n clientY = touch.clientY\n clientStartX = touch.clientX\n clientStartY = touch.clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n } else touchesAddedOrRemoved()\n\n touchStart(touch)\n }\n\n protected open fun handleTouchMove(nextTouch: TouchWrapper) {\n val touch = touchById(nextTouch.identifier) ?: return // ignore events for touches that did not start in this recognizer's target\n if (touch.clientX == nextTouch.clientX && touch.clientY == nextTouch.clientY) return // ignore redundant touch move events, which we've encountered on Android Chrome\n\n touch.clientX = nextTouch.clientX\n touch.clientY = nextTouch.clientY\n\n val centroid = touchCentroid()\n val dx = centroid.clientX - clientStartX + touchCentroidShiftX\n val dy = centroid.clientY - clientStartY + touchCentroidShiftY\n val w = translationWeight\n clientX = centroid.clientX\n clientY = centroid.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n\n touchMove(touch)\n }\n\n protected open fun handleTouchCancel(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchCancel(touch)\n resetIfEventsEnded()\n }\n\n protected open fun handleTouchEnd(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchEnd(touch)\n resetIfEventsEnded()\n }\n\n protected open fun resetIfEventsEnded() {\n if (state != POSSIBLE && mouseButtonMask == 0 && touches.size == 0) reset()\n }\n\n protected open fun touchesAddedOrRemoved() {\n touchCentroidShiftX += clientX\n touchCentroidShiftY += clientY\n val centroid = touchCentroid()\n clientX = centroid.clientX\n clientY = centroid.clientY\n touchCentroidShiftX -= clientX\n touchCentroidShiftY -= clientY\n }\n\n protected open fun touchCentroid(): Click {\n var x = 0\n var y = 0\n\n touches.forEach { touch ->\n x += touch.clientX / touches.size\n y += touch.clientY / touches.size\n }\n\n return Click(x, y)\n }\n\n protected open fun indexOfTouchWithId(identifier: Int) = touches.indexOfFirst { t -> t.identifier == identifier }\n\n protected open fun touchById(identifier: Int) = touches.firstOrNull { t -> t.identifier == identifier }\n\n protected open fun wrapTouch(event: Touch) = TouchWrapper(event.identifier, event.clientX, event.clientY)\n\n protected open fun wrapPointer(event: PointerEvent) = TouchWrapper(event.pointerId, event.clientX, event.clientY)\n\n protected class Click(\n /**\n * The X coordinate of the click point's location.\n */\n val clientX: Int,\n /**\n * The Y coordinate of the click point's location.\n */\n val clientY: Int\n )\n}",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for touch panning gestures.\n */\nopen class PanRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var minNumberOfTouches = 1\n var maxNumberOfTouches = Int.MAX_VALUE\n var interpretDistance = 20\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) state = if (shouldRecognize()) BEGAN else FAILED\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch cancelled\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n }\n\n override fun prepareToRecognize() {\n // set translation to zero when the pan begins\n resetTranslation()\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret touches when the touch centroid moves far enough\n }\n\n protected open fun shouldRecognize() = touchCount in minNumberOfTouches..maxNumberOfTouches\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger pinch gestures.\n */\nopen class PinchRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceDistance = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val scaleWithOffset get() = scale * offsetScale\n protected var scale = 1.0\n protected var offsetScale = 1.0\n protected val pinchTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n scale = 1.0\n offsetScale = 1.0\n referenceDistance = 0.0\n pinchTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (pinchTouches.size < 2) {\n pinchTouches.add(touch)\n if (pinchTouches.size == 2) {\n referenceDistance = currentPinchDistance()\n offsetScale *= scale\n scale = 1.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (pinchTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val distance = currentPinchDistance()\n val newScale = abs(distance / referenceDistance)\n val w = weight\n scale = scale * (1 - w) + newScale * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceDistance = currentPinchDistance()\n scale = 1.0\n }\n\n protected open fun shouldRecognize() =\n abs(currentPinchDistance() - referenceDistance) > interpretThreshold * window.devicePixelRatio\n\n protected open fun currentPinchDistance(): Double {\n val touch0 = pinchTouches[0]\n val touch1 = pinchTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return sqrt((dx * dx + dy * dy).toDouble())\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.atan2\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger rotation gestures.\n */\nopen class RotationRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceAngle = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val rotationWithOffset get() = rotation + offsetRotation\n protected var rotation = 0.0\n protected var offsetRotation = 0.0\n protected val rotationTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n rotation = 0.0\n offsetRotation = 0.0\n referenceAngle = 0.0\n rotationTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (rotationTouches.size < 2) {\n rotationTouches.add(touch)\n if (rotationTouches.size == 2) {\n referenceAngle = currentTouchAngle()\n offsetRotation += rotation\n rotation = 0.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (rotationTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val angle = currentTouchAngle()\n val newRotation = Angle.normalizeAngle180(angle - referenceAngle)\n val w = weight\n rotation = rotation * (1 - w) + newRotation * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0)\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceAngle = currentTouchAngle()\n rotation = 0.0\n }\n\n protected open fun shouldRecognize(): Boolean {\n rotation = Angle.normalizeAngle180(currentTouchAngle() - referenceAngle)\n return abs(rotation) > interpretThreshold\n }\n\n protected open fun currentTouchAngle(): Double {\n val touch0 = rotationTouches[0]\n val touch1 = rotationTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return Angle.toDegrees(atan2(dy.toDouble(), dx.toDouble()))\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.BasicWorldWindowController\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Highlightable\nimport earth.worldwind.shape.Movable\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.MouseEvent\n\nopen class SelectDragDetector(protected val wwd: WorldWindow) {\n /**\n * Main interface representing all interaction callbacks\n */\n var callback: SelectDragCallback? = null\n /**\n * Enable/disable mouse events processing.\n * If disabled, highlighting of Renderables and all callbacks will be switched off.\n */\n var isEnabled = true\n /**\n * Enable/disable dragging of flying objects using their terrain projection position\n */\n var isDragTerrainPosition = false\n protected var pickedPosition: Position? = null\n protected var pickedRenderable: Renderable? = null\n protected val oldHighlighted = mutableSetOf()\n protected val newHighlighted = mutableSetOf()\n protected var isDragging = false\n protected var isDraggingArmed = false\n private val dragRefPt = Vec2()\n private val lastTranslation = Vec2()\n\n protected val handlePick = EventListener { event ->\n // Do not pick new items if dragging is in progress or detector is disabled\n if (isDragging || !isEnabled) return@EventListener\n\n // Determine pick point from event\n var clientX = 0\n var clientY = 0\n when (event) {\n is MouseEvent -> {\n clientX = event.clientX\n clientY = event.clientY\n }\n is TouchEvent -> {\n event.changedTouches.item(0)?.let { touch ->\n clientX = touch.clientX\n clientY = touch.clientY\n } ?: return@EventListener\n }\n else -> return@EventListener\n }\n\n // Reset previous pick result\n pickedPosition = null\n pickedRenderable = null\n lastTranslation.set(0.0, 0.0)\n\n // Get pick point in canvas coordinates\n val pickPoint = wwd.canvasCoordinates(clientX, clientY)\n\n // Pick objects in selected point\n val pickList = wwd.pick(pickPoint)\n\n // Get picked position from terrain object, if user pressed inside the globe\n pickedPosition = pickList.terrainPickedObject?.terrainPosition\n\n// // NOTE Region selection use bounding box intersection with specified rectangle. Use highlighter path thickness instead.\n// if (!pickList.hasNonTerrainObjects) {\n// pickList = wwd.pickShapesInRegion(\n// Viewport(pickPoint.x - SLOPE / 2 , pickPoint.y - SLOPE / 2, SLOPE, SLOPE)\n// )\n// }\n\n // Redraw canvas in case we de-highlight old or highlight new renderables\n var redrawRequired = false\n\n // Put picked renderables into new highlighted set\n for (obj in pickList.objects) if (!obj.isTerrain && obj.userObject is Highlightable) newHighlighted.add(obj.userObject)\n\n // De-highlight any previously highlighted renderables which is not selected or picked\n for (highlighted in oldHighlighted)\n if (!newHighlighted.contains(highlighted)\n && highlighted is Renderable && highlighted.getUserProperty(HIGHLIGHT_LOCKED_KEY) != true) {\n highlighted.isHighlighted = false\n oldHighlighted.remove(highlighted)\n redrawRequired = true\n }\n\n // Highlight picked objects which was not highlighted yet\n for (highlighted in newHighlighted) if (!oldHighlighted.contains(highlighted)) {\n highlighted.isHighlighted = true\n oldHighlighted.add(highlighted)\n redrawRequired = true\n }\n\n // Clear new highlighted buffer until next frame\n newHighlighted.clear()\n\n // Update the window if we changed anything\n if (redrawRequired) wwd.requestRedraw()\n\n // Get top picked renderable to use it in listener callbacks\n val topPickedObject = pickList.topPickedObject?.userObject\n if (topPickedObject is Renderable) pickedRenderable = topPickedObject\n\n // Take reference position as a backup, if user pressed outside the globe\n if (topPickedObject is Movable && pickedPosition == null) pickedPosition = topPickedObject.referencePosition\n\n // Determine whether the dragging flag should be \"armed\".\n isDraggingArmed = topPickedObject is Renderable && callback?.canMoveRenderable(topPickedObject) == true\n }\n\n protected val handlePrimaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderablePicked(renderable, position) else callback.onTerrainPicked(position)\n } ?: callback.onNothingPicked()\n wwd.requestRedraw()\n }\n }\n\n protected val handleSecondaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderableContext(renderable, position) else callback.onTerrainContext(position)\n } ?: callback.onNothingContext()\n wwd.requestRedraw()\n }\n }\n\n protected val handleDrag: (GestureRecognizer) -> Unit = { recognizer ->\n when (recognizer.state) {\n BEGAN, CHANGED -> {\n val callback = callback\n val renderable = pickedRenderable\n // Reference position is a priority during movement\n val toPosition = if (renderable is Movable) renderable.referencePosition else pickedPosition\n if (toPosition != null && renderable != null && callback != null) {\n // Signal that dragging is in progress\n isDragging = true\n\n // First we compute the screen coordinates of the position's \"ground\" point. We'll apply the\n // screen X and Y drag distances to this point, from which we'll compute a new position,\n // wherein we restore the original position's altitude.\n val fromPosition = Position(toPosition)\n val clapToGround = isDragTerrainPosition || renderable !is Movable || renderable.altitudeMode == AltitudeMode.CLAMP_TO_GROUND\n val movePoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n if (clapToGround && wwd.engine.pickTerrainPosition(movePoint.x, movePoint.y, toPosition)\n || !clapToGround && wwd.engine.geographicToScreenPoint(fromPosition.latitude, fromPosition.longitude, 0.0, dragRefPt)\n && wwd.engine.screenPointToGroundPosition(\n dragRefPt.x + recognizer.translationX - lastTranslation.x,\n dragRefPt.y + recognizer.translationY - lastTranslation.y,\n toPosition\n )) {\n // Backup last translation\n lastTranslation.set(recognizer.translationX, recognizer.translationY)\n // Restore original altitude\n toPosition.altitude = fromPosition.altitude\n // Update movable position\n if (renderable is Movable) renderable.moveTo(wwd.engine.globe, toPosition)\n // Notify callback\n callback.onRenderableMoved(renderable, fromPosition, toPosition)\n // Reflect the change in position on the globe.\n wwd.requestRedraw()\n } else {\n // Probably clipped by near/far clipping plane or off the globe.\n // The position was not updated. Stop the drag.\n recognizer.state = CANCELLED\n }\n }\n }\n ENDED -> {\n val callback = callback\n val position = pickedPosition\n val renderable = pickedRenderable\n if (renderable != null && position != null && callback != null) {\n callback.onRenderableMovingFinished(renderable, position)\n wwd.requestRedraw()\n }\n cancelDragging()\n }\n CANCELLED -> cancelDragging()\n else -> {}\n }\n }\n\n protected val primaryClickRecognizer = ClickRecognizer(wwd.canvas, handlePrimaryClick)\n protected val tapRecognizer = TapRecognizer(wwd.canvas, handlePrimaryClick)\n protected val secondaryClickRecognizer = ClickRecognizer(wwd.canvas, handleSecondaryClick).apply { button = 2 } // Secondary mouse button\n protected val doubleTapRecognizer = TapRecognizer(wwd.canvas, handleSecondaryClick).apply { numberOfTaps = 2 } // Double tap\n protected val dragRecognizer = object : DragRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n protected val panRecognizer = object : PanRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n\n companion object {\n// const val SLOPE = 16\n const val HIGHLIGHT_LOCKED_KEY = \"highlight_locked\"\n }\n\n init {\n wwd.addEventListener(\"mousedown\", handlePick)\n wwd.addEventListener(\"mousemove\", handlePick)\n wwd.addEventListener(\"touchstart\", handlePick)\n wwd.addEventListener(\"touchmove\", handlePick)\n\n // Resolve conflict between item movement and globe rotation\n val controller = wwd.controller\n if (controller is BasicWorldWindowController) {\n controller.primaryDragRecognizer.requireRecognizerToFail(dragRecognizer)\n controller.panRecognizer.requireRecognizerToFail(panRecognizer)\n }\n }\n\n protected fun cancelDragging() {\n isDragging = false\n isDraggingArmed = false\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple taps.\n */\nopen class TapRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfTaps = 1\n var numberOfTouches = 1\n var maxTouchMovement = 20\n var maxTapDuration = 500\n var maxTapInterval = 400\n protected val taps = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n taps.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n\n if (touchCount > numberOfTouches) {\n state = FAILED\n } else if (touchCount == 1) { // first touch started\n taps.add(TouchWrapper(touchCount, clientX, clientY))\n failAfterDelay(maxTapDuration) // fail if the tap is down too long\n } else {\n val tap = taps[taps.size - 1]\n tap.identifier = touchCount // max number of simultaneous touches\n tap.clientX = clientX // touch centroid\n tap.clientY = clientY\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxTouchMovement * window.devicePixelRatio ) state = FAILED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n if (touchCount != 0) return // wait until the last touch ends\n val tapCount = taps.size\n val tap = taps[tapCount - 1]\n if (tap.identifier != numberOfTouches) {\n state = FAILED // wrong number of touches\n } else if (tapCount == numberOfTaps) {\n clientX = taps[0].clientX\n clientY = taps[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxTapInterval) // fail if the interval between taps is too long\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() = timeout?.let { window.clearTimeout(it) }.also { timeout = null }\n}","package earth.worldwind.gesture\n\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger tilt gestures.\n */\nopen class TiltRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : PanRecognizer(target, callback) {\n var maxTouchDistance = 300\n var maxTouchDivergence = 50\n\n companion object {\n const val LEFT = 1 shl 0\n const val RIGHT = 1 shl 1\n const val UP = 1 shl 2\n const val DOWN = 1 shl 3\n }\n\n override fun shouldInterpret(): Boolean {\n for (i in 0 until touchCount) {\n val touch = touch(i)\n val dx = touch.translationX\n val dy = touch.translationY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > interpretDistance) return true // interpret touches when any touch moves far enough\n }\n return false\n }\n\n override fun shouldRecognize(): Boolean {\n if (touchCount < 2) return false\n val touch0 = touch(0)\n val touch1 = touch(1)\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > maxTouchDistance * window.devicePixelRatio) return false // touches must be close together\n val tx = touch0.translationX - touch1.translationX\n val ty = touch0.translationY - touch1.translationY\n val divergence = sqrt((tx * tx + ty * ty).toDouble())\n if (divergence > maxTouchDivergence * window.devicePixelRatio) return false // touches must be moving in a mostly parallel direction\n\n val verticalMask = UP or DOWN\n val dirMask0 = touchDirection(touch0) and verticalMask\n val dirMask1 = touchDirection(touch1) and verticalMask\n return (dirMask0 and dirMask1) != 0 // touches must move in the same vertical direction\n }\n\n protected open fun touchDirection(touch: TouchWrapper): Int {\n val dx = touch.translationX\n val dy = touch.translationY\n var dirMask = 0\n if (abs(dx) > abs(dy)) {\n dirMask = dirMask or if (dx < 0) LEFT else 0\n dirMask = dirMask or if (dx > 0) RIGHT else 0\n } else {\n dirMask = dirMask or if (dy < 0) UP else 0\n dirMask = dirMask or if (dy > 0) DOWN else 0\n }\n return dirMask\n }\n}","package earth.worldwind.gesture\n\n/**\n * Represents a touch point.\n */\nopen class TouchWrapper(\n /**\n * A number uniquely identifying the touch point\n */\n var identifier: Int,\n /**\n * The X coordinate of the touch point's location.\n */\n var clientX: Int,\n /**\n * The Y coordinate of the touch point's location.\n */\n var clientY: Int\n) {\n /**\n * Indicates this touch point's translation along the X axis since the touch started.\n */\n var translationX: Int\n get() = clientX - clientStartX\n set(value) { clientStartX = clientX - value }\n /**\n * Indicates this touch point's translation along the Y axis since the touch started.\n */\n var translationY: Int\n get() = clientY - clientStartY\n set(value) { clientStartY = clientY - value }\n protected var clientStartX = clientX\n protected var clientStartY = clientY\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport org.khronos.webgl.ArrayBufferView\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying elevations from a variety of sources.\n *
\n * ElevationSource supports following source types:\n * - Uniform Resource Locator [URL]\n *
\n * ElevationSource instances are intended to be used as a key into a cache or other data structure that enables sharing\n * of loaded elevation resources. File paths and URLs with the same string representation considered equals.\n */\nactual open class ElevationSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an elevation source with an [URL].\n *\n * @param url Uniform Resource Locator\n *\n * @return the new elevation source\n */\n fun fromUrl(url: URL) = ElevationSource(url.href)\n\n /**\n * Constructs an elevation source with a URL string.\n *\n * @param urlString complete URL string\n *\n * @return the new elevation source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ElevationSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an elevation source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ElevationSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new elevation source\n */\n actual fun fromUnrecognized(source: Any) = when(source) {\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ElevationSource(source)\n }\n }\n\n /**\n * Buffer post-processing routine.\n */\n @Suppress(\"UNCHECKED_CAST\")\n val bufferPostprocessor get() = postprocessor as ResourcePostprocessor?\n /**\n * Indicates whether this elevation source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when (source) {\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource.Companion.fromUnrecognized\nimport earth.worldwind.globe.elevation.ElevationTileFactory\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport io.ktor.client.fetch.*\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.await\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.*\nimport org.khronos.webgl.ArrayBufferView\nimport org.khronos.webgl.Uint8Array\nimport kotlin.math.roundToInt\n\nactual open class TiledElevationCoverage actual constructor(\n tileMatrixSet: TileMatrixSet, tileFactory: ElevationTileFactory\n) : AbstractTiledElevationCoverage(tileMatrixSet, tileFactory) {\n protected actual val mainScope = MainScope()\n\n /**\n * This is a dummy workaround for asynchronously defined TileFactory\n */\n actual constructor(): this(TileMatrixSet(), object : ElevationTileFactory {\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int) = fromUnrecognized(Any())\n })\n\n override fun invalidateTiles() {\n mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n super.invalidateTiles()\n }\n\n override fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int) {\n val elevationSource = tileFactory.createElevationSource(tileMatrix, row, column)\n if (elevationSource.isUrl) mainScope.launch {\n val url = elevationSource.asUrl()\n try {\n // Ktor JS Client cannot be used here, because it is not able to return ArrayBuffer directly.\n val response = fetch(url).await()\n if (response.ok) {\n val arrayBuffer = response.arrayBuffer().await()\n val contentType = response.headers.get(\"Content-Type\")\n var message: String? = null\n val buffer = when {\n contentType.equals(\"image/bil\", true) ||\n contentType.equals(\"application/bil\", true) ||\n contentType.equals(\"application/bil16\", true) -> Int16Array(arrayBuffer)\n contentType.equals(\"application/bil32\", true) -> Float32Array(arrayBuffer)\n contentType.equals(\"image/tiff\", true) -> TODO(\"Implement Tiff parsing for JS\")\n contentType.equals(\"text/xml\", true) -> {\n message = \"Elevations retrieval failed (${response.statusText}): $url.\\n\"\n +String.asDynamic().fromCharCode.apply(null, Uint8Array(arrayBuffer))\n null\n }\n else -> {\n message = \"Elevations retrieval failed (Unexpected content type $contentType): $url\"\n null\n }\n }?.let { elevationSource.bufferPostprocessor?.process(it) ?: it } // Apply buffer transformations\n decodeBuffer(buffer)?.let {\n retrievalSucceeded(key, it, \"Elevation retrieval succeeded: $url\")\n } ?: retrievalFailed(key, message ?: \"Elevations retrieval failed: $url\")\n } else {\n retrievalFailed(key, \"Elevations retrieval failed (${response.statusText}): $url\")\n }\n } catch (e: Throwable) {\n retrievalFailed(key, \"Elevations retrieval failed (${e.message}): $url\")\n }\n } else retrievalFailed(key, \"Unsupported elevation source type\")\n }\n\n protected open fun decodeBuffer(buffer: ArrayBufferView?) = when (buffer) {\n is Int16Array -> ShortArray(buffer.length) { buffer[it] }\n is Float32Array -> ShortArray(buffer.length) { buffer[it].roundToInt().toShort() }\n else -> null\n }\n\n protected open fun retrievalSucceeded(key: Long, value: ShortArray, message: String) {\n retrievalSucceeded(key, value)\n if (isLoggable(DEBUG)) log(DEBUG, message)\n }\n\n protected open fun retrievalFailed(key: Long, message: String) {\n retrievalFailed(key)\n log(WARN, message)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nactual abstract class AbstractTiledImageLayer actual constructor(name: String): RenderableLayer(name) {\n actual var tiledSurfaceImage: TiledSurfaceImage? = null\n protected set(value) {\n field?.let { removeRenderable(it) }\n value?.let { addRenderable(it) }\n field = value\n }\n override var isPickEnabled = false\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset: Int\n get() = tiledSurfaceImage?.levelOffset ?: 0\n set(value) { tiledSurfaceImage?.levelOffset = value }\n}","package earth.worldwind.layer\n\nactual abstract class TiledImageLayer actual constructor(name: String): AbstractTiledImageLayer(name)","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.util.Level\nimport kotlinx.browser.document\nimport org.khronos.webgl.get\nimport org.khronos.webgl.set\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.math.floor\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nactual open class MercatorImageTile actual constructor(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): AbstractMercatorImageTile(sector, level, row, column) {\n companion object {\n val srcCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val srcCtx = srcCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n val dstCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val dstCtx = dstCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n\n override suspend fun process(resource: Image): Image {\n val width = resource.width\n val height = resource.height\n val widthDouble = resource.width.toDouble()\n val heightDouble = resource.height.toDouble()\n\n // Get source image data\n srcCanvas.width = width\n srcCanvas.height = height\n srcCtx.drawImage(resource, 0.0, 0.0, widthDouble, heightDouble)\n val srcData = srcCtx.getImageData(0.0, 0.0, widthDouble, heightDouble)\n\n // Prepare destination image data\n dstCanvas.width = width\n dstCanvas.height = height\n val dstData = dstCtx.createImageData(widthDouble, heightDouble)\n\n // Re-project mercator tile to equirectangular projection\n val sector = sector as MercatorSector\n val miny = sector.minLatPercent\n val maxy = sector.maxLatPercent\n for (y in 0 until height) {\n val sy = 1.0 - y / (height - 1.0)\n val lat = sy * sector.deltaLatitude.inDegrees + sector.minLatitude.inDegrees\n val dy = (1.0 - (gudermannianInverse(lat.degrees) - miny) / (maxy - miny)).coerceIn(0.0, 1.0)\n val srcRow = floor(dy * (height - 1)).toInt()\n for (x in 0 until width) {\n val src = 4 * (x + srcRow * width)\n val dst = 4 * (x + y * width)\n dstData.data[dst] = srcData.data[src]\n dstData.data[dst + 1] = srcData.data[src + 1]\n dstData.data[dst + 2] = srcData.data[src + 2]\n dstData.data[dst + 3] = srcData.data[src + 3]\n }\n }\n\n // Replace image source with transformed canvas image data\n dstCtx.putImageData(dstData, 0.0, 0.0)\n //resource.src = dstCanvas.toDataURL() // This approach is performance ineffective thus replaced by toBlob()\n dstCanvas.toBlob({\n // Setting new src will call onLoad or onError in RenderResourceCache and continue image retrieval process\n if (it != null) resource.src = URL.createObjectURL(it)\n // Call image.onError in RenderResourceCache to fail retrieval and mark resource as absent\n else resource.onerror?.invoke(\"Error saving canvas to Blob\", \"\", 0, 0, null) as Unit\n })\n return resource // Do not call super.process to prevnt unnecessary onLoad event processing\n }\n}","package earth.worldwind.render\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.image.*\nimport earth.worldwind.util.AbsentResourceList\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.kgl.*\nimport kotlinx.browser.window\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.time.Duration.Companion.seconds\n\nactual open class RenderResourceCache(\n capacity: Long = recommendedCapacity(), lowWater: Long = (capacity * 0.75).toLong()\n) : LruMemoryCache(capacity, lowWater) {\n companion object {\n fun recommendedCapacity(): Long = (window.navigator.asDynamic().deviceMemory as? Number)\n ?.let { it.toLong() * 1024 * 1024 * 1024 / 16 * 3 } ?: (512L * 1024 * 1024) // 512 Mb as backup\n }\n\n override var age = 0L // Manually incrementable cache age\n var urlRetrievalQueueSize = 16\n /**\n * Main render resource retrieval scope\n */\n actual val mainScope = MainScope()\n /**\n * Identifies requested resources that whose retrieval failed.\n */\n actual val absentResourceList = AbsentResourceList(3, 60.seconds)\n /**\n * List of retrievals currently in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n\n override fun clear() {\n super.clear()\n currentRetrievals.clear()\n absentResourceList.clear()\n age = 0\n }\n\n actual fun cancel() = mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n\n actual fun incAge() { ++age }\n\n actual fun releaseEvictedResources(dc: DrawContext) {\n // TODO Implement evicted resources management\n }\n\n actual fun retrieveTexture(imageSource: ImageSource, options: ImageOptions?): Texture? {\n when {\n imageSource.isImage -> {\n // Following type of image sources is already in memory, so a texture may be created and put into the cache immediately.\n return createTexture(options, imageSource.asImage()).also { put(imageSource, it, it.byteCount) }\n }\n imageSource.isImageFactory -> {\n val factory = imageSource.asImageFactory()\n if (factory.isRunBlocking) {\n // Image factory makes easy operations, so a texture may be created and put into the cache immediately.\n return factory.createImage()?.let { bitmap ->\n createTexture(options, bitmap).also { put(imageSource, it, it.byteCount) }\n }\n }\n }\n }\n\n // Ignore retrieval of already requested resources or marked as absent\n if (currentRetrievals.size >= urlRetrievalQueueSize || currentRetrievals.contains(imageSource)\n || absentResourceList.isResourceAbsent(imageSource.hashCode())) return null\n\n // Retrieve remote image source\n when {\n imageSource.isResource -> retrieveRemoteImage(imageSource, options, imageSource.asResource().fileUrl)\n imageSource.isUrl -> retrieveRemoteImage(imageSource, options, imageSource.asUrl())\n imageSource.isImageFactory -> {\n currentRetrievals += imageSource\n mainScope.launch {\n imageSource.asImageFactory().createImage()?.let {\n retrievalSucceeded(imageSource, options, it)\n } ?: retrievalFailed(imageSource)\n }\n }\n }\n\n return null\n }\n\n actual fun retrieveTextFile(fileResource: FileResource, result: (String) -> Unit) {\n mainScope.launch {\n try {\n result(fileResource.getText())\n } catch (e: Throwable) {\n log(ERROR, \"Resource retrieval failed ($fileResource): ${e.message}\")\n }\n }\n }\n\n protected open fun retrieveRemoteImage(imageSource: ImageSource, options: ImageOptions?, src: String) {\n val image = Image()\n var postprocessorExecuted = false\n image.onload = {\n // Check if image postprocessor is assigned and not yet executed.\n // OnLoad event can be called second time by reassigning image.src inside postprocessor.\n val postprocessor = imageSource.imagePostprocessor\n if (postprocessor != null && !postprocessorExecuted) {\n postprocessorExecuted = true // Prevent cyclic processing due to src modification inside postprocessing.\n mainScope.launch { postprocessor.process(image) } // Apply image transformation.\n } else retrievalSucceeded(imageSource, options, image) // Consume original or processed image as retrieved\n if (postprocessor != null) URL.revokeObjectURL(image.src) // Revoke URL possibly created in postprocessor\n }\n image.onerror = { _, _, _, _, _ -> retrievalFailed(imageSource) }\n currentRetrievals += imageSource\n image.crossOrigin = \"anonymous\"\n image.src = src\n }\n\n protected open fun createTexture(options: ImageOptions?, image: Image): Texture {\n // Process initialWidth and initialHeight if specified\n if (image.width == 0 || image.height == 0) {\n // If source image has dimensions, then resize it proportionally to fit initial size restrictions\n val ratioW = if (options != null && options.initialWidth > 0) image.width / options.initialWidth else 0\n val ratioH = if (options != null && options.initialHeight > 0) image.height / options.initialHeight else 0\n val ratio = if (ratioH > ratioW) ratioH else ratioW\n if (ratio > 0) {\n image.width = image.width / ratio\n image.height = image.height / ratio\n }\n } else if (options != null && options.initialWidth > 0 && options.initialHeight > 0) {\n // If source image has no dimensions (e.g. SVG image), then set initial size of image\n image.width = options.initialWidth\n image.height = options.initialHeight\n }\n\n // Create image texture and apply texture parameters\n val texture = ImageTexture(image)\n if (options?.resamplingMode == ResamplingMode.NEAREST_NEIGHBOR) {\n texture.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n texture.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n }\n if (options?.wrapMode == WrapMode.REPEAT) {\n texture.setTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT)\n texture.setTexParameter(GL_TEXTURE_WRAP_T, GL_REPEAT)\n }\n return texture\n }\n\n protected open fun retrievalSucceeded(source: ImageSource, options: ImageOptions?, image: Image) {\n // Create texture and put it into cache.\n val texture = createTexture(options, image)\n put(source, texture, texture.byteCount)\n currentRetrievals -= source\n absentResourceList.unmarkResourceAbsent(source.hashCode())\n WorldWind.requestRedraw()\n if (isLoggable(DEBUG)) log(DEBUG, \"Image retrieval succeeded: $source\")\n }\n\n protected open fun retrievalFailed(source: ImageSource) {\n currentRetrievals -= source\n absentResourceList.markResourceAbsent(source.hashCode())\n log(WARN, \"Image retrieval failed: $source\")\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.render.image.CanvasTexture\nimport earth.worldwind.shape.TextAttributes\nimport kotlinx.browser.document\nimport org.w3c.dom.*\nimport kotlin.math.ceil\n\nactual open class TextRenderer actual constructor(protected val rc: RenderContext) {\n private val lineSpacing = 0.15 // fraction of font size\n\n /**\n * Creates a texture for a specified text string and specified text attributes.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A texture for the specified text string.\n */\n actual fun renderText(text: String?, attributes: TextAttributes): Texture? =\n if (text?.isNotEmpty() == true) CanvasTexture(drawText(text, attributes)) else null\n\n /**\n * Creates a 2D Canvas for a specified text string while considering current TextRenderer state regarding outline\n * usage and color, text color, typeface, and outline width.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A 2D Canvas for the specified text string.\n */\n protected open fun drawText(text: String, attributes: TextAttributes): HTMLCanvasElement {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n\n val textSize = textSize(ctx2D, text, attributes)\n val lines = text.split(\"\\n\")\n val strokeOffset = if (attributes.isOutlineEnabled) attributes.outlineWidth / 2.0 else 0.0\n\n canvas.width = ceil(textSize.x * rc.densityFactor).toInt()\n canvas.height = ceil(textSize.y * rc.densityFactor).toInt()\n\n ctx2D.scale(rc.densityFactor.toDouble(), rc.densityFactor.toDouble())\n ctx2D.font = attributes.font.toString()\n ctx2D.textBaseline = CanvasTextBaseline.BOTTOM\n ctx2D.textAlign = attributes.font.horizontalAlignment\n ctx2D.fillStyle = attributes.textColor.toCssColorString()\n ctx2D.strokeStyle = attributes.outlineColor.toCssColorString()\n ctx2D.lineWidth = attributes.outlineWidth.toDouble()\n ctx2D.lineCap = CanvasLineCap.ROUND\n ctx2D.lineJoin = CanvasLineJoin.ROUND\n\n when (attributes.font.horizontalAlignment) {\n CanvasTextAlign.LEFT -> ctx2D.translate(strokeOffset, 0.0)\n CanvasTextAlign.RIGHT -> ctx2D.translate(textSize.x - strokeOffset, 0.0)\n else -> ctx2D.translate(textSize.x / 2.0, 0.0)\n }\n\n for (i in lines.indices) {\n val line = lines[i]\n ctx2D.translate(0.0, attributes.font.size * (1.0 + lineSpacing) + strokeOffset)\n if (attributes.isOutlineEnabled) ctx2D.strokeText(line, 0.0, 0.0)\n ctx2D.fillText(line, 0.0, 0.0)\n }\n\n return canvas\n }\n\n /**\n * Returns the width and height of a specified text string considering the current typeFace and outline usage.\n * @param ctx2D Canvas rendering context\n * @param text The text string.\n * @param textAttributes Text font, size, color etc.\n * @returns A vector indicating the text's width and height, respectively, in pixels.\n */\n protected open fun textSize(ctx2D: CanvasRenderingContext2D, text: String, textAttributes: TextAttributes): Vec2 {\n if (text.isEmpty()) Vec2()\n\n ctx2D.font = textAttributes.font.toString()\n\n val lines = text.split(\"\\n\")\n var height = lines.size * (textAttributes.font.size * (1.0 + lineSpacing))\n var maxWidth = 0.0\n for (i in lines.indices) maxWidth = maxWidth.coerceAtLeast(ctx2D.measureText(lines[i]).width)\n\n if (textAttributes.isOutlineEnabled) {\n maxWidth += textAttributes.outlineWidth\n height += textAttributes.outlineWidth\n }\n\n return Vec2(maxWidth, height)\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.HTMLCanvasElement\n\nopen class CanvasTexture(image: HTMLCanvasElement) : Texture(image.width, image.height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: HTMLCanvasElement? = image\n override val hasMipMap = isPowerOfTwo(image.width) && isPowerOfTwo(image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}\n","package earth.worldwind.render.image\n\nimport dev.icerock.moko.resources.ImageResource\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying images from a variety of sources. ImageSource retains the image source on behalf\n * of the caller, making this information available to WorldWind components that load images on the caller's behalf.\n *
\n * ImageSource supports following source types:\n * - Uniform Resource Locator [URL]\n * - [Image] object\n * - WorldWind [ImageSource.ImageFactory]\n * - Multi-platform resource identifier\n *
\n * ImageSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded images. Images are compared by reference. URLs with the same string representation considered equals.\n */\nactual open class ImageSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an image source with a multi-platform resource identifier.\n *\n * @param imageResource the multi-platform resource identifier\n *\n * @return the new image source\n */\n actual fun fromResource(imageResource: ImageResource) = ImageSource(imageResource)\n\n /**\n * Constructs an image source with an [Image]. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param image the [Image] to use as an image source\n *\n * @return the new image source\n */\n fun fromImage(image: Image) = ImageSource(image)\n\n /**\n * Constructs an image source with a [ImageFactory]. WorldWind shapes configured with an image factory image source\n * construct their images lazily, typically when the shape becomes visible on screen.\n *\n * @param factory the [ImageFactory] to use as an image source\n *\n * @return the new image source\n */\n fun fromImageFactory(factory: ImageFactory) = ImageSource(factory)\n\n /**\n * Constructs an image source with an [URL]. The image's dimensions should be no greater than 2048 x 2048.\n *\n * @param url Uniform Resource Locator\n *\n * @return the new image source\n */\n fun fromUrl(url: URL) = ImageSource(url.href)\n\n /**\n * Constructs an image source with a URL string. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param urlString complete URL string\n *\n * @return the new image source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ImageSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an image source with a line stipple pattern. The result is a one-dimensional image with pixels\n * representing the specified stipple factor and stipple pattern. Line stipple images can be used for displaying\n * dashed shape outlines. See [earth.worldwind.shape.ShapeAttributes.outlineImageSource].\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n *\n * @return the new image source\n */\n actual fun fromLineStipple(factor: Int, pattern: Short): ImageSource {\n TODO(\"Not yet implemented\")\n }\n\n /**\n * Constructs an image source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ImageSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new image source\n */\n actual fun fromUnrecognized(source: Any) = when (source) {\n is ImageResource -> fromResource(source)\n is Image -> fromImage(source)\n is ImageFactory -> fromImageFactory(source)\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ImageSource(source)\n }\n }\n\n /**\n * Image post-processing routine.\n */\n @Suppress(\"UNCHECKED_CAST\")\n val imagePostprocessor get() = postprocessor as ResourcePostprocessor?\n /**\n * Indicates whether this image source is a multi-platform resource.\n */\n val isResource get() = source is ImageResource\n /**\n * Indicates whether this image source is a [Image].\n */\n val isImage get() = source is Image\n /**\n * Indicates whether this image source is an image factory.\n */\n val isImageFactory get() = source is ImageFactory\n /**\n * Indicates whether this image source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source multi-platform resource identifier. Call isResource to determine whether the source is a\n * Multi-platform resource.\n */\n fun asResource() = source as ImageResource\n\n /**\n * @return the source [Image]. Call [isImage] to determine whether the source is a [Image].\n */\n fun asImage() = source as Image\n\n /**\n * @return the source [ImageFactory]. Call isImageFactory to determine whether the source is an image\n * factory.\n */\n fun asImageFactory() = source as ImageFactory\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when(source) {\n is ImageResource -> \"Resource: $source\"\n is Image -> \"Image: $source\"\n is ImageFactory -> \"ImageFactory: $source\"\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n\n /**\n * Factory for delegating construction of images. WorldWind shapes configured with a ImageFactory construct\n * their images lazily, typically when the shape becomes visible on screen.\n */\n interface ImageFactory {\n /**\n * Image factory runs asynchronously by default, but this behavior can be changed by overriding current attribute.\n */\n val isRunBlocking: Boolean get() = false\n\n /**\n * Returns the image associated with this factory. This method may be called more than once and may be called\n * from a non-UI thread. Each invocation must return an image with equivalent content, dimensions and\n * configuration. Any side effects applied to the WorldWind scene by the factory must be executed on the main\n * thread.\n *\n * @return the image associated with this factory\n */\n fun createImage(): Image?\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.Image\n\nopen class ImageTexture(image: Image) : Texture(image.width, image.height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: Image? = image\n override val hasMipMap = isPowerOfTwo(image.width) && isPowerOfTwo(image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.Tile\nimport org.w3c.dom.Image\nimport org.w3c.dom.events.Event\n\nactual open class ImageTile actual constructor(\n sector: Sector, level: Level, row: Int, column: Int\n): Tile(sector, level, row, column), ResourcePostprocessor {\n actual var imageSource: ImageSource? = null\n actual var cacheSource: ImageSource? = null\n\n /**\n * Repeat image.onLoad event defined in RenderResourceCache to continue retrieval of original unprocessed image\n */\n override suspend fun process(resource: Image) = resource.also { resource.onload?.invoke(Event(\"load\")) as Unit }\n}","package earth.worldwind.util\n\n/**\n * Logs selected message types to the console.\n */\nactual object Logger {\n actual val ERROR = 1\n actual val WARN = 2\n actual val INFO = 3\n actual val DEBUG = 4\n\n /**\n * Indicates the current logging level [ERROR], [WARN], [INFO] or [DEBUG].\n */\n var loggingLevel = ERROR\n\n actual fun isLoggable(priority: Int) = priority in ERROR until loggingLevel\n\n actual fun log(priority: Int, message: String, tr: Throwable?) {\n if (isLoggable(priority)) {\n val messageWithTrace = tr?.run { message + '\\n' + stackTraceToString() } ?: message\n when (priority) {\n ERROR -> console.error(messageWithTrace)\n WARN -> console.warn(messageWithTrace)\n INFO -> console.info(messageWithTrace)\n else -> console.log(messageWithTrace)\n }\n }\n }\n\n actual fun logMessage(level: Int, className: String, methodName: String, message: String, tr: Throwable?) =\n makeMessage(className, methodName, message).also { log(level, it, tr) }\n\n actual fun makeMessage(className: String, methodName: String, message: String) =\n \"$className.$methodName: ${messageTable[message] ?: message}\"\n}","package earth.worldwind.util\n\n/**\n * JS use BasicPool instead of SynchronizedPool\n */\nactual class SynchronizedPool: BasicPool()","package earth.worldwind.util.kgl\n\nimport org.khronos.webgl.*\n\nactual data class KglShader(val obj: WebGLShader? = null) {\n actual companion object{ actual val NONE = KglShader() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglProgram(val obj: WebGLProgram? = null) {\n actual companion object{ actual val NONE = KglProgram() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglUniformLocation(val obj: WebGLUniformLocation? = null) {\n actual companion object{ actual val NONE = KglUniformLocation() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglBuffer(val obj: WebGLBuffer? = null) {\n actual companion object{ actual val NONE = KglBuffer() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglTexture(val obj: WebGLTexture? = null) {\n actual companion object{ actual val NONE = KglTexture() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglFramebuffer(val obj: WebGLFramebuffer? = null) {\n actual companion object{ actual val NONE = KglFramebuffer() }\n actual fun isValid() = obj != null\n}\n\nclass WebKgl(val gl: WebGLRenderingContext) : Kgl {\n\n override val hasMaliOOMBug = false\n\n override fun getParameteri(pname: Int): Int = gl.getParameter(pname) as Int\n\n override fun getParameterf(pname: Int): Float = gl.getParameter(pname) as Float\n\n override fun getParameteriv(pname: Int): IntArray = gl.getParameter(pname) as IntArray\n\n override fun getParameterfv(pname: Int): FloatArray = gl.getParameter(pname) as FloatArray\n\n override fun createShader(type: Int) = KglShader(gl.createShader(type))\n\n override fun shaderSource(shader: KglShader, source: String) = gl.shaderSource(shader.obj, source)\n\n override fun compileShader(shader: KglShader) = gl.compileShader(shader.obj)\n\n override fun deleteShader(shader: KglShader) = gl.deleteShader(shader.obj)\n\n override fun getShaderParameteri(shader: KglShader, pname: Int): Int {\n val value = gl.getShaderParameter(shader.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getProgramInfoLog(program: KglProgram): String = gl.getProgramInfoLog(program.obj) ?: \"\"\n\n override fun getShaderInfoLog(shader: KglShader): String = gl.getShaderInfoLog(shader.obj) ?: \"\"\n\n override fun createProgram() = KglProgram(gl.createProgram())\n\n override fun deleteProgram(program: KglProgram) = gl.deleteProgram(program.obj)\n\n override fun attachShader(program: KglProgram, shader: KglShader) = gl.attachShader(program.obj, shader.obj)\n\n override fun linkProgram(program: KglProgram) = gl.linkProgram(program.obj)\n\n override fun useProgram(program: KglProgram) = gl.useProgram(program.obj)\n\n override fun getProgramParameteri(program: KglProgram, pname: Int): Int {\n val value = gl.getProgramParameter(program.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getUniformLocation(program: KglProgram, name: String) =\n KglUniformLocation(gl.getUniformLocation(program.obj, name))\n\n override fun bindAttribLocation(program: KglProgram, index: Int, name: String) =\n gl.bindAttribLocation(program.obj, index, name)\n\n override fun createBuffer() = KglBuffer(gl.createBuffer())\n\n override fun bindBuffer(target: Int, buffer: KglBuffer) = gl.bindBuffer(target, buffer.obj)\n\n override fun bufferData(target: Int, size: Int, sourceData: ShortArray, usage: Int, offset: Int) {\n val arr = sourceData.unsafeCast()\n val len = size / 2\n gl.bufferData(target, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len), usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: IntArray, usage: Int, offset: Int) {\n val arr = sourceData.unsafeCast()\n val len = size / 4\n gl.bufferData(target, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len), usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: FloatArray, usage: Int, offset: Int) {\n val arr = sourceData.unsafeCast()\n val len = size / 4\n gl.bufferData(target, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len), usage)\n }\n\n override fun deleteBuffer(buffer: KglBuffer) = gl.deleteBuffer(buffer.obj)\n\n override fun vertexAttribPointer(\n location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int\n ) = gl.vertexAttribPointer(location, size, type, normalized, stride, offset)\n\n override fun enableVertexAttribArray(location: Int) = gl.enableVertexAttribArray(location)\n\n override fun disableVertexAttribArray(location: Int) = gl.disableVertexAttribArray(location)\n\n override fun enable(cap: Int) = gl.enable(cap)\n\n override fun disable(cap: Int) = gl.disable(cap)\n\n override fun uniform1f(location: KglUniformLocation, f: Float) =\n gl.uniform1f(location.obj, f)\n\n override fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 1\n gl.uniform1fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform1i(location: KglUniformLocation, i: Int) =\n gl.uniform1i(location.obj, i)\n\n override fun uniform2f(location: KglUniformLocation, x: Float, y: Float) =\n gl.uniform2f(location.obj, x, y)\n\n override fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 2\n gl.uniform2fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform2i(location: KglUniformLocation, x: Int, y: Int) =\n gl.uniform2i(location.obj, x, y)\n\n override fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float) =\n gl.uniform3f(location.obj, x, y, z)\n\n override fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 3\n gl.uniform3fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int) =\n gl.uniform3i(location.obj, x, y, z)\n\n override fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float) =\n gl.uniform4f(location.obj, x, y, z, w)\n\n override fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 4\n gl.uniform4fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int) = gl.uniform4i(location.obj, x, y, z, w)\n\n override fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 9\n gl.uniformMatrix3fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 16\n gl.uniformMatrix4fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun lineWidth(width: Float) = gl.lineWidth(width)\n\n override fun polygonOffset(factor: Float, units: Float) = gl.polygonOffset(factor, units)\n\n override fun cullFace(mode: Int) = gl.cullFace(mode)\n\n override fun frontFace(mode: Int) = gl.frontFace(mode)\n\n override fun depthFunc(func: Int) = gl.depthFunc(func)\n\n override fun depthMask(mask: Boolean) = gl.depthMask(mask)\n\n override fun blendFunc(sFactor: Int, dFactor: Int) = gl.blendFunc(sFactor, dFactor)\n\n override fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean) = gl.colorMask(r, g, b, a)\n\n override fun viewport(x: Int, y: Int, width: Int, height: Int) = gl.viewport(x, y, width, height)\n\n override fun clear(mask: Int) = gl.clear(mask)\n\n override fun clearColor(r: Float, g: Float, b: Float, a: Float) = gl.clearColor(r, g, b, a)\n\n override fun createTexture() = KglTexture(gl.createTexture())\n\n override fun deleteTexture(texture: KglTexture) = gl.deleteTexture(texture.obj)\n\n override fun texImage2D(\n target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?\n ) = gl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer?.unsafeCast())\n\n override fun activeTexture(texture: Int) = gl.activeTexture(texture)\n\n override fun bindTexture(target: Int, texture: KglTexture) = gl.bindTexture(target, texture.obj)\n\n override fun generateMipmap(target: Int) = gl.generateMipmap(target)\n\n override fun texParameteri(target: Int, pname: Int, value: Int) = gl.texParameteri(target, pname, value)\n\n override fun drawArrays(mode: Int, first: Int, count: Int) = gl.drawArrays(mode, first, count)\n\n override fun drawElements(mode: Int, count: Int, type: Int, offset: Int) = gl.drawElements(mode, count, type, offset)\n\n override fun getError() = gl.getError()\n\n override fun finish() = gl.finish()\n\n override fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer) = gl.bindFramebuffer(target, framebuffer.obj)\n\n override fun createFramebuffer() = KglFramebuffer(gl.createFramebuffer())\n\n override fun deleteFramebuffer(framebuffer: KglFramebuffer) = gl.deleteFramebuffer(framebuffer.obj)\n\n override fun checkFramebufferStatus(target: Int) = gl.checkFramebufferStatus(target)\n\n override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int) =\n gl.framebufferTexture2D(target, attachment, textarget, texture.obj, level)\n\n override fun readPixels(\n x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray\n ) = gl.readPixels(x, y, width, height, format, type, Uint8Array(buffer.unsafeCast().buffer))\n\n override fun pixelStorei(pname: Int, param: Int) = gl.pixelStorei(pname, param)\n}\n","package earth.worldwind.util.locale\n\nimport kotlinx.browser.window\n\nactual val language = window.navigator.language.split('-')[0]\nactual val country = window.navigator.language.split('-')[1]",null,null,null,null,null,null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.Instant\n\nactual fun convertToInstant(t: Any) = when(t) {\n is kotlin.js.Date -> Instant.fromEpochMilliseconds(t.getTime().toLong())\n else -> throw IllegalArgumentException(\"Can't convert to LocalDateTime: $t\")\n}\n",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.render.Renderable\n\n/**\n * Interface for processing user input to interact with renderables.\n */\ninterface SelectDragCallback {\n /**\n * Nothing was picked due to picking point is outside the terrain.\n */\n fun onNothingPicked() {}\n\n /**\n * Nothing context was requested due to selected point is outside the terrain.\n */\n fun onNothingContext() {}\n\n /**\n * Terrain position was picked.\n *\n * @param position picked terrain position\n */\n fun onTerrainPicked(position: Position) {}\n\n /**\n * Terrain context at some position was requested.\n *\n * @param position picked terrain position\n */\n fun onTerrainContext(position: Position) {}\n\n /**\n * Check if renderable is pick-able.\n *\n * @param renderable some renderable intended to be picked\n * @return renderable is pick-able\n */\n fun canPickRenderable(renderable: Renderable) = false\n\n /**\n * Some renderable was picked.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderablePicked(renderable: Renderable, position: Position) {}\n\n /**\n * Some renderables context was requested.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderableContext(renderable: Renderable, position: Position) {}\n\n /**\n * Check if picked renderable is movable.\n *\n * @param renderable picked renderable\n * @return picked renderable is movable\n */\n fun canMoveRenderable(renderable: Renderable) = false\n\n /**\n * Renderable was moved from ane position to another.\n *\n * @param renderable picked renderable which is moving\n * @param fromPosition previous position\n * @param toPosition current position\n */\n fun onRenderableMoved(renderable: Renderable, fromPosition: Position, toPosition: Position) {}\n\n /**\n * Renderable movement was finished\n *\n * @param renderable renderable which was moved\n * @param position last position during movement\n */\n fun onRenderableMovingFinished(renderable: Renderable, position: Position) {}\n\n /**\n * Renderable was double-tapped or double-clicked\n *\n * @param renderable renderable which was double-tapped or double-clicked\n * @param position picked terrain or renderable center position\n */\n fun onRenderableDoubleTap(renderable: Renderable, position: Position) {}\n}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(960);\n"],"names":["root","factory","exports","module","define","amd","this","createErrorType","name","init","superErrorClass","JsJodaException","message","Error","captureStackTrace","constructor","stack","apply","arguments","toString","prototype","Object","create","DateTimeException","cause","msg","DateTimeParseException","text","index","parsedString","errorIndex","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","_inheritsLoose","subClass","superClass","__proto__","_assertThisInitialized","self","ReferenceError","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","assert$1","freeze","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","matches","RegExp","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","nanoString","rval","slice","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","prop","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","MONTHS","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","valueOf","dayOfWeek","style","locale","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","p1","p2","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","date","time","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","_ch","ap","hap","nod","cod","lod","sod","mod","los","cos","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","year","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","PARSER","PARSER$1","PARSER$2","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","UTC","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","MAX_WIDTH$1","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","_zeroSecs","_hi","_lo","_ldt","div","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","day","hour","secVal","nanoVal","sec","toEpochSecond","StringBuilder","_str","end","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","MonthDay","dayOfMonth","_month","_day","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","MAX_VALUE","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","f","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","withOffsetSameLocal","compare","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN_VALUE","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","used","jsJodaExports","use","fn","event","event1","event2","event3","event4","","expect","update","oldValue","delta","initial","trace","isoDayNumber","","","ofZone","zoneOffset","decoder","epochMilliseconds","isoString","fixOffsetRepresentation","epochSeconds","nanosecondAdjustment","q","sum","offsetString","nanosecond","monthNumber","timeZone","ImageResource","engine","AbstractTutorial","Color","Ellipse","MGRSGraticuleLayer","Path","listOf","Polygon","ShowTessellationLayer","SurfaceImage","scope","window","it","$currentTutorial","$tutorials","$actionsContainer","$wwd","document","getElementById","wwd","WorldWindow","select","actionsContainer","tutorials","mapOf","BasicTutorial","CameraViewTutorial","LookAtViewTutorial","PlacemarksTutorial","PathsTutorial","PolygonsTutorial","EllipsesTutorial","LabelsTutorial","SightlineTutorial","SurfaceImageTutorial","ShowTessellationTutorial","MGRSGraticuleTutorial","WmsLayerTutorial","WmtsLayerTutorial","currentTutorial","BackgroundLayer","GoogleLayer","StarFieldLayer","AtmosphereLayer","BasicElevationCoverage","element","innerHTML","onchange","target","actionName","$actionName","onclick","tutorial","setCameraAction","aircraft","airport","heading","distanceMeters","tilt","setLookAtAction","altitude","LookAt","Position","$this$launch","$completion","launch","renderable","FileResource","identifier","userObject","layer","terrainPosition","po","MutableSharedFlow","asSharedFlow","gl","renderResourceCache","globe","tessellator","frameController","frameMetrics","Globe","Wgs84Projection","BasicTessellator","BasicFrameController","LayerList","Camera","GoToAnimator","RenderContext","DrawContext","initLocation","initAltitude","VertexAttrib","DrawElements","lambda","lhs","rhs","DrawShapeState","bindTexture","dc","DrawableQueue","inDegrees","angle","degrees","radians","coerceIn","adjustExtremes","rExtremes","s","sExtremes","t","tExtremes","p","pdr","pds","pdt","swapAxes","aExtremes","bExtremes","tmp","intersectsAt","plane","effectiveRadius","dq1","bq1","bq2","z","Vec3","Ellipsoid","semiMajorAxis","inverseFlattening","Frustum_init_$Init$","Viewport","Line_init_$Init$","Location_init_$Init$","latitude","longitude","LookAt_init_$Init$","altitudeMode","roll","Matrix3_init_$Init$","Matrix4_init_$Init$","xUnits","yUnits","distance","Position_init_$Init$","Location","Range_init_$Init$","lower","upper","Sector_init_$Init$","sector","minLatitude","maxLatitude","minLongitude","maxLongitude","matrixWidth","matrixHeight","tileWidth","tileHeight","entries","Vec2_init_$Init$","Vec3_init_$Init$","Vec2","Viewport_init_$Init$","height","MGRSString","convertUTMToMGRS","easting","northing","gridEasting","gridNorthing","east","north","letters","roundMGRS","getGridValues","setNumber","aaPattern","errorCode","getLatitudeLetter","latDeg","makeMGRSString","intValue","j","iEast","sEast","iNorth","sNorth","hemisphere","PolarCoordConverter","ellipsoid","projection","ElevationModel","LruMemoryCache","tileMatrixSet","tileFactory","AbstractElevationCoverage","AbsentResourceList","WmsElevationCoverage","BasicTerrain","level","row","column","$level","Tile","lazy","imageSource","imageOptions","ImageOptions","RenderableLayer","surfaceImage","AbstractLayer","asInt","AbstractShaderProgram","AbstractAtmosphereProgram","greatCircleIntersectionAtLongitude","deltaLon","getDeltaLongitude","midPoint","greatCircleMidPoint","greatCircleIntersectionAtLatitude","azimuth","calculateLookAtProperties","rc","pixelSizeMeters","pixelSizeDegrees","GraticuleSupport","AbstractTile","scaleModulo","maxResolution","AbstractGraticuleLayer","applyRenderingParams","params","opacity","o","color","applyOpacity","compArray","colorValue","path","getLineShapeAttributes","createLineShapeAttributes","attrs","lineWidth","selectMGRSRenderables","getVisibleZones","zoneList","vs","gridRectangle","getGridRectangleForSector","rectangle","minLat","coerceAtLeast","maxLat","coerceAtMost","gridSector","x1","getGridColumn","x2","y1","getGridRow","y2","col","MGRSGridZone","getGridSector","minLon","maxLon","AbstractUTMGraticuleLayer","MGRSOverview","setSquareNames","setSquareName","sz","tenMeterDegree","mgrs","AbstractGraticuleTile","utm","isPointInRange","point","altitudeAboveGround","UTMZone","UTMZoneSector","SWEasting","SWNorthing","UTMSquareSector","","adjustDateLineCrossingPoints","corners","locationsCrossDateLine","locations","posNext","lonSign","corner","boundingSector","lat","lon","Sector","isNorthNeighborInView","isEastNeighborInView","ImageTile","minLatPercent","maxLatPercent","numLevels","tileSize","transparent","TiledImageLayer","MercatorSector","tileOrigin","firstLevelDelta","levelSet","TiledSurfaceImage","layerName","lyrs","overlay","MercatorTiledImageLayer","seen1","datatype","arraysize","ucd","serializationConstructorMarker","metadata","data","starDataSource","$wmsTileFactory","serviceAddress","coverage","imageFormat","resolution","TiledElevationCoverage","buildTileMatrixSet","buildTileFactory","layerNames","lc","createWmsSurfaceImage","wmsLayers","layerLimit","wmsLayerConfig","levelSetConfig","config","$this$$receiver","$wmsLayers","joinToString","$tmp1_let","$this$withContext","l","wmsVersion","styleNames","createWmtsSurfaceImage","wmtsLayer","compatibleTileMatrixSets","determineCoordSysCompatibleTileMatrixSets","determineCompatibleTileMatrixSet","capabilities","tileMatrixSetIds","compatibleSet","CompatibleTileMatrixSet","tileMatrixSetId","previousHeight","tileMatrix","topLeftCornerValue","topLeftCorner","compatibleTileMatrixSet","createWmtsTileFactory","resourceUrl","WmtsTileFactory","baseUrl","determineKvpUrl","dcp","getMethods","constraints","styleIdentifier","buildWmtsKvpTemplate","kvpServiceAddress","createWmtsLevelSet","boundingBox","imageSize","$wmtsLayer","$layerIdentifier","layerIdentifier","template","tileMatrixIdentifiers","title","onlineResource","logoURL","CRS","minx","maxx","miny","maxy","resx","resy","version","updateSequence","service","capability","request","layers","exception","emptyList","WmsException","addressType","address","city","stateOrProvince","postCode","country","voiceTelephone","facsimileTelephone","electronicMailAddress","contactAddress","contactPersonPrimary","contactPerson","contactOrganization","post","http","unitSymbol","default","multipleValues","nearestValue","formats","south","west","authority","abstract","keywordList","_styles","_referenceSystems","_geographicBoundingBox","_boundingBoxes","_dimensions","_attribution","_authorityUrls","identifiers","metadataUrls","dataUrls","featureListUrls","_maxScaleDenominator","_minScaleDenominator","isQueryable","_cascaded","isOpaque","isNoSubsets","_fixedWidth","_fixedHeight","url","getCapabilities","getMap","getFeatureInfo","dcpType","fees","accessConstraints","contactInformation","maxHeight","legendUrls","styleSheetUrl","styleUrl","deliveryPoints","administrativeArea","postalCode","electronicMailAddresses","crs","lowerCorner","upperCorner","allowedValues","phone","hoursOfService","contactInstructions","postMethods","dcps","operations","voice","fax","individualName","positionName","contactInfo","role","keywords","serviceType","serviceTypeVersions","providerName","serviceContact","serviceIdentification","serviceProvider","operationsMetadata","contents","themes","serviceMetadataUrls","tileMatrixSets","unitOfMeasure","valueDefault","boundingBoxes","wgs84BoundingBox","styles","infoFormats","tileMatrixSetLinks","resourceUrls","dimensions","resourceType","isDefault","layerRefs","scaleDenominator","tileMatrixIdentifier","minTileRow","maxTileRow","minTileCol","maxTileCol","supportedCrs","wellKnownScaleSet","tileMatrices","tileMatrixSetLimits","BoundingBox","AbstractRenderable","Color_init_$Init$","red","green","blue","alpha","attributes","TextRenderer","TextCacheKey","isRT","byteCount","AbstractBufferObject","imageConfig","center","majorRadius","minorRadius","AbstractShape","RenderData","BoundingSphere","positions","PlacemarkAttributes_init_$Init$","imageColor","imageOffset","imageScale","minimumImageScale","isDrawLabel","isDrawLeader","isDepthTest","labelAttributes","leaderAttributes","GLUtessellatorCallbackAdapter","mutableListOf","ShapeAttributes_init_$Init$","isDrawInterior","isDrawOutline","isDrawVerticals","isDepthWrite","isLightingEnabled","interiorColor","outlineColor","outlineWidth","interiorImageSource","outlineImageSource","AbstractSurfaceRenderable","TextAttributes_init_$Init$","Font_init_$Init$","font","textColor","textOffset","isOutlineEnabled","maxTrys","minCheckInterval","source","levelNumber","tileDelta","roundToInt","Level","capacity","lowWater","declination","rightAscension","keepWidth","roundUp","","this$0","nextDigit","pointPos","mb","","receiver","","split","","invalidFormat","","createTimeField","upperCase","tz","offsetAt","takeLast","createIntegerField","insertField","createHexField","createOctalField","createCharacter","endStage","setDone","toInt","endStage$default","padStart","padEnd","insertField$default","createFloat","fractionPartLength","roundToLong","fl","rest","fractionalFormat","createScientific","ExponentFormatter","createAutoFloat","args","StringFormat","eUp","head","frame","leq","GLUvertex","GLUface","GLUhalfEdge","makeDormant","requireState","newState","gotoState","addVertex","coords","vertexData","flushCache","vertex","CachedVertex","dot","u","v","PriorityQ","PQnode","PQhandleElem","lt","swap","PriorityQHeap","FaceCount_init_$Init$","eStart","render","marked","addToTrail","freeTrail","isEven","RenderFan","RenderStrip","RenderTriangle","addWinding","eDst","eSrc","regionBelow","regionAbove","$tess","connectTimeout","requestTimeout","HttpClient","$config","$connectTimeout","$requestTimeout","$this$HttpClient","$this$install","$this$null","unitSquareTransform","x3","y3","x4","y4","minX","maxX","minY","maxY","modulus","WorldWindowController","EventListener","keyCode","preventDefault","tabIndex","focus","callback","canvas","cacheCapacity","WorldWind","WebKgl","RenderResourceCache","BasicWorldWindowController","KeyboardControls","SelectDragDetector","Frame","preventDefaultListener","onGestureEvent","navigator","maxTouchPoints","setProperty","addEventListener","statusMessage","GestureRecognizer","clientX","clientY","DragRecognizer","PanRecognizer","changedTouches","item","pickPoint","pickList","redrawRequired","highlighted","topPickedObject","recognizer","toPosition","fromPosition","clapToGround","movePoint","ClickRecognizer","TapRecognizer","controller","AbstractSource","$elevationSource","$key","AbstractTiledElevationCoverage","MainScope","AbstractTiledImageLayer","createElement","getContext","AbstractMercatorImageTile","family","weight","variant","horizontalAlignment","$imageSource","$options","$result","$fileResource","$postprocessor","$image","$postprocessorExecuted","postprocessor","URL","revokeObjectURL","src","image","Texture","isPowerOfTwo","BasicPool","KglShader","KglProgram","KglUniformLocation","KglBuffer","KglTexture","KglFramebuffer","language","PickedObject","positionCopy","r8","g8","b8","pickedObject","removeAll","lookAtPosition","cameraPosition","lookAt","fromPoint","toPoint","to","elevation","sinFovY2","radius","pickMode","isRedrawRequested","modelview","eyeAltitude","far","maxDepthValue","near","distanceToSurface","maxNearDistance","pool","instance","BasicDrawableTerrain","attribLocation","bufferBound","colorAttachment","depthAttachment","fill","framebuffer","program","textureUnit","texture","textureUnitIndex","buffer","pixelCount","pixelBuffer","resultSet","idx","matrix","mode","prim","DrawableLines","drawable","groupId","order","depth","newEntries","entry","sortWith","DrawableScreenTexture","that","DrawableShape","DrawableSightline","depthTexture","terrain","terrainOrigin","DrawableSurfaceColor","DrawableSurfaceShape","scratchList","terrainSector","shapeCount","shape","primIdx","DrawableSurfaceTexture","texCoordMatrix","usingTerrainAttrs","textureSector","DrawableTessellation","pickedObjectId","BasicShaderProgram","pickRay","pickedObjects","pickViewport","pickPointOnly","objectFound","topObjectId","topObject","terrainObject","normalizedLat","a1","a2","stride","rMin","rMax","sMin","sMax","tMin","tMax","rLen","sLen","tLen","rSum","sSum","tSum","cx","cy","cz","rx2","ry2","rz2","minHeight","heights","points","centroidLat","centroidLon","minDist2","dist2","frustum","coherentPlane","nr","viewport","w","subViewport","bln","blf","brn","brf","tln","tlf","trn","trf","left","right","bottom","top","mvpInv","va","vb","nl","nb","nt","nn","nf","pointA","pointB","elements","vx","vy","vz","sx","sy","epsilon","vert1x","vert1y","vert1z","vert2x","vert2y","vert2z","vert0x","vert0y","vert0z","edge1x","edge1y","edge1z","edge2x","edge2y","edge2z","px","py","pz","det","invDet","tx","ty","qx","qy","qz","offsetSec","offsetIn","offsetHours","latDegrees","lonDegrees","latitudeDegrees","longitudeDegrees","latitudeRadians","longitudeRadians","location","lat1","lon1","lat2","lon2","azimuthRadians","lat1Radians","lon1Radians","lat2Radians","lon2Radians","c","distanceRadians","latRadians","lonRadians","cosLat","sinLat","cosAzimuth","sinAzimuth","sinDistance","cosDistance","endLatRadians","endLonRadians","dLon","dPhi","dLat","xScale","yScale","dst","srcDeltaLat","srcDeltaLon","dstDeltaLat","dstDeltaLon","xs","ys","xt","yt","ma","ma0","ma1","ma2","contentEquals","contentHashCode","A","vv","big","k","dum","imax","ii","ip","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","zScale","viewportWidth","viewportHeight","vFieldOfView","nearDistance","farDistance","aspect","nearHeight","nearWidth","mx","my","mz","c11","c22","c33","c12","c13","c23","numPoints","dx","dy","dz","ma3","mr1","mr2","mr3","mr4","depthOffset","cr","sr","sh","ct","st","result1","result2","result3","u2","u2p1","i1","i2","i3","itemp","sw","nearResult","farResult","mw","nx","ny","nz","nw","fx","fy","fz","fw","Offset","vector","da","db","line","lDotV","magnitude","minLatDegrees","minLonDegrees","deltaLatDegrees","deltaLonDegrees","maxLatDegrees","maxLonDegrees","empty","deltaLatitudeDegrees","deltaLongitudeDegrees","lOrd","toLong","lRow","lCol","deltaLat","TileMatrix","TileMatrixSet","degreesPerPixel","nearestIdx","nearestDelta2","delta2","converter","MGRSCoordConverter","err","MGRSCoord","ups","convertUPSToMGRS","falseEasting","falseNorthing","ltr2LowValue","invF","es2","sLat","esSin","powEs","cLat","onePlusEs","oneMinusEs","dLam","rho","Easting","Northing","tempPhi","minEasting","maxEasting","minNorthing","maxNorthing","phi","sinPhi","aOrNull","fOrNull","originLatitude","centralMeridian","TMCoordConverter","TMCoord","scaleFactor","cm","tn","tn2","tn3","tn4","tn5","tempLong","tempOrigin","c3","c5","c7","tan2","tan4","tan6","eta","eta2","eta3","eta4","sn","tmd","t1","t2","t3","t4","t5","t6","t7","t8","t9","ftphi","t10","de","t11","t12","t13","t14","t15","t16","t17","UPSCoordConverter","UPSCoord","UTMCoordConverter","UTMCoord","tempZone","tm","ec2","numLat","numLon","verticalExaggeration","origin","rowStride","retrieve","maxTimestamp","timestamp","gridWidth","gridHeight","targetIdx","x0","y0","xf","yf","targetPixelSpan","tileBlock","TileBlock","rasterWidth","rasterHeight","matrixMinLat","matrixMaxLat","matrixMinLon","matrixMaxLon","matrixDeltaLat","matrixDeltaLon","uIdx","i0","fract","col0","col1","vIdx","j0","row0","row1","tileArray","intersection","uMin","uMax","colMin","colMax","vMin","vMax","rowMin","rowMax","rIdx","hIdx","j1","wIdx","i0j0","i1j0","i0j1","i1j1","iMin","iMax","jMin","jMax","rowJMin","rowJMax","colIMin","colIMax","texel","cosLon","sinLon","rpm","eqr2","pol2","ux","uy","uz","ey","ez","eqr","elevIndex","xOffset","yOffset","zOffset","lonIndex","rowIndex","latIndex","colIndex","hgt","resultIndex","skip","h","zpx","zpxSqrt","ra2","e4","evoluteBorderTest","rad1","rad2","rad3","aTan","s2","m2","tile","found","triStripElements","sf","tf","si","ti","tileRowStride","i00","i10","i01","i11","f00","f10","f01","f11","TerrainTile","childs","vertexTexCoords","lineElements","FloatBufferObject","ds","tIdx","sIdx","toShort","ve","borderHeight","","invWavelength","g","kr","km","fragMode","direction","eyePoint","equatorialRadius","atmosphereAltitude","ar","lightLocation","SkyProgram","GroundProgram","altitudes","ShortBufferObject","DrawableGroundAtmosphere","nightTexture","textureBound","DrawableSkyAtmosphere","renderingParams","paramsKey","needsToUpdate","labelOffsetDegrees","getLabelOffset","labelPos","pathType","label","surfacePoint","p1In","p2In","outPoint","inPoint","GraticuleRenderingParams","ge","computePositionFromUTM","computePositionFromUPS","utmZone","utmZoneSector","squares","startEasting","startNorthing","cols","rows","squaresArray","UTMSquareZone","initRenderingParams","gz","neighbor","graticuleType","createSquaresUPS","createSquaresUTM","polyline","lineSector","gt","contains","zoneNumber","toList","latitude1","latitude2","UTMExtremes","levelExtremes","extremes","pixelSize","eastingOffset","labelEasting","labelNorthing","labelHemisphere","northingOffset","viewFrustum","gridStep","gridStepTimesTen","currentHemisphere","sb","drawMetricLabels","createSubGrids","sg","UTMSquareGrid","GridElement","pA","pB","centerPoint","squareGrid","firstRow","lastRow","firstCol","lastCol","dLatPercent","firstRowPercent","firstColLon","d1","d2","childLevel","d0","t0","northRow","southRow","westCol","eastCol","percent","sunTexture","starData","starsPositionsBuffer","julianDate","sunCelestialLocation","sunPositionsBuffer","StarFieldProgram","$program","$julianDate","$starsPositionsBuffer","$sunPositionsBuffer","$sunTexture","DrawableLambda","sunBuffer","indexes","positionIndex","starInfo","pointSize","raIndex","decIndex","magIndex","starMetaInfo","numDays","minMag","maxMag","tileSector","urlString","retrieveWmsCapabilities","wmsCapabilities","DefaultHttpClient","bodyAsText","withContext","matchingCoordinateSystems","wmsLayerCoordinateSystems","toMutableSet","toSet","WmsLayerConfig","imageFormats","layerCapabilities","LevelSetConfig","minScaleDenominator","layerCapability","minRadiansPerPixel","retrieveWmtsCapabilities","flipRow","regex","lowerValues","upperValues","toDouble","heightLimits","extent","hsv","rr","gg","bb","attachment","currentFramebuffer","textureName","tanFov2","modelPoint","ew","zOrder","cameraDistance","sortOrder","hasMipMap","widthPow2","powerOfTwoCeiling","bytesPerRow","heightPow2","param","parameters","currentTexture","currentBuffer","currentProgram","fs","enable","sightline","visibleColor","occludedColor","drawableCount","highlightAttributes","minDistance2","distance2","metersPerPixel","intervals","topRange","Range","outlineRange","sideRange","elementBuffer","toShortArray","drawState","elementBufferKey","side","outline","calculatedIntervals","sanitizedIntervals","spineCount","majorArcRadians","minorArcRadians","isStandardAxisOrientation","headingAdjustment","deltaRadians","globeRadius","arrayOffset","spineIdx","spineRadius","azimuthDegrees","arcRadius","loc","isExtrudedSkirt","offsetVertexIndex","texCoord2d","maxRadius","subdivisions","subdivisionCount","actualRotation","boundingRectForUnitSquare","SightlineProgram","IntBufferObject","toIntArray","vertexCount","begin","numSubsegments","deltaDist","deltaAlt","dist","alt","intermediate","Placemark","offsetX","offsetY","scaleX","scaleY","activeTexture","visibilityScale","absTilt","camera","actualTilt","labelTexture","outData","polygonData","boundaryEdge","errnum","noIntermediatePoints","tess","v0","v1","v2","errNum","errStr","increment","newArray","SurfaceTextureProgram","retrieveCurrentLevel","currentAncestorTile","currentAncestorTexture","children","ancestorTile","ancestorTexture","cacheSource","isCacheAbsent","permanent","resourceId","timeSinceLastMark","latAbsDifference","lonAbsDifference","nearestLat","lonDifference","nearestLon","last","radiansPerPixel","newEntry","oldEntry","spaceRequired","sortedEntries","sortedWith","evicted","meanLongitude","meanAnomaly","eclipticLongitude","eclipticLongitudeRad","obliquityOfTheEcliptic","CelestialLocation","celestialLocation","GMST","dayFraction","firstRowLat","detailFactor","nearestPoint","distanceToCamera","viewingVector","normalVector","latMin","lonMin","latMid","lonMid","latMax","lonMax","childRow","childCol","childSector","child0","child1","child2","cache","cacheSize","fractionWidth","take","createStringField","Specification","reason","convertToInstant","which","aCallback","coords_offset","Dict","DictNode","dict","node","newNode","aNode","aDict","GLUtessellatorImpl","tooLarge","clamped","cacheVertex","mesh","printStackTrace","weights","gapL","gapR","o1","o2","z1","z2","eNext","eSym","ePrev","aONext","bONext","newVertex","eOrig","vNext","vPrev","newFace","fNext","fPrev","eDel","del","vDel","newOrg","fDel","newLface","newVertex1","newVertex2","eOrg","joiningLoops","joiningVertices","eDelSym","eNew","eNewSym","tempHalfEdge","GLUmesh","fHead","vHead","eHead","norm","maxVal","minVal","minVert","maxVert","tNorm","maxLen2","tLen2","area","computedNormal","sUnit","tUnit","PriorityQSort","curr","hCurr","child","hChild","hParent","keyNew","free","hMin","Stack","seed","piv","pqKeys","sortMin","heapMin","fOrig","trail","headSize","tailSize","eTail","edgeState","check","vn","vc","xc","yc","zc","xp","yp","zp","key1","key2","reg1","reg2","e1","reg","newEdge","org","regAbove","eNewUp","regNew","ActiveRegion","regFirst","regLast","regPrev","regUp","eFirst","eLast","eTopLeft","cleanUp","firstTime","isect","needed","orgUp","dstUp","orgLo","dstLo","weights1","weights2","regLo","eLo","orgMin","eBottomLeft","degenerate","vEvent","eTopRight","eLnext","pq","face","up","keepOnlyBoundary","defaultPrevented","state","forwardRadians","sideRadians","sinHeading","cosHeading","headingDegrees","clientWidth","tiltDegrees","clientHeight","rotation","timeStamp","deltaMode","WheelEvent","DOM_DELTA_PIXEL","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","operation","setTimeout","KeyboardControls$handlePan$ref","KeyboardControls$handlePan$ref$lambda","KeyboardControls$handleZoom$ref","KeyboardControls$handleZoom$ref$lambda","KeyboardControls$handleTilt$ref","KeyboardControls$handleTilt$ref$lambda","glAttrs","listener","$entry","handleEvent","bbox","getBoundingClientRect","clientLeft","clientTop","pickCenter","PickedObjectList","cancelAnimationFrame","devicePixelRatio","getExtension","requestAnimationFrame","isPickMode","drawingBufferWidth","drawingBufferHeight","stage","button","Click","touch","delay","pointerType","buttonBit","nextTouch","centroid","touchIdx","TouchWrapper","pointerId","newScale","touch0","touch1","newRotation","tap","tapCount","dirMask","ElevationSource","href","fetch","ok","arrayBuffer","statusText","headers","Int16Array","Float32Array","Uint8Array","cancelChildren","elevationSource","resource","widthDouble","heightDouble","drawImage","srcData","getImageData","$resource","dstData","createImageData","srcRow","putImageData","toBlob","createObjectURL","onerror","deviceMemory","options","fileResource","Image","onload","crossOrigin","ratioW","ratioH","ratio","ImageTexture","CanvasTexture","ctx2D","textSize","lines","strokeOffset","textBaseline","textAlign","fillStyle","strokeStyle","lineCap","lineJoin","translate","strokeText","fillText","textAttributes","measureText","UNPACK_PREMULTIPLY_ALPHA_WEBGL","texImage2D","imageResource","ImageSource","Event","priority","tr","messageWithTrace","stackTraceToString","console","warn","info","log","className","pname","getParameter","createShader","shader","shaderSource","compileShader","deleteShader","getShaderParameter","getProgramInfoLog","getShaderInfoLog","createProgram","deleteProgram","attachShader","linkProgram","useProgram","getProgramParameter","getUniformLocation","bindAttribLocation","createBuffer","bindBuffer","sourceData","usage","arr","bufferData","subarray","deleteBuffer","vertexAttribPointer","enableVertexAttribArray","disableVertexAttribArray","cap","disable","uniform1f","uniform1i","uniform2f","uniform3f","uniform3fv","uniform4f","uniform4fv","transpose","uniformMatrix3fv","uniformMatrix4fv","factor","polygonOffset","frontFace","func","depthFunc","mask","depthMask","sFactor","dFactor","blendFunc","colorMask","createTexture","internalFormat","border","generateMipmap","texParameteri","drawArrays","drawElements","bindFramebuffer","createFramebuffer","textarget","framebufferTexture2D","readPixels","pixelStorei","LN2","O","relativeStart","relativeEnd","finalValue","TypedArray","taylor_2_bound","taylor_n_bound","asUint","searchString","destination","separator","postfix","limit","truncated","transform","iterator","single","uppercase","code","minimumValue","maximumValue","KotlinNothingValueException_init_$Init$","$entryIterator","implFindEntry","ensureCapacity","minCapacity","copyElements","newCapacity","newElements","positiveMod","incremented","decremented","isVarargs","iteratorFactory","pairs","predicate","predicateResultToRemove","exceptionalState","$block","sequence","transformer","ensureItemIterator","nextItemIterator","calcNext","sendWhen","getInitialValue","getNextValue","acc","removed","interceptor","baseKey","safeCast","step","endInclusive","ignoreCase","thisUpper","otherUpper","indent","$indent","radix","firstChar","limitForMaxRadix","limitBeforeMul","input","startIndex","delimiters","chars","charAtIndex","delimiter","currentOffset","nextIndex","isLimited","$delimitersList","$ignoreCase","currentIndex","strings","string","indices","thisOffset","otherOffset","match","getNextMatch","endIndex","rawValue","","isInNanos","isInMillis","normalValue","unitDiscriminator","addValuesMixedRanges","thisMillis","otherNanos","otherMillis","resultMillis","otherNanoRemainder","compareBits","","hasDays","hasHours","hasMinutes","hasSeconds","components","whole","fractional","fractionalSize","isoZeroes","fracString","nonZeroDigits","normalMillis","maxNsInUnit","valueInNs","normalNanos","isoChar","isTimeComponent","shortName","block","initializer","third","storage","base","quotient","rem","ac","bc","uradix","beforeAdding","dividend","collection","expectedSize","comparator","list","destinationOffset","rangeSize","subrange","ArrayList_init_$Init$","initialCapacity","rangeCheck","comparison","$comparator","median","leftIndex","rightIndex","leftValue","rightValue","HashMap_init_$Init$","internalMap","loadFactor","getEntry","chainOrEntry","getChainOrEntryOrNull","equality","LinkedHashMap_init_$Init$","LinkedHashSet_init_$Init$","jClass","givenSimpleName","isInstanceFunction","classifier","isMarkedNullable","jClasses","kClass","StringBuilder_init_$Init$","content","nextPattern","$match","$range","$nextPattern","$input","n1","n2","thisChar","otherChar","bytes","throwOnMalformed","byteIndex","stringBuilder","byte","high","low","byte1","byte2","byte3","byte4","qualifier","shortInfo","hasSeen","stackStart","dropCommonFrames","commonFrames","lastBreak","preLastBreak","messageLines","suppressed","suppressedIndent","sourceUnit","targetUnit","sourceCompareTarget","handler","interfaces","maxSize","masks","currentSize","imask","iid","iidImask","activeBit","intArray","numberIndex","numberWithSettledBit","initValue","$array","ia","descriptor","obj1","obj2","constructorFunction","proto","this_","srcLen","dstLen","newSize","defaultValue","thisNeg","otherNeg","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","numBits","radixLong","digitsPerTime","radixToPower","remDiv","digits","twoPwr32","associatedObjectKey","associatedObjects","suspendArity","kind","ctor","metadataConstructor","iface","possibleActiveBit","arity","jsClass","klassMetadata","fromIndex","toIndex","base64","fromBase64","resultLength","shift","sixBit","needle","middle","toBase64","releaseIntercepted","intercepted","resultContinuation","completion","$receiver","IllegalArgumentException_init_$Init$","RuntimeException_init_$Init$","Exception_init_$Init$","NoSuchElementException_init_$Init$","UnsupportedOperationException_init_$Init$","NullPointerException_init_$Init$","NoWhenBranchMatchedException_init_$Init$","ClassCastException_init_$Init$","otherIterator","ourValue","oldCapacity","internalLastIndex","internalIndex","decrementedInternalIndex","decrementedHead","tail","copyCollectionElements","oldElement","reference","dest","nextNotReady","newLeft","containsAll","rangeStart","rangeEnd","strictIso","infinityString","hasSign","prevUnit","component","dotIndex","afterFirst","allowSpaces","unitName","cont","modified","$elements","iter","insertionRangeCheck","value1","value2","computeNext","chainSize","lastEntry","chain","_head","_tail","classifierName","nullable","$arity","toInsert","newLength","stringCsq","$startIndex","lastStart","advanceToNextCharacter","approx","res","approxDouble","approx2","log2","approxRes","approxRem","bitCount","currentResult","currentException","outcome","annotationClass","size_local","ArrayDeque_init_$Init$","original","HashSet_init_$Init$","IllegalStateException_init_$Init$","IndexOutOfBoundsException_init_$Init$","reverseIndex","pair","getter","setter","paramCount","superType","isPositive","Sequence$iterator$ref$lambda","Iterable$iterator$ref$lambda","throwOnInvalidSequence","charIndex","codePoint","lastTwoBits","threshold","oldChar","newChar","$delimiters","missingDelimiterValue","newIndent","minCommonIndent","lastIndex","marginPrefix","firstNonWhitespaceIndex","startFound","deserializer","previousValue","$this$buildSerialDescriptor","baseClass","klassName","subClassName","missingFields","serialName","typeArguments","failOnMissingTypeArgSerializer","serializers","elementClassifierIfArray","keySerializer","valueSerializer","aSerializer","bSerializer","cSerializer","elementSerializer","rootClass","isNullable","$typeArguments","clazz","cachedResult","types","cachedSerializer","contextualSerializer","shouldBeNullable","$types","typeParameters","sdBuilder","builderAction","","elementsCount","elementDesc","keyDesc","valueDesc","primitive","elementDescriptor","keyDescriptor","valueDescriptor","eSerializer","kSerializer","vSerializer","primitiveSerializer","readIfAbsent","prepareHighMarksArray","slotsCount","elementsInLastSlot","highMarks","generatedSerializer","$primitiveSerializer","serializer","$serialName","objectInstance","","typeParams","elementDescriptors","accumulator","namesHash","kindHash","bufferWithData","tagBlock","tag","$keySerializer","$valueSerializer","$this$buildClassSerialDescriptor","class2ContextualFactory","polyBase2Serializers","polyBase2DefaultSerializerProvider","polyBase2NamedSerializers","polyBase2DefaultDeserializerProvider","provider","concreteClass","assocObject","$factory","another","elementName","annotations","isOptional","composite","decodeSequentially","compositeDecoder","eClass","checkIndex","vIndex","readSize","requiredCapacity","markHigh","slot","offsetInSlot","nextUnmarkedHighIndex","slotOffset","slotMarks","indexInSlot","buildIndices","annotation","nestedName","parentName","childName","inlineDescriptor","currentTag","$deserializer","$previousValue","decodeStructure","typeArgumentsSerializers","serializedClassName","registered","collector","kclass","serial","actualClass","actualSerializer","defaultSerializerProvider","defaultDeserializerProvider","forClass","allowOverwrite","concreteSerializer","answer","baseClassSerializers","previousSerializer","names","previousByName","simpleName","seen","goldenMask","missingFieldsBits","configuration","serializersModule","encodeDefaults","ignoreUnknownKeys","isLenient","allowStructuredMapKeys","prettyPrint","explicitNulls","prettyPrintIndent","coerceInputValues","useArrayPolymorphism","classDiscriminator","allowSpecialFloatingPointValues","useAlternativeNames","namingStrategy","body","isString","coerceToInlineType","deferred","","$deferred","JsonElementMarker$readIfAbsent$ref","JsonElementMarker$readIfAbsent$ref$lambda","suffix","json","$descriptor","strategy","$json","$this_getJsonNameIndex","$name","$this_buildDeserializationNamesMap","resize","readArray","lastToken","readValue","readDeepRecursive","lexer","discriminator","jsonTree","discriminatorToSkip","coerceInputValue","enumIndex","handleUnknown","unknownKey","decodeStringKey","discriminatorHolder","lastPos","c4","currentObject","unparsedPrimitive","absenceIsNull","polyDiscriminator","polyDescriptor","desc","keyKind","appendEscape","lastPosition","appendEsc","startPosition","currentPosition","currentChar","decodedString","takePeeked","appendHex","startPos","fromHexChar","character","consumeBoolean","consumeBooleanLiteral","literalSuffix","expected","actual","initC2ESC","esc","initC2TC","cl","initEscape","initCharToToken","typeParamsSerializers","sd","token","readObject","checkLeadingComma","newMode","skipLeftoverElements","isMapKey","decodeObjectIndex","hasComma","isUnknown","decodeMapIndex","decodingKey","decodeListIndex","currentElement","baseName","deserializationNamesMap","fallbackName","cpos","expectedToken","doConsume","usedAppend","wasUnquotedString","eof","allowLenientStrings","tokenStack","processed","lastIndexOf","hint","hintMessage","hasQuotation","hasChars","tc","closingQuote","keyToMatch","positionSnapshot","onCancelling","invokeImmediately","idempotent","parentContext","initParentJob","active","uCont","handle","delegate","isReusable","callCancelHandler","installParentHandle","releaseClaimedReusableContinuation","cancellationCause","multipleHandlersError","dispatchResume","tryResume","undispatched","dispatcher","eventLoop","resumedState","proposedUpdate","resumeMode","onCancellation","resumeImpl","resumeImpl$default","tryResumeImpl","alreadyResumedError","detachChildIfNonResuable","cancelHandler","idempotentResume","cancelCause","handled","continuation","originalException","thrownException","unconfined","isActive","","","allocateList","finalizeFinishingState","wasCancelling","proposedException","exceptions","finalCause","getFinalRootCause","addSuppressedExceptions","rootCause","seenExceptions","unwrappedCause","unwrapped","finalException","finalState","completeStateFinalization","notifyCancelling","cancelParent","isCancellation","startInternal","addLastAtomic","promoteEmptyToNodeList","promoteSingleToNodeList","createCauseException","getOrPromoteCancellingList","tryMakeCancelling","cancelling","tryMakeCompleting","tryMakeCompletingSlowPath","finishing","notifyRootCause","firstChild","tryFinalizeSimpleState","tryWaitForChild","stateString","isCompleting","job","childJob","handlesException","parentJob","hasNextResult","enqueueReceive","receive","removeReceiveOnCancel","channel","onUndeliveredElement","helpCloseAndGetSendException","closed","helpClose","closedList","","countQueueSize","closeCause","enqueueElement","newBuffer","onBufferOverflow","propertyName","minValue","maxValue","updateValueLocked","undeliveredElementException","","","","","tryEmitLocked","tryEmitNoCollectorsLocked","","dropOldestLocked","newHead","correctCollectorIndexesOnDropOldest","enqueueLocked","curSize","curBuffer","growBuffer","updateBufferLocked","newReplayIndex","newMinCollectorIndex","newBufferEndIndex","newQueueEndIndex","cleanupTailLocked","tryTakeValue","resumes","oldIndex","getPeekedValueLockedAt","resume","tryPeekLocked","findSlotsToResumeLocked","resumesIn","resumeCount","flow","replay","bufferCapacity","currentContext","collectElement","collectJob","emissionParentJob","holder","$element","$context","symbol","fatalCompletion","combined","timeMillis","collectContext","trySuspend","takenState","cancelLater","dispatched","caller","makeCancelHandler","actualCompletion","task","queue","eh","continueCompleting","lastChild","waitChild","$this$sequence","makeNode","joinInternal","joinSuspend","cancellable","cancelMakeCompleting","makeCancelling","causeExceptionCache","causeException","awaitSuspend","main","immediate","yieldContext","hasNextSuspend","otherOp","send","wasClosed","closedForSend","closeAdded","invokeOnCloseHandler","updateBufferSize","resumed","replacement","sendResult","cancelEmitter","emitter","awaitValue","emitted","emitSuspend","newBufferSize0","maxResumeCount","curEmitterIndex","newBufferSize1","subscriptionCount","curSlots","slots","taskContext","fatalException","finallyException","$continuation","prev","$cancellable","addedContext","oldContext","coroutine","extraBufferCapacity","bufferCapacity0","client","userConfig","manageEngine","$this$intercept","engineFactory","$engine","$previousConfigBlock","$configure","$plugin","pluginData","requestData","responseData","response","responseBody","$delegate","$this$writer","callContext","$client","$response","","executeWithinCallContext","checkExtensions","requestedExtension","$requestData","$this$async","unsafeRequestHeaders","callJob","cleanupHandler","$callJob","$cleanupHandler","engineName","requestHeaders","$requestHeaders","$content","$this$buildHeaders","observableContentPhase","BodyProgress$handle$slambda","observableByteChannel","cachedResponseText","addDefaultResponseValidation$lambda$slambda","$this$HttpResponseValidator","$contentType","$body","$this_intercept","defaultTransformers$slambda","$responseJobHolder","container","validateResponse","processException","responseValidators","callExceptionHandlers","expectSuccess","$builder","plugin","wrapContent","requestContentType","contentType","charset","charsets","charsetQuality","sendCharset","responseCharsetFallback","withQuality","withoutQuality","quality","truncatedQuality","allowHttpsDowngrade","$scope","checkHttpMethod","requestJob","clientEngineJob","$requestJob","$handler","nextSender","maxSendCount","requestTimeoutMillis","connectTimeoutMillis","socketTimeoutMillis","checkTimeoutValue","$request","$executionContext","$killer","hasNotNullTimeouts","timeoutMillis","method","executionContext","statusCode","requestTime","developmentMode","fallbackCharset","expectedType","checkCapabilities","HttpStatement$execute$slambda","contentLength","$contentLength","$listener","createWebSocket","urlString_capturingHack","ws_capturingHack","headers_capturingHack","executeWebSocketRequest","$headers_capturingHack","eventListener","$this_buildHeaders","$eventListener","clientConfig","$jsHeaders","$clientConfig","$bodyBytes","$this$buildObject","stream","$stream","chunk","promise","$controller","$responseData","$this_writer","coroutineContext","websocket","installedFeatures","configure","previousConfigBlock","exceptionResponseText","BeforeReceive","actualCharset","requestBuilder","killer","savedCall","rawResponse","status","session","bodyBytes","frameData","definition","spaceToPlus","$tmp0_apply","$spaceToPlus","encodeFull","$encodeFull","plusIsSpace","encodeSlash","symbolSize","release","prefixEnd","digit1","digit2","contentSubtype","existingContent","slashesCount","slashIndex","out","escapeValue","parametersOnly","items","valueEnd","paramEnd","$parameters","headerName","headerValue","header","major","minor","decode","nameIndex","equalIndex","spaceNameIndex","spaceEndIndex","spaceEqualIndex","spaceValueIndex","spaceIndex","applyOrigin","protocol","host","port","user","password","pathSegments","fragment","trailingQuery","encodedPath","encodedUser","encodedQueryParameters","schemeLength","incorrectSchemePosition","scheme","slashCount","nextSlash","passwordIndex","pathEnd","rawPath","basePath","rawChunks","relativePath","fragmentStart","colonIndex","defaultPort","encodedPassword","specifiedPort","pathStartIndex","pathEndIndex","queryStart","queryEnd","pathStart","usernameStart","usernameEnd","passwordStart","passwordEnd","encodedParametersBuilder","slash","subtype","hasParameter","parameter","flushImpl","flushWrittenBytes","ensureNotFailed","closeable","$count","autoFlush","$attachJob","$channel","$dispatcher","charactersCopied","after","before","bufferSize","decodedText","bytesWritten","memory","readRemaining","writeRemaining","availableSpace","writeSize","newWritePosition","overrunSize","allocator","typedArray","view","remaining","","readASCII","atLeastMinCharactersRequire","minShouldBeLess","copied","utf8","codepoint","readUtf8","lastByteCount","prematureEndOfStreamChars","fixGapAfterReadFallback","fixGapAfterReadFallbackUnreserved","overrun","chunk1","chunk2","new","doFill","appendView","prepareReadLoop","minSize","desiredExtraBytes","minSizeIsTooBig","afterRead","dstOffset","appendNewChunk","appendChainImpl","newTail","chainedSizeDelta","tailPosition","writePacketMerging","foreignStolen","lastSize","nextSize","maxCopySize","appendSize","prependSize","writePacketSlowPrepend","readPosition","newReadPosition","pre","bytesCount","inputLength","subView","inputRemaining","chunkSize","characters","parentPool","cp","dstLimit","lastCharIndex","resultLimit","resultPosition","index1","resultPosition1","stage1Limit","freeSpace","highValue","lowValue","_charset","i8","writeIndex","encoder","dstRemaining","numChars","dropLastChar","endIndexExclusive","array1","charactersDecoded","bytesConsumed","nativeDecoder","maxCharacters","sizeInBytes","encoding","fatal","requestedEncoding","readRemainingSuspend","","builderSize","builderHead","addBytesRead","atLeast","closeElement","addBytesWritten","ensureNotClosed","rewindRemaining","startGap","endGap","newLimit","writePosition","discardAsMuchAsPossible","skipped","currentCount","currentSkipped","ensureNext","flushChain","oldTail","writeByteFallback","appendCharFallback","packet","chunkBuffer","headRemaining","positionBefore","positionAfter","appendNext","upd","sleepCondition","bufferOffset","attachJob","convertTo","ensureListForKey","caseInsensitiveName","listForKey","newMap","interceptors","subject","phase","relation","","","createContext","debugMode","sharedInterceptorsList","cacheInterceptors","interceptorsQuantity","phases","phaseIndex","phaseContent","findPhase","phasesList","findPhaseIndex","hasPhase","notSharedInterceptorsList","setInterceptorsListFromPhase","relativeTo","loop","direct","resumeRootWith","blocks","reifiedType","kotlinType","concurrent","stringValues","proceedLoop","copyInterceptors","lastRelatedPhaseIndex","tryAddToPhaseFastPath","currentInterceptors","resetInterceptorsList","addContinuation","discardLastRootContinuation","kType","firstIndex","maxElem","controlFrame","opcode","fin","rsv1","rsv2","rsv3","frameType","disposableHandle","fileUrl","fileName","times","initialDelay","maxDelay","segments","","","isAllowed","allow","unexpectedCharacterException","uri","unexpected","getNextCharacter","hexCharToValue","internalReason","","","encoded","decoded","$decoded","$encoded","segmentBuilder","","findPortSeparator","userInfoSeparator","portSeparator","encodedHost","portString","","encodedAuthority","","makeSchemeSpecificPart","_authorityPart","_pathPart","_queryPart","_fragmentPart","","ssp","","","","","","","uriString","ssi","fsi","qsi","segment","expanded","opaquePart","encodedParameter","oldQuery","hasSchemeOrAuthority","oldLength","nextToEncode","nextAllowed","toEncode","bytesLength","convertPlus","throwOnFailure","hexValue","nextC","newDigit","part","oldPart","oldPath","secondary","namespace","","","endOfElement","writeIndent","newDepth","indentSeq","writeIndent$default","addToPending","requireCurrent","isAppend","xmlDeclMode","stringSerializer","prefixMap","filler","namespaces","","removeFirstToCurrent","ns","locationInfo","eventType","localName","namespaceUri","namespaceContext","standalone","parentNamespaceContext","namespaceDecls","namespacePrefix","writer","localname","reader","missingNamespaces","namespaceAt","prefixAt","localNameAt","finishPartialStartTag","close","endOfTag","down","highSurogate","lowSurogate","writeEscapedText","triggerStartDocument","repeats","pending","ev","ensureNamespaceIfRepairing","rawWriteAttribute","$this_appendXmlCodepoint","isRepairNamespaces","xmlVersion","versionString","namespaceIndicesAt","startIdx","endIdx","arrayUseAtDepth","prefixArrayPos","pairPos","nsArrayPos","getPrefix","getNamespace","indentSequence","nodeList","namespaceURI","localPart","doc","frag","wrapperElement","$wrapperElement","startLocation","initialDepth","wrappedString","lazyMessage","prefixes","extendNamespace","nscount","wrapperNamespaceContext","getDelegate","actualInput","nodeType","attr","nsUri","rootElementName","$text","ce","textElems","qualifiedName","publicId","systemId","attrNs","textEvent","originalNSContext","events","decl","verString","effectiveEncoding","appliedPrefix","setElementStack","esp","hlp","actualPrefix","lastWasHyphen","existingNamespaceForPrefix","enlargeNamespaceBuffer","nextPair","setPrefix","setNamespace","prefixStr","namespaceUriStr","commentPos","orig","namespaceForPrefix","useNameInfo","useOutputKind","overriddenSerializer","tagName","parentNamespace","nextNulledItemsIdx","childDesc","defaultOrList","$inputType","","xmlDescriptor","polyInfo","attrIndex","stringValue","typeDiscriminatorName","polyMap","nameMap","childDescriptor","inputKind","candidates","repairNamespaces","indentString","autoPolymorphic","unknownChildHandler","policy","nilAttribute","xmlName","annotatedName","pedantic","encodeDefault","nameToIdx","$parentDescriptor","eq","","xmlCodecBase","$xmlCodecBase","serializerParent","tagParent","$serializerParent","","xmlPolyChildren","polyAttrName","qName","polyChild","childInfo","childSerializerParent","canBeAttribute","overrideOutputKind","","","$tagParent","keyNameInfo","parentInfo","keyTagParent","valueNameInfo","valueTagParent","","childrenName","getElementDescriptors","initialChildReorderInfo","descriptors","createElementDescriptor","serialDescriptor","originalOrderNodes","allNodes","members","finalToDeclMap","declToOrderMap","nextElemIdx","minIdx","nextIdx","successor","preserveSpace","requestedOutputKind","valueChildIndex","valueChild","invalidIdx","useName","isDocumentRoot","outputKind","elementUseNameInfo","","$canBeAttribute","childUseNameInfo","useParentInfo","effectiveUseNameInfo","xmlCData","codecBase","polyChildSpecification","pkgPos","prefPos","typeNameBase","currentPkg","parentTag","eqPos","typename","elementTypeDescriptor","elementUseOutputKind","elementIdx","childCount","nodes","unseenSuccessors","$parentNamespace","realSerialName","readCompactFragmentContent","rootName","xmlDecoderBase","defaultOverEmpty","defaultString","descOutputKind","deser","attrName","childXmlDescriptor","effectiveDeserializer","inputType","isNameOfAttr","normalizedName","containingNamespaceUri","emptyNsPrefix","valChildDesc","valueKind","lastAttrIndex","peek","fixedIndex","rawIndex","polyMode","sdec","typeQName","childSerialName","childQnames","isMixed","typeTag","parentType","useAnnotations","isValue","parentChildDesc","elementKind","typeDescriptor","serialKind","typeNameInfo","parentSerialKind","parentDescriptor","orderConstraints","orderNodes","xmlBefore","xmlAfter","befores","afters","isListEluded","mapParent","keyUseName","pseudoKeyParent","keyEffectiveOutputKind","prefixedName","cIndex","elementSerialDescriptor","effectiveSerializerParent","effectiveTagParent","overridenSerializer","fallback","typeName","defaultDecoder","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"worldwind-tutorials.js","mappings":"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","sources":["webpack://worldwind-tutorials/webpack/universalModuleDefinition","webpack://worldwind-tutorials/../../node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Clock.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Preconditions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/internal/dateCalculations.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/InstantSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/serializers/TimeZoneSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/dynamic.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Standard.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/long.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/FloorDivMod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/js/src/internal/mathJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/time/Duration.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8ebe0a8279b7bad8/core/common/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/build/generated/moko/jsMain/src/earth/worldwind/tutorials/MR.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/AbstractTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/BasicTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/CameraViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/EllipsesTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Angle.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LabelsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LookAtViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/MGRSGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PathsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PlacemarksTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PolygonsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShowTessellationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SightlineTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SurfaceImageTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmtsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/jsMain/kotlin/earth/worldwind/tutorials/Main.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/math.kt","webpack://worldwind-tutorials/../../../../worldwind/build/generated/moko/jsMain/src/earth/worldwind/MR.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/GoToAnimator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObjectList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Maps.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/WorldWind.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/BasicDrawableTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/builtins/Library.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Collections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawShapeState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableGroup.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLambda.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLines.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableQueue.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableScreenTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceColor.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableTessellation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/BasicFrameController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/Frame.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/AltitudeMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingSphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Camera.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Ellipsoid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Frustum.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Line.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Location.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/LookAt.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix3.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_ArraysJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix4.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Offset.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/OffsetMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Plane.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Position.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Range.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Sector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec2.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec3.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Viewport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/Hemisphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/PolarCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/GestureState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/Globe.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/ElevationModel.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractTiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Sets.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/BasicElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/Wgs84Projection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTerrain.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/comparisons/Comparisons.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTessellator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/TerrainTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/BackgroundLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/LayerList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/RenderableLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/ShowTessellationLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AbstractAtmosphereProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AtmosphereLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableGroundAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableSkyAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/GroundProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/SkyProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractUTMGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleRenderingParams.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridElement.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/MGRSGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/MGRSGridZone.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/string.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/MGRSOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMMetricScaleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMSquareGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMSquareSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/UTMSquareZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/AbstractMercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/google/GoogleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSet.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsLayerFactory.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/regex/RegexExtensions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAttribution.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAuthorityUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapability.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactInformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactPersonPrimary.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDcpType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsException.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsGeographicBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsIdentifier.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsInfoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLogoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsMetadataUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequest.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequestOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsService.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsConstraint.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsContactInfo.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDcp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDescription.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttpMethod.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperationsMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsPhone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceContact.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceIdentification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceProvider.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsContents.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLegendURL.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsResourceUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTheme.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixLimits.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSetLink.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractSurfaceRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Color.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/FontWeight.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Framebuffer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/RenderContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Texture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/AbstractBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/FloatBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/IntBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/ShortBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageOptions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ResamplingMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/WrapMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/AbstractShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/BasicShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SightlineProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SurfaceTextureProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/AbstractShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Ellipse.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Label.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OmnidirectionalSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OrientationMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Path.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PathType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Placemark.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PlacemarkAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Polygon.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/ShapeAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/SurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TextAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/Font.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbsentResourceList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/BasicPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Level.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSetConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LruMemoryCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/MessageTable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/SunPosition.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Tile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/ExponentFormatter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/Specification.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Lazy.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/StringFormat.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLU.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLUtessellatorCallbackAdapter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/error/Error.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/ActiveRegion.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/CachedVertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Dict.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/DictNode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUface.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUhalfEdge.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUmesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUtessellatorImpl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUvertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Geom.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Mesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Normal.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQ.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQHeap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQSort.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Render.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Sweep.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessMono.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/http/DefaultHttpClient.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/kgl/Kgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/math/WWMath.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/BasicWorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/KeyboardControls.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindow.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/ClickRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/DragRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/GestureRecognizer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/MutableCollections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PanRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PinchRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/RotationRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/SelectDragDetector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TapRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TiltRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TouchWrapper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/ElevationSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/coverage/TiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/AbstractTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/TiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/mercator/MercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/RenderResourceCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/TextRenderer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/CanvasTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/Logger.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/SynchronizedPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/kgl/WebKgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/locale/Locale.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/kotlinHacks.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/format/ConvertToInstant.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/SelectDragCallback.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/js/math.polyfills.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/ArrayBuffer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/js.arrays/fill.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_OneToManyTitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_TitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/CharCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Iterables.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/kotlin/ExceptionsH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/AbstractSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/ArrayDeque.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/IndexedValue.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/Iterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/PrimitiveIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/SequenceBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/ContinuationInterceptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/CoroutineContextImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/intrinsics/Intrinsics.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/internal/progressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/PrimitiveRanges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/ProgressionIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/Progressions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/ranges/Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Appendable.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/Indent.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/StringNumberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringsCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/text/StringBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/DeepRecursive.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Result.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/Tuples.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UByte.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UInt.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UIntRange.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UProgressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/ULong.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UnsignedUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UShort.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/unsigned/src/kotlin/UStrings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/core/builtins/native/kotlin/Number.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/core/builtins/src/kotlin/Unit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArraySorting.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/EqualityComparator.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalHashCodeMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/coroutines/cancellation/CancellationException.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/numbers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KClassImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/primitives.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/reflection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/sequence.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/CharacterCodingExceptionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/StringBuilderJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_WhitespaceChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/numberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_DigitChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/regex.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_ComparisonsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/text/utf8Encoding.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/throwableExtensions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/org.w3c/EventListener.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/builtins/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/builtins/Enum.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/BitMask.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/noPackageHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/bitUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/runtimeForStdLib.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/charSequence.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/collectionsHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/compareTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/coreRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/hacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/longjs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/numberConversion.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/rangeTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/reflectRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/typeCheckUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_CharCategories.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_LetterChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_OtherLowercaseChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines_13/CoroutineImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines_13/IntrinsicsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/exceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/numberConversions_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/coroutines/Continuation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/regexp.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/kotlin/MathH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/reflection_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Maps.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/collections/MapWithDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_Sets.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/generated/_CollectionsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/JsClass.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/ContextAware.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializationExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializersCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/BuiltInSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NothingSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/src/kotlin/util/HashCode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModuleBuilders.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/AssociatedObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/commonMainSources/libraries/stdlib/common/src/generated/_UArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonConfiguration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/AbstractJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonPath.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonTreeReader.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/SchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/StringJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsMain/src/kotlinx/serialization/json/JsonSchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsMain/src/kotlinx/serialization/json/internal/createMapForCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Job.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/AbstractCoroutine.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Builders.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CompletionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuationImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletableDeferred.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionState.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineName.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineScope.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineStart.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/EventLoop.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Exceptions.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/JobSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/Concurrent.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/LinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/MainCoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Supervisor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Unconfined.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/AbstractChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/InlineList.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ArrayChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferOverflow.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/SystemProps.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/SystemProps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channels.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ConflatedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/LinkedListChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/RendezvousChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/SharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/AbstractSharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/SafeCollector.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/operators/Share.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/ArrayQueue.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/ThreadContext.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/OnUndeliveredElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Scopes.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Symbol.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Cancellable.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Undispatched.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Window.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Debug.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Dispatchers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/EventLoop.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/SchedulerTask.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/flow/internal/SafeCollector.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/StackTraceRecovery.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/ThreadLocal.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/ProbesSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionHandler.common.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/runtime/coroutineInternalJS.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Promise.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/teamcity-agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Delay.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/content/ObservableContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineCapability.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/BodyProgress.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultResponseValidation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultTransform.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpClientPlugin.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpPlainText.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRequestLifecycle.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpSend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/observer/DelegatedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/RequestBody.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ByteChannelUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ClientEvents.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/DefaultTransformJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/websocket/JsWebSocketSession.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/utils/ExceptionUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-events/common/src/io/ktor/events/Events.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Query.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/UrlDecodedParametersBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Url.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteReadChannelJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/CloseElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/BufferUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferAppend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/EncodeResult.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/Memory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/ByteArrayPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ExceptionUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Win1252Table.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/collections/CopyOnWriteHashMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/PipelineContext.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/StackTraceRecoverJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/reflect/Type.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/KtorSimpleLoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/reflect/TypeInfoJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/CloseReason.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameCommon.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameType.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/js/src/io/ktor/websocket/FrameJs.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/FileResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ImageResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/internal/ioUtil.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/Uri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/NotCachedHolder.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/PathSegments.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriCodec.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriSyntaxException.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/constants.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/AbstractPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/Part.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/PathPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/AbstractHierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/HierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/OpaqueUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/StringUri.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/NamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/commondomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/EventType.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/Namespace.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/SimpleNamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XMLConstants.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReaderBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlDelegatingReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlEvent.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/_IOException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlUtil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/KtXmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/XmlVersion.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/NamespaceHolder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/PlatformXmlWriterBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NamedNodeMap.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlReaderExt.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/jsMultiplatform.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/JSCompactFragment.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/XMLFragmentStreamReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/impl/jsDomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReaderNS.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/InputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/OutputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/PolyBaseInfo.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XML.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/defaultPlatformModule.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XMLDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlCodecBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlExceptions.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlSerializationPolicy.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/DummyDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/XmlQNameSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderNode.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderConstraint.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/compatJs.kt","webpack://worldwind-tutorials/webpack/bootstrap","webpack://worldwind-tutorials/webpack/runtime/define property getters","webpack://worldwind-tutorials/webpack/runtime/global","webpack://worldwind-tutorials/webpack/runtime/hasOwnProperty shorthand","webpack://worldwind-tutorials/webpack/runtime/make namespace object","webpack://worldwind-tutorials/webpack/runtime/publicPath","webpack://worldwind-tutorials/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"worldwind-tutorials\"] = factory();\n\telse\n\t\troot[\"worldwind-tutorials\"] = factory();\n})(this, () => {\nreturn ","//! @version @js-joda/core - 3.2.0\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction createErrorType(name, init, superErrorClass) {\n if (superErrorClass === void 0) {\n superErrorClass = Error;\n }\n\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = new Error().stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.message = message;\n init && init.apply(this, arguments);\n\n this.toString = function () {\n return this.name + \": \" + this.message;\n };\n }\n\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause) {\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text, index, cause) {\n if (text === void 0) {\n text = '';\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n msg += ': ' + text + ', at index: ' + index;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n\n this.parsedString = function () {\n return text;\n };\n\n this.errorIndex = function () {\n return index;\n };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n if (!assertion) {\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\nfunction requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(parameterName + ' must not be null');\n }\n\n return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(parameterName + ' must be an instance of ' + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ', but is ' + value.constructor.name : ''));\n }\n\n return value;\n}\nfunction abstractMethodFail(methodName) {\n throw new TypeError('abstract method \"' + methodName + '\" is not implemented');\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n requireNonNull: requireNonNull,\n requireInstance: requireInstance,\n abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n function MathUtil() {}\n\n MathUtil.intDiv = function intDiv(x, y) {\n var r = x / y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.intMod = function intMod(x, y) {\n var r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.roundDown = function roundDown(r) {\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n };\n\n MathUtil.floorDiv = function floorDiv(x, y) {\n var r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.floorMod = function floorMod(x, y) {\n var r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n };\n\n MathUtil.safeAdd = function safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n var r = MathUtil.safeToInt(x + y);\n\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n\n return r;\n };\n\n MathUtil.safeSubtract = function safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n return MathUtil.safeToInt(x - y);\n };\n\n MathUtil.safeMultiply = function safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n\n if (x === 0 || y === 0) {\n return 0;\n }\n\n var r = MathUtil.safeToInt(x * y);\n\n if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n throw new ArithmeticException('Multiplication overflows: ' + x + ' * ' + y);\n }\n\n return r;\n };\n\n MathUtil.parseInt = function (_parseInt) {\n function parseInt(_x) {\n return _parseInt.apply(this, arguments);\n }\n\n parseInt.toString = function () {\n return _parseInt.toString();\n };\n\n return parseInt;\n }(function (value) {\n var r = parseInt(value);\n return MathUtil.safeToInt(r);\n });\n\n MathUtil.safeToInt = function safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n };\n\n MathUtil.verifyInt = function verifyInt(value) {\n if (value == null) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n }\n\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n\n if (value % 1 !== 0) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n }\n\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException('Calculation overflows an int: ' + value);\n }\n };\n\n MathUtil.safeZero = function safeZero(value) {\n return value === 0 ? 0 : +value;\n };\n\n MathUtil.compareNumbers = function compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n };\n\n MathUtil.smi = function smi(int) {\n return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n };\n\n MathUtil.hash = function hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n\n var result = number;\n\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n\n return MathUtil.smi(result);\n };\n\n MathUtil.hashCode = function hashCode() {\n var result = 17;\n\n for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n numbers[_key] = arguments[_key];\n }\n\n for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n var n = _numbers[_i];\n result = (result << 5) - result + MathUtil.hash(n);\n }\n\n return MathUtil.hash(result);\n };\n\n return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar Enum = function () {\n function Enum(name) {\n this._name = name;\n }\n\n var _proto = Enum.prototype;\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n function TemporalAmount() {}\n\n var _proto = TemporalAmount.prototype;\n\n _proto.get = function get(unit) {\n abstractMethodFail('get');\n };\n\n _proto.units = function units() {\n abstractMethodFail('units');\n };\n\n _proto.addTo = function addTo(temporal) {\n abstractMethodFail('addTo');\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n };\n\n return TemporalAmount;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n function TemporalUnit() {}\n\n var _proto = TemporalUnit.prototype;\n\n _proto.duration = function duration() {\n abstractMethodFail('duration');\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n };\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.addTo = function addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n };\n\n _proto.between = function between(temporal1, temporal2) {\n abstractMethodFail('between');\n };\n\n return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n _inheritsLoose(Duration, _TemporalAmount);\n\n function Duration(seconds, nanos) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanos);\n return _this;\n }\n\n Duration.ofDays = function ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n Duration.ofHours = function ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n Duration.ofMinutes = function ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n };\n\n Duration.ofMillis = function ofMillis(millis) {\n var secs = MathUtil.intDiv(millis, 1000);\n var mos = MathUtil.intMod(millis, 1000);\n\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n\n return Duration._create(secs, mos * 1000000);\n };\n\n Duration.ofNanos = function ofNanos(nanos) {\n var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n\n return this._create(secs, nos);\n };\n\n Duration.of = function of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n };\n\n Duration.from = function from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n var duration = Duration.ZERO;\n amount.units().forEach(function (unit) {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n };\n\n Duration.between = function between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n var nanos = 0;\n\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {}\n }\n\n return this.ofSeconds(secs, nanos);\n };\n\n Duration.parse = function parse(text) {\n requireNonNull(text, 'text');\n var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n var matches = PATTERN.exec(text);\n\n if (matches !== null) {\n if ('T' === matches[3] === false) {\n var negate = '-' === matches[1];\n var dayMatch = matches[2];\n var hourMatch = matches[4];\n var minuteMatch = matches[5];\n var secondMatch = matches[6];\n var fractionMatch = matches[7];\n\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n\n var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n\n var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n\n var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n\n var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n\n var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n };\n\n Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n if (parsed == null) {\n return 0;\n }\n\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: ' + errorText, text, 0, ex);\n }\n };\n\n Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n\n parsed = (parsed + '000000000').substring(0, 9);\n return parseFloat(parsed) * negate;\n };\n\n Duration._create = function _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n };\n\n Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n\n return Duration.ofSeconds(seconds, nanos);\n };\n\n Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n\n return new Duration(seconds, nanoAdjustment);\n };\n\n var _proto = Duration.prototype;\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n };\n\n _proto.units = function units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n };\n\n _proto.isZero = function isZero() {\n return this._seconds === 0 && this._nanos === 0;\n };\n\n _proto.isNegative = function isNegative() {\n return this._seconds < 0;\n };\n\n _proto.seconds = function seconds() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withSeconds = function withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n };\n\n _proto.withNanos = function withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n };\n\n _proto.plusDuration = function plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n };\n\n _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n\n if (amountToAdd === 0) {\n return this;\n }\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n }\n\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n\n var duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n };\n\n _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n };\n\n _proto.minus = function minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n };\n\n _proto.minusDuration = function minusDuration(duration) {\n requireNonNull(duration, 'duration');\n var secsToSubtract = duration.seconds();\n var nanosToSubtract = duration.nano();\n\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n\n return this.plus(-secsToSubtract, -nanosToSubtract);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n\n if (multiplicand === 1) {\n return this;\n }\n\n var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.dividedBy = function dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n\n if (divisor === 1) {\n return this;\n }\n\n var secs = MathUtil.intDiv(this._seconds, divisor);\n var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.abs = function abs() {\n return this.isNegative() ? this.negated() : this;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.toDays = function toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n };\n\n _proto.toHours = function toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n };\n\n _proto.toMinutes = function toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n };\n\n _proto.toMillis = function toMillis() {\n var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n };\n\n _proto.toNanos = function toNanos() {\n var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n };\n\n _proto.compareTo = function compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherDuration.nano();\n };\n\n _proto.equals = function equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n\n var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n var rval = 'PT';\n\n if (hours !== 0) {\n rval += hours + 'H';\n }\n\n if (minutes !== 0) {\n rval += minutes + 'M';\n }\n\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n\n if (this._nanos > 0) {\n rval += '.';\n var nanoString;\n\n if (secs < 0) {\n nanoString = '' + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n } else {\n nanoString = '' + (LocalTime.NANOS_PER_SECOND + this._nanos);\n }\n\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n\n rval += 'S';\n return rval;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Duration;\n}(TemporalAmount);\nfunction _init() {\n Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\nvar YearConstants = function YearConstants() {};\nfunction _init$1() {\n YearConstants.MIN_VALUE = -999999;\n YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n _inheritsLoose(ChronoUnit, _TemporalUnit);\n\n function ChronoUnit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto = ChronoUnit.prototype;\n\n _proto.duration = function duration() {\n return this._duration;\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n };\n\n _proto.isDateBased = function isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n };\n\n _proto.addTo = function addTo(temporal, amount) {\n return temporal.plus(amount, this);\n };\n\n _proto.between = function between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n return this.duration().compareTo(other.duration());\n };\n\n return ChronoUnit;\n}(TemporalUnit);\nfunction _init$2() {\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar TemporalField = function () {\n function TemporalField() {}\n\n var _proto = TemporalField.prototype;\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.baseUnit = function baseUnit() {\n abstractMethodFail('baseUnit');\n };\n\n _proto.rangeUnit = function rangeUnit() {\n abstractMethodFail('rangeUnit');\n };\n\n _proto.range = function range() {\n abstractMethodFail('range');\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n };\n\n _proto.getFrom = function getFrom(temporal) {\n abstractMethodFail('getFrom');\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.displayName = function displayName() {\n abstractMethodFail('displayName');\n };\n\n _proto.equals = function equals(other) {\n abstractMethodFail('equals');\n };\n\n _proto.name = function name() {\n abstractMethodFail('name');\n };\n\n return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), 'Smallest minimum value \\'' + minSmallest + '\\' must be less than largest minimum value \\'' + minLargest + '\\'', IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), 'Smallest maximum value \\'' + maxSmallest + '\\' must be less than largest maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n assert(!(minLargest > maxLargest), 'Minimum value \\'' + minLargest + '\\' must be less than maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n var _proto = ValueRange.prototype;\n\n _proto.isFixed = function isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n };\n\n _proto.minimum = function minimum() {\n return this._minSmallest;\n };\n\n _proto.largestMinimum = function largestMinimum() {\n return this._minLargest;\n };\n\n _proto.maximum = function maximum() {\n return this._maxLargest;\n };\n\n _proto.smallestMaximum = function smallestMaximum() {\n return this._maxSmallest;\n };\n\n _proto.isValidValue = function isValidValue(value) {\n return this.minimum() <= value && value <= this.maximum();\n };\n\n _proto.checkValidValue = function checkValidValue(value, field) {\n var msg;\n\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = 'Invalid value for ' + field + ' (valid values ' + this.toString() + '): ' + value;\n } else {\n msg = 'Invalid value (valid values ' + this.toString() + '): ' + value;\n }\n\n return assert(false, msg, DateTimeException);\n }\n\n return value;\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException('Invalid int value for ' + field + ': ' + value);\n }\n\n return value;\n };\n\n _proto.isValidIntValue = function isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n };\n\n _proto.isIntValue = function isIntValue() {\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n };\n\n _proto.toString = function toString() {\n var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? '/' + this.largestMinimum() : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? '/' + this.maximum() : '');\n return str;\n };\n\n ValueRange.of = function of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, 'Invalid number of arguments ' + arguments.length, IllegalArgumentException);\n }\n };\n\n return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n _inheritsLoose(ChronoField, _TemporalField);\n\n ChronoField.byName = function byName(fieldName) {\n for (var prop in ChronoField) {\n if (ChronoField[prop]) {\n if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n };\n\n function ChronoField(name, baseUnit, rangeUnit, range) {\n var _this;\n\n _this = _TemporalField.call(this) || this;\n _this._name = name;\n _this._baseUnit = baseUnit;\n _this._rangeUnit = rangeUnit;\n _this._range = range;\n return _this;\n }\n\n var _proto = ChronoField.prototype;\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.baseUnit = function baseUnit() {\n return this._baseUnit;\n };\n\n _proto.rangeUnit = function rangeUnit() {\n return this._rangeUnit;\n };\n\n _proto.range = function range() {\n return this._range;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.checkValidValue = function checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n };\n\n _proto.isDateBased = function isDateBased() {\n var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n return dateBased;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return temporal.range(this);\n };\n\n _proto.getFrom = function getFrom(temporal) {\n return temporal.getLong(this);\n };\n\n _proto.toString = function toString() {\n return this.name();\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(this);\n };\n\n return ChronoField;\n}(TemporalField);\nfunction _init$3() {\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(Math.floor(YearConstants.MIN_VALUE * 365.25), Math.floor(YearConstants.MAX_VALUE * 365.25)));\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalQueries = function () {\n function TemporalQueries() {}\n\n TemporalQueries.zoneId = function zoneId() {\n return TemporalQueries.ZONE_ID;\n };\n\n TemporalQueries.chronology = function chronology() {\n return TemporalQueries.CHRONO;\n };\n\n TemporalQueries.precision = function precision() {\n return TemporalQueries.PRECISION;\n };\n\n TemporalQueries.zone = function zone() {\n return TemporalQueries.ZONE;\n };\n\n TemporalQueries.offset = function offset() {\n return TemporalQueries.OFFSET;\n };\n\n TemporalQueries.localDate = function localDate() {\n return TemporalQueries.LOCAL_DATE;\n };\n\n TemporalQueries.localTime = function localTime() {\n return TemporalQueries.LOCAL_TIME;\n };\n\n return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n function TemporalAccessor() {}\n\n var _proto = TemporalAccessor.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n _inheritsLoose(TemporalQuery, _Enum);\n\n function TemporalQuery() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TemporalQuery.prototype;\n\n _proto.queryFrom = function queryFrom(temporal) {\n abstractMethodFail('queryFrom');\n };\n\n return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n var ExtendedTemporalQuery = function (_TemporalQuery) {\n _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n\n function ExtendedTemporalQuery() {\n return _TemporalQuery.apply(this, arguments) || this;\n }\n\n return ExtendedTemporalQuery;\n }(TemporalQuery);\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n _inheritsLoose(DayOfWeek, _TemporalAccessor);\n\n function DayOfWeek(ordinal, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._ordinal = ordinal;\n _this._name = name;\n return _this;\n }\n\n var _proto = DayOfWeek.prototype;\n\n _proto.ordinal = function ordinal() {\n return this._ordinal;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n DayOfWeek.values = function values() {\n return ENUMS.slice();\n };\n\n DayOfWeek.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < ENUMS.length; ordinal++) {\n if (ENUMS[ordinal].name() === name) {\n break;\n }\n }\n\n return DayOfWeek.of(ordinal + 1);\n };\n\n DayOfWeek.of = function of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException('Invalid value for DayOfWeek: ' + dayOfWeek);\n }\n\n return ENUMS[dayOfWeek - 1];\n };\n\n DayOfWeek.from = function from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n throw new DateTimeException('Unable to obtain DayOfWeek from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n } else {\n throw ex;\n }\n }\n };\n\n _proto.value = function value() {\n return this._ordinal + 1;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(days) {\n var amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n };\n\n _proto.minus = function minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n assert(_query != null, 'query', NullPointerException);\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$4() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n return DayOfWeek.from(temporal);\n });\n ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n _inheritsLoose(Month, _TemporalAccessor);\n\n function Month(value, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._value = MathUtil.safeToInt(value);\n _this._name = name;\n return _this;\n }\n\n var _proto = Month.prototype;\n\n _proto.value = function value() {\n return this._value;\n };\n\n _proto.ordinal = function ordinal() {\n return this._value - 1;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (null === field) {\n return false;\n }\n\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(months) {\n var amount = MathUtil.intMod(months, 12) + 12;\n var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n };\n\n _proto.minus = function minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n };\n\n _proto.length = function length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return leapYear ? 29 : 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.minLength = function minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.maxLength = function maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n var leap = leapYear ? 1 : 0;\n\n switch (this) {\n case Month.JANUARY:\n return 1;\n\n case Month.FEBRUARY:\n return 32;\n\n case Month.MARCH:\n return 60 + leap;\n\n case Month.APRIL:\n return 91 + leap;\n\n case Month.MAY:\n return 121 + leap;\n\n case Month.JUNE:\n return 152 + leap;\n\n case Month.JULY:\n return 182 + leap;\n\n case Month.AUGUST:\n return 213 + leap;\n\n case Month.SEPTEMBER:\n return 244 + leap;\n\n case Month.OCTOBER:\n return 274 + leap;\n\n case Month.NOVEMBER:\n return 305 + leap;\n\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n };\n\n _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n };\n\n _proto.query = function query(_query) {\n assert(_query != null, 'query() parameter must not be null', DateTimeException);\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n\n case Month.FEBRUARY:\n return 'FEBRUARY';\n\n case Month.MARCH:\n return 'MARCH';\n\n case Month.APRIL:\n return 'APRIL';\n\n case Month.MAY:\n return 'MAY';\n\n case Month.JUNE:\n return 'JUNE';\n\n case Month.JULY:\n return 'JULY';\n\n case Month.AUGUST:\n return 'AUGUST';\n\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n\n case Month.OCTOBER:\n return 'OCTOBER';\n\n case Month.NOVEMBER:\n return 'NOVEMBER';\n\n case Month.DECEMBER:\n return 'DECEMBER';\n\n default:\n return 'unknown Month, value: ' + this.value();\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n Month.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < MONTHS.length; ordinal++) {\n if (MONTHS[ordinal].name() === name) {\n break;\n }\n }\n\n return Month.of(ordinal + 1);\n };\n\n Month.values = function values() {\n return MONTHS.slice();\n };\n\n Month.of = function of(month) {\n if (month < 1 || month > 12) {\n assert(false, 'Invalid value for MonthOfYear: ' + month, DateTimeException);\n }\n\n return MONTHS[month - 1];\n };\n\n Month.from = function from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n\n try {\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Month from TemporalAccessor: ' + temporal + ' of type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n }\n };\n\n return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$5() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n _inheritsLoose(Period, _TemporalAmount);\n\n function Period(years, months, days) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n\n var _years = MathUtil.safeToInt(years);\n\n var _months = MathUtil.safeToInt(months);\n\n var _days = MathUtil.safeToInt(days);\n\n if (_years === 0 && _months === 0 && _days === 0) {\n if (!Period.ZERO) {\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n Period.ZERO = _assertThisInitialized(_this);\n }\n\n return Period.ZERO || _assertThisInitialized(_this);\n }\n\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n return _this;\n }\n\n Period.ofYears = function ofYears(years) {\n return Period.create(years, 0, 0);\n };\n\n Period.ofMonths = function ofMonths(months) {\n return Period.create(0, months, 0);\n };\n\n Period.ofWeeks = function ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n };\n\n Period.ofDays = function ofDays(days) {\n return Period.create(0, 0, days);\n };\n\n Period.of = function of(years, months, days) {\n return Period.create(years, months, days);\n };\n\n Period.from = function from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n\n requireNonNull(amount, 'amount');\n var years = 0;\n var months = 0;\n var days = 0;\n var units = amount.units();\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var unitAmount = amount.get(unit);\n\n if (unit === ChronoUnit.YEARS) {\n years = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.MONTHS) {\n months = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.DAYS) {\n days = MathUtil.safeToInt(unitAmount);\n } else {\n throw new DateTimeException('Unit must be Years, Months or Days, but was ' + unit);\n }\n }\n\n return Period.create(years, months, days);\n };\n\n Period.between = function between(startDate, endDate) {\n requireNonNull(startDate, 'startDate');\n requireNonNull(endDate, 'endDate');\n requireInstance(startDate, LocalDate, 'startDate');\n requireInstance(endDate, LocalDate, 'endDate');\n return startDate.until(endDate);\n };\n\n Period.parse = function parse(text) {\n requireNonNull(text, 'text');\n\n try {\n return Period._parse(text);\n } catch (ex) {\n if (ex instanceof ArithmeticException) {\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n };\n\n Period._parse = function _parse(text) {\n var matches = PATTERN.exec(text);\n\n if (matches != null) {\n var negate = '-' === matches[1] ? -1 : 1;\n var yearMatch = matches[2];\n var monthMatch = matches[3];\n var weekMatch = matches[4];\n var dayMatch = matches[5];\n\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n var years = Period._parseNumber(text, yearMatch, negate);\n\n var months = Period._parseNumber(text, monthMatch, negate);\n\n var weeks = Period._parseNumber(text, weekMatch, negate);\n\n var days = Period._parseNumber(text, dayMatch, negate);\n\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n };\n\n Period._parseNumber = function _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n\n var val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n };\n\n Period.create = function create(years, months, days) {\n return new Period(years, months, days);\n };\n\n var _proto = Period.prototype;\n\n _proto.units = function units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n };\n\n _proto.isZero = function isZero() {\n return this === Period.ZERO;\n };\n\n _proto.isNegative = function isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n };\n\n _proto.years = function years() {\n return this._years;\n };\n\n _proto.months = function months() {\n return this._months;\n };\n\n _proto.days = function days() {\n return this._days;\n };\n\n _proto.withYears = function withYears(years) {\n if (years === this._years) {\n return this;\n }\n\n return Period.create(years, this._months, this._days);\n };\n\n _proto.withMonths = function withMonths(months) {\n if (months === this._months) {\n return this;\n }\n\n return Period.create(this._years, months, this._days);\n };\n\n _proto.withDays = function withDays(days) {\n if (days === this._days) {\n return this;\n }\n\n return Period.create(this._years, this._months, days);\n };\n\n _proto.plus = function plus(amountToAdd) {\n var amount = Period.from(amountToAdd);\n return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n };\n\n _proto.minus = function minus(amountToSubtract) {\n var amount = Period.from(amountToSubtract);\n return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n\n return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.normalized = function normalized() {\n var totalMonths = this.toTotalMonths();\n var splitYears = MathUtil.intDiv(totalMonths, 12);\n var splitMonths = MathUtil.intMod(totalMonths, 12);\n\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n };\n\n _proto.toTotalMonths = function toTotalMonths() {\n return this._years * 12 + this._months;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof Period) {\n var other = obj;\n return this._years === other._years && this._months === other._months && this._days === other._days;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n };\n\n _proto.toString = function toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n var buf = 'P';\n\n if (this._years !== 0) {\n buf += '' + this._years + 'Y';\n }\n\n if (this._months !== 0) {\n buf += '' + this._months + 'M';\n }\n\n if (this._days !== 0) {\n buf += '' + this._days + 'D';\n }\n\n return buf;\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Period;\n}(TemporalAmount);\nfunction _init$6() {\n Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ParsePosition = function () {\n function ParsePosition(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n var _proto = ParsePosition.prototype;\n\n _proto.getIndex = function getIndex() {\n return this._index;\n };\n\n _proto.setIndex = function setIndex(index) {\n this._index = index;\n };\n\n _proto.getErrorIndex = function getErrorIndex() {\n return this._errorIndex;\n };\n\n _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n this._errorIndex = errorIndex;\n };\n\n return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar EnumMap = function () {\n function EnumMap() {\n this._map = {};\n }\n\n var _proto = EnumMap.prototype;\n\n _proto.putAll = function putAll(otherMap) {\n for (var key in otherMap._map) {\n this._map[key] = otherMap._map[key];\n }\n\n return this;\n };\n\n _proto.containsKey = function containsKey(key) {\n return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n };\n\n _proto.get = function get(key) {\n return this._map[key.name()];\n };\n\n _proto.put = function put(key, val) {\n return this.set(key, val);\n };\n\n _proto.set = function set(key, val) {\n this._map[key.name()] = val;\n return this;\n };\n\n _proto.retainAll = function retainAll(keyList) {\n var map = {};\n\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i].name();\n map[key] = this._map[key];\n }\n\n this._map = map;\n return this;\n };\n\n _proto.remove = function remove(key) {\n var keyName = key.name();\n var val = this._map[keyName];\n this._map[keyName] = undefined;\n return val;\n };\n\n _proto.keySet = function keySet() {\n return this._map;\n };\n\n _proto.clear = function clear() {\n this._map = {};\n };\n\n return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n _inheritsLoose(ResolverStyle, _Enum);\n\n function ResolverStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n function TemporalAdjuster() {}\n\n var _proto = TemporalAdjuster.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n abstractMethodFail('adjustInto');\n };\n\n return TemporalAdjuster;\n}();\n\nvar Temporal = function (_TemporalAccessor) {\n _inheritsLoose(Temporal, _TemporalAccessor);\n\n function Temporal() {\n return _TemporalAccessor.apply(this, arguments) || this;\n }\n\n var _proto = Temporal.prototype;\n\n _proto.isSupported = function isSupported(unit) {\n abstractMethodFail('isSupported');\n };\n\n _proto.minus = function minus(p1, p2) {\n if (arguments.length < 2) {\n return this.minusAmount(p1);\n } else {\n return this.minusAmountUnit(p1, p2);\n }\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n abstractMethodFail('minusAmount');\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n abstractMethodFail('minusAmountUnit');\n };\n\n _proto.plus = function plus(p1, p2) {\n if (arguments.length < 2) {\n return this.plusAmount(p1);\n } else {\n return this.plusAmountUnit(p1, p2);\n }\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n abstractMethodFail('plusAmount');\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n abstractMethodFail('plusAmountUnit');\n };\n\n _proto.until = function until(endTemporal, unit) {\n abstractMethodFail('until');\n };\n\n _proto.with = function _with(p1, p2) {\n if (arguments.length < 2) {\n return this.withAdjuster(p1);\n } else {\n return this.withFieldValue(p1, p2);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n abstractMethodFail('withAdjuster');\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n abstractMethodFail('withFieldValue');\n };\n\n return Temporal;\n}(TemporalAccessor);\n\nvar DefaultInterfaceTemporal = function (_Temporal) {\n _inheritsLoose(DefaultInterfaceTemporal, _Temporal);\n\n function DefaultInterfaceTemporal() {\n return _Temporal.apply(this, arguments) || this;\n }\n\n var _proto = DefaultInterfaceTemporal.prototype;\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n requireInstance(adjuster, TemporalAdjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmount(-amountToSubtract, unit);\n };\n\n return DefaultInterfaceTemporal;\n}(Temporal);\n\nvar ChronoLocalDate = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDate, _DefaultInterfaceTemp);\n\n function ChronoLocalDate() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDate.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return ChronoLocalDate;\n}(DefaultInterfaceTemporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n function StringUtil() {}\n\n StringUtil.startsWith = function startsWith(text, pattern) {\n return text.indexOf(pattern) === 0;\n };\n\n StringUtil.hashCode = function hashCode(text) {\n var len = text.length;\n\n if (len === 0) {\n return 0;\n }\n\n var hash = 0;\n\n for (var i = 0; i < len; i++) {\n var chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n\n return MathUtil.smi(hash);\n };\n\n return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n function ZoneId() {}\n\n ZoneId.systemDefault = function systemDefault() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.of = function of(zoneId) {\n throw new DateTimeException('not supported operation' + zoneId);\n };\n\n ZoneId.ofOffset = function ofOffset(prefix, offset) {\n throw new DateTimeException('not supported operation' + prefix + offset);\n };\n\n ZoneId.from = function from(temporal) {\n throw new DateTimeException('not supported operation' + temporal);\n };\n\n var _proto = ZoneId.prototype;\n\n _proto.id = function id() {\n abstractMethodFail('ZoneId.id');\n };\n\n _proto.rules = function rules() {\n abstractMethodFail('ZoneId.rules');\n };\n\n _proto.normalized = function normalized() {\n var rules = this.rules();\n\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n\n return this;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return StringUtil.hashCode(this.id());\n };\n\n _proto.toString = function toString() {\n return this.id();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneId;\n}();\n\nvar ZoneRules = function () {\n function ZoneRules() {}\n\n ZoneRules.of = function of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n };\n\n var _proto = ZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n abstractMethodFail('ZoneRules.isFixedOffset');\n };\n\n _proto.offset = function offset(instantOrLocalDateTime) {\n if (instantOrLocalDateTime instanceof Instant) {\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n abstractMethodFail('ZoneRules.offsetInstant');\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n abstractMethodFail('ZoneRules.validOffsets');\n };\n\n _proto.transition = function transition(localDateTime) {\n abstractMethodFail('ZoneRules.transition');\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n abstractMethodFail('ZoneRules.standardOffset');\n };\n\n _proto.daylightSavings = function daylightSavings(instant) {\n abstractMethodFail('ZoneRules.daylightSavings');\n };\n\n _proto.isDaylightSavings = function isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n };\n\n _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n abstractMethodFail('ZoneRules.isValidOffset');\n };\n\n _proto.nextTransition = function nextTransition(instant) {\n abstractMethodFail('ZoneRules.nextTransition');\n };\n\n _proto.previousTransition = function previousTransition(instant) {\n abstractMethodFail('ZoneRules.previousTransition');\n };\n\n _proto.transitions = function transitions() {\n abstractMethodFail('ZoneRules.transitions');\n };\n\n _proto.transitionRules = function transitionRules() {\n abstractMethodFail('ZoneRules.transitionRules');\n };\n\n _proto.toString = function toString() {\n abstractMethodFail('ZoneRules.toString');\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneRules;\n}();\n\nvar Fixed = function (_ZoneRules) {\n _inheritsLoose(Fixed, _ZoneRules);\n\n function Fixed(offset) {\n var _this;\n\n _this = _ZoneRules.call(this) || this;\n _this._offset = offset;\n return _this;\n }\n\n var _proto2 = Fixed.prototype;\n\n _proto2.isFixedOffset = function isFixedOffset() {\n return true;\n };\n\n _proto2.offsetOfInstant = function offsetOfInstant() {\n return this._offset;\n };\n\n _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n return this._offset;\n };\n\n _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n return this._offset;\n };\n\n _proto2.validOffsets = function validOffsets() {\n return [this._offset];\n };\n\n _proto2.transition = function transition() {\n return null;\n };\n\n _proto2.standardOffset = function standardOffset() {\n return this._offset;\n };\n\n _proto2.daylightSavings = function daylightSavings() {\n return Duration.ZERO;\n };\n\n _proto2.isDaylightSavings = function isDaylightSavings() {\n return false;\n };\n\n _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n };\n\n _proto2.nextTransition = function nextTransition() {\n return null;\n };\n\n _proto2.previousTransition = function previousTransition() {\n return null;\n };\n\n _proto2.transitions = function transitions() {\n return [];\n };\n\n _proto2.transitionRules = function transitionRules() {\n return [];\n };\n\n _proto2.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto2.toString = function toString() {\n return 'FixedRules:' + this._offset.toString();\n };\n\n return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n _inheritsLoose(ZoneOffset, _ZoneId);\n\n function ZoneOffset(totalSeconds) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n\n ZoneOffset._validateTotalSeconds(totalSeconds);\n\n _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n _this._id = ZoneOffset._buildId(totalSeconds);\n return _this;\n }\n\n var _proto = ZoneOffset.prototype;\n\n _proto.totalSeconds = function totalSeconds() {\n return this._totalSeconds;\n };\n\n _proto.id = function id() {\n return this._id;\n };\n\n ZoneOffset._buildId = function _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n var absTotalSeconds = Math.abs(totalSeconds);\n var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var buf = '' + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n }\n\n return buf;\n }\n };\n\n ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException('Zone offset hours not in valid range: value ' + hours + ' is not in the range -18 to 18');\n }\n\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException('Zone offset minutes not in valid range: abs(value) ' + Math.abs(minutes) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException('Zone offset seconds not in valid range: abs(value) ' + Math.abs(seconds) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset.of = function of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n var offset = ID_CACHE[offsetId];\n\n if (offset != null) {\n return offset;\n }\n\n var hours, minutes, seconds;\n\n switch (offsetId.length) {\n case 2:\n offsetId = offsetId[0] + '0' + offsetId[1];\n\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n\n default:\n throw new DateTimeException('Invalid ID for ZoneOffset, invalid format: ' + offsetId);\n }\n\n var first = offsetId[0];\n\n if (first !== '+' && first !== '-') {\n throw new DateTimeException('Invalid ID for ZoneOffset, plus/minus not found when expected: ' + offsetId);\n }\n\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n };\n\n ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException('Invalid ID for ZoneOffset, colon not found when expected: ' + offsetId);\n }\n\n var ch1 = offsetId[pos];\n var ch2 = offsetId[pos + 1];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException('Invalid ID for ZoneOffset, non numeric characters found: ' + offsetId);\n }\n\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n };\n\n ZoneOffset.ofHours = function ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n };\n\n ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n };\n\n ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n\n var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n var totalSecs = totalSeconds;\n var result = SECONDS_CACHE[totalSecs];\n\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._totalSeconds;\n };\n\n _proto.toString = function toString() {\n return this._id;\n };\n\n return ZoneOffset;\n}(ZoneId);\nfunction _init$7() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n\n DateTimeBuilder.create = function create(field, value) {\n var dtb = new DateTimeBuilder();\n\n dtb._addFieldValue(field, value);\n\n return dtb;\n };\n\n function DateTimeBuilder() {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this.fieldValues = new EnumMap();\n _this.chrono = null;\n _this.zone = null;\n _this.date = null;\n _this.time = null;\n _this.leapSecond = false;\n _this.excessDays = null;\n return _this;\n }\n\n var _proto = DateTimeBuilder.prototype;\n\n _proto.getFieldValue0 = function getFieldValue0(field) {\n return this.fieldValues.get(field);\n };\n\n _proto._addFieldValue = function _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n var old = this.getFieldValue0(field);\n\n if (old != null && old !== value) {\n throw new DateTimeException('Conflict found: ' + field + ' ' + old + ' differs from ' + field + ' ' + value + ': ' + this);\n }\n\n return this._putFieldValue0(field, value);\n };\n\n _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n };\n\n _proto.resolve = function resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n\n this._mergeDate(resolverStyle);\n\n this._mergeTime(resolverStyle);\n\n this._resolveTimeInferZeroes(resolverStyle);\n\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n\n this._resolveInstant();\n\n return this;\n };\n\n _proto._mergeDate = function _mergeDate(resolverStyle) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n };\n\n _proto._checkDate = function _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n\n for (var fieldName in this.fieldValues.keySet()) {\n var field = ChronoField.byName(fieldName);\n\n if (field) {\n if (this.fieldValues.get(field) !== undefined) {\n if (field.isDateBased()) {\n var val1 = void 0;\n\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n\n var val2 = this.fieldValues.get(field);\n\n if (val1 !== val2) {\n throw new DateTimeException('Conflict found: Field ' + field + ' ' + val1 + ' differs from ' + field + ' ' + val2 + ' derived from ' + date);\n }\n }\n }\n }\n }\n }\n };\n\n _proto._mergeTime = function _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n }\n };\n\n _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n if (hod == null) {\n return;\n }\n\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n\n if (moh != null && som == null && nos != null) {\n return;\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n\n var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n\n if (moh != null) {\n var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n\n if (som != null) {\n var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n\n if (nos != null) {\n var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n var _hodVal = hod;\n\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n\n var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n\n this._addObject(LocalTime.ofNanoOfDay(nod));\n\n this.excessDays = Period.ofDays(excessDays);\n } else {\n var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n\n var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n\n var sod = MathUtil.floorMod(totalSecs, 86400);\n\n this._addObject(LocalTime.ofSecondOfDay(sod));\n\n this.excessDays = Period.ofDays(_excessDays);\n }\n } else {\n var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n\n _hodVal = MathUtil.floorMod(_hodVal, 24);\n\n this._addObject(LocalTime.of(_hodVal, 0));\n\n this.excessDays = Period.ofDays(_excessDays2);\n }\n }\n }\n\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n };\n\n _proto._addObject = function _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate) {\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime) {\n this.time = dateOrTime;\n }\n };\n\n _proto._resolveInstant = function _resolveInstant() {\n if (this.date != null && this.time != null) {\n var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs != null) {\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n }\n }\n };\n\n _proto.build = function build(type) {\n return type.queryFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field == null) {\n return false;\n }\n\n return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n var value = this.getFieldValue0(field);\n\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n\n throw new DateTimeException('Field not found: ' + field);\n }\n\n return value;\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (_query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (_query === TemporalQueries.localTime()) {\n return this.time;\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return _query.queryFrom(this);\n } else if (_query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n function DateTimeParseContext() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DateTimeParseContext) {\n this._constructorSelf.apply(this, arguments);\n\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n var _proto = DateTimeParseContext.prototype;\n\n _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n };\n\n _proto._constructorFormatter = function _constructorFormatter(formatter) {\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n };\n\n _proto._constructorSelf = function _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n };\n\n _proto.copy = function copy() {\n return new DateTimeParseContext(this);\n };\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.isStrict = function isStrict() {\n return this._strict;\n };\n\n _proto.setStrict = function setStrict(strict) {\n this._strict = strict;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n _proto.startOptional = function startOptional() {\n this._parsed.push(this.currentParsed().copy());\n };\n\n _proto.endOptional = function endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n };\n\n _proto.isCaseSensitive = function isCaseSensitive() {\n return this._caseSensitive;\n };\n\n _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n };\n\n _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n\n if (!this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n\n for (var i = 0; i < length; i++) {\n var ch1 = cs1[offset1 + i];\n var ch2 = cs2[offset2 + i];\n\n if (ch1 !== ch2) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.charEquals = function charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n\n return this.charEqualsIgnoreCase(ch1, ch2);\n };\n\n _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n };\n\n _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n var currentParsedFieldValues = this.currentParsed().fieldValues;\n var old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return old != null && old !== value ? ~errorPos : successPos;\n };\n\n _proto.setParsedZone = function setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n };\n\n _proto.getParsed = function getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n };\n\n _proto.toParsed = function toParsed() {\n return this.currentParsed();\n };\n\n _proto.currentParsed = function currentParsed() {\n return this._parsed[this._parsed.length - 1];\n };\n\n _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n };\n\n _proto.getEffectiveChronology = function getEffectiveChronology() {\n var chrono = this.currentParsed().chrono;\n\n if (chrono == null) {\n chrono = this._overrideChronology;\n\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n\n return chrono;\n };\n\n return DateTimeParseContext;\n}();\n\nvar Parsed = function (_Temporal) {\n _inheritsLoose(Parsed, _Temporal);\n\n function Parsed(dateTimeParseContext) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this.chrono = null;\n _this.zone = null;\n _this.fieldValues = new EnumMap();\n _this.leapSecond = false;\n _this.dateTimeParseContext = dateTimeParseContext;\n return _this;\n }\n\n var _proto2 = Parsed.prototype;\n\n _proto2.copy = function copy() {\n var cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n };\n\n _proto2.toString = function toString() {\n return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n };\n\n _proto2.isSupported = function isSupported(field) {\n return this.fieldValues.containsKey(field);\n };\n\n _proto2.get = function get(field) {\n var val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n };\n\n _proto2.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto2.toBuilder = function toBuilder() {\n var builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n };\n\n return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n\n this._optional = 0;\n }\n\n DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n return temporal;\n };\n\n var _proto = DateTimePrintContext.prototype;\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.startOptional = function startOptional() {\n this._optional++;\n };\n\n _proto.endOptional = function endOptional() {\n this._optional--;\n };\n\n _proto.getValueQuery = function getValueQuery(query) {\n var result = this._temporal.query(query);\n\n if (result == null && this._optional === 0) {\n throw new DateTimeException('Unable to extract value: ' + this._temporal);\n }\n\n return result;\n };\n\n _proto.getValue = function getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException && this._optional > 0) {\n return null;\n }\n\n throw ex;\n }\n };\n\n _proto.temporal = function temporal() {\n return this._temporal;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setDateTime = function setDateTime(temporal) {\n this._temporal = temporal;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\nvar Field = function (_TemporalField) {\n _inheritsLoose(Field, _TemporalField);\n\n function Field() {\n return _TemporalField.apply(this, arguments) || this;\n }\n\n var _proto = Field.prototype;\n\n _proto.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto._isIso = function _isIso() {\n return true;\n };\n\n Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n var wby = Field._getWeekBasedYear(date);\n\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n };\n\n Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n var date = LocalDate.of(wby, 1, 1);\n\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n return 53;\n }\n\n return 52;\n };\n\n Field._getWeek = function _getWeek(date) {\n var dow0 = date.dayOfWeek().ordinal();\n var doy0 = date.dayOfYear() - 1;\n var doyThu0 = doy0 + (3 - dow0);\n var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n var firstMonDoy0 = firstThuDoy0 - 3;\n\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n\n var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n\n if (week === 53) {\n if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n week = 1;\n }\n }\n\n return week;\n };\n\n Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n var year = date.year();\n var doy = date.dayOfYear();\n\n if (doy <= 3) {\n var dow = date.dayOfWeek().ordinal();\n\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n var _dow = date.dayOfWeek().ordinal();\n\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n\n if (doy - _dow >= 0) {\n year++;\n }\n }\n\n return year;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.resolve = function resolve() {\n return null;\n };\n\n _proto.name = function name() {\n return this.toString();\n };\n\n return Field;\n}(TemporalField);\n\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n\n function DAY_OF_QUARTER_FIELD() {\n return _Field.apply(this, arguments) || this;\n }\n\n var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n\n _proto2.toString = function toString() {\n return 'DayOfQuarter';\n };\n\n _proto2.baseUnit = function baseUnit() {\n return ChronoUnit.DAYS;\n };\n\n _proto2.rangeUnit = function rangeUnit() {\n return QUARTER_YEARS;\n };\n\n _proto2.range = function range() {\n return ValueRange.of(1, 90, 92);\n };\n\n _proto2.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n };\n\n _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var qoy = temporal.getLong(QUARTER_OF_YEAR);\n\n if (qoy === 1) {\n var year = temporal.getLong(ChronoField.YEAR);\n return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n }\n\n return this.range();\n };\n\n _proto2.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n var year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n };\n\n _proto2.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n };\n\n _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var yearLong = fieldValues.get(ChronoField.YEAR);\n var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n\n var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n var doq = fieldValues.get(DAY_OF_QUARTER);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var max = 92;\n\n if (_qoy === 1) {\n max = IsoChronology.isLeapYear(y) ? 91 : 90;\n } else if (_qoy === 2) {\n max = 91;\n }\n\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this);\n }\n\n date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n };\n\n return DAY_OF_QUARTER_FIELD;\n}(Field);\n\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n\n function QUARTER_OF_YEAR_FIELD() {\n return _Field2.apply(this, arguments) || this;\n }\n\n var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n\n _proto3.toString = function toString() {\n return 'QuarterOfYear';\n };\n\n _proto3.baseUnit = function baseUnit() {\n return QUARTER_YEARS;\n };\n\n _proto3.rangeUnit = function rangeUnit() {\n return ChronoUnit.YEARS;\n };\n\n _proto3.range = function range() {\n return ValueRange.of(1, 4);\n };\n\n _proto3.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n };\n\n _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return this.range();\n };\n\n _proto3.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n\n var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv(moy + 2, 3);\n };\n\n _proto3.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n };\n\n return QUARTER_OF_YEAR_FIELD;\n}(Field);\n\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n\n function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n return _Field3.apply(this, arguments) || this;\n }\n\n var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto4.toString = function toString() {\n return 'WeekOfWeekBasedYear';\n };\n\n _proto4.baseUnit = function baseUnit() {\n return ChronoUnit.WEEKS;\n };\n\n _proto4.rangeUnit = function rangeUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto4.range = function range() {\n return ValueRange.of(1, 52, 53);\n };\n\n _proto4.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n };\n\n _proto4.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeek(LocalDate.from(temporal));\n };\n\n _proto4.adjustInto = function adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n };\n\n _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n\n var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var dow = dowLong;\n var weeks = 0;\n\n if (dow > 7) {\n weeks = MathUtil.intDiv(dow - 1, 7);\n dow = MathUtil.intMod(dow - 1, 7) + 1;\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var temp = LocalDate.of(wby, 1, 4);\n\n var range = Field._getWeekRangeByLocalDate(temp);\n\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this);\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n };\n\n _proto4.displayName = function displayName() {\n return 'Week';\n };\n\n return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n\n function WEEK_BASED_YEAR_FIELD() {\n return _Field4.apply(this, arguments) || this;\n }\n\n var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto5.toString = function toString() {\n return 'WeekBasedYear';\n };\n\n _proto5.baseUnit = function baseUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto5.rangeUnit = function rangeUnit() {\n return ChronoUnit.FOREVER;\n };\n\n _proto5.range = function range() {\n return ChronoField.YEAR.range();\n };\n\n _proto5.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n };\n\n _proto5.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n };\n\n _proto5.adjustInto = function adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n var date = LocalDate.from(temporal);\n var dow = date.get(ChronoField.DAY_OF_WEEK);\n\n var week = Field._getWeek(date);\n\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n\n var resolved = LocalDate.of(newWby, 1, 4);\n var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n };\n\n return WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar Unit = function (_TemporalUnit) {\n _inheritsLoose(Unit, _TemporalUnit);\n\n function Unit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto6 = Unit.prototype;\n\n _proto6.duration = function duration() {\n return this._duration;\n };\n\n _proto6.isDurationEstimated = function isDurationEstimated() {\n return true;\n };\n\n _proto6.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto6.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto6.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n };\n\n _proto6.addTo = function addTo(temporal, periodToAdd) {\n switch (this) {\n case WEEK_BASED_YEARS:\n {\n var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n\n case QUARTER_YEARS:\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.between = function between(temporal1, temporal2) {\n switch (this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.toString = function toString() {\n return name;\n };\n\n return Unit;\n}(TemporalUnit);\n\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$8() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DecimalStyle = function () {\n function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n var _proto = DecimalStyle.prototype;\n\n _proto.positiveSign = function positiveSign() {\n return this._positiveSign;\n };\n\n _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.negativeSign = function negativeSign() {\n return this._negativeSign;\n };\n\n _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n };\n\n _proto.zeroDigit = function zeroDigit() {\n return this._zeroDigit;\n };\n\n _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.decimalSeparator = function decimalSeparator() {\n return this._decimalSeparator;\n };\n\n _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n };\n\n _proto.convertToDigit = function convertToDigit(char) {\n var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n\n return val >= 0 && val <= 9 ? val : -1;\n };\n\n _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n\n var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n var convertedText = '';\n\n for (var i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n\n return convertedText;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof DecimalStyle) {\n return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n };\n\n _proto.toString = function toString() {\n return 'DecimalStyle[' + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + ']';\n };\n\n DecimalStyle.of = function of() {\n throw new Error('not yet supported');\n };\n\n DecimalStyle.availableLocales = function availableLocales() {\n throw new Error('not yet supported');\n };\n\n return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n _inheritsLoose(SignStyle, _Enum);\n\n function SignStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SignStyle.prototype;\n\n _proto.parse = function parse(positive, strict, fixedWidth) {\n switch (this) {\n case SignStyle.NORMAL:\n return !positive || !strict;\n\n case SignStyle.ALWAYS:\n case SignStyle.EXCEEDS_PAD:\n return true;\n\n default:\n return !strict && !fixedWidth;\n }\n };\n\n return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n _inheritsLoose(TextStyle, _Enum);\n\n function TextStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TextStyle.prototype;\n\n _proto.isStandalone = function isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n\n default:\n return false;\n }\n };\n\n _proto.asStandalone = function asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n\n default:\n return this;\n }\n };\n\n _proto.asNormal = function asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n\n default:\n return this;\n }\n };\n\n return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n function CharLiteralPrinterParser(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException('invalid literal, too long: \"' + literal + '\"');\n }\n\n this._literal = literal;\n }\n\n var _proto = CharLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n var ch = text.charAt(position);\n\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n\n return \"'\" + this._literal + \"'\";\n };\n\n return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CompositePrinterParser = function () {\n function CompositePrinterParser(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n var _proto = CompositePrinterParser.prototype;\n\n _proto.withOptional = function withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n\n return new CompositePrinterParser(this._printerParsers, optional);\n };\n\n _proto.print = function print(context, buf) {\n var length = buf.length();\n\n if (this._optional) {\n context.startOptional();\n }\n\n try {\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n\n if (pp.print(context, buf) === false) {\n buf.setLength(length);\n return true;\n }\n }\n } finally {\n if (this._optional) {\n context.endOptional();\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n if (this._optional) {\n context.startOptional();\n var pos = position;\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n pos = pp.parse(context, text, pos);\n\n if (pos < 0) {\n context.endOptional(false);\n return position;\n }\n }\n\n context.endOptional(true);\n return pos;\n } else {\n for (var _i = 0; _i < this._printerParsers.length; _i++) {\n var _pp = this._printerParsers[_i];\n position = _pp.parse(context, text, position);\n\n if (position < 0) {\n break;\n }\n }\n\n return position;\n }\n };\n\n _proto.toString = function toString() {\n var buf = '';\n\n if (this._printerParsers != null) {\n buf += this._optional ? '[' : '(';\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n buf += pp.toString();\n }\n\n buf += this._optional ? ']' : ')';\n }\n\n return buf;\n };\n\n return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n requireNonNull(field, 'field');\n\n if (field.range().isFixed() === false) {\n throw new IllegalArgumentException('Field must have a fixed set of values: ' + field);\n }\n\n if (minWidth < 0 || minWidth > 9) {\n throw new IllegalArgumentException('Minimum width must be from 0 to 9 inclusive but was ' + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException('Maximum width must be from 1 to 9 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException('Maximum width must exceed or equal the minimum width but ' + maxWidth + ' < ' + minWidth);\n }\n\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n var _proto = FractionPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var value = context.getValue(this.field);\n\n if (value === null) {\n return false;\n }\n\n var symbols = context.symbols();\n\n if (value === 0) {\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n for (var i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n var fraction = this.convertToFraction(value, symbols.zeroDigit());\n var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n\n if (fraction * 1 > 0) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n\n var str = fraction;\n str = symbols.convertNumberToI18N(str);\n\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n buf.append(str);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var effectiveMin = context.isStrict() ? this.minWidth : 0;\n var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n var length = text.length;\n\n if (position === length) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n position++;\n }\n\n var minEndPos = position + effectiveMin;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var maxEndPos = Math.min(position + effectiveMax, length);\n var total = 0;\n var pos = position;\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position;\n }\n\n pos--;\n break;\n }\n\n total = total * 10 + digit;\n }\n\n var moveLeft = pos - position;\n var scale = Math.pow(10, moveLeft);\n var value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n };\n\n _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n var range = this.field.range();\n range.checkValidValue(value, this.field);\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = value - _min;\n\n var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n\n var fraction = '' + _scaled;\n\n while (fraction.length < 9) {\n fraction = zeroDigit + fraction;\n }\n\n return fraction;\n };\n\n _proto.convertFromFraction = function convertFromFraction(total, scale) {\n var range = this.field.range();\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = MathUtil.intDiv(total * _range, scale);\n\n return _value;\n };\n\n _proto.toString = function toString() {\n var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n return 'Fraction(' + this.field + ',' + this.minWidth + ',' + this.maxWidth + decimal + ')';\n };\n\n return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n if (subsequentWidth === void 0) {\n subsequentWidth = 0;\n }\n\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n var _proto = NumberPrinterParser.prototype;\n\n _proto.field = function field() {\n return this._field;\n };\n\n _proto.minWidth = function minWidth() {\n return this._minWidth;\n };\n\n _proto.maxWidth = function maxWidth() {\n return this._maxWidth;\n };\n\n _proto.signStyle = function signStyle() {\n return this._signStyle;\n };\n\n _proto.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n };\n\n _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n };\n\n _proto._isFixedWidth = function _isFixedWidth() {\n return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n };\n\n _proto.print = function print(context, buf) {\n var contextValue = context.getValue(this._field);\n\n if (contextValue == null) {\n return false;\n }\n\n var value = this._getValue(context, contextValue);\n\n var symbols = context.symbols();\n var str = '' + Math.abs(value);\n\n if (str.length > this._maxWidth) {\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' exceeds the maximum print width of ' + this._maxWidth);\n }\n\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n\n break;\n\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' cannot be negative according to the SignStyle');\n }\n }\n\n for (var i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n\n buf.append(str);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n assert(position >= 0 && position < length);\n var sign = text.charAt(position);\n var negative = false;\n var positive = false;\n\n if (sign === context.symbols().positiveSign()) {\n if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n positive = true;\n position++;\n } else if (sign === context.symbols().negativeSign()) {\n if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n negative = true;\n position++;\n } else {\n if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n return ~position;\n }\n }\n\n var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n var minEndPos = position + effMinWidth;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n var total = 0;\n var pos = position;\n\n for (var pass = 0; pass < 2; pass++) {\n var maxEndPos = Math.min(pos + effMaxWidth, length);\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n pos--;\n\n if (pos < minEndPos) {\n return ~position;\n }\n\n break;\n }\n\n if (pos - position > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n\n if (this._subsequentWidth > 0 && pass === 0) {\n var parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1);\n }\n\n if (total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n var _parseLen = pos - position;\n\n if (positive) {\n if (_parseLen <= this._minWidth) {\n return ~(position - 1);\n }\n } else {\n if (_parseLen > this._minWidth) {\n return ~position;\n }\n }\n }\n\n return this._setValue(context, total, position, pos);\n };\n\n _proto._getValue = function _getValue(context, value) {\n return value;\n };\n\n _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto.toString = function toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return 'Value(' + this._field + ')';\n }\n\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return 'Value(' + this._field + ',' + this._minWidth + ')';\n }\n\n return 'Value(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + this._signStyle + ')';\n };\n\n return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n\n function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n var _this;\n\n _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException('The width must be from 1 to 10 inclusive but was ' + width);\n }\n\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException('The maxWidth must be from 1 to 10 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n\n if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n\n _this._baseValue = baseValue;\n _this._baseDate = baseDate;\n return _this;\n }\n\n var _proto2 = ReducedPrinterParser.prototype;\n\n _proto2._getValue = function _getValue(context, value) {\n var absValue = Math.abs(value);\n var baseValue = this._baseValue;\n\n if (this._baseDate !== null) {\n context.temporal();\n var chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n\n return absValue % EXCEED_POINTS[this._maxWidth];\n };\n\n _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n var baseValue = this._baseValue;\n\n if (this._baseDate != null) {\n var chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n var parseLen = successPos - errorPos;\n\n if (parseLen === this._minWidth && value >= 0) {\n var range = EXCEED_POINTS[this._minWidth];\n var lastPart = baseValue % range;\n var basePart = baseValue - lastPart;\n\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n\n if (value < baseValue) {\n value += range;\n }\n }\n\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto2.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n };\n\n _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n };\n\n _proto2.isFixedWidth = function isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n\n return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n };\n\n _proto2.toString = function toString() {\n return 'ReducedValue(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + (this._baseDate != null ? this._baseDate : this._baseValue) + ')';\n };\n\n return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n function OffsetIdPrinterParser(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n var _proto = OffsetIdPrinterParser.prototype;\n\n _proto._checkPattern = function _checkPattern(pattern) {\n for (var i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n\n throw new IllegalArgumentException('Invalid zone offset pattern: ' + pattern);\n };\n\n _proto.print = function print(context, buf) {\n var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs == null) {\n return false;\n }\n\n var totalSecs = MathUtil.safeToInt(offsetSecs);\n\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n var bufPos = buf.length();\n var output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + '0').appendChar(MathUtil.intMod(absHours, 10) + '0');\n\n if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + '0').appendChar(absMinutes % 10 + '0');\n output += absMinutes;\n\n if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + '0').appendChar(absSeconds % 10 + '0');\n output += absSeconds;\n }\n }\n\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n var noOffsetLen = this.noOffsetText.length;\n\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n var sign = text[position];\n\n if (sign === '+' || sign === '-') {\n var negative = sign === '-' ? -1 : 1;\n var array = [0, 0, 0, 0];\n array[0] = position + 1;\n\n if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n\n return ~position;\n };\n\n _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false;\n }\n\n var pos = array[0];\n\n if (this.type % 2 === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n\n pos++;\n }\n\n if (pos + 2 > parseText.length) {\n return required;\n }\n\n var ch1 = parseText[pos++];\n var ch2 = parseText[pos++];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n\n var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n\n if (value < 0 || value > 59) {\n return required;\n }\n\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n };\n\n _proto.toString = function toString() {\n var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return 'Offset(' + PATTERNS[this.type] + ',\\'' + converted + '\\')';\n };\n\n return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n var _proto = PadPrinterParserDecorator.prototype;\n\n _proto.print = function print(context, buf) {\n var preLen = buf.length();\n\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n\n var len = buf.length() - preLen;\n\n if (len > this._padWidth) {\n throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n }\n\n for (var i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var strict = context.isStrict();\n var caseSensitive = context.isCaseSensitive();\n assert(!(position > text.length));\n assert(position >= 0);\n\n if (position === text.length) {\n return ~position;\n }\n\n var endPos = position + this._padWidth;\n\n if (endPos > text.length) {\n if (strict) {\n return ~position;\n }\n\n endPos = text.length;\n }\n\n var pos = position;\n\n while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n\n text = text.substring(0, endPos);\n\n var resultPos = this._printerParser.parse(context, text, pos);\n\n if (resultPos !== endPos && strict) {\n return ~(position + pos);\n }\n\n return resultPos;\n };\n\n _proto.toString = function toString() {\n return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : ',\\'' + this._padChar + '\\')');\n };\n\n return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n _inheritsLoose(SettingsParser, _Enum);\n\n function SettingsParser() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SettingsParser.prototype;\n\n _proto.print = function print() {\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n switch (this) {\n case SettingsParser.SENSITIVE:\n context.setCaseSensitive(true);\n break;\n\n case SettingsParser.INSENSITIVE:\n context.setCaseSensitive(false);\n break;\n\n case SettingsParser.STRICT:\n context.setStrict(true);\n break;\n\n case SettingsParser.LENIENT:\n context.setStrict(false);\n break;\n }\n\n return position;\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case SettingsParser.SENSITIVE:\n return 'ParseCaseSensitive(true)';\n\n case SettingsParser.INSENSITIVE:\n return 'ParseCaseSensitive(false)';\n\n case SettingsParser.STRICT:\n return 'ParseStrict(true)';\n\n case SettingsParser.LENIENT:\n return 'ParseStrict(false)';\n }\n };\n\n return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n function StringLiteralPrinterParser(literal) {\n this._literal = literal;\n }\n\n var _proto = StringLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n var converted = this._literal.replace(\"'\", \"''\");\n\n return '\\'' + converted + '\\'';\n };\n\n return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n function ZoneRulesProvider() {}\n\n ZoneRulesProvider.getRules = function getRules(zoneId) {\n throw new DateTimeException('unsupported ZoneId:' + zoneId);\n };\n\n ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n return [];\n };\n\n return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n _inheritsLoose(ZoneRegion, _ZoneId);\n\n ZoneRegion.ofId = function ofId(zoneId) {\n var rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n };\n\n function ZoneRegion(id, rules) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._id = id;\n _this._rules = rules;\n return _this;\n }\n\n var _proto = ZoneRegion.prototype;\n\n _proto.id = function id() {\n return this._id;\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n function ZoneIdPrinterParser(query, description) {\n this.query = query;\n this.description = description;\n }\n\n var _proto = ZoneIdPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var zone = context.getValueQuery(this.query);\n\n if (zone == null) {\n return false;\n }\n\n buf.append(zone.id());\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position > length) {\n return ~position;\n }\n\n if (position === length) {\n return ~position;\n }\n\n var nextChar = text.charAt(position);\n\n if (nextChar === '+' || nextChar === '-') {\n var newContext = context.copy();\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n return endPos;\n }\n\n var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n var nextNextChar = text.charAt(position + 1);\n\n if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n\n if (text.substr(position, 6) === 'SYSTEM') {\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n var maxParseLength = length - position;\n var treeMap = zoneIdTree.treeMap;\n var parsedZoneId = null;\n var parseLength = 0;\n\n while (treeMap != null) {\n var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n };\n\n _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n var prefix = text.substring(prefixPos, position).toUpperCase();\n var newContext = context.copy();\n\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n };\n\n _proto.toString = function toString() {\n return this.description;\n };\n\n return ZoneIdPrinterParser;\n}();\n\nvar ZoneIdTree = function () {\n ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n return a.length - b.length;\n });\n var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n\n for (var i = 0; i < sortedZoneIds.length; i++) {\n treeMap.add(sortedZoneIds[i]);\n }\n\n return new ZoneIdTree(sortedZoneIds.length, treeMap);\n };\n\n function ZoneIdTree(size, treeMap) {\n this.size = size;\n this.treeMap = treeMap;\n }\n\n return ZoneIdTree;\n}();\n\nvar ZoneIdTreeMap = function () {\n function ZoneIdTreeMap(length, isLeaf) {\n if (length === void 0) {\n length = 0;\n }\n\n if (isLeaf === void 0) {\n isLeaf = false;\n }\n\n this.length = length;\n this.isLeaf = isLeaf;\n this._treeMap = {};\n }\n\n var _proto2 = ZoneIdTreeMap.prototype;\n\n _proto2.add = function add(zoneId) {\n var idLength = zoneId.length;\n\n if (idLength === this.length) {\n this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n } else if (idLength > this.length) {\n var subZoneId = zoneId.substr(0, this.length);\n var subTreeMap = this._treeMap[subZoneId];\n\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n\n subTreeMap.add(zoneId);\n }\n };\n\n _proto2.get = function get(zoneId) {\n return this._treeMap[zoneId];\n };\n\n return ZoneIdTreeMap;\n}();\n\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH$1 = 15;\nvar DateTimeFormatterBuilder = function () {\n function DateTimeFormatterBuilder() {\n this._active = this;\n this._parent = null;\n this._printerParsers = [];\n this._optional = false;\n this._padNextWidth = 0;\n this._padNextChar = null;\n this._valueParserIndex = -1;\n }\n\n DateTimeFormatterBuilder._of = function _of(parent, optional) {\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n var dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n return dtFormatterBuilder;\n };\n\n var _proto = DateTimeFormatterBuilder.prototype;\n\n _proto.parseCaseSensitive = function parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n\n return this;\n };\n\n _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n\n return this;\n };\n\n _proto.parseStrict = function parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n\n return this;\n };\n\n _proto.parseLenient = function parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n\n return this;\n };\n\n _proto.appendValue = function appendValue() {\n if (arguments.length === 1) {\n return this._appendValue1.apply(this, arguments);\n } else if (arguments.length === 2) {\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n };\n\n _proto._appendValue1 = function _appendValue1(field) {\n requireNonNull(field);\n\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH$1, SignStyle.NORMAL));\n\n return this;\n };\n\n _proto._appendValue2 = function _appendValue2(field, width) {\n requireNonNull(field);\n\n if (width < 1 || width > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + width);\n }\n\n var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n\n if (minWidth < 1 || minWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n }\n\n var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto.appendValueReduced = function appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n var activeValueParser = this._active._valueParserIndex;\n var basePP = this._active._printerParsers[activeValueParser];\n\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n\n this._appendInternal(pp.withFixedWidth());\n\n this._active._valueParserIndex = activeValueParser;\n } else {\n basePP = basePP.withFixedWidth();\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n return this;\n };\n\n _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n\n return this;\n };\n\n _proto.appendInstant = function appendInstant(fractionalDigits) {\n if (fractionalDigits === void 0) {\n fractionalDigits = -2;\n }\n\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException('Invalid fractional digits: ' + fractionalDigits);\n }\n\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n\n return this;\n };\n\n _proto.appendOffsetId = function appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n\n return this;\n };\n\n _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n\n return this;\n };\n\n _proto.appendZoneId = function appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n\n return this;\n };\n\n _proto.appendPattern = function appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n\n this._parsePattern(pattern);\n\n return this;\n };\n\n _proto.appendZoneText = function appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendText = function appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendWeekField = function appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto._parsePattern = function _parsePattern(pattern) {\n var FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (var pos = 0; pos < pattern.length; pos++) {\n var cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n var start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n var count = pos - start;\n\n if (cur === 'p') {\n var pad = 0;\n\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n pad = count;\n start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n count = pos - start;\n }\n }\n\n if (pad === 0) {\n throw new IllegalArgumentException('Pad letter \\'p\\' must be followed by valid pad pattern: ' + pattern);\n }\n\n this.padNext(pad);\n }\n\n var field = FIELD_MAP[cur];\n\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException('Pattern letter count must be 2: ' + cur);\n }\n\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException('Pattern letter count must be 1 or 4: ' + cur);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException('Unknown pattern letter: ' + cur);\n }\n\n pos--;\n } else if (cur === '\\'') {\n var _start = pos++;\n\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break;\n }\n }\n }\n\n if (pos >= pattern.length) {\n throw new IllegalArgumentException('Pattern ends with an incomplete string literal: ' + pattern);\n }\n\n var str = pattern.substring(_start + 1, pos);\n\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n } else if (cur === '[') {\n this.optionalStart();\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n\n this.optionalEnd();\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException('Pattern includes reserved character: \\'' + cur + '\\'');\n } else {\n this.appendLiteral(cur);\n }\n }\n };\n\n _proto._parseField = function _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.EXCEEDS_PAD);\n }\n\n break;\n\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n\n case 2:\n throw new IllegalArgumentException('Invalid number of pattern letters: ' + cur);\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n\n break;\n }\n };\n\n _proto.padNext = function padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n };\n\n _proto._padNext1 = function _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n };\n\n _proto._padNext2 = function _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException('The pad width must be at least one but was ' + padWidth);\n }\n\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n };\n\n _proto.optionalStart = function optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n };\n\n _proto.optionalEnd = function optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n\n if (this._active._printerParsers.length > 0) {\n var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n\n return this;\n };\n\n _proto._appendInternal = function _appendInternal(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.appendLiteral = function appendLiteral(literal) {\n assert(literal != null);\n\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n\n return this;\n };\n\n _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.append = function append(formatter) {\n requireNonNull(formatter, 'formatter');\n\n this._appendInternal(formatter._toPrinterParser(false));\n\n return this;\n };\n\n _proto.toFormatter = function toFormatter(resolverStyle) {\n if (resolverStyle === void 0) {\n resolverStyle = ResolverStyle.SMART;\n }\n\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n\n var pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n };\n\n return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\n\nvar InstantPrinterParser = function () {\n function InstantPrinterParser(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n var _proto2 = InstantPrinterParser.prototype;\n\n _proto2.print = function print(context, buf) {\n var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n var inNanos = 0;\n\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n\n if (inSecs == null) {\n return false;\n }\n\n var inSec = inSecs;\n var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n\n if (inSec >= -SECONDS_0000_TO_1970) {\n var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n\n buf.append(ldt);\n\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n\n var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n var pos = buf.length();\n buf.append(_ldt);\n\n if (_ldt.second() === 0) {\n buf.append(':00');\n }\n\n if (_hi < 0) {\n if (_ldt.year() === -10000) {\n buf.replace(pos, pos + 2, '' + (_hi - 1));\n } else if (_lo === 0) {\n buf.insert(pos, _hi);\n } else {\n buf.insert(pos + 1, Math.abs(_hi));\n }\n }\n }\n\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n } else {\n buf.append(('' + (inNano + 1000000000)).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n buf.append('.');\n var div = 100000000;\n\n for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n var digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - digit * div;\n div = MathUtil.intDiv(div, 10);\n }\n }\n\n buf.append('Z');\n return true;\n };\n\n _proto2.parse = function parse(context, text, position) {\n var newContext = context.copy();\n var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n\n var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n\n var pos = parser.parse(newContext, text, position);\n\n if (pos < 0) {\n return pos;\n }\n\n var yearParsed = newContext.getParsed(ChronoField.YEAR);\n var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n var sec = secVal != null ? secVal : 0;\n var nano = nanoVal != null ? nanoVal : 0;\n var year = MathUtil.intMod(yearParsed, 10000);\n var days = 0;\n\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n\n var instantSecs;\n\n try {\n var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n\n var successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n };\n\n _proto2.toString = function toString() {\n return 'Instant()';\n };\n\n return InstantPrinterParser;\n}();\n\nfunction _init$9() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringBuilder = function () {\n function StringBuilder() {\n this._str = '';\n }\n\n var _proto = StringBuilder.prototype;\n\n _proto.append = function append(str) {\n this._str += str;\n return this;\n };\n\n _proto.appendChar = function appendChar(str) {\n this._str += str[0];\n return this;\n };\n\n _proto.insert = function insert(offset, str) {\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n };\n\n _proto.replace = function replace(start, end, str) {\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n };\n\n _proto.length = function length() {\n return this._str.length;\n };\n\n _proto.setLength = function setLength(length) {\n this._str = this._str.slice(0, length);\n return this;\n };\n\n _proto.toString = function toString() {\n return this._str;\n };\n\n return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n };\n\n DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n };\n\n DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n };\n\n function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n if (chrono === void 0) {\n chrono = IsoChronology.INSTANCE;\n }\n\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n this._printerParser = printerParser;\n this._locale = locale;\n this._decimalStyle = decimalStyle;\n this._resolverStyle = resolverStyle;\n this._resolverFields = resolverFields;\n this._chrono = chrono;\n this._zone = zone;\n }\n\n var _proto = DateTimeFormatter.prototype;\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.decimalStyle = function decimalStyle() {\n return this._decimalStyle;\n };\n\n _proto.chronology = function chronology() {\n return this._chrono;\n };\n\n _proto.withChronology = function withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n };\n\n _proto.withLocale = function withLocale() {\n return this;\n };\n\n _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n };\n\n _proto.format = function format(temporal) {\n var buf = new StringBuilder(32);\n\n this._formatTo(temporal, buf);\n\n return buf.toString();\n };\n\n _proto._formatTo = function _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n var context = new DateTimePrintContext(temporal, this);\n\n this._printerParser.print(context, appendable);\n };\n\n _proto.parse = function parse(text, type) {\n if (arguments.length === 1) {\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n };\n\n _proto.parse1 = function parse1(text) {\n requireNonNull(text, 'text');\n\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto.parse2 = function parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n\n try {\n var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n\n return builder.build(type);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto._createError = function _createError(text, ex) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substring(0, 64) + '...';\n } else {\n abbr = text;\n }\n\n return new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed: ' + ex.message, text, 0, ex);\n };\n\n _proto._parseToBuilder = function _parseToBuilder(text, position) {\n var pos = position != null ? position : new ParsePosition(0);\n\n var result = this._parseUnresolved0(text, pos);\n\n if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substr(0, 64).toString() + '...';\n } else {\n abbr = text;\n }\n\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed at index ' + pos.getErrorIndex(), text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed, unparsed text found at index ' + pos.getIndex(), text, pos.getIndex());\n }\n }\n\n return result.toBuilder();\n };\n\n _proto.parseUnresolved = function parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n };\n\n _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n var context = new DateTimeParseContext(this);\n var pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n\n if (pos < 0) {\n position.setErrorIndex(~pos);\n return null;\n }\n\n position.setIndex(pos);\n return context.toParsed();\n };\n\n _proto._toPrinterParser = function _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n };\n\n _proto.toString = function toString() {\n var pattern = this._printerParser.toString();\n\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n };\n\n return DateTimeFormatter;\n}();\nfunction _init$a() {\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n _inheritsLoose(MonthDay, _TemporalAccessor);\n\n MonthDay.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n };\n\n MonthDay.now0 = function now0() {\n return this.nowClock(Clock.systemDefaultZone());\n };\n\n MonthDay.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n };\n\n MonthDay.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n var now = LocalDate.now(clock);\n return MonthDay.of(now.month(), now.dayOfMonth());\n };\n\n MonthDay.of = function of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n };\n\n MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException('Illegal value for DayOfMonth field, value ' + dayOfMonth + ' is not valid for month ' + month.toString());\n }\n\n return new MonthDay(month.value(), dayOfMonth);\n };\n\n MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n };\n\n MonthDay.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n\n try {\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain MonthDay from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n MonthDay.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n };\n\n MonthDay.parseString = function parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n };\n\n MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n };\n\n function MonthDay(month, dayOfMonth) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n return _this;\n }\n\n var _proto = MonthDay.prototype;\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n\n return _TemporalAccessor.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isValidYear = function isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n };\n\n _proto.withMonth = function withMonth(month) {\n return this.with(Month.of(month));\n };\n\n _proto.with = function _with(month) {\n requireNonNull(month, 'month');\n\n if (month.value() === this._month) {\n return this;\n }\n\n var day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n\n return MonthDay.of(this._month, dayOfMonth);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n };\n\n _proto.atYear = function atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n var cmp = this._month - other.monthValue();\n\n if (cmp === 0) {\n cmp = this._day - other.dayOfMonth();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof MonthDay) {\n var other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '--' + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return MonthDay;\n}(TemporalAccessor);\nvar PARSER;\nfunction _init$b() {\n PARSER = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n return MonthDay.from(temporal);\n });\n}\n\nvar YearMonth = function (_Temporal) {\n _inheritsLoose(YearMonth, _Temporal);\n\n YearMonth.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n };\n\n YearMonth.now0 = function now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n };\n\n YearMonth.nowZoneId = function nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n };\n\n YearMonth.nowClock = function nowClock(clock) {\n var now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n };\n\n YearMonth.of = function of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n };\n\n YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n };\n\n YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n };\n\n YearMonth.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n\n try {\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain YearMonth from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n YearMonth.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n };\n\n YearMonth.parseString = function parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER$1);\n };\n\n YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n };\n\n function YearMonth(year, month) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n return _this;\n }\n\n var _proto = YearMonth.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._getProlepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._getProlepticMonth = function _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.isValidDay = function isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.with = function _with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this.withAdjuster(adjusterOrField);\n } else {\n return this.withFieldValue(adjusterOrField, value);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n };\n\n _proto.withMonth = function withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return this.withYear(newYear);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusAmountUnit(MathUtil.MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n var end = YearMonth.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n\n switch (unit) {\n case ChronoUnit.MONTHS:\n return monthsUntil;\n\n case ChronoUnit.YEARS:\n return monthsUntil / 12;\n\n case ChronoUnit.DECADES:\n return monthsUntil / 120;\n\n case ChronoUnit.CENTURIES:\n return monthsUntil / 1200;\n\n case ChronoUnit.MILLENNIA:\n return monthsUntil / 12000;\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDay = function atDay(dayOfMonth) {\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.atEndOfMonth = function atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n var cmp = this._year - other.year();\n\n if (cmp === 0) {\n cmp = this._month - other.monthValue();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof YearMonth) {\n var other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return PARSER$1.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$c() {\n PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n return YearMonth.from(temporal);\n });\n}\n\nvar Year = function (_Temporal) {\n _inheritsLoose(Year, _Temporal);\n\n function Year(value) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(value);\n return _this;\n }\n\n var _proto = Year.prototype;\n\n _proto.value = function value() {\n return this._year;\n };\n\n Year.now = function now(zoneIdOrClock) {\n if (zoneIdOrClock === void 0) {\n zoneIdOrClock = undefined;\n }\n\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n };\n\n Year.now0 = function now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n };\n\n Year.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n };\n\n Year.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n var now = LocalDate.now(clock);\n return Year.of(now.year());\n };\n\n Year.of = function of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n };\n\n Year.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof Year) {\n return temporal;\n }\n\n try {\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Year from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n Year.parse = function parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n };\n\n Year.parseText = function parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER$2);\n };\n\n Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n if (formatter === void 0) {\n formatter = PARSER$2;\n }\n\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n };\n\n Year.isLeap = function isLeap(year) {\n return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isLeap = function isLeap() {\n return Year.isLeap(this._year);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return Year.of(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plus(MathUtil.MAX_SAFE_INTEGER, unit).plus(1, unit) : this.plus(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.YEAR, this._year);\n };\n\n _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n };\n\n _proto.length = function length() {\n return this.isLeap() ? 366 : 365;\n };\n\n _proto.atDay = function atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.atMonth = function atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n };\n\n _proto.atMonthMonth = function atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthNumber = function atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthDay = function atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query()');\n requireInstance(_query, TemporalQuery, 'query()');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '' + this._year;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var yearsUntil = end.value() - this.value();\n\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n return Year;\n}(Temporal);\nvar PARSER$2;\nfunction _init$d() {\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n PARSER$2 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n return Year.from(temporal);\n });\n}\n\nvar TemporalAdjusters = function () {\n function TemporalAdjusters() {}\n\n TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n };\n\n TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n };\n\n TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n };\n\n TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n };\n\n TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n };\n\n TemporalAdjusters.next = function next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n };\n\n TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n };\n\n TemporalAdjusters.previous = function previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n };\n\n TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n };\n\n return TemporalAdjusters;\n}();\n\nvar Impl = function (_TemporalAdjuster) {\n _inheritsLoose(Impl, _TemporalAdjuster);\n\n function Impl(ordinal) {\n var _this;\n\n _this = _TemporalAdjuster.call(this) || this;\n _this._ordinal = ordinal;\n return _this;\n }\n\n var _proto = Impl.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n switch (this._ordinal) {\n case 0:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n\n case 1:\n return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n case 2:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n\n case 3:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n\n case 4:\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n\n case 5:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n\n throw new IllegalStateException('Unreachable');\n };\n\n return Impl;\n}(TemporalAdjuster);\n\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n\n function DayOfWeekInMonth(ordinal, dow) {\n var _this2;\n\n _this2 = _TemporalAdjuster2.call(this) || this;\n _this2._ordinal = ordinal;\n _this2._dowValue = dow.value();\n return _this2;\n }\n\n var _proto2 = DayOfWeekInMonth.prototype;\n\n _proto2.adjustInto = function adjustInto(temporal) {\n if (this._ordinal >= 0) {\n var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n dowDiff += (this._ordinal - 1) * 7;\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n\n var daysDiff = this._dowValue - _curDow;\n daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n daysDiff -= (-this._ordinal - 1) * 7;\n return _temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return DayOfWeekInMonth;\n}(TemporalAdjuster);\n\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n\n function RelativeDayOfWeek(relative, dayOfWeek) {\n var _this3;\n\n _this3 = _TemporalAdjuster3.call(this) || this;\n requireNonNull(dayOfWeek, 'dayOfWeek');\n _this3._relative = relative;\n _this3._dowValue = dayOfWeek.value();\n return _this3;\n }\n\n var _proto3 = RelativeDayOfWeek.prototype;\n\n _proto3.adjustInto = function adjustInto(temporal) {\n var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n\n if ((this._relative & 1) === 0) {\n var daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n var _daysDiff = this._dowValue - calDow;\n\n return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n _inheritsLoose(IsoChronology, _Enum);\n\n function IsoChronology() {\n return _Enum.apply(this, arguments) || this;\n }\n\n IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n };\n\n var _proto = IsoChronology.prototype;\n\n _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n var current = fieldValues.get(field);\n\n if (current != null && current !== value) {\n throw new DateTimeException('Invalid state, field: ' + field + ' ' + current + ' conflicts with ' + field + ' ' + value);\n }\n\n fieldValues.put(field, value);\n };\n\n _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n\n var era = fieldValues.remove(ChronoField.ERA);\n\n if (era == null) {\n var year = fieldValues.get(ChronoField.YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n } else {\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException('Invalid value for era: ' + era);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n }\n\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var months = moy - 1;\n var days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART) {\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n\n return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n }\n\n var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(_y, doy);\n }\n\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n\n return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n }\n\n var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n\n return date;\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n\n return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n }\n\n var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n\n var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n\n if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n\n return _date;\n }\n }\n }\n\n return null;\n };\n\n _proto.date = function date(temporal) {\n return LocalDate.from(temporal);\n };\n\n return IsoChronology;\n}(Enum);\nfunction _init$e() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetTime, _DefaultInterfaceTemp);\n\n OffsetTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n\n try {\n var time = LocalTime.from(temporal);\n var offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n };\n\n OffsetTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n var now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n };\n\n OffsetTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n };\n\n function OffsetTime(time, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._time = time;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.atDate = function atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n };\n\n _proto.get = function get(field) {\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n\n return this._time.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localTime()) {\n return this._time;\n } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._time.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = OffsetTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end._toEpochNano() - this._toEpochNano();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return Math.floor(nanosUntil / 1000);\n\n case ChronoUnit.MILLIS:\n return Math.floor(nanosUntil / 1000000);\n\n case ChronoUnit.SECONDS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return Math.floor(nanosUntil / (12 * LocalTime.NANOS_PER_HOUR));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._time.plusSeconds(difference);\n\n return new OffsetTime(adjusted, offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n };\n\n _proto._toEpochNano = function _toEpochNano() {\n var nod = this._time.toNanoOfDay();\n\n var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetTime(time, offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n\n var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n\n return compare;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._time.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return OffsetTime;\n}(DefaultInterfaceTemporal);\nfunction _init$f() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n return OffsetTime.from(temporal);\n });\n}\n\nvar ChronoZonedDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoZonedDateTime, _DefaultInterfaceTemp);\n\n function ChronoZonedDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoZonedDateTime.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone();\n } else if (_query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.toInstant = function toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n\n return false;\n };\n\n return ChronoZonedDateTime;\n}(DefaultInterfaceTemporal);\n\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n\n ZonedDateTime.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n ZonedDateTime.of = function of() {\n if (arguments.length <= 2) {\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n };\n\n ZonedDateTime.of3 = function of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n };\n\n ZonedDateTime.of2 = function of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n };\n\n ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n };\n\n ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n\n var offset = null;\n var rules = zone.rules();\n var validOffsets = rules.validOffsets(localDateTime);\n\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n var trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null && validOffsets.some(function (validOffset) {\n return validOffset.equals(preferredOffset);\n })) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset');\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofInstant = function ofInstant() {\n if (arguments.length === 2) {\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n };\n\n ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n };\n\n ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n };\n\n ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n var rules = zone.rules();\n var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n };\n\n ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n\n if (rules.isValidOffset(localDateTime, offset) === false) {\n var trans = rules.transition(localDateTime);\n\n if (trans != null && trans.isGap()) {\n throw new DateTimeException('LocalDateTime ' + localDateTime + ' does not exist in zone ' + zone + ' due to a gap in the local time-line, typically caused by daylight savings');\n }\n\n throw new DateTimeException('ZoneOffset \"' + offset + '\" is not valid for LocalDateTime \"' + localDateTime + '\" in zone \"' + zone + '\"');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n\n var zone = ZoneId.from(temporal);\n\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n var zdt = ZonedDateTime._from(temporal, zone);\n\n if (zdt != null) return zdt;\n }\n\n var ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n };\n\n ZonedDateTime._from = function _from(temporal, zone) {\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if (!(ex instanceof DateTimeException)) throw ex;\n }\n };\n\n ZonedDateTime.__from = function __from(temporal, zone) {\n var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n };\n\n ZonedDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n };\n\n function ZonedDateTime(dateTime, offset, zone) {\n var _this;\n\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n _this = _ChronoZonedDateTime.call(this) || this;\n _this._dateTime = dateTime;\n _this._offset = offset;\n _this._zone = zone;\n return _this;\n }\n\n var _proto = ZonedDateTime.prototype;\n\n _proto._resolveLocal = function _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n };\n\n _proto._resolveInstant = function _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n };\n\n _proto._resolveOffset = function _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n\n return this;\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this._offset.totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n requireNonNull(field, 'field');\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this._dateTime);\n\n if (trans != null && trans.isOverlap()) {\n var earlierOffset = trans.offsetBefore();\n\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this.toLocalDateTime());\n\n if (trans != null) {\n var laterOffset = trans.offsetAfter();\n\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.zone = function zone() {\n return this._zone;\n };\n\n _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n };\n\n _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n var instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return ZonedDateTime._create(newValue, this.nano(), this._zone);\n\n case ChronoField.OFFSET_SECONDS:\n {\n var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n };\n\n _proto.withHour = function withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this.plusHours(-1 * hours);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n requireNonNull(_query, 'query');\n return _ChronoZonedDateTime.prototype.query.call(this, _query);\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = ZonedDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n\n var adjustedEnd = end._dateTime.plusSeconds(difference);\n\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n\n return unit.between(this, end);\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetDateTime = function toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n };\n\n _proto.toString = function toString() {\n var str = this._dateTime.toString() + this._offset.toString();\n\n if (this._offset !== this._zone) {\n str += '[' + this._zone.toString() + ']';\n }\n\n return str;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n };\n\n return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$g() {\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n return ZonedDateTime.from(temporal);\n });\n}\n\nvar OffsetDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetDateTime, _DefaultInterfaceTemp);\n\n OffsetDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n\n try {\n var offset = ZoneOffset.from(temporal);\n\n try {\n var ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n var instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetDateTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n var now = clockOrZone.instant();\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n };\n\n OffsetDateTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n };\n\n OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n var dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n };\n\n OffsetDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n };\n\n function OffsetDateTime(dateTime, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._dateTime = dateTime;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetDateTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = OffsetDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n };\n\n _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n throw new DateTimeException('Field too large for an int: ' + field);\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.get(field);\n }\n\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetTime = function toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n };\n\n _proto.toZonedDateTime = function toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.toInstant = function toInstant() {\n return this._dateTime.toInstant(this._offset);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster);\n\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field);\n\n if (field instanceof ChronoField) {\n var f = field;\n\n switch (f) {\n case ChronoField.INSTANT_SECONDS:\n return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n\n case ChronoField.OFFSET_SECONDS:\n {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetDateTime(dateTime, offset);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._dateTime.plusSeconds(difference);\n\n return new OffsetDateTime(adjusted, offset);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._dateTime.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return OffsetDateTime;\n}(DefaultInterfaceTemporal);\nfunction _init$h() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n return OffsetDateTime.from(temporal);\n });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n _inheritsLoose(LocalDate, _ChronoLocalDate);\n\n LocalDate.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone == null) {\n clock = Clock.systemDefaultZone();\n } else if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDate.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n var offset = zone.rules().offset(instant);\n var epochSec = instant.epochSecond() + offset.totalSeconds();\n var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n };\n\n LocalDate.of = function of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n };\n\n LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n var leap = IsoChronology.isLeapYear(year);\n\n if (dayOfYear === 366 && leap === false) {\n assert(false, 'Invalid date \\'DayOfYear 366\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n }\n\n var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n\n var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n };\n\n LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n if (epochDay === void 0) {\n epochDay = 0;\n }\n\n var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n\n yearEst += adjust;\n var marchDoy0 = doyEst;\n var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n var month = (marchMonth0 + 2) % 12 + 1;\n var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n var year = yearEst;\n return new LocalDate(year, month, dom);\n };\n\n LocalDate.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var date = temporal.query(TemporalQueries.localDate());\n\n if (date == null) {\n throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return date;\n };\n\n LocalDate.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n }\n\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n };\n\n LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n\n return LocalDate.of(year, month, day);\n };\n\n function LocalDate(year, month, dayOfMonth) {\n var _this;\n\n _this = _ChronoLocalDate.call(this) || this;\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n\n LocalDate._validate(_this._year, _this._month, _this._day);\n\n return _this;\n }\n\n LocalDate._validate = function _validate(year, month, dayOfMonth) {\n var dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, 'Invalid date \\'February 29\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n } else {\n assert(false, 'Invalid date \\'' + year + '\\' \\'' + month + '\\' \\'' + dayOfMonth + '\\'', DateTimeException);\n }\n }\n }\n };\n\n var _proto = LocalDate.prototype;\n\n _proto.isSupported = function isSupported(field) {\n return _ChronoLocalDate.prototype.isSupported.call(this, field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return ValueRange.of(1, this.lengthOfMonth());\n\n case ChronoField.DAY_OF_YEAR:\n return ValueRange.of(1, this.lengthOfYear());\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n\n case ChronoField.YEAR_OF_ERA:\n return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n assert(field != null, '', NullPointerException);\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK:\n return this.dayOfWeek().value();\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return MathUtil.intMod(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.DAY_OF_YEAR:\n return this.dayOfYear();\n\n case ChronoField.EPOCH_DAY:\n return this.toEpochDay();\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return MathUtil.intDiv(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._prolepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year >= 1 ? this._year : 1 - this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year >= 1 ? 1 : 0;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto._prolepticMonth = function _prolepticMonth() {\n return this._year * 12 + (this._month - 1);\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n switch (this._month) {\n case 2:\n return this.isLeapYear() ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.DAY_OF_WEEK:\n return this.plusDays(newValue - this.dayOfWeek().value());\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n\n case ChronoField.DAY_OF_MONTH:\n return this.withDayOfMonth(newValue);\n\n case ChronoField.DAY_OF_YEAR:\n return this.withDayOfYear(newValue);\n\n case ChronoField.EPOCH_DAY:\n return LocalDate.ofEpochDay(newValue);\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n if (this._year === year) {\n return this;\n }\n\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n };\n\n _proto.withMonth = function withMonth(month) {\n var m = month instanceof Month ? month.value() : month;\n\n if (this._month === m) {\n return this;\n }\n\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.plusDays(amountToAdd);\n\n case ChronoUnit.WEEKS:\n return this.plusWeeks(amountToAdd);\n\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n };\n\n _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n };\n\n _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this;\n }\n\n return _ChronoLocalDate.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(p1, p2) {\n if (arguments.length < 2) {\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n };\n\n _proto.until2 = function until2(endExclusive, unit) {\n var end = LocalDate.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.daysUntil(end);\n\n case ChronoUnit.WEEKS:\n return MathUtil.intDiv(this.daysUntil(end), 7);\n\n case ChronoUnit.MONTHS:\n return this._monthsUntil(end);\n\n case ChronoUnit.YEARS:\n return MathUtil.intDiv(this._monthsUntil(end), 12);\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(this._monthsUntil(end), 120);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(this._monthsUntil(end), 1200);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(this._monthsUntil(end), 12000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.daysUntil = function daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay();\n };\n\n _proto._monthsUntil = function _monthsUntil(end) {\n var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n return MathUtil.intDiv(packed2 - packed1, 32);\n };\n\n _proto.until1 = function until1(endDate) {\n var end = LocalDate.from(endDate);\n\n var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n\n var days = end._day - this._day;\n\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n var calcDate = this.plusMonths(totalMonths);\n days = end.toEpochDay() - calcDate.toEpochDay();\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n\n var years = MathUtil.intDiv(totalMonths, 12);\n var months = MathUtil.intMod(totalMonths, 12);\n return Period.of(years, months, days);\n };\n\n _proto.atTime = function atTime() {\n if (arguments.length === 1) {\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n };\n\n _proto.atTime1 = function atTime1(time) {\n requireNonNull(time, 'time');\n\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException('time must be an instance of LocalTime or OffsetTime' + (time && time.constructor && time.constructor.name ? ', but is ' + time.constructor.name : ''));\n }\n };\n\n _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n };\n\n _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n };\n\n _proto.atStartOfDay = function atStartOfDay(zone) {\n if (zone != null) {\n return this.atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n };\n\n _proto.atStartOfDayWithZone = function atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n var ldt = this.atTime(LocalTime.MIDNIGHT);\n\n if (zone instanceof ZoneOffset === false) {\n var trans = zone.rules().transition(ldt);\n\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n\n return ZonedDateTime.of(ldt, zone);\n };\n\n _proto.toEpochDay = function toEpochDay() {\n var y = this._year;\n var m = this._month;\n var total = 0;\n total += 365 * y;\n\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n\n if (m > 2) {\n total--;\n\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n\n return total - DAYS_0000_TO_1970;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(otherDate) {\n var cmp = this._year - otherDate._year;\n\n if (cmp === 0) {\n cmp = this._month - otherDate._month;\n\n if (cmp === 0) {\n cmp = this._day - otherDate._day;\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n };\n\n _proto.toString = function toString() {\n var dayString, monthString, yearString;\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n var absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = '-' + ('' + (yearValue - 10000)).slice(-4);\n } else {\n yearString = ('' + (yearValue + 10000)).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = '+' + yearValue;\n } else {\n yearString = '' + yearValue;\n }\n }\n\n if (monthValue < 10) {\n monthString = '-0' + monthValue;\n } else {\n monthString = '-' + monthValue;\n }\n\n if (dayValue < 10) {\n dayString = '-0' + dayValue;\n } else {\n dayString = '-' + dayValue;\n }\n\n return yearString + monthString + dayString;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return _ChronoLocalDate.prototype.format.call(this, formatter);\n };\n\n return LocalDate;\n}(ChronoLocalDate);\nfunction _init$i() {\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n return LocalDate.from(temporal);\n });\n}\n\nvar ChronoLocalDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDateTime, _DefaultInterfaceTemp);\n\n function ChronoLocalDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDateTime.prototype;\n\n _proto.chronology = function chronology() {\n return this.toLocalDate().chronology();\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n };\n\n _proto.toInstant = function toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n };\n\n return ChronoLocalDateTime;\n}(DefaultInterfaceTemporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n\n LocalDateTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalDateTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.of = function of() {\n if (arguments.length <= 2) {\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var date = LocalDate.of(year, month, dayOfMonth);\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n var offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n };\n\n LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n if (epochSecond === void 0) {\n epochSecond = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n\n requireNonNull(offset, 'offset');\n var localSecond = epochSecond + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n\n try {\n var date = LocalDate.from(temporal);\n var time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n LocalDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n };\n\n function LocalDateTime(date, time) {\n var _this;\n\n _this = _ChronoLocalDateTime.call(this) || this;\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n _this._date = date;\n _this._time = time;\n return _this;\n }\n\n var _proto = LocalDateTime.prototype;\n\n _proto._withDateTime = function _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n\n return new LocalDateTime(newDate, newTime);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n }\n\n return _ChronoLocalDateTime.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.year = function year() {\n return this._date.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._date.monthValue();\n };\n\n _proto.month = function month() {\n return this._date.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._date.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._date.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._date.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n };\n\n _proto.withHour = function withHour(hour) {\n var newTime = this._time.withHour(hour);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withMinute = function withMinute(minute) {\n var newTime = this._time.withMinute(minute);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withSecond = function withSecond(second) {\n var newTime = this._time.withSecond(second);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n var newTime = this._time.withNano(nanoOfSecond);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n }\n\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n var newDate = this._date.plusYears(years);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n var newDate = this._date.plusMonths(months);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n var newDate = this._date.plusWeeks(weeks);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusDays = function plusDays(days) {\n var newDate = this._date.plusDays(days);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n };\n\n _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n\n var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n totDays *= sign;\n var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n\n var curNoD = this._time.toNanoOfDay();\n\n totNanos = totNanos * sign + curNoD;\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n return _ChronoLocalDateTime.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n var daysUntil = this._date.daysUntil(end._date);\n\n var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n\n var amount = daysUntil;\n\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n var endDate = end._date;\n var endTime = end._time;\n\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n\n return this._date.until(endDate, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.of(this, zone);\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._date;\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(other) {\n var cmp = this._date.compareTo(other.toLocalDate());\n\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._date.toString() + 'T' + this._time.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$j() {\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n return LocalDateTime.from(temporal);\n });\n}\n\nvar LocalTime = function (_Temporal) {\n _inheritsLoose(LocalTime, _Temporal);\n\n LocalTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalTime._now = function _now(clock) {\n if (clock === void 0) {\n clock = Clock.systemDefaultZone();\n }\n\n requireNonNull(clock, 'clock');\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n var offset = zone.rules().offset(instant);\n var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n };\n\n LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n };\n\n LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n if (secondOfDay === void 0) {\n secondOfDay = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n };\n\n LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n if (nanoOfDay === void 0) {\n nanoOfDay = 0;\n }\n\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n };\n\n LocalTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var time = temporal.query(TemporalQueries.localTime());\n\n if (time == null) {\n throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return time;\n };\n\n LocalTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n };\n\n function LocalTime(hour, minute, second, nanoOfSecond) {\n var _this;\n\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n _this = _Temporal.call(this) || this;\n\n var _hour = MathUtil.safeToInt(hour);\n\n var _minute = MathUtil.safeToInt(minute);\n\n var _second = MathUtil.safeToInt(second);\n\n var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n }\n\n return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n }\n\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n return _this;\n }\n\n LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n };\n\n var _proto = LocalTime.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n requireNonNull(field);\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nano;\n\n case ChronoField.NANO_OF_DAY:\n return this.toNanoOfDay();\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this._second;\n\n case ChronoField.SECOND_OF_DAY:\n return this.toSecondOfDay();\n\n case ChronoField.MINUTE_OF_HOUR:\n return this._minute;\n\n case ChronoField.MINUTE_OF_DAY:\n return this._hour * 60 + this._minute;\n\n case ChronoField.HOUR_OF_AMPM:\n return MathUtil.intMod(this._hour, 12);\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n {\n var ham = MathUtil.intMod(this._hour, 12);\n return ham % 12 === 0 ? 12 : ham;\n }\n\n case ChronoField.HOUR_OF_DAY:\n return this._hour;\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this._hour === 0 ? 24 : this._hour;\n\n case ChronoField.AMPM_OF_DAY:\n return MathUtil.intDiv(this._hour, 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto.hour = function hour() {\n return this._hour;\n };\n\n _proto.minute = function minute() {\n return this._minute;\n };\n\n _proto.second = function second() {\n return this._second;\n };\n\n _proto.nano = function nano() {\n return this._nano;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this.withNano(newValue);\n\n case ChronoField.NANO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue);\n\n case ChronoField.MICRO_OF_SECOND:\n return this.withNano(newValue * 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return this.withNano(newValue * 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this.withSecond(newValue);\n\n case ChronoField.SECOND_OF_DAY:\n return this.plusSeconds(newValue - this.toSecondOfDay());\n\n case ChronoField.MINUTE_OF_HOUR:\n return this.withMinute(newValue);\n\n case ChronoField.MINUTE_OF_DAY:\n return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n\n case ChronoField.HOUR_OF_AMPM:\n return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.HOUR_OF_DAY:\n return this.withHour(newValue);\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this.withHour(newValue === 24 ? 0 : newValue);\n\n case ChronoField.AMPM_OF_DAY:\n return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withHour = function withHour(hour) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (this._hour === hour) {\n return this;\n }\n\n return new LocalTime(hour, this._minute, this._second, this._nano);\n };\n\n _proto.withMinute = function withMinute(minute) {\n if (minute === void 0) {\n minute = 0;\n }\n\n if (this._minute === minute) {\n return this;\n }\n\n return new LocalTime(this._hour, minute, this._second, this._nano);\n };\n\n _proto.withSecond = function withSecond(second) {\n if (second === void 0) {\n second = 0;\n }\n\n if (this._second === second) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, second, this._nano);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (this._nano === nanoOfSecond) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n\n var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n\n if (mofd === newMofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n\n var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n\n if (sofd === newSofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n\n var nofd = this.toNanoOfDay();\n var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n\n if (nofd === newNofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localTime()) {\n return this;\n }\n\n if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(nanosUntil, 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.intDiv(nanosUntil, 1000000);\n\n case ChronoUnit.SECONDS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDate = function atDate(date) {\n return LocalDateTime.of(date, this);\n };\n\n _proto.toSecondOfDay = function toSecondOfDay() {\n var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n };\n\n _proto.toNanoOfDay = function toNanoOfDay() {\n var total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n };\n\n _proto.toString = function toString() {\n var buf = '';\n var hourValue = this._hour;\n var minuteValue = this._minute;\n var secondValue = this._second;\n var nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n\n if (nanoValue > 0) {\n buf += '.';\n\n if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n } else {\n buf += ('' + (nanoValue + 1000000000)).substring(1);\n }\n }\n }\n\n return buf;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalTime;\n}(Temporal);\nfunction _init$k() {\n LocalTime.HOURS = [];\n\n for (var hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n LocalTime.MIN = LocalTime.HOURS[0];\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n LocalTime.NOON = LocalTime.HOURS[12];\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n return LocalTime.from(temporal);\n });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n _inheritsLoose(Instant, _Temporal);\n\n Instant.now = function now(clock) {\n if (clock === void 0) {\n clock = Clock.systemUTC();\n }\n\n return clock.instant();\n };\n\n Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n };\n\n Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n var secs = MathUtil.floorDiv(epochMilli, 1000);\n var mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n };\n\n Instant.from = function from(temporal) {\n try {\n var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Instant from TemporalAccessor: ' + temporal + ', type ' + typeof temporal, ex);\n }\n };\n\n Instant.parse = function parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n };\n\n Instant._create = function _create(seconds, nanoOfSecond) {\n if (seconds === 0 && nanoOfSecond === 0) {\n return Instant.EPOCH;\n }\n\n return new Instant(seconds, nanoOfSecond);\n };\n\n Instant._validate = function _validate(seconds, nanoOfSecond) {\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n };\n\n function Instant(seconds, nanoOfSecond) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n\n Instant._validate(seconds, nanoOfSecond);\n\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n return _this;\n }\n\n var _proto = Instant.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nanos;\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nanos, 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n\n case ChronoField.INSTANT_SECONDS:\n return this._seconds;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.epochSecond = function epochSecond() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.MILLI_OF_SECOND:\n {\n var nval = newValue * NANOS_PER_MILLI;\n return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n }\n\n case ChronoField.MICRO_OF_SECOND:\n {\n var _nval = newValue * 1000;\n\n return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n }\n\n case ChronoField.NANO_OF_SECOND:\n return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n\n case ChronoField.INSTANT_SECONDS:\n return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n\n var result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this._plus(MathUtil.intDiv(amountToAdd, 1000000), MathUtil.intMod(amountToAdd, 1000000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n\n case ChronoUnit.DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n };\n\n _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n\n if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = Instant.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this._nanosUntil(end);\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(this._nanosUntil(end), 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n\n case ChronoUnit.SECONDS:\n return this._secondsUntil(end);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto._nanosUntil = function _nanosUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n };\n\n _proto._secondsUntil = function _secondsUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var nanosDiff = end.nano() - this.nano();\n\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n\n return secsDiff;\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n var millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n };\n\n _proto.compareTo = function compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherInstant._nanos;\n };\n\n _proto.isAfter = function isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n };\n\n _proto.isBefore = function isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Instant) {\n return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n };\n\n _proto.toString = function toString() {\n return DateTimeFormatter.ISO_INSTANT.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Instant;\n}(Temporal);\nfunction _init$l() {\n Instant.MIN_SECONDS = -31619119219200;\n Instant.MAX_SECONDS = 31494816403199;\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n return Instant.from(temporal);\n });\n}\n\nvar Clock = function () {\n function Clock() {}\n\n Clock.systemUTC = function systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n };\n\n Clock.systemDefaultZone = function systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n };\n\n Clock.system = function system(zone) {\n return new SystemClock(zone);\n };\n\n Clock.fixed = function fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n };\n\n Clock.offset = function offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration);\n };\n\n var _proto = Clock.prototype;\n\n _proto.millis = function millis() {\n abstractMethodFail('Clock.millis');\n };\n\n _proto.instant = function instant() {\n abstractMethodFail('Clock.instant');\n };\n\n _proto.zone = function zone() {\n abstractMethodFail('Clock.zone');\n };\n\n _proto.withZone = function withZone() {\n abstractMethodFail('Clock.withZone');\n };\n\n return Clock;\n}();\n\nvar SystemClock = function (_Clock) {\n _inheritsLoose(SystemClock, _Clock);\n\n function SystemClock(zone) {\n var _this;\n\n requireNonNull(zone, 'zone');\n _this = _Clock.call(this) || this;\n _this._zone = zone;\n return _this;\n }\n\n var _proto2 = SystemClock.prototype;\n\n _proto2.zone = function zone() {\n return this._zone;\n };\n\n _proto2.millis = function millis() {\n return new Date().getTime();\n };\n\n _proto2.instant = function instant() {\n return Instant.ofEpochMilli(this.millis());\n };\n\n _proto2.equals = function equals(obj) {\n if (obj instanceof SystemClock) {\n return this._zone.equals(obj._zone);\n }\n\n return false;\n };\n\n _proto2.withZone = function withZone(zone) {\n if (zone.equals(this._zone)) {\n return this;\n }\n\n return new SystemClock(zone);\n };\n\n _proto2.toString = function toString() {\n return 'SystemClock[' + this._zone.toString() + ']';\n };\n\n return SystemClock;\n}(Clock);\n\nvar FixedClock = function (_Clock2) {\n _inheritsLoose(FixedClock, _Clock2);\n\n function FixedClock(fixedInstant, zoneId) {\n var _this2;\n\n _this2 = _Clock2.call(this) || this;\n _this2._instant = fixedInstant;\n _this2._zoneId = zoneId;\n return _this2;\n }\n\n var _proto3 = FixedClock.prototype;\n\n _proto3.instant = function instant() {\n return this._instant;\n };\n\n _proto3.millis = function millis() {\n return this._instant.toEpochMilli();\n };\n\n _proto3.zone = function zone() {\n return this._zoneId;\n };\n\n _proto3.toString = function toString() {\n return 'FixedClock[]';\n };\n\n _proto3.equals = function equals(obj) {\n if (obj instanceof FixedClock) {\n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n\n return false;\n };\n\n _proto3.withZone = function withZone(zone) {\n if (zone.equals(this._zoneId)) {\n return this;\n }\n\n return new FixedClock(this._instant, zone);\n };\n\n return FixedClock;\n}(Clock);\n\nvar OffsetClock = function (_Clock3) {\n _inheritsLoose(OffsetClock, _Clock3);\n\n function OffsetClock(baseClock, offset) {\n var _this3;\n\n _this3 = _Clock3.call(this) || this;\n _this3._baseClock = baseClock;\n _this3._offset = offset;\n return _this3;\n }\n\n var _proto4 = OffsetClock.prototype;\n\n _proto4.zone = function zone() {\n return this._baseClock.zone();\n };\n\n _proto4.withZone = function withZone(zone) {\n if (zone.equals(this._baseClock.zone())) {\n return this;\n }\n\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n };\n\n _proto4.millis = function millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n };\n\n _proto4.instant = function instant() {\n return this._baseClock.instant().plus(this._offset);\n };\n\n _proto4.equals = function equals(obj) {\n if (obj instanceof OffsetClock) {\n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n\n return false;\n };\n\n _proto4.toString = function toString() {\n return 'OffsetClock[' + this._baseClock + ',' + this._offset + ']';\n };\n\n return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n };\n\n function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n\n if (transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n var _proto = ZoneOffsetTransition.prototype;\n\n _proto.instant = function instant() {\n return this._transition.toInstant(this._offsetBefore);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n };\n\n _proto.dateTimeBefore = function dateTimeBefore() {\n return this._transition;\n };\n\n _proto.dateTimeAfter = function dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n };\n\n _proto.offsetBefore = function offsetBefore() {\n return this._offsetBefore;\n };\n\n _proto.offsetAfter = function offsetAfter() {\n return this._offsetAfter;\n };\n\n _proto.duration = function duration() {\n return Duration.ofSeconds(this.durationSeconds());\n };\n\n _proto.durationSeconds = function durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n };\n\n _proto.isGap = function isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n };\n\n _proto.isOverlap = function isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n };\n\n _proto.isValidOffset = function isValidOffset(offset) {\n return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n };\n\n _proto.validOffsets = function validOffsets() {\n if (this.isGap()) {\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n };\n\n _proto.compareTo = function compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ZoneOffsetTransition) {\n var d = other;\n return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n };\n\n _proto.toString = function toString() {\n return 'Transition[' + (this.isGap() ? 'Gap' : 'Overlap') + ' at ' + this._transition.toString() + this._offsetBefore.toString() + ' to ' + this._offsetAfter + ']';\n };\n\n return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$m() {\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n return temporal.query(TemporalQueries.CHRONO);\n });\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n return temporal.query(TemporalQueries.PRECISION);\n });\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n\n return null;\n });\n TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n var zone = temporal.query(TemporalQueries.ZONE_ID);\n return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n });\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n\n return null;\n });\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n\n return null;\n });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n\n function SystemDefaultZoneRules() {\n return _ZoneRules.apply(this, arguments) || this;\n }\n\n var _proto = SystemDefaultZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n return false;\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n return [this.offsetOfLocalDateTime(localDateTime)];\n };\n\n _proto.transition = function transition() {\n return null;\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n return this.offsetOfInstant(instant);\n };\n\n _proto.daylightSavings = function daylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isDaylightSavings = function isDaylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n };\n\n _proto.nextTransition = function nextTransition() {\n this._throwNotSupported();\n };\n\n _proto.previousTransition = function previousTransition() {\n this._throwNotSupported();\n };\n\n _proto.transitions = function transitions() {\n this._throwNotSupported();\n };\n\n _proto.transitionRules = function transitionRules() {\n this._throwNotSupported();\n };\n\n _proto._throwNotSupported = function _throwNotSupported() {\n throw new DateTimeException('not supported operation');\n };\n\n _proto.equals = function equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.toString = function toString() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n\n function SystemDefaultZoneId() {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._rules = new SystemDefaultZoneRules();\n return _this;\n }\n\n var _proto = SystemDefaultZoneId.prototype;\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n return false;\n };\n\n _proto.id = function id() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n function ZoneIdFactory() {}\n\n ZoneIdFactory.systemDefault = function systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n };\n\n ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n };\n\n ZoneIdFactory.of = function of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n\n if (zoneId.length === 1) {\n throw new DateTimeException('Invalid zone: ' + zoneId);\n }\n\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n var offset = ZoneOffset.of(zoneId.substring(3));\n\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n var _offset = ZoneOffset.of(zoneId.substring(2));\n\n if (_offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', _offset.rules());\n }\n\n return new ZoneRegion('UT' + _offset.id(), _offset.rules());\n }\n\n if (zoneId === 'SYSTEM') {\n return ZoneId.systemDefault();\n }\n\n return ZoneRegion.ofId(zoneId);\n };\n\n ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n\n if (prefix.length === 0) {\n return offset;\n }\n\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n\n throw new IllegalArgumentException('Invalid prefix, must be GMT, UTC or UT: ' + prefix);\n };\n\n ZoneIdFactory.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var obj = temporal.query(TemporalQueries.zone());\n\n if (obj == null) {\n throw new DateTimeException('Unable to obtain ZoneId from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return obj;\n };\n\n return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init$n() {\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\n\nfunction init() {\n if (isInit) {\n return;\n }\n\n isInit = true;\n _init$1();\n _init();\n _init$2();\n _init$3();\n _init$k();\n _init$8();\n _init$m();\n _init$4();\n _init$l();\n _init$i();\n _init$j();\n _init$d();\n _init$5();\n _init$c();\n _init$b();\n _init$6();\n _init$7();\n _init$g();\n _init$n();\n _init$e();\n _init$a();\n _init$9();\n _init$h();\n _init$f();\n}\n\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar ToNativeJsConverter = function () {\n function ToNativeJsConverter(temporal, zone) {\n var zonedDateTime;\n\n if (temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException('unsupported instance for convert operation:' + temporal);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n var _proto = ToNativeJsConverter.prototype;\n\n _proto.toDate = function toDate() {\n return new Date(this.instant.toEpochMilli());\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n return this.instant.toEpochMilli();\n };\n\n return ToNativeJsConverter;\n}();\n\nfunction convert(temporal, zone) {\n return new ToNativeJsConverter(temporal, zone);\n}\n\nvar NativeJsTemporal = function (_TemporalAccessor) {\n _inheritsLoose(NativeJsTemporal, _TemporalAccessor);\n\n function NativeJsTemporal(date, zone) {\n var _this;\n\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n _this = _TemporalAccessor.call(this) || this;\n _this._zone = zone;\n\n if (date instanceof Date) {\n _this._epochMilli = date.getTime();\n return _assertThisInitialized(_this);\n } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n _this._epochMilli = date.toDate().getTime();\n return _assertThisInitialized(_this);\n }\n\n assert(false, 'date must be either a javascript date or a moment');\n return _this;\n }\n\n var _proto = NativeJsTemporal.prototype;\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.localTime()) {\n return LocalTime.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.zone()) {\n return this._zone;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return MathUtil.floorMod(this._epochMilli, 1000) * 1000000;\n\n case ChronoField.INSTANT_SECONDS:\n return MathUtil.floorDiv(this._epochMilli, 1000);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n return field === ChronoField.INSTANT_SECONDS || field === ChronoField.NANO_OF_SECOND;\n };\n\n return NativeJsTemporal;\n}(TemporalAccessor);\n\nfunction nativeJs(date, zone) {\n return new NativeJsTemporal(date, zone);\n}\n\nfunction bindUse(jsJoda) {\n var used = [];\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n\n return jsJoda;\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n assert: assert$1,\n DateTimeBuilder: DateTimeBuilder,\n DateTimeParseContext: DateTimeParseContext,\n DateTimePrintContext: DateTimePrintContext,\n MathUtil: MathUtil,\n StringUtil: StringUtil,\n StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n _: _,\n convert: convert,\n nativeJs: nativeJs,\n ArithmeticException: ArithmeticException,\n DateTimeException: DateTimeException,\n DateTimeParseException: DateTimeParseException,\n IllegalArgumentException: IllegalArgumentException,\n IllegalStateException: IllegalStateException,\n UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n NullPointerException: NullPointerException,\n Clock: Clock,\n DayOfWeek: DayOfWeek,\n Duration: Duration,\n Instant: Instant,\n LocalDate: LocalDate,\n LocalTime: LocalTime,\n LocalDateTime: LocalDateTime,\n OffsetTime: OffsetTime,\n OffsetDateTime: OffsetDateTime,\n Month: Month,\n MonthDay: MonthDay,\n Period: Period,\n Year: Year,\n YearConstants: YearConstants,\n YearMonth: YearMonth,\n ZonedDateTime: ZonedDateTime,\n ZoneOffset: ZoneOffset,\n ZoneId: ZoneId,\n ZoneRegion: ZoneRegion,\n ZoneOffsetTransition: ZoneOffsetTransition,\n ZoneRules: ZoneRules,\n ZoneRulesProvider: ZoneRulesProvider,\n ChronoLocalDate: ChronoLocalDate,\n ChronoLocalDateTime: ChronoLocalDateTime,\n ChronoZonedDateTime: ChronoZonedDateTime,\n IsoChronology: IsoChronology,\n ChronoField: ChronoField,\n ChronoUnit: ChronoUnit,\n IsoFields: IsoFields,\n Temporal: Temporal,\n TemporalAccessor: TemporalAccessor,\n TemporalAdjuster: TemporalAdjuster,\n TemporalAdjusters: TemporalAdjusters,\n TemporalAmount: TemporalAmount,\n TemporalField: TemporalField,\n TemporalQueries: TemporalQueries,\n TemporalQuery: TemporalQuery,\n TemporalUnit: TemporalUnit,\n ValueRange: ValueRange,\n DateTimeFormatter: DateTimeFormatter,\n DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n DecimalStyle: DecimalStyle,\n ResolverStyle: ResolverStyle,\n SignStyle: SignStyle,\n TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package earth.worldwind.tutorials\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.AssetResource\nimport dev.icerock.moko.resources.ColorResource\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.FontResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.PluralsResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.StringResource\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"5b523fff23bca4fe61ec3c86ce4b025e\"\n\n public actual object strings : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object plurals : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object images : ResourceContainer {\n public actual val aircraft_fighter: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fighter.png\\\")\") as String, fileName = \"aircraft_fighter.png\")\n\n public actual val aircraft_fixwing: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fixwing.png\\\")\") as String, fileName = \"aircraft_fixwing.png\")\n\n public actual val airport_terminal: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/airport_terminal.png\\\")\") as String, fileName = \"airport_terminal.png\")\n\n public actual val ehipcc: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/ehipcc.png\\\")\") as String, fileName = \"ehipcc.png\")\n\n public actual val pattern_sample_houndstooth: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/pattern_sample_houndstooth.png\\\")\") as String, fileName =\n \"pattern_sample_houndstooth.png\")\n\n public actual val worldwind_logo: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_logo.png\\\")\") as String, fileName = \"worldwind_logo.png\")\n\n public override fun values(): List = listOf(aircraft_fighter, aircraft_fixwing,\n airport_terminal, ehipcc, pattern_sample_houndstooth, worldwind_logo)\n }\n\n public actual object fonts : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object files : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object colors : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object assets : ResourceContainer {\n public override fun values(): List = listOf()\n }\n}\n","package earth.worldwind.tutorials\n\nabstract class AbstractTutorial {\n\n /**\n * Defines a list of custom actions\n */\n open val actions: ArrayList? = null\n\n /**\n * Runs any of custom actions listed in [actions]\n */\n open fun runAction(actionName: String) {}\n\n /**\n * Runs after switching to this example\n */\n open fun start() {}\n\n /**\n * Runs before switching to another example\n */\n open fun stop() {}\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport kotlinx.datetime.Clock\n\nclass BasicTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n var starFieldLayer: StarFieldLayer? = null\n var atmosphereLayer: AtmosphereLayer? = null\n\n override fun start() {\n super.start()\n engine.layers.run {\n val time = Clock.System.now()\n starFieldLayer = (getLayer(indexOfLayerNamed(\"StarField\")) as StarFieldLayer).apply { this.time = time }\n atmosphereLayer = (getLayer(indexOfLayerNamed(\"Atmosphere\")) as AtmosphereLayer).apply { this.time = time }\n }\n }\n\n override fun stop() {\n super.stop()\n starFieldLayer?.time = null\n atmosphereLayer?.time = null\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\n\nclass CameraViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setCameraAction()\n }\n\n private fun setCameraAction() {\n // Create a view of Point Mugu airport as seen from an aircraft above Oxnard, CA.\n val aircraft = Position.fromDegrees(34.2, -119.2, 3000.0) // Above Oxnard CA, altitude in meters\n val airport = Position.fromDegrees(34.1192744, -119.1195850, 4.0) // KNTD airport, Point Mugu CA, altitude MSL\n\n // Compute heading and tilt angles from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply the camera view\n engine.camera.set(\n aircraft.latitude, aircraft.longitude, aircraft.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Ellipse\n\nclass EllipsesTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Ellipses\").apply {\n // Create a surface ellipse with the default attributes, a 500km major-radius and a 300km minor-radius. Surface\n // ellipses are configured with a CLAMP_TO_GROUND altitudeMode and followTerrain set to true.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with custom attributes that make the interior 50% transparent and increase the\n // outline width.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -100.0, 0.0), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with a heading of 45 degrees, causing the semi-major axis to point Northeast and the\n // semi-minor axis to point Southeast.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n heading = 45.0.degrees\n }\n )\n\n // Create a surface circle with the default attributes and 400km radius.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -100.0, 0.0), 400000.0, 400000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create an ellipse with the default attributes, an altitude of 200 km, and a 500km major-radius and a 300km\n // minor-radius.\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -120.0, 200e3), 500000.0, 300000.0)\n )\n\n // Create an ellipse with custom attributes that make the interior 50% transparent and an extruded outline with\n // vertical lines\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -100.0, 200e3), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n isDrawVerticals = true\n }\n isExtrude = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-110.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmInline\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n@JvmInline\nvalue class Angle private constructor(\n /**\n * Size of this angle in degrees.\n */\n val inDegrees: Double\n): Comparable {\n /**\n * Size of this angle in radians. This may be useful for functions, which\n * generally take radians as trigonometric arguments.\n */\n val inRadians get() = toRadians(inDegrees)\n /**\n * Size of this angle in minutes.\n */\n val inMinutes get() = toMinutes(inDegrees)\n /**\n * Size of this angle in seconds.\n */\n val inSeconds get() = toSeconds(inDegrees)\n /**\n * Size of this angle in milliradians.\n */\n val inMrad get() = toMrad(inDegrees)\n /**\n * Size of this angle in mil NATO.\n */\n val inMilNATO get() = toMilNATO(inDegrees)\n /**\n * Size of this angle in mil Warsaw Pact.\n */\n val inMilWP get() = toMilWP(inDegrees)\n /**\n * Size of this angle in Streck.\n */\n val inStreck get() = toStreck(inDegrees)\n /**\n * Size of this angle in minute of angle (MOA).\n */\n val inMOA get() = toMOA(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of latitude, [-90, 90].\n */\n val isValidLatitude get() = isValidLatitude(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of longitude, [-180, 180].\n */\n val isValidLongitude get() = isValidLongitude(inDegrees)\n /**\n * Returns North or South notation depends on sign\n */\n val latitudeLetter get() = if (inDegrees < 0.0) \"S\" else \"N\"\n /**\n * Returns West or East notation depends on sign\n */\n val longitudeLetter get() = if (inDegrees < 0.0) \"W\" else \"E\"\n\n companion object {\n /** Represents an angle of zero degrees */\n @JvmStatic val ZERO = 0.0.degrees\n /** Represents a right angle of positive 90 degrees */\n @JvmStatic val POS90 = 90.0.degrees\n /** Represents a right angle of negative 90 degrees */\n @JvmStatic val NEG90 = (-90.0).degrees\n /** Represents an angle of positive 180 degrees */\n @JvmStatic val POS180 = 180.0.degrees\n /** Represents an angle of negative 180 degrees */\n @JvmStatic val NEG180 = (-180.0).degrees\n /** Represents an angle of positive 360 degrees */\n @JvmStatic val POS360 = 360.0.degrees\n /** Represents an angle of negative 360 degrees */\n @JvmStatic val NEG360 = (-360.0).degrees\n /** Represents an angle of 1 minute */\n @JvmStatic val MINUTE = (1.0 / 60.0).degrees\n /** Represents an angle of 1 second */\n @JvmStatic val SECOND = (1.0 / 3600.0).degrees\n /**\n * Conversion factor for degrees to radians.\n */\n const val DEGREES_TO_RADIANS = PI / 180.0\n /**\n * Conversion factor for radians to degrees.\n */\n const val RADIANS_TO_DEGREES = 180.0 / PI\n /**\n * Conversion factor for degrees to minutes.\n */\n const val DEGREES_TO_MINUTES = 60.0\n /**\n * Conversion factor for minutes to degrees.\n */\n const val MINUTES_TO_DEGREES = 1.0 / 60.0\n /**\n * Conversion factor for degrees to seconds.\n */\n const val DEGREES_TO_SECONDS = 3600.0\n /**\n * Conversion factor for seconds to degrees.\n */\n const val SECONDS_TO_DEGREES = 1.0 / 3600.0\n /**\n * Conversion factor for degrees to milliradians.\n */\n const val DEGREES_TO_MRAD = PI * 2.0 / 360.0\n /**\n * Conversion factor for milliradians to degrees.\n */\n const val MRAD_TO_DEGREES = 360.0 / PI / 2.0\n /**\n * Conversion factor for degrees to milliradians (NATO).\n */\n const val DEGREES_TO_MIL_NATO = 6400.0 / 360.0\n /**\n * Conversion factor for milliradians (NATO) to degrees.\n */\n const val MIL_NATO_TO_DEGREES = 360.0 / 6400.0\n /**\n * Conversion factor for degrees to milliradians (Warsaw Pact).\n */\n const val DEGREES_TO_MIL_WP = 6000.0 / 360.0\n /**\n * Conversion factor for milliradians (Warsaw Pact) to degrees.\n */\n const val MIL_WP_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to milliradians (Sweden).\n */\n const val DEGREES_TO_STRECK = 6300.0 / 360.0\n /**\n * Conversion factor for milliradians (Sweden) to degrees.\n */\n const val STRECK_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to minute of angle (MOA).\n */\n const val DEGREES_TO_MOA = 21600.0 / 360.0\n /**\n * Conversion factor for minute of angle (MOA) to degrees.\n */\n const val MOA_TO_DEGREES = 360.0 / 21600.0\n\n /**\n * Returns an Angle equal to this Double number in degrees.\n */\n inline val Double.degrees get() = fromDegrees(this)\n\n /**\n * Returns an Angle equal to this Double number in radians.\n */\n inline val Double.radians get() = fromRadians(this)\n\n /**\n * Returns an Angle equal to this Double number in minutes.\n */\n inline val Double.minutes get() = fromMinutes(this)\n\n /**\n * Returns an Angle equal to this Double number in seconds.\n */\n inline val Double.seconds get() = fromSeconds(this)\n\n /**\n * Returns an Angle equal to this Double number in milliradians.\n */\n inline val Double.mrad get() = fromMrad(this)\n\n /**\n * Returns an Angle equal to this Double number in mil NATO.\n */\n inline val Double.milNATO get() = fromMilNATO(this)\n\n /**\n * Returns an Angle equal to this Double number in mil Warsaw Pact.\n */\n inline val Double.milWP get() = fromMilWP(this)\n\n /**\n * Returns an Angle equal to this Double number in Streck.\n */\n inline val Double.streck get() = fromStreck(this)\n\n /**\n * Returns an Angle equal to this Double number in minute of angle (MOA).\n */\n inline val Double.MOA get() = fromMOA(this)\n\n /**\n * Convert radians to degrees\n *\n * @param radians value in radians\n *\n * @return value in degrees\n */\n @JvmStatic fun toDegrees(radians: Double) = radians * RADIANS_TO_DEGREES\n\n /**\n * Convert degrees to radians\n *\n * @param degrees value in degrees\n *\n * @return value in radians\n */\n @JvmStatic fun toRadians(degrees: Double) = degrees * DEGREES_TO_RADIANS\n\n /**\n * Convert degrees to minutes\n *\n * @param degrees value in degrees\n *\n * @return value in minutes\n */\n @JvmStatic fun toMinutes(degrees: Double) = degrees * DEGREES_TO_MINUTES\n\n /**\n * Convert degrees to seconds\n *\n * @param degrees value in degrees\n *\n * @return value in seconds\n */\n @JvmStatic fun toSeconds(degrees: Double) = degrees * DEGREES_TO_SECONDS\n\n /**\n * Convert degrees to milliradians\n *\n * @param degrees value in degrees\n *\n * @return value in milliradians\n */\n @JvmStatic fun toMrad(degrees: Double) = degrees * DEGREES_TO_MRAD\n\n /**\n * Convert degrees to mil NATO\n *\n * @param degrees value in degrees\n *\n * @return value in mil NATO\n */\n @JvmStatic fun toMilNATO(degrees: Double) = degrees * DEGREES_TO_MIL_NATO\n\n /**\n * Convert degrees to mil Warsaw Pact\n *\n * @param degrees value in degrees\n *\n * @return value in mil Warsaw Pact\n */\n @JvmStatic fun toMilWP(degrees: Double) = degrees * DEGREES_TO_MIL_WP\n\n /**\n * Convert degrees to Streck\n *\n * @param degrees value in degrees\n *\n * @return value in mil Streck\n */\n @JvmStatic fun toStreck(degrees: Double) = degrees * DEGREES_TO_STRECK\n\n /**\n * Convert degrees to minute of angle (MOA)\n *\n * @param degrees value in degrees\n *\n * @return value in minute of angle (MOA)\n */\n @JvmStatic fun toMOA(degrees: Double) = degrees * DEGREES_TO_MOA\n\n /**\n * Obtains an angle from a specified number of degrees.\n *\n * @param degrees the size in degrees of the angle to be obtained\n *\n * @return a new angle, whose size in degrees is given by [degrees]\n */\n @JvmStatic fun fromDegrees(degrees: Double) = Angle(degrees)\n\n /**\n * Obtains an angle from a specified number of radians.\n *\n * @param radians the size in radians of the angle to be obtained.\n *\n * @return a new angle, whose size in radians is given by [radians].\n */\n @JvmStatic fun fromRadians(radians: Double) = Angle(radians * RADIANS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minutes.\n *\n * @param minutes the size in minutes of the angle to be obtained.\n *\n * @return a new angle, whose size in minutes is given by [minutes].\n */\n @JvmStatic fun fromMinutes(minutes: Double) = Angle(minutes * MINUTES_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of seconds.\n *\n * @param seconds the size in seconds of the angle to be obtained.\n *\n * @return a new angle, whose size in seconds is given by [seconds].\n */\n @JvmStatic fun fromSeconds(seconds: Double) = Angle(seconds * SECONDS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of milliradians.\n *\n * @param mrad the size in milliradians of the angle to be obtained.\n *\n * @return a new angle, whose size in milliradians is given by [mrad].\n */\n @JvmStatic fun fromMrad(mrad: Double) = Angle(mrad * MRAD_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil NATO.\n *\n * @param milNATO the size in mil NATO of the angle to be obtained.\n *\n * @return a new angle, whose size in mil NATO is given by [milNATO].\n */\n @JvmStatic fun fromMilNATO(milNATO: Double) = Angle(milNATO * MIL_NATO_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil Warsaw Pact.\n *\n * @param milWP the size in mil WP of the angle to be obtained.\n *\n * @return a new angle, whose size in mil WP is given by [milWP].\n */\n @JvmStatic fun fromMilWP(milWP: Double) = Angle(milWP * MIL_WP_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of Streck.\n *\n * @param streck the size in Streck of the angle to be obtained.\n *\n * @return a new angle, whose size in Streck is given by [streck].\n */\n @JvmStatic fun fromStreck(streck: Double) = Angle(streck * STRECK_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minute of angle (MOA).\n *\n * @param moa the size in MOA of the angle to be obtained.\n *\n * @return a new angle, whose size in MOA is given by [moa].\n */\n @JvmStatic fun fromMOA(moa: Double) = Angle(moa * MOA_TO_DEGREES)\n\n /**\n * Obtains an angle from rectangular coordinates.\n *\n * @param x the abscissa coordinate.\n * @param y the ordinate coordinate.\n *\n * @return a new angle, whose size is determined from `x` and `y`.\n */\n @JvmStatic fun fromXY(x: Double, y: Double) = atan2(y, x).radians\n\n /**\n * Obtain an angle from a given number of positive degrees, minutes and seconds.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes integer number of minutes, positive only between 0 and 60.\n * @param seconds integer number of seconds, positive only between 0 and 60.\n *\n * @return a new angle whose size in degrees is given by `degrees`, `minutes` and `seconds`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDMS(degrees: Int, minutes: Int, seconds: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidDegrees\")\n }\n require(minutes in 0 until 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidMinutes\")\n }\n require(seconds >= 0 && seconds < 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidSeconds\")\n }\n return fromDegrees(degrees + minutes / 60.0 + seconds / 3600.0)\n }\n\n /**\n * Obtain an angle from a given number of positive degrees and decimal minutes.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes double representing the decimal representation of minutes and seconds.\n *\n * @return a new angle whose size in degrees is given by `degrees` and decimal `minutes`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDM(degrees: Int, minutes: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidDegrees\")\n }\n require(minutes >= 0 && minutes < 60) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidMinutes\")\n }\n return fromDegrees(degrees + minutes / 60.0)\n }\n\n /**\n * Obtain an angle from a degrees, minute and seconds character string.\n *\n * eg:
\n         * 123 34 42\n         * -123* 34' 42\" (where * stands for the degree symbol)\n         * +45* 12' 30\" (where * stands for the degree symbol)\n         * 45 12 30 S\n         * 45 12 30 N\n         * 
\n * For a string containing both a sign and compass direction, the compass direction will take precedence.\n *\n * @param dmsString the degrees, minute and second character string.\n *\n * @return the corresponding angle.\n *\n * @throws IllegalArgumentException if dmsString is not properly formatted.\n */\n @JvmStatic\n fun fromDMS(dmsString: String): Angle {\n var dms = dmsString\n // Check for string format validity\n val regex = Regex(\"([-+]?\\\\d{1,3}[dD°\\\\s](\\\\s*\\\\d{1,2}['’\\\\s])?(\\\\s*\\\\d{1,2}[\\\"”\\\\s])?\\\\s*([NnSsEeWw])?\\\\s?)\")\n require(regex.matches(\"$dms \")) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidFormat\")\n }\n // Replace degree, min and sec signs with space\n dms = dms.replace(\"[Dd°'’\\\"”]\".toRegex(), \" \")\n // Replace multiple spaces with single ones\n dms = dms.replace(\"\\\\s+\".toRegex(), \" \")\n dms = dms.trim { it <= ' ' }\n\n // Check for sign prefix and suffix\n var sign = 1\n val suffix = dms.uppercase()[dms.length - 1]\n val prefix = dms[0]\n if (!suffix.isDigit()) {\n sign = if (suffix == 'S' || suffix == 'W') -1 else 1\n dms = dms.substring(0, dms.length - 1)\n dms = dms.trim { it <= ' ' }\n\n // check and trim the prefix if it is erroneously included\n if (!prefix.isDigit()) {\n dms = dms.substring(1, dms.length)\n dms = dms.trim { it <= ' ' }\n }\n } else if (!prefix.isDigit()) {\n sign *= if (prefix == '-') -1 else 1\n dms = dms.substring(1, dms.length)\n }\n\n // Extract degrees, minutes and seconds\n val dmsArray = dms.split(\" \").toTypedArray()\n val d = dmsArray[0].toInt()\n val m = if (dmsArray.size > 1) dmsArray[1].toInt() else 0\n val s = if (dmsArray.size > 2) dmsArray[2].toDouble() else 0.0\n return fromDMS(d, m, s) * sign.toDouble()\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than -180 wrap back to +180, while angles greater than\n * +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeAngle180(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle > 180) angle - 360 else if (angle < -180) 360 + angle else angle\n }\n\n /**\n * Restricts an angle to the range [0, 360] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than 0 wrap back to 360, while angles greater than 360\n * wrap back to 0.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [0, 360] degrees\n */\n @JvmStatic\n fun normalizeAngle360(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle >= 0) angle else 360 + angle\n }\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, wrapping angles outside the range. Wrapping takes place along\n * a line of constant longitude which may pass through the poles. In which case, 135 degrees normalizes to 45\n * degrees; 181 degrees normalizes to -1 degree.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun normalizeLatitude(degrees: Double): Double {\n val lat = degrees % 180\n val normalizedLat = if (lat > 90) 180 - lat else if (lat < -90) -180 - lat else lat\n // Determine whether the latitude is in the north or south hemisphere\n val numEquatorCrosses = (degrees / 180).toInt()\n return if (numEquatorCrosses % 2 == 0) normalizedLat else -normalizedLat\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing a line of constant latitude which may pass through the antimeridian; angles less than -180 wrap\n * back to +180, while angles greater than +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeLongitude(degrees: Double): Double {\n val lon = degrees % 360\n return if (lon > 180) lon - 360 else if (lon < -180) 360 + lon else lon\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as -180, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampAngle180(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Restricts an angle to the range [0, 360] degrees, clamping angles outside the range. Angles less than 0 are\n * returned as 0, and angles greater than 360 are returned as 360. Angles within the range are returned unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [0, 360] degrees\n */\n @JvmStatic\n fun clampAngle360(degrees: Double) = degrees.coerceIn(0.0, 360.0)\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, clamping angles outside the range. Angles less than -90 are\n * returned as -90, and angles greater than +90 are returned as +90. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun clampLatitude(degrees: Double) = degrees.coerceIn(-90.0, 90.0)\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as 0, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampLongitude(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Computes the linear interpolation of two angles in the range [-180, +180] degrees according to a specified\n * fractional amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0\n * indicates the first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second\n * angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle in degrees\n * @param angle2 the second angle in degrees\n *\n * @return the interpolated angle in the range [-180, +180] degrees\n */\n @JvmStatic\n fun interpolateAngle180(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle180(angle).degrees\n }\n\n /**\n * Computes the linear interpolation of two angles in the range [0, 360] degrees according to a specified fractional\n * amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0 indicates the\n * first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle\n * @param angle2 the second angle\n *\n * @return the interpolated angle in the range [0, 360] degrees\n */\n @JvmStatic\n fun interpolateAngle360(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle360(angle).degrees\n }\n\n /**\n * Obtains the average of two angles. This method is commutative, so `midAngle(m, n)` and\n * `midAngle(n, m)` are equivalent.\n *\n * @param a1 the first angle.\n * @param a2 the second angle.\n *\n * @return the average of `a1` and `a2`\n */\n @JvmStatic\n fun average(a1: Angle, a2: Angle) = fromDegrees(0.5 * (a1.inDegrees + a2.inDegrees))\n\n @JvmStatic\n fun max(a: Angle, b: Angle) = if (a.inDegrees >= b.inDegrees) a else b\n\n @JvmStatic\n fun min(a: Angle, b: Angle) = if (a.inDegrees <= b.inDegrees) a else b\n\n /**\n * Indicates whether a specified value is within the normal range of latitude, [-90, 90].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of latitude, otherwise false.\n */\n @JvmStatic\n fun isValidLatitude(degrees: Double) = degrees >= -90 && degrees <= 90\n\n /**\n * Indicates whether a specified value is within the normal range of longitude, [-180, 180].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of longitude, otherwise false.\n */\n @JvmStatic\n fun isValidLongitude(degrees: Double) = degrees >= -180 && degrees <= 180\n }\n\n init {\n // NaN value is not suppoted due to unpredictable `compareTo(NaN)` behavior\n require(!inDegrees.isNaN()) {\n logMessage(ERROR, \"Angle\", \"init\", \"NaN is not supported!\")\n }\n }\n\n /**\n * Obtains the sum of these two angles.\n * This method is commutative, so `a.add(b)` and `b.add(a)` are equivalent.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to add to this one.\n *\n * @return an angle whose size is the total of these angles and angles size.\n */\n operator fun plus(angle: Angle) = fromDegrees(inDegrees + angle.inDegrees)\n fun plusDegrees(degrees: Double) = fromDegrees(this.inDegrees + degrees)\n fun plusRadians(radians: Double) = fromRadians(this.inRadians + radians)\n\n /**\n * Obtains the difference of these two angles. This method is not commutative.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to subtract from this angle.\n *\n * @return a new angle corresponding to this angle's size minus angle's size.\n */\n operator fun minus(angle: Angle) = fromDegrees(inDegrees - angle.inDegrees)\n fun minusDegrees(degrees: Double) = fromDegrees(this.inDegrees - degrees)\n fun minusRadians(radians: Double) = fromRadians(this.inRadians - radians)\n\n /**\n * Multiplies this angle by another angle.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to multiply.\n *\n * @return a new angle whose size equals this angle's size multiplied by angle's size.\n */\n operator fun times(angle: Angle) = this * angle.inDegrees\n\n /**\n * Multiplies this angle by `multiplier`.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param multiplier a scalar by which this angle is multiplied.\n *\n * @return a new angle whose size equals this angle's size multiplied by `multiplier`.\n */\n operator fun times(multiplier: Double) = fromDegrees(inDegrees * multiplier)\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to divide.\n *\n * @return this angle's degrees divided by angle's degrees.\n */\n operator fun div(angle: Angle) = this / angle.inDegrees\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param divisor a scalar by which to divide.\n *\n * @return this angle's degrees divided by divisor.\n */\n operator fun div(divisor: Double): Angle {\n require(divisor != 0.0) {\n logMessage(ERROR, \"Angle\", \"div\", \"divideByZero\")\n }\n return fromDegrees(inDegrees / divisor)\n }\n\n /**\n * Returns new angle with opposite sign.\n */\n operator fun unaryMinus() = Angle(-inDegrees)\n\n /**\n * Computes the shortest distance between this and angle, as an angle.\n *\n * @param angle the angle to measure angular distance to.\n *\n * @return the angular distance between this and `value`.\n */\n fun distanceTo(angle: Angle): Angle {\n var distance = angle.inDegrees - inDegrees\n if (distance < -180) distance += 360.0 else if (distance > 180) distance -= 360.0\n return abs(distance).degrees\n }\n\n fun normalize180() = if (inDegrees in -180.0..180.0) this else normalizeAngle180(inDegrees).degrees\n\n fun normalize360() = if (inDegrees in 0.0..360.0) this else normalizeAngle360(inDegrees).degrees\n\n fun normalizeLatitude() = if (inDegrees in -90.0..90.0) this else normalizeLatitude(inDegrees).degrees\n\n fun normalizeLongitude() = if (inDegrees in -180.0..180.0) this else normalizeLongitude(inDegrees).degrees\n\n fun clampAngle180() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun clampAngle360() = inDegrees.coerceIn(0.0, 360.0).degrees\n\n fun clampLatitude() = inDegrees.coerceIn(-90.0, 90.0).degrees\n\n fun clampLongitude() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun toDMS(): DoubleArray {\n var angle = inDegrees\n val sign = sign(angle)\n angle *= sign\n var d = floor(angle)\n angle = (angle - d) * 60.0\n var m = floor(angle)\n angle = (angle - m) * 60.0\n var s = round(angle * 100) / 100 // keep two decimals for seconds\n if (s == 60.0) {\n m++\n s = 0.0\n }\n if (m == 60.0) {\n d++\n m = 0.0\n }\n return doubleArrayOf(sign, d, m, s)\n }\n\n /**\n * Forms a decimal degrees [String] representation of this [Angle].\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in decimal degrees as a string with the specified number of digits beyond the\n * decimal point. The string is padded with trailing zeros to fill the number of post-decimal point\n * positions requested.\n */\n fun toDDString(digits: Int = 6): String {\n require(digits in 0..15) {\n logMessage(ERROR, \"Angle\", \"toDecimalDegreesString\", \"outOfRange\")\n }\n return \"%.${digits}f°\".format(inDegrees)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees and decimal minutes.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees and decimal minutes as a string.\n */\n fun toDMString(digits: Int = 3): String {\n val dms = toDMS()\n val mf = if (dms[3] == 0.0) dms[2] else dms[2] + dms[3] / 60.0\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2.${digits}f’\".format(dms[1], mf)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees, minutes and seconds.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees, minutes and seconds as a string.\n */\n fun toDMSString(digits: Int = 1): String {\n val dms = toDMS()\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2d’ %2.${digits}f”\".format(dms[1], dms[2], dms[3])\n }\n\n /**\n * Compares this [Angle] with another. Returns a negative integer if this is the smaller angle, a positive\n * integer if this is the larger, and zero if both angles are equal.\n *\n * @param other the angle to compare against.\n *\n * @return -1 if this angle is smaller, 0 if both are equal and +1 if this angle is larger.\n */\n override operator fun compareTo(other: Angle) = inDegrees.compareTo(other.inDegrees)\n\n override fun toString() = \"$inDegrees°\"\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.OrientationMode\n\nclass LabelsTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Labels\").apply {\n // Create a basic label with the default attributes, including the default text color (white), the default text\n // size (24 pixels), the system default font, and the default alignment (bottom center).\n addRenderable(\n Label(Position.fromDegrees(38.8977, -77.0365, 0.0), \"The White House\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create a label with a black text color, the default text size, the system default font, the default\n // alignment, and a thick white text outline.\n addRenderable(\n Label(Position.fromDegrees(38.881389, -77.036944, 0.0), \"Thomas Jefferson Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply {\n textColor = Color(0f, 0f, 0f, 1f) // black text via r,g,b,a\n outlineColor = Color(1f, 1f, 1f, 1f) // white outline via r,g,b,a\n outlineWidth = 5f // thicken the white outline\n }\n }\n )\n\n // Create a right-aligned label using a bottom-right offset.\n addRenderable(\n Label(Position.fromDegrees(38.8893, -77.050111, 0.0), \"Lincoln Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomRight() }\n }\n )\n\n // Create a left-aligned label using a bottom-left offset.\n addRenderable(\n Label(Position.fromDegrees(38.889803, -77.009114, 0.0), \"United States Capitol\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomLeft() }\n }\n )\n\n // Create a label with a 48 pixel text size and a bold font.\n addRenderable(\n Label(Position.fromDegrees(38.907192, -77.036871, 0.0), \"Washington\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { font = Font(\"arial\", FontWeight.BOLD, 28) }\n }\n )\n\n // Create a label with its orientation fixed relative to the globe.\n addRenderable(\n Label(Position.fromDegrees(38.89, -77.023611, 0.0), \"National Mall\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n rotationMode = OrientationMode.RELATIVE_TO_GLOBE\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 38.89.degrees, (-77.023611).degrees, 10e3,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass LookAtViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setLookAtAction()\n }\n\n private fun setLookAtAction() {\n // Create a view of LAX airport as seen from an aircraft above Santa Monica, CA.\n val aircraft = Position.fromDegrees(34.0158333, -118.4513056, 2500.0)\n // Aircraft above Santa Monica airport, altitude in meters\n val airport = Position.fromDegrees(33.9424368, -118.4081222, 38.7)\n\n // Compute heading and distance from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n\n // Compute camera settings\n val altitude = aircraft.altitude - airport.altitude\n val range = sqrt(altitude * altitude + distanceMeters * distanceMeters)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply new \"look at\" view\n engine.cameraFromLookAt(LookAt(airport, AltitudeMode.ABSOLUTE, range, heading, tilt, roll = Angle.ZERO))\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.MGRSGraticuleLayer\n\nclass MGRSGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = MGRSGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Path\n\nclass PathsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Paths\").apply {\n // Create a basic path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(50.0, -180.0, 1e5),\n Position.fromDegrees(30.0, -100.0, 1e6),\n Position.fromDegrees(50.0, -40.0, 1e5)\n )\n )\n )\n\n // Create a terrain following path with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(40.0, -180.0, 0.0),\n Position.fromDegrees(20.0, -100.0, 0.0),\n Position.fromDegrees(40.0, -40.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the path vertices to the ground\n isFollowTerrain = true // follow the ground between path vertices\n }\n )\n\n // Create an extruded path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(30.0, -180.0, 1e5),\n Position.fromDegrees(10.0, -100.0, 1e6),\n Position.fromDegrees(30.0, -40.0, 1e5)\n )\n ).apply {\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n\n // Create an extruded path with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the path line with.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(20.0, -180.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e6),\n Position.fromDegrees(20.0, -40.0, 1e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-100.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Placemark\nimport earth.worldwind.shape.PlacemarkAttributes\n\nclass PlacemarksTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Placemarks\").apply {\n // Create a simple placemark at downtown Ventura, CA. This placemark is a 20x20 cyan square centered on the\n // geographic position. This placemark demonstrates the creation with a convenient factory method.\n addRenderable(\n Placemark.createWithColorAndSize(\n Position.fromDegrees(34.281, -119.293, 0.0), Color(0f, 1f, 1f, 1f), 20\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create an image-based placemark of an aircraft above the ground with a leader-line to the surface.\n // This placemark demonstrates creation via a constructor and a convenient PlacemarkAttributes factory method.\n // The image is scaled to 1.5 times its original size.\n addRenderable(\n Placemark(Position.fromDegrees(34.260, -119.2, 5000.0)).apply {\n attributes = PlacemarkAttributes.createWithImageAndLeader(ImageSource.fromResource(MR.images.aircraft_fixwing)).apply {\n imageScale = 1.5\n }\n }\n )\n\n // Create an image-based placemark with a label at Oxnard Airport, CA. This placemark demonstrates creation\n // with a constructor and a convenient PlacemarkAttributes factory method. The image is scaled to 2x\n // its original size, with the bottom center of the image anchored at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.200, -119.208, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.airport_terminal)).apply {\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n }\n displayName = \"Oxnard Airport\"\n }\n )\n\n // Create an image-based placemark from a bitmap. This placemark demonstrates creation with a\n // constructor and a convenient PlacemarkAttributes factory method. First, a 64x64 bitmap is loaded,\n // and then it is passed into the placemark attributes. The bottom center of the image anchored\n // at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.300, -119.25, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.ehipcc)).apply {\n imageOffset = Offset.bottomCenter()\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(34.200, -119.208, 0.0),\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 80.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Polygon\n\nclass PolygonsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Polygons\").apply {\n // Create a basic polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -135.0, 5.0e5),\n Position.fromDegrees(45.0, -140.0, 7.0e5),\n Position.fromDegrees(50.0, -130.0, 9.0e5),\n Position.fromDegrees(45.0, -120.0, 7.0e5),\n Position.fromDegrees(40.0, -125.0, 5.0e5)\n )\n )\n )\n\n // Create a terrain following polygon with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -105.0, 0.0),\n Position.fromDegrees(45.0, -110.0, 0.0),\n Position.fromDegrees(50.0, -100.0, 0.0),\n Position.fromDegrees(45.0, -90.0, 0.0),\n Position.fromDegrees(40.0, -95.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the polygon vertices to the ground\n isFollowTerrain = true // follow the ground between polygon vertices\n }\n )\n\n // Create an extruded polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -135.0, 5.0e5),\n Position.fromDegrees(25.0, -140.0, 7.0e5),\n Position.fromDegrees(30.0, -130.0, 9.0e5),\n Position.fromDegrees(25.0, -120.0, 7.0e5),\n Position.fromDegrees(20.0, -125.0, 5.0e5)\n )\n ).apply {\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create an extruded polygon with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -105.0, 5.0e5),\n Position.fromDegrees(25.0, -110.0, 7.0e5),\n Position.fromDegrees(30.0, -100.0, 9.0e5),\n Position.fromDegrees(25.0, -90.0, 7.0e5),\n Position.fromDegrees(20.0, -95.0, 5.0e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create a polygon with an inner hole by specifying multiple polygon boundaries\n addRenderable(\n Polygon().apply {\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -135.0, 5.0e5),\n Position.fromDegrees(5.0, -140.0, 7.0e5),\n Position.fromDegrees(10.0, -130.0, 9.0e5),\n Position.fromDegrees(5.0, -120.0, 7.0e5),\n Position.fromDegrees(0.0, -125.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -130.0, 6.0e5),\n Position.fromDegrees(5.0, -135.0, 7.0e5),\n Position.fromDegrees(7.5, -130.0, 8.0e5),\n Position.fromDegrees(5.0, -125.0, 7.0e5)\n )\n )\n }\n )\n\n // Create an extruded polygon with an inner hole and custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(emptyList()).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -105.0, 5.0e5),\n Position.fromDegrees(5.0, -110.0, 7.0e5),\n Position.fromDegrees(10.0, -100.0, 9.0e5),\n Position.fromDegrees(5.0, -90.0, 7.0e5),\n Position.fromDegrees(0.0, -95.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -100.0, 6.0e5),\n Position.fromDegrees(5.0, -105.0, 7.0e5),\n Position.fromDegrees(7.5, -100.0, 8.0e5),\n Position.fromDegrees(5.0, -95.0, 7.0e5)\n )\n )\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-115.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.ShowTessellationLayer\n\nclass ShowTessellationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = ShowTessellationLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.OmnidirectionalSightline\nimport earth.worldwind.shape.Placemark\n\nclass SightlineTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Sightline\").apply {\n // Specify the sightline position, which is the origin of the line of sight calculation\n val position = Position.fromDegrees(46.230, -122.190, 2500.0)\n // Create the sightline, specifying the range of the sightline (meters)\n addRenderable(\n OmnidirectionalSightline(position, 10000.0).apply {\n // Create attributes for the visible terrain\n attributes.apply { interiorColor = Color(0f, 1f, 0f, 0.5f) }\n // Create attributes for the occluded terrain\n occludeAttributes.apply { interiorColor = Color(0.1f, 0.1f, 0.1f, 0.8f) }\n }\n )\n // Create a Placemark to visualize the position of the sightline\n addRenderable(\n Placemark(position).apply {\n attributes.apply {\n imageSource = earth.worldwind.render.image.ImageSource.fromResource(MR.images.aircraft_fixwing)\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n isDrawLeader = true\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position(46.230.degrees, (-122.190).degrees, 500.0), altitudeMode = AltitudeMode.ABSOLUTE,\n range = 1.5e4, heading = 45.0.degrees, tilt = 70.0.degrees, roll = 0.0.degrees\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\n\nclass SurfaceImageTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Surface image\").apply {\n // Configure a Surface Image to display an Android resource showing the WorldWindEarth logo.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46, 15.5, 0.5, 0.6),\n ImageSource.fromResource(MR.images.worldwind_logo)\n )\n )\n\n // Configure a Surface Image to display a remote image showing Mount Etna erupting on July 13th, 2001.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46543388598137, 14.60128369746704, 0.45360804083528, 0.75704283995502),\n ImageSource.fromUrlString(\"https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg\")\n )\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 37.46543388598137.degrees, 14.97980511744455.degrees, 4.0e5,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Service (WMS) layer to display the\n // surface temperature layer from NASA's Near Earth Observations WMS.\n WmsLayerFactory.createLayer(\"https://neo.gsfc.nasa.gov/wms/wms\", listOf(\"MOD_LSTD_CLIM_M\")).also {\n if (isActive) {\n wmsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMS layer creation succeeded\")\n } catch (e: Exception) {\n Logger.log(Logger.ERROR, \"WMS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmsLayer?.let { engine.layers.removeLayer(it) }.also { wmsLayer = null }\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmtsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmtsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Tile Service (WMTS) layer to display Global Hillshade based on GMTED2010\n WmtsLayerFactory.createLayer(\"https://tiles.geoservice.dlr.de/service/wmts\", \"hillshade\").also {\n if (isActive) {\n wmtsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMTS layer creation succeeded\")\n } catch (e: Exception) {\n Logger.log(Logger.ERROR, \"WMTS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmtsLayer?.let { engine.layers.removeLayer(it) }.also { wmtsLayer = null }\n }\n\n}","@file:JsExport\n\npackage earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.gesture.SelectDragCallback\nimport earth.worldwind.globe.elevation.coverage.BasicElevationCoverage\nimport earth.worldwind.layer.BackgroundLayer\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.mercator.google.GoogleLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Movable\nimport kotlinx.browser.document\nimport kotlinx.browser.window\nimport org.w3c.dom.*\n\nfun main() {\n // Register an event listener to be called when the page is loaded.\n window.onload = {\n // Create a WorldWindow for the canvas.\n val wwd = WorldWindow(document.getElementById(\"WorldWindow\") as HTMLCanvasElement)\n val select = document.getElementById(\"Tutorials\") as HTMLSelectElement\n val actionsContainer = document.getElementById(\"Actions\") as HTMLDivElement\n val tutorials = mapOf (\n \"Basic globe\" to BasicTutorial(wwd.engine),\n \"Set camera view\" to CameraViewTutorial(wwd.engine),\n \"Set Look At\" to LookAtViewTutorial(wwd.engine),\n \"Placemarks\" to PlacemarksTutorial(wwd.engine),\n \"Paths\" to PathsTutorial(wwd.engine),\n \"Polygons\" to PolygonsTutorial(wwd.engine),\n \"Ellipses\" to EllipsesTutorial(wwd.engine),\n // TODO Uncomment when ImageSource.fromLineStipple will be implemented\n //\"Dash and fill\" to ShapeDashAndFillTutorial(wwd.engine),\n \"Labels\" to LabelsTutorial(wwd.engine),\n \"Sight line\" to SightlineTutorial(wwd.engine),\n \"Surface image\" to SurfaceImageTutorial(wwd.engine),\n \"Show tessellation\" to ShowTessellationTutorial(wwd.engine),\n \"MGRS Graticule\" to MGRSGraticuleTutorial(wwd.engine),\n // TODO Uncomment when TIFF elevation data parsing will be implemented\n //\"WCS Elevation\" to WcsElevationTutorial(wwd.engine),\n \"WMS Layer\" to WmsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WMTS Layer\" to WmtsLayerTutorial(wwd.engine, wwd.mainScope),\n )\n var currentTutorial: String? = null\n\n // Add some image layers to the WorldWindow's globe.\n wwd.engine.layers.apply {\n addLayer(BackgroundLayer())\n addLayer(GoogleLayer(GoogleLayer.Type.SATELLITE))\n addLayer(StarFieldLayer())\n addLayer(AtmosphereLayer())\n }\n\n // Add elevation coverage source\n wwd.engine.globe.elevationModel.addCoverage(BasicElevationCoverage())\n\n // Allow pick and move any movable object\n wwd.selectDragDetector.callback = object : SelectDragCallback {\n override fun canPickRenderable(renderable: Renderable) = renderable is Movable\n override fun canMoveRenderable(renderable: Renderable) = renderable is Movable\n }\n\n fun callAction(actionName: String) { currentTutorial?.let { tutorials[it]?.runAction(actionName) } }\n\n fun createAction(actionName: String) {\n (document.createElement(\"button\") as HTMLButtonElement).apply {\n innerHTML = actionName\n actionsContainer.append(this)\n onclick = { callAction(actionName) }\n }\n }\n\n fun selectTutorial(tutorial: String) {\n currentTutorial?.let { tutorials[it]?.stop() }\n currentTutorial = tutorial\n tutorials[tutorial]?.run {\n start()\n //TODO actions\n actionsContainer.innerHTML = \"\"\n actions?.forEach { action -> createAction(action) }\n actionsContainer.hidden = actions?.isEmpty() != false\n }\n wwd.requestRedraw()\n }\n\n tutorials.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n select.append(this)\n }\n }\n select.onchange = { event -> selectTutorial((event.target as HTMLSelectElement).value) }\n\n selectTutorial(tutorials.keys.first())\n }\n}",null,null,"package earth.worldwind\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.AssetResource\nimport dev.icerock.moko.resources.ColorResource\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.FontResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.PluralsResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.StringResource\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"13528c7360f87ff150ff0843a0370ee0\"\n\n public actual object strings : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object plurals : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object images : ResourceContainer {\n public actual val dnb_land_ocean_ice_2012: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/dnb_land_ocean_ice_2012.png\\\")\") as String, fileName =\n \"dnb_land_ocean_ice_2012.png\")\n\n public actual val sun_texture: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/sun_texture.png\\\")\") as String, fileName = \"sun_texture.png\")\n\n public actual val worldwind_worldtopobathy2004053: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_worldtopobathy2004053.png\\\")\") as String, fileName =\n \"worldwind_worldtopobathy2004053.png\")\n\n public override fun values(): List = listOf(dnb_land_ocean_ice_2012, sun_texture,\n worldwind_worldtopobathy2004053)\n }\n\n public actual object fonts : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object files : ResourceContainer {\n public actual val stars: FileResource = FileResource(fileUrl =\n js(\"require(\\\"files/stars.json\\\")\") as String)\n\n public override fun values(): List = listOf(stars)\n }\n\n public actual object colors : ResourceContainer {\n public override fun values(): List = listOf()\n }\n\n public actual object assets : ResourceContainer {\n public override fun values(): List = listOf()\n }\n}\n","package earth.worldwind\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.min\nimport kotlin.math.roundToInt\n\n/**\n * Incrementally and smoothly moves the Camera to a specified position.\n */\nopen class GoToAnimator(\n /**\n * The [WorldWind] engine associated with this animator.\n */\n protected val engine: WorldWind\n) {\n /**\n * The frequency in milliseconds at which to animate the position change.\n */\n var animationFrequency = 20L\n /**\n * The animation's duration, in milliseconds. When the distance is short, less than twice the viewport\n * size, the travel time is reduced proportionally to the distance to travel. It therefore takes less\n * time to move shorter distances.\n */\n var travelTime = 3000\n /**\n * Main scope to launch animation\n */\n protected val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * A temp variable used to hold the current view as a look at during calculations. Using an object level temp\n * property negates the need for ad-hoc allocations and reduces load on the garbage collector.\n */\n protected val lookAt = LookAt()\n protected var animationJob: Job? = null\n protected var completionCallback: ((GoToAnimator) -> Unit)? = null\n protected var targetPosition: Position? = null\n protected var startPosition: Position? = null\n protected var startTime = Instant.DISTANT_PAST\n protected var maxAltitude = 0.0\n protected var maxAltitudeReachedTime = Instant.DISTANT_PAST\n protected var panVelocity = 0.0\n protected var rangeVelocity = 0.0\n\n /**\n * Stop the current animation.\n */\n fun cancel() { animationJob?.cancel() }\n\n /**\n * Moves the camera to a specified look at location or position.\n *\n * @param position The [Location] or [Position] to move the camera to. If this\n * argument contains an \"altitude\" property, as [Position] does, the end point of the navigation is\n * at the specified altitude. Otherwise, the end point is at the current altitude of the camera.\n * @param completionCallback If not null, specifies a function to call when the animation completes.\n * The completion callback is called with a single argument, this animator.\n */\n open fun goTo(position: Location, completionCallback: ((GoToAnimator) -> Unit)? = null) {\n if (engine.viewport.isEmpty) return\n\n this.completionCallback = completionCallback\n\n engine.cameraAsLookAt(lookAt)\n // Capture the target position and determine its altitude.\n val targetPosition = Position(\n position.latitude, position.longitude, if(position is Position) position.altitude else lookAt.range\n ).also { targetPosition = it }\n\n // Capture the start position and start time.\n val startPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range).also { startPosition = it }\n startTime = Clock.System.now()\n\n // Determination of the pan and range velocities requires the distance to be travelled.\n var animationDuration = travelTime\n val panDistance = startPosition.greatCircleDistance(targetPosition)\n\n // Determine how high we need to go to give the user context. The max altitude computed is approximately\n // that needed to fit the start and end positions in the same viewport assuming a 45 degree field of view.\n val pA = engine.globe.geographicToCartesian(startPosition.latitude, startPosition.longitude, 0.0, Vec3())\n val pB = engine.globe.geographicToCartesian(targetPosition.latitude, targetPosition.longitude, 0.0, Vec3())\n maxAltitude = pA.distanceTo(pB)\n\n // Determine an approximate viewport size in radians in order to determine whether we actually change\n // the range as we pan to the new location. We don't want to change the range if the distance between\n // the start and target positions is small relative to the current viewport.\n val viewportSize = engine.pixelSizeAtDistance(startPosition.altitude) *\n engine.viewport.width / engine.globe.equatorialRadius\n\n // Start and target positions are close, so don't back out.\n if (panDistance <= 2 * viewportSize) maxAltitude = startPosition.altitude\n\n // We need to capture the time the max altitude is reached in order to begin decreasing the range\n // midway through the animation. If we're already above the max altitude, then that time is now since\n // we don't back out if the current altitude is above the computed max altitude.\n maxAltitudeReachedTime = if (maxAltitude <= lookAt.range) Clock.System.now() else Instant.DISTANT_PAST\n\n // Compute the total range to travel since we need that to compute the range velocity.\n // Note that the range velocity and pan velocity are computed so that the respective animations, which\n // operate independently, finish at the same time.\n val rangeDistance = if (maxAltitude > startPosition.altitude) {\n max(0.0, maxAltitude - startPosition.altitude) + abs(targetPosition.altitude - maxAltitude)\n } else {\n abs(targetPosition.altitude - startPosition.altitude)\n }\n\n // Determine which distance governs the animation duration.\n val animationDistance = max(panDistance, rangeDistance / engine.globe.equatorialRadius)\n if (animationDistance == 0.0) return // current and target positions are the same\n\n if (animationDistance < 2 * viewportSize) {\n // Start and target positions are close, so reduce the travel time based on the\n // distance to travel relative to the viewport size.\n animationDuration = min(((animationDistance / viewportSize) * travelTime).roundToInt(), travelTime)\n }\n\n // Don't let the animation duration go to 0.\n animationDuration = max(1, animationDuration)\n\n // Determine the pan velocity, in radians per millisecond.\n panVelocity = panDistance / animationDuration\n\n // Determine the range velocity, in meters per millisecond.\n rangeVelocity = rangeDistance / animationDuration // meters per millisecond\n\n // Set up the animation timer.\n setUpAnimationTimer()\n }\n\n protected open fun setUpAnimationTimer() {\n animationJob?.cancel()\n animationJob = mainScope.launch {\n delay(animationFrequency)\n if (!isActive || !update()) completionCallback?.invoke(this@GoToAnimator) else setUpAnimationTimer()\n }\n }\n\n /**\n * This is the timer callback function. It invokes the range animator and the pan animator.\n */\n protected open fun update(): Boolean {\n val currentPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range)\n val continueUpdateRange = updateRange(currentPosition)\n val continueUpdateLocation = updateLocation(currentPosition)\n WorldWind.requestRedraw()\n return continueUpdateRange || continueUpdateLocation\n }\n\n /**\n * This function animates the range.\n */\n protected open fun updateRange(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n\n // If we haven't reached the maximum altitude, then step-wise increase it. Otherwise, step-wise change\n // the range towards the target altitude.\n val continueAnimation = if (maxAltitudeReachedTime == Instant.DISTANT_PAST) {\n val elapsedTime = Clock.System.now() - startTime\n val nextRange = min(startPosition.altitude + rangeVelocity * elapsedTime.inWholeMilliseconds, maxAltitude)\n // We're done if we get withing 1 meter of the desired range.\n if (abs(lookAt.range - nextRange) < 1) maxAltitudeReachedTime = Clock.System.now()\n lookAt.range = nextRange\n true\n } else {\n val elapsedTime = Clock.System.now() - maxAltitudeReachedTime\n val nextRange = if (maxAltitude > targetPosition.altitude) {\n max(maxAltitude - (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n } else {\n min(maxAltitude + (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n }\n lookAt.range = nextRange\n // We're done if we get withing 1 meter of the desired range.\n abs(lookAt.range - targetPosition.altitude) > 1\n }\n\n engine.cameraFromLookAt(lookAt)\n\n return continueAnimation\n }\n\n /**\n * This function animates the pan to the desired location.\n */\n protected open fun updateLocation(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n val elapsedTime = Clock.System.now() - startTime\n val distanceTravelled = startPosition.greatCircleDistance(currentPosition)\n val distanceRemaining = currentPosition.greatCircleDistance(targetPosition)\n val azimuthToTarget = currentPosition.greatCircleAzimuth(targetPosition)\n val distanceForNow = panVelocity * elapsedTime.inWholeMilliseconds\n val nextDistance = min(distanceForNow - distanceTravelled, distanceRemaining)\n val nextLocation = currentPosition.greatCircleLocation(azimuthToTarget, nextDistance, Location())\n var locationReached = false\n\n lookAt.position.latitude = nextLocation.latitude\n lookAt.position.longitude = nextLocation.longitude\n engine.cameraFromLookAt(lookAt)\n\n // We're done if we're within a meter of the desired location.\n if (nextDistance < 1.0 / engine.globe.equatorialRadius) locationReached = true\n\n return !locationReached\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Renderable\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.roundToInt\n\nopen class PickedObject protected constructor(\n val identifier: Int, val userObject: Any, val layer: Layer? = null, val terrainPosition: Position? = null\n) {\n var isOnTop = false\n protected set\n val isTerrain get() = terrainPosition != null\n\n companion object {\n @JvmStatic\n fun fromRenderable(identifier: Int, renderable: Renderable, layer: Layer) =\n PickedObject(identifier, renderable.pickDelegate ?: renderable, layer)\n\n @JvmStatic\n fun fromTerrain(identifier: Int, position: Position): PickedObject {\n val positionCopy = Position(position)\n return PickedObject(identifier, positionCopy, terrainPosition = positionCopy)\n }\n\n @JvmStatic\n fun identifierToUniqueColor(identifier: Int, result: Color): Color {\n val r8 = identifier shr 16 and 0xFF\n val g8 = identifier shr 8 and 0xFF\n val b8 = identifier and 0xFF\n result.red = r8 / 0xFF.toFloat()\n result.green = g8 / 0xFF.toFloat()\n result.blue = b8 / 0xFF.toFloat()\n result.alpha = 1f\n return result\n }\n\n @JvmStatic\n fun uniqueColorToIdentifier(color: Color): Int {\n val r8 = (color.red * 0xFF).roundToInt()\n val g8 = (color.green * 0xFF).roundToInt()\n val b8 = (color.blue * 0xFF).roundToInt()\n return r8 shl 16 or (g8 shl 8) or b8\n }\n }\n\n internal fun markOnTop() { isOnTop = true }\n\n override fun toString() = \"PickedObject(isOnTop=$isOnTop, identifier=$identifier, userObject=$userObject, layer=$layer, terrainPosition=$terrainPosition)\"\n}","package earth.worldwind\n\nopen class PickedObjectList {\n protected val objectsById = mutableMapOf()\n val objects get() = objectsById.values\n val count get() = objectsById.size\n val topPickedObject get() = objects.firstOrNull { po -> po.isOnTop }\n val terrainPickedObject get() = objects.firstOrNull { po -> po.isTerrain }\n val hasNonTerrainObjects get() = objects.firstOrNull { po -> !po.isTerrain } != null\n\n fun offerPickedObject(pickedObject: PickedObject) { objectsById[pickedObject.identifier] = pickedObject }\n\n fun pickedObjectWithId(identifier: Int) = objectsById[identifier]\n\n fun clearPickedObjects() = objectsById.clear()\n\n fun keepTopAndTerrainObjects() = objectsById.entries.removeAll { e -> !e.value.isOnTop && !e.value.isTerrain }\n\n override fun toString() = objects.joinToString(\", \", \"PickedObjectList{\", \"}\") { po -> po.toString() }\n}",null,"package earth.worldwind\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.frame.BasicFrameController\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.frame.FrameController\nimport earth.worldwind.frame.FrameMetrics\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport earth.worldwind.globe.terrain.BasicTessellator\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.kgl.*\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.asSharedFlow\nimport kotlinx.datetime.TimeZone\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Main WorldWind model, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\nopen class WorldWind @JvmOverloads constructor(\n /**\n * Platform-dependent OpenGL implementation\n */\n gl: Kgl,\n /**\n * Platform-dependent GPU resource cache manager.\n */\n var renderResourceCache: RenderResourceCache,\n /**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models.\n */\n var globe: Globe = Globe(Ellipsoid.WGS84, Wgs84Projection()),\n /**\n * Terrain model tessellator.\n */\n var tessellator: Tessellator = BasicTessellator(),\n /**\n * Frame rendering and drawing logic implementation.\n */\n var frameController: FrameController = BasicFrameController(),\n /**\n * Helper class implementing [FrameMetrics] to measure performance.\n */\n var frameMetrics: FrameMetrics? = null\n) {\n /**\n * List of renderable object layers to be displayed by this WorldWind.\n */\n var layers = LayerList()\n /**\n * Current user view point parameters: location, altitude, orientation and field of view.\n */\n var camera = Camera()\n /**\n * The [GoToAnimator] used by this WorldWindow to respond to its goTo method.\n */\n val goToAnimator = GoToAnimator(this)\n /**\n * Screen area occupied by this WorldWind.\n */\n val viewport = Viewport()\n /**\n * Keep pixel scale when changing the height of viewport by adapting field of view\n */\n var isKeepScale = true\n /**\n * Scale of logical pixel size to hardware display pixel size. Used to adopt general level of details to screen density.\n */\n var densityFactor = 1f\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setDensityFactor\", \"invalidDensityFactor\"\n )\n }\n field = value\n }\n /**\n * Vertical exaggeration (VE) is a scale that is used to emphasize vertical features, which might be too small\n * to identify relative to the horizontal scale.\n */\n var verticalExaggeration = 1.0\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setVerticalExaggeration\", \"invalidVerticalExaggeration\"\n )\n }\n field = value\n }\n /**\n * Atmosphere altitude above ellipsoid. Used to control when objects are clipped by the far plain behind the globe.\n */\n var atmosphereAltitude = 160000.0\n /**\n * Context related to frame rendering phase\n */\n protected val rc = RenderContext()\n /**\n * Context related to frame drawing phase\n */\n protected val dc = DrawContext(gl)\n /**\n * The number of bits in the depth buffer associated with this WorldWind.\n */\n protected var depthBits = 0\n private val scratchModelview = Matrix4()\n private val scratchProjection = Matrix4()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n init {\n // Initialize default camera location based on user time zone\n val initLocation = Location.fromTimeZone(TimeZone.currentSystemDefault())\n // Fit globe to screen vertically with 10% margin.\n val initAltitude = distanceToViewGlobeExtents * 1.1\n camera.position.set(initLocation.latitude, initLocation.longitude, initAltitude)\n }\n\n /**\n * Reset internal WorldWind state to initial values.\n */\n open fun reset() {\n // Cancel all async jobs\n renderResourceCache.cancel()\n\n // Clear the render resource cache; it's entries are now invalid.\n renderResourceCache.clear()\n\n // Invalidate elevation model.\n globe.elevationModel.invalidate()\n\n // Clear the viewport dimensions.\n viewport.setEmpty()\n\n // Reset screen density factor.\n densityFactor = 1f\n }\n\n /**\n * Specify the default WorldWind OpenGL state.\n */\n open fun setupDrawContext() {\n dc.gl.enable(GL_BLEND)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.enableVertexAttribArray(0)\n dc.gl.disable(GL_DITHER)\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.depthFunc(GL_LEQUAL)\n\n // Clear any cached OpenGL resources and state, which are now invalid.\n dc.contextLost()\n\n // Set the WorldWindow's depth bits.\n depthBits = dc.gl.getParameteri(GL_DEPTH_BITS)\n }\n\n /**\n * Apply new viewport dimensions.\n */\n open fun setupViewport(width: Int, height: Int) {\n dc.gl.viewport(0, 0, width, height)\n\n // Keep pixel scale by adapting field of view on view port resize\n if (isKeepScale && viewport.height != 0) {\n try {\n camera.fieldOfView *= height / viewport.height.toDouble()\n } catch (ignore: IllegalArgumentException) {\n // Keep original field of view in case new one does not fit requirements\n }\n }\n\n viewport.set(0, 0, width, height)\n }\n\n /**\n * Get look at orientation and range based on current camera position and specified geographic position\n *\n * @param result Pre-allocated look at object\n * @param lookAtPosition Custom \"look at\" position. Terrain position on viewport center will be used by default.\n * @return Look at orientation and range based on current camera position and specified geographic position\n */\n open fun cameraAsLookAt(result: LookAt, lookAtPosition: Position? = null): LookAt {\n if (lookAtPosition != null) {\n cameraToViewingTransform(scratchModelview)\n globe.geographicToCartesian(lookAtPosition.latitude, lookAtPosition.longitude, lookAtPosition.altitude, scratchPoint)\n result.position.copy(lookAtPosition)\n } else if (viewport.isEmpty || !pickTerrainPosition(viewport.width / 2.0, viewport.height / 2.0, result.position)) {\n // Use point on horizon as a backup\n cameraToViewingTransform(scratchModelview)\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n scratchRay.pointAt(globe.horizonDistance(cameraPosition.altitude), scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result.position)\n }\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n result.range = -scratchModelview.m[11]\n result.heading = scratchModelview.extractHeading(camera.roll) // disambiguate heading and roll\n result.tilt = scratchModelview.extractTilt()\n result.roll = camera.roll // roll passes straight through\n return result\n }\n\n /**\n * Translate the original view's modelview matrix to account for the gesture's change.\n *\n * @param lookAt the look at position, orientation and range to be modified by translation.\n * @param fromPoint the start point of translation.\n * @param toPoint the finish point of translation.\n */\n open fun moveLookAt(lookAt: LookAt, fromPoint: Vec2, toPoint: Vec2) {\n // Convert screen points to points on the globe ellipsoid. Do not transform if any point is outside the globe.\n val from = Vec3()\n if (!rayThroughScreenPoint(fromPoint.x, fromPoint.y, scratchRay) || !globe.intersect(scratchRay, from)) return\n val to = Vec3()\n if (!rayThroughScreenPoint(toPoint.x, toPoint.y, scratchRay) || !globe.intersect(scratchRay, to)) return\n\n // Transform the original modelview matrix according to specified points.\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.multiplyByTranslation(to.x - from.x, to.y - from.y, to.z - from.z)\n\n // Compute the globe point at the screen center from the perspective of the transformed view.\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n if (!globe.intersect(scratchRay, scratchPoint)) return\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, lookAt.position)\n\n // Convert the transformed modelview matrix to view properties.\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n lookAt.range = -scratchModelview.m[11]\n lookAt.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n lookAt.tilt = scratchModelview.extractTilt()\n lookAt.roll = lookAt.roll // roll passes straight through\n }\n\n /**\n * Set camera position and orientation, based on look at position, orientation and range\n *\n * @param lookAt Look at position, orientation and range\n */\n open fun cameraFromLookAt(lookAt: LookAt) {\n applyLookAtLimits(lookAt)\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.extractEyePoint(scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, camera.position)\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n camera.altitudeMode = AltitudeMode.ABSOLUTE // Calculated position is absolute\n camera.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n camera.tilt = scratchModelview.extractTilt()\n camera.roll = lookAt.roll // roll passes straight through\n\n // Check if camera altitude is not under the surface\n val position = camera.position\n val elevation = globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration + COLLISION_THRESHOLD\n if (elevation > position.altitude) {\n // Set camera altitude above the surface\n position.altitude = elevation\n // Compute new camera point\n globe.geographicToCartesian(position.latitude, position.longitude, position.altitude, scratchPoint)\n // Compute look at point\n globe.geographicToCartesian(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude, scratchRay.origin\n )\n // Compute normal to globe in look at point\n globe.geographicToCartesianNormal(lookAt.position.latitude, lookAt.position.longitude, scratchRay.direction)\n // Calculate tilt angle between new camera point and look at point\n scratchPoint.subtract(scratchRay.origin).normalize()\n val dot = scratchRay.direction.dot(scratchPoint)\n if (dot >= -1 && dot <= 1) camera.tilt = acos(dot).radians\n }\n }\n\n /**\n * More efficient way to determine terrain position at screen point using terrain from last rendered frame.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return true if the screen point could be converted; false if the screen point is not on the terrain\n */\n open fun pickTerrainPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && tessellator.lastTerrain.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param point the Cartesian point in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun cartesianToScreenPoint(point: Vec3, result: Vec2) = cartesianToScreenPoint(point.x, point.y, point.z, result)\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param x the Cartesian point's x component in meters\n * @param y the Cartesian point's y component in meters\n * @param z the Cartesian point's z component in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun cartesianToScreenPoint(x: Double, y: Double, z: Double, result: Vec2): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the WorldWindow's modelview-projection matrix.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview)\n\n // Transform the Cartesian point to OpenGL screen coordinates. Complete the transformation by converting to\n // viewport coordinates and discarding the screen Z component.\n if (scratchProjection.project(x, y, z, viewport, scratchPoint)) {\n result.x = scratchPoint.x\n result.y = viewport.height - scratchPoint.y\n return true\n }\n return false\n }\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param position the geographic position\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun geographicToScreenPoint(position: Position, result: Vec2) =\n geographicToScreenPoint(position.latitude, position.longitude, position.altitude, result)\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun geographicToScreenPoint(\n latitude: Angle, longitude: Angle, altitude: Double, result: Vec2\n ): Boolean {\n // Convert the position from geographic coordinates to Cartesian coordinates.\n globe.geographicToCartesian(latitude, longitude, altitude, scratchPoint)\n\n // Convert the position from Cartesian coordinates to screen coordinates.\n return cartesianToScreenPoint(scratchPoint, result)\n }\n\n /**\n * Converts a screen point to the geographic coordinates on the globe ellipsoid, ignoring terrain altitude.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result Pre-allocated Position receives the geographic coordinates\n *\n * @return true if the screen point could be converted; false if the screen point is not on the globe\n */\n open fun screenPointToGroundPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && globe.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Computes a Cartesian coordinate ray that passes through a screen point.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated Line in which to return the computed ray\n *\n * @return the result set to the computed ray in Cartesian coordinates\n */\n open fun rayThroughScreenPoint(x: Double, y: Double, result: Line): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the inverse modelview-projection matrix corresponding to the WorldWindow's current Camera state.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview).invert()\n\n // Convert from viewport coordinates to OpenGL screen coordinates by inverting the Y axis.\n // Transform the screen point to Cartesian coordinates at the near and far clip planes, store the result in the\n // ray's origin and direction, respectively. Complete the ray direction by subtracting the near point from the\n // far point and normalizing.\n if (scratchProjection.unProject(x, viewport.height - y, viewport, result.origin, result.direction)) {\n result.direction.subtract(result.origin).normalize()\n return true\n }\n return false\n }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n open fun pixelSizeAtDistance(distance: Double): Double {\n val tanFovY2 = tan(camera.fieldOfView.inRadians * 0.5)\n val frustumHeight = 2 * distance * tanFovY2\n return frustumHeight / viewport.height\n }\n\n /**\n * Returns the minimum distance from the globe's surface necessary to make the globe's extents visible in this World\n * Window.\n */\n val distanceToViewGlobeExtents get(): Double {\n val sinFovY2 = sin(camera.fieldOfView.inRadians * 0.5)\n val radius = globe.equatorialRadius\n return radius / sinFovY2 - radius\n }\n\n open fun renderFrame(frame: Frame): Boolean {\n // Mark the beginning of a frame render.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginRendering(rc)\n\n // Set up the render context according to the WorldWindow's current state.\n rc.globe = globe\n rc.terrainTessellator = tessellator\n rc.layers = layers\n rc.camera = camera\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n rc.horizonDistance = globe.horizonDistance(cameraPosition.altitude)\n globe.geographicToCartesian(\n cameraPosition.latitude, cameraPosition.longitude, cameraPosition.altitude, rc.cameraPoint\n )\n rc.renderResourceCache = renderResourceCache\n rc.verticalExaggeration = verticalExaggeration\n rc.densityFactor = densityFactor\n rc.atmosphereAltitude = atmosphereAltitude\n rc.elevationModelTimestamp = globe.elevationModel.timestamp\n\n // Configure the frame's Cartesian modelview matrix and eye coordinate projection matrix.\n computeViewingTransform(frame.projection, frame.modelview)\n frame.viewport.copy(viewport)\n// frame.infiniteProjection.setToInfiniteProjection(viewport.width, viewport.height, camera.fieldOfView, 1.0)\n// frame.infiniteProjection.multiplyByMatrix(frame.modelview)\n rc.viewport.copy(frame.viewport)\n rc.projection.copy(frame.projection)\n rc.modelview.copy(frame.modelview)\n rc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n if (pickMode) rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport, frame.pickViewport!!)\n else rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport)\n\n // Accumulate the Drawables in the frame's drawable queue and drawable terrain data structures.\n rc.drawableQueue = frame.drawableQueue\n rc.drawableTerrain = frame.drawableTerrain\n rc.pickedObjects = frame.pickedObjects\n rc.pickDeferred = frame.pickDeferred\n rc.pickViewport = frame.pickViewport\n rc.pickPoint = frame.pickPoint\n rc.pickRay = frame.pickRay\n rc.isPickMode = frame.isPickMode\n\n // Let the frame controller render the WorldWindow's current state.\n frameController.renderFrame(rc)\n\n // Propagate redraw requests submitted during rendering.\n val isRedrawRequested = !pickMode && rc.isRedrawRequested\n\n // Mark the end of a frame render.\n if (!pickMode) frameMetrics?.endRendering(rc)\n\n // Reset the render context's state in preparation for the next frame.\n rc.reset()\n\n return isRedrawRequested\n }\n\n open fun drawFrame(frame: Frame) {\n // Mark the beginning of a frame draw.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginDrawing(dc)\n\n // Set up the draw context according to the frame's current state.\n dc.eyePoint.copy(frame.modelview.extractEyePoint(dc.eyePoint))\n dc.viewport.copy(frame.viewport)\n dc.projection.copy(frame.projection)\n dc.modelview.copy(frame.modelview)\n dc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n// dc.infiniteProjection.copy(frame.infiniteProjection)\n dc.screenProjection.setToScreenProjection(\n frame.viewport.width.toDouble(), frame.viewport.height.toDouble()\n )\n\n // Process the drawables in the frame's drawable queue and drawable terrain data structures.\n dc.drawableQueue = frame.drawableQueue\n dc.drawableTerrain = frame.drawableTerrain\n dc.pickedObjects = frame.pickedObjects\n dc.pickViewport = frame.pickViewport\n dc.pickPoint = frame.pickPoint\n dc.isPickMode = frame.isPickMode\n\n // Let the frame controller draw the frame.\n frameController.drawFrame(dc)\n\n // Increment render resource cache age on each frame\n renderResourceCache.incAge()\n\n // Release resources evicted during the previous frame.\n renderResourceCache.releaseEvictedResources(dc)\n\n // Mark the end of a frame draw.\n if (!pickMode) frameMetrics?.endDrawing(dc)\n\n // Reset the draw context's state in preparation for the next frame.\n dc.reset()\n }\n\n protected open fun computeViewingTransform(projection: Matrix4, modelview: Matrix4) {\n // Compute the clip plane distances. The near distance is set to a large value that does not clip the globe's\n // surface. The far distance is set to the smallest value that does not clip the atmosphere.\n val eyeAltitude = globe.getAbsolutePosition(camera.position, camera.altitudeMode).altitude\n val eyeHorizon = globe.horizonDistance(eyeAltitude)\n val atmosphereHorizon = globe.horizonDistance(atmosphereAltitude)\n\n // The far distance is set to the smallest value that does not clip the atmosphere.\n var far = eyeHorizon + atmosphereHorizon\n if (far < 1e3) far = 1e3\n\n //The near distance is set to a large value that does not clip the globe's surface.\n val maxDepthValue = (1 shl depthBits) - 1\n val farResolution = 10.0\n var near = far / (maxDepthValue / (1 - farResolution / far) - maxDepthValue + 1)\n\n // Prevent the near clip plane from intersecting the terrain.\n val distanceToSurface = eyeAltitude - globe.getElevation(\n camera.position.latitude, camera.position.longitude\n ) * verticalExaggeration\n if (distanceToSurface > 0) {\n val tanHalfFov = tan(0.5 * camera.fieldOfView.inRadians)\n val maxNearDistance = distanceToSurface / (2 * sqrt(2 * tanHalfFov * tanHalfFov + 1))\n if (near > maxNearDistance) near = maxNearDistance\n }\n if (near < 1) near = 1.0\n\n // Compute a perspective projection matrix given the WorldWindow's viewport, field of view, and clip distances.\n projection.setToPerspectiveProjection(viewport.width, viewport.height, camera.fieldOfView, near, far)\n\n // Compute a Cartesian transform matrix from the Camera.\n cameraToViewingTransform(modelview)\n }\n\n protected open fun cameraToViewingTransform(result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the camera's position.\n geographicToCartesianTransform(camera.position, camera.altitudeMode, result)\n\n // Transform by the heading, tilt and roll.\n result.multiplyByRotation(0.0, 0.0, 1.0, -camera.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, camera.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, camera.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun lookAtToViewingTransform(lookAt: LookAt, result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the look-at's position.\n geographicToCartesianTransform(lookAt.position, lookAt.altitudeMode, result)\n\n // Transform by the heading and tilt.\n result.multiplyByRotation(0.0, 0.0, 1.0, -lookAt.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, lookAt.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, lookAt.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Transform by the range.\n result.multiplyByTranslation(0.0, 0.0, lookAt.range)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun geographicToCartesianTransform(position: Position, altitudeMode: AltitudeMode, result: Matrix4): Matrix4 {\n when (altitudeMode) {\n AltitudeMode.ABSOLUTE -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, position.altitude, result\n )\n AltitudeMode.CLAMP_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration, result\n )\n AltitudeMode.RELATIVE_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, (position.altitude + globe.getElevation(\n position.latitude, position.longitude\n )) * verticalExaggeration, result\n )\n }\n return result\n }\n\n protected open fun applyLookAtLimits(lookAt: LookAt) {\n // Clamp latitude to between -90 and +90, and normalize longitude to between -180 and +180.\n lookAt.position.latitude = lookAt.position.latitude.clampLatitude()\n lookAt.position.longitude = lookAt.position.longitude.normalizeLongitude()\n\n // Clamp range to values greater than 1 in order to prevent degenerating to a first-person lookAt when\n // range is zero.\n lookAt.range = lookAt.range.coerceIn(10.0, distanceToViewGlobeExtents * 2)\n\n // Normalize heading to between -180 and +180.\n lookAt.heading = lookAt.heading.normalize180()\n\n // Clamp tilt to between 0 and +90 to prevent the viewer from going upside down.\n lookAt.tilt = lookAt.tilt.inDegrees.coerceIn(0.0, 90.0).degrees\n\n // Normalize heading to between -180 and +180.\n lookAt.roll = lookAt.roll.normalize180()\n\n // Apply 2D limits when the globe is 2D.\n if (globe.is2D) {\n // Clamp range to prevent more than 360 degrees of visible longitude. Assumes a 45 degree horizontal\n // field of view.\n lookAt.range = lookAt.range.coerceIn(1.0, 2.0 * PI * globe.equatorialRadius)\n\n // Force tilt to 0 when in 2D mode to keep the viewer looking straight down.\n lookAt.tilt = Angle.ZERO\n }\n }\n\n companion object {\n protected const val COLLISION_THRESHOLD = 10.0 // 10m above surface\n\n private val _events = MutableSharedFlow(extraBufferCapacity = 1)\n\n /**\n * Provides a global mechanism for broadcasting notifications within the WorldWind library.\n */\n @JvmStatic\n val events = _events.asSharedFlow()\n\n /**\n * Requests that all WorldWindow instances update their display. Internally, this dispatches a REQUEST_REDRAW\n * message to the WorldWind message center.\n */\n @JvmStatic\n fun requestRedraw() { _events.tryEmit(Event.RequestRedraw) }\n\n /**\n * Requests render resource cache to remove specified resource ID from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n @JvmStatic\n suspend fun unmarkResourceAbsent(resourceId: Int) { _events.emit(Event.UnmarkResourceAbsent(resourceId)) }\n }\n\n sealed interface Event {\n /**\n * Event requesting WorldWindow instances to update their display.\n */\n object RequestRedraw : Event\n /**\n * Event requesting RenderResourceCache to un-mark resource from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n data class UnmarkResourceAbsent(val resourceId: Int) : Event\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport earth.worldwind.util.kgl.GL_UNSIGNED_SHORT\nimport kotlin.jvm.JvmStatic\n\nopen class BasicDrawableTerrain protected constructor(): DrawableTerrain {\n override val sector = Sector()\n override val vertexOrigin = Vec3()\n val lineElementRange = Range()\n val triStripElementRange = Range()\n var vertexPoints: FloatBufferObject? = null\n var vertexTexCoords: FloatBufferObject? = null\n var elements: ShortBufferObject? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): BasicDrawableTerrain {\n val instance = pool.acquire() ?: BasicDrawableTerrain()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n vertexPoints = null\n vertexTexCoords = null\n elements = null\n pool?.release(this)\n pool = null\n }\n\n override fun useVertexPointAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexPoints?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 3, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexTexCoordAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexTexCoords?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 2, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun drawLines(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.drawElements(\n GL_LINES, lineElementRange.length,\n GL_UNSIGNED_SHORT, lineElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun drawTriangles(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc)?:false\n if (bufferBound) dc.gl.drawElements(\n GL_TRIANGLE_STRIP, triStripElementRange.length,\n GL_UNSIGNED_SHORT, triStripElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun draw(dc: DrawContext) {\n drawTriangles(dc)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Framebuffer\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.kgl.*\n\nopen class DrawContext(val gl: Kgl) {\n val eyePoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n// val infiniteProjection = Matrix4()\n val screenProjection = Matrix4()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var isPickMode = false\n private var framebuffer = KglFramebuffer.NONE\n private var program = KglProgram.NONE\n private var textureUnit = GL_TEXTURE0\n private val textures = Array(32) {KglTexture.NONE}\n private var arrayBuffer = KglBuffer.NONE\n private var elementArrayBuffer = KglBuffer.NONE\n private var scratchFramebufferCache: Framebuffer? = null\n private var unitSquareBufferCache: FloatBufferObject? = null\n private var scratchBuffer = ByteArray(4)\n private val pixelArray = ByteArray(4)\n /**\n * Returns count of terrain drawables in queue\n */\n val drawableTerrainCount get() = drawableTerrain?.count?:0\n /**\n * Returns the name of the OpenGL framebuffer object that is currently active.\n */\n val currentFramebuffer get() = framebuffer\n /**\n * Returns the name of the OpenGL program object that is currently active.\n */\n val currentProgram get() = program\n /**\n * Returns the OpenGL multitexture unit that is currently active. Returns a value from the GL_TEXTUREi enumeration,\n * where i ranges from 0 to 32.\n */\n val currentTextureUnit get() = textureUnit\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the active multitexture unit. The active\n * multitexture unit may be determined by calling currentTextureUnit.\n */\n val currentTexture get() = currentTexture(textureUnit)\n /**\n * Returns an OpenGL framebuffer object suitable for offscreen drawing. The framebuffer has a 32-bit color buffer\n * and a 32-bit depth buffer, both attached as OpenGL texture 2D objects.\n *
\n * The framebuffer may be used by any drawable and for any purpose. However, the draw context makes no guarantees\n * about the framebuffer's contents. Drawables must clear the framebuffer before use, and must assume its contents\n * may be modified by another drawable, either during the current frame or in a subsequent frame.\n *
\n * The OpenGL framebuffer object is created on first use and cached. Subsequent calls to this method return the\n * cached buffer object.\n */\n val scratchFramebuffer get() = scratchFramebufferCache ?: Framebuffer().apply {\n val colorAttachment = Texture(1024, 1024, GL_RGBA, GL_UNSIGNED_BYTE, true)\n val depthAttachment = Texture(1024, 1024, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, true)\n // TODO consider modifying Texture's tex parameter behavior in order to make this unnecessary\n depthAttachment.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n depthAttachment.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n attachTexture(this@DrawContext, colorAttachment, GL_COLOR_ATTACHMENT0)\n attachTexture(this@DrawContext, depthAttachment, GL_DEPTH_ATTACHMENT)\n }.also { scratchFramebufferCache = it }\n /**\n * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and\n * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order\n * required by a triangle strip.\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val unitSquareBuffer get() = unitSquareBufferCache ?: FloatBufferObject(\n GL_ARRAY_BUFFER, floatArrayOf(0f, 1f, 0f, 0f, 1f, 1f, 1f, 0f)\n ).also { unitSquareBufferCache = it }\n /**\n * Returns a scratch list suitable for accumulating entries during drawing. The list is cleared before each frame,\n * otherwise its contents are undefined.\n */\n val scratchList = mutableListOf()\n\n fun reset() {\n eyePoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n screenProjection.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickViewport = null\n pickPoint = null\n isPickMode = false\n scratchBuffer.fill(0)\n scratchList.clear()\n }\n\n fun contextLost() {\n // Clear objects and values associated with the current OpenGL context.\n framebuffer = KglFramebuffer.NONE\n program = KglProgram.NONE\n textureUnit = GL_TEXTURE0\n arrayBuffer = KglBuffer.NONE\n elementArrayBuffer = KglBuffer.NONE\n scratchFramebufferCache = null\n unitSquareBufferCache = null\n textures.fill(KglTexture.NONE)\n }\n\n fun peekDrawable() = drawableQueue?.peekDrawable()\n\n fun pollDrawable() = drawableQueue?.pollDrawable()\n\n fun rewindDrawables() { drawableQueue?.rewindDrawables() }\n\n fun getDrawableTerrain(index: Int) = drawableTerrain?.getDrawable(index) as DrawableTerrain? ?: error(\"Invalid index\")\n\n /**\n * Makes an OpenGL framebuffer object active. The active framebuffer becomes the target of all OpenGL commands that\n * render to the framebuffer or read from the framebuffer. This has no effect if the specified framebuffer object is\n * already active. The default is framebuffer 0, indicating that the default framebuffer provided by the windowing\n * system is active.\n *\n * @param framebuffer the name of the OpenGL framebuffer object to make active, or 0 to make the default\n * framebuffer provided by the windowing system active\n */\n fun bindFramebuffer(framebuffer: KglFramebuffer) {\n if (this.framebuffer != framebuffer) {\n this.framebuffer = framebuffer\n gl.bindFramebuffer(GL_FRAMEBUFFER, framebuffer)\n }\n }\n\n /**\n * Makes an OpenGL program object active as part of current rendering state. This has no effect if the specified\n * program object is already active. The default is program 0, indicating that no program is active.\n *\n * @param program the name of the OpenGL program object to make active, or 0 to make no program active\n */\n fun useProgram(program: KglProgram) {\n if (this.program != program) {\n this.program = program\n gl.useProgram(program)\n }\n }\n\n /**\n * Specifies the OpenGL multitexture unit to make active. This has no effect if the specified multitexture unit is\n * already active. The default is GL_TEXTURE0.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n */\n fun activeTextureUnit(textureUnit: Int) {\n if (this.textureUnit != textureUnit) {\n this.textureUnit = textureUnit\n gl.activeTexture(textureUnit)\n }\n }\n\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the specified multitexture unit.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n *\n * @return the currently bound texture 2D object, or 0 if no texture object is bound\n */\n fun currentTexture(textureUnit: Int) = textures[textureUnit - GL_TEXTURE0]\n\n /**\n * Makes an OpenGL texture 2D object bound to the current multitexture unit. This has no effect if the specified\n * texture object is already bound. The default is texture 0, indicating that no texture is bound.\n *\n * @param texture the name of the OpenGL texture 2D object to make active, or 0 to make no texture active\n */\n fun bindTexture(texture: KglTexture) {\n val textureUnitIndex = textureUnit - GL_TEXTURE0\n if (textures[textureUnitIndex] != texture) {\n textures[textureUnitIndex] = texture\n gl.bindTexture(GL_TEXTURE_2D, texture)\n }\n }\n\n /**\n * Returns the name of the OpenGL buffer object bound to the specified target buffer.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n *\n * @return the currently bound buffer object, or 0 if no buffer object is bound\n */\n fun currentBuffer(target: Int): KglBuffer {\n return when (target) {\n GL_ARRAY_BUFFER -> arrayBuffer\n GL_ELEMENT_ARRAY_BUFFER -> elementArrayBuffer\n else -> KglBuffer.NONE\n }\n }\n\n /**\n * Makes an OpenGL buffer object bound to a specified target buffer. This has no effect if the specified buffer\n * object is already bound. The default is buffer 0, indicating that no buffer object is bound.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n * @param buffer the name of the OpenGL buffer object to make active\n */\n fun bindBuffer(target: Int, buffer: KglBuffer) {\n if (target == GL_ARRAY_BUFFER && arrayBuffer != buffer) {\n arrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else if (target == GL_ELEMENT_ARRAY_BUFFER && elementArrayBuffer != buffer) {\n elementArrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else {\n gl.bindBuffer(target, buffer)\n }\n }\n\n /**\n * Reads the fragment color at a screen point in the currently active OpenGL frame buffer. The X and Y components\n * indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param result an optional pre-allocated Color in which to return the fragment color, or null to return a new\n * color\n *\n * @return the result argument set to the fragment color, or a new color if the result is null\n */\n fun readPixelColor(x: Int, y: Int, result: Color): Color {\n // Read the fragment pixel as an RGBA 8888 color.\n gl.readPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelArray)\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelArray[0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelArray[1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelArray[2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelArray[3].toInt() and 0xFF) / 0xFF.toFloat()\n return result\n }\n\n /**\n * Reads the unique fragment colors within a screen rectangle in the currently active OpenGL frame buffer. The\n * components indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen rectangle's X component\n * @param y the screen rectangle's Y component\n * @param width the screen rectangle's width\n * @param height the screen rectangle's height\n *\n * @return a set containing the unique fragment colors\n */\n fun readPixelColors(x: Int, y: Int, width: Int, height: Int): Set {\n // Read the fragment pixels as a tightly packed array of RGBA 8888 colors.\n val pixelCount = width * height\n val pixelBuffer = scratchBuffer(pixelCount * 4)\n gl.readPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBuffer)\n val resultSet = mutableSetOf()\n var result = Color()\n for (idx in 0 until pixelCount step 4) {\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelBuffer[idx + 0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelBuffer[idx + 1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelBuffer[idx + 2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelBuffer[idx + 3].toInt() and 0xFF) / 0xFF.toFloat()\n\n // Accumulate the unique colors in a set.\n if (resultSet.add(result)) result = Color()\n }\n return resultSet\n }\n\n /**\n * Returns a scratch NIO buffer suitable for use during drawing. The returned buffer has capacity at least equal to\n * the specified capacity. The buffer is cleared before each frame, otherwise its contents, position, limit and mark\n * are undefined.\n *\n * @param capacity the buffer's minimum capacity in bytes\n *\n * @return the draw context's scratch buffer\n */\n fun scratchBuffer(capacity: Int): ByteArray {\n if (scratchBuffer.size < capacity) scratchBuffer = ByteArray(capacity)\n return scratchBuffer\n }\n}",null,null,"package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.BasicShaderProgram\n\nopen class DrawShapeState internal constructor() {\n companion object {\n const val MAX_DRAW_ELEMENTS = 4\n }\n\n var program: BasicShaderProgram? = null\n var vertexBuffer: FloatBufferObject? = null\n var elementBuffer: AbstractBufferObject? = null\n val vertexOrigin = Vec3()\n var vertexStride = 0\n var enableCullFace = true\n var enableDepthTest = true\n var enableDepthWrite = true\n var depthOffset = 0.0\n protected val color = Color()\n protected var opacity: Float = 1.0f\n protected var lineWidth = 1f\n protected var texture: Texture? = null\n protected val texCoordMatrix = Matrix3()\n private val texCoordAttrib = VertexAttrib()\n internal var primCount = 0\n internal val prims = Array(MAX_DRAW_ELEMENTS) { DrawElements() }\n\n open fun reset() {\n program = null\n vertexBuffer = null\n elementBuffer = null\n vertexOrigin.set(0.0, 0.0, 0.0)\n vertexStride = 0\n enableCullFace = true\n enableDepthTest = true\n depthOffset = 0.0\n color.set(1f, 1f, 1f, 1f)\n opacity = 1.0f\n lineWidth = 1f\n texture = null\n texCoordMatrix.setToIdentity()\n texCoordAttrib.size = 0\n texCoordAttrib.offset = 0\n primCount = 0\n for (idx in 0 until MAX_DRAW_ELEMENTS) prims[idx].texture = null\n }\n\n fun color(color: Color) = apply { this.color.copy(color) }\n\n fun opacity(opacity: Float) = apply { this.opacity = opacity }\n\n fun lineWidth(width: Float) = apply { lineWidth = width }\n\n fun texture(texture: Texture?) = apply { this.texture = texture }\n\n fun texCoordMatrix(matrix: Matrix3) = apply { texCoordMatrix.copy(matrix) }\n\n fun texCoordAttrib(size: Int, offset: Int) = apply {\n texCoordAttrib.size = size\n texCoordAttrib.offset = offset\n }\n\n open fun drawElements(mode: Int, count: Int, type: Int, offset: Int) {\n val prim = prims[primCount++]\n prim.mode = mode\n prim.count = count\n prim.type = type\n prim.offset = offset\n prim.color.copy(color)\n prim.opacity = opacity\n prim.lineWidth = lineWidth\n prim.texture = texture\n prim.texCoordMatrix.copy(texCoordMatrix)\n prim.texCoordAttrib.size = texCoordAttrib.size\n prim.texCoordAttrib.offset = texCoordAttrib.offset\n }\n\n internal open class DrawElements {\n var mode = 0\n var count = 0\n var type = 0\n var offset = 0\n val color = Color()\n var opacity: Float = 1.0f\n var lineWidth = 0f\n var texture: Texture? = null\n val texCoordMatrix = Matrix3()\n val texCoordAttrib = VertexAttrib()\n }\n\n internal open class VertexAttrib {\n var size = 0\n var offset = 0\n }\n}","package earth.worldwind.draw\n\n/**\n * Drawable group provides a standard set of group IDs for organizing WorldWindow drawing into four phases:\n * background, surface, shape, and screen.\n * Accepted values are [BACKGROUND], [SURFACE], [SHAPE] and [SCREEN].\n */\nenum class DrawableGroup {\n /**\n * Indicating drawables displayed before everything else. This group is typically\n * used to display atmosphere and stars before all other drawables.\n */\n BACKGROUND,\n /**\n * Indicating drawables displayed on the globe's surface. Surface drawables are\n * displayed beneath shapes and screen drawables.\n */\n SURFACE,\n /**\n * Indicating shape drawables, such as placemarks, polygons and polylines. Shape\n * drawables are displayed on top of surface drawables, but beneath screen drawables.\n */\n SHAPE,\n /**\n * Indicating drawables displayed in the plane of the screen. Screen drawables are\n * displayed on top of everything else.\n */\n SCREEN;\n}","package earth.worldwind.draw\n\nopen class DrawableLambda(protected val lambda: (dc: DrawContext) -> Unit): Drawable {\n override fun recycle() { }\n /**\n * Performs the actual rendering in OpenGL.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) = lambda(dc)\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableLines protected constructor(): Drawable {\n var vertexPoints: FloatBufferObject? = null\n val mvpMatrix = Matrix4()\n val color = Color()\n var lineWidth = 1f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableLines {\n val instance = pool.acquire() ?: DrawableLines()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n pool?.release(this)\n pool = null\n }\n\n /**\n * Performs the actual rendering of the Placemark.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n\n // Disable texturing.\n program.enableTexture(false)\n\n // Use the leader's color.\n program.loadColor(color)\n\n // Use the leader's modelview-projection matrix.\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable depth testing if requested.\n if (!enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Apply the leader's line width in screen pixels.\n dc.gl.lineWidth(lineWidth)\n\n // Use the leader line as the vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the leader line.\n dc.gl.drawArrays(GL_LINES, 0 /*first*/, 2 /*count*/)\n\n // Restore the default WorldWind OpenGL state.\n if (!enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n\n dc.gl.lineWidth(1f)\n }\n}","package earth.worldwind.draw\n\nimport kotlin.math.max\n\nopen class DrawableQueue internal constructor(){\n protected var size = 0\n protected var position = 0\n protected var entries = arrayOfNulls(size)\n val count get() = size\n /**\n * Sorts drawables by ascending group ID, then ascending order, then by ascending ordinal.\n */\n protected open val sortComparator = Comparator { lhs, rhs ->\n // Comparator accepts only non-null Entries\n var result = lhs!!.groupId.compareTo(rhs!!.groupId)\n if (result == 0) result = lhs.order.compareTo(rhs.order)\n if (result == 0) result = lhs.ordinal.compareTo(rhs.ordinal)\n result\n }\n\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, depth: Double) {\n val capacity = entries.size\n if (capacity == size) {\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries)\n entries = newEntries\n }\n val entry = entries[size] ?: Entry().also { entries[size] = it }\n entry.set(drawable, groupId, depth, size++)\n }\n\n fun getDrawable(index: Int) = if (index < size) entries[index]?.drawable else null\n\n fun peekDrawable() = getDrawable(position)\n\n fun pollDrawable() = getDrawable(position++)\n\n fun rewindDrawables() { position = 0 }\n\n fun sortDrawables() {\n // Limit sort to non-null Entries only\n entries.sortWith(sortComparator, 0, size)\n position = 0\n }\n\n fun clearDrawables() {\n for (idx in 0 until size) {\n entries[idx]?.recycle()\n }\n size = 0\n position = 0\n }\n\n protected open class Entry {\n var drawable: Drawable? = null\n var groupId = DrawableGroup.BACKGROUND\n var order = 0.0\n var ordinal = 0\n\n fun set(drawable: Drawable, groupId: DrawableGroup, order: Double, ordinal: Int) {\n this.drawable = drawable\n this.groupId = groupId\n this.order = order\n this.ordinal = ordinal\n }\n\n fun recycle() {\n drawable?.recycle()\n drawable = null\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableScreenTexture protected constructor(): Drawable {\n val unitSquareTransform = Matrix4()\n val color = Color()\n var opacity: Float = 1.0f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n var texture: Texture? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableScreenTexture {\n val instance = pool.acquire() ?: DrawableScreenTexture()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n texture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.unitSquareBuffer.bindBuffer(dc)) return // vertex buffer failed to bind\n\n // Use the draw context's pick mode and use the drawable's color.\n program.enablePickMode(dc.isPickMode)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Disable writing to the depth buffer.\n dc.gl.depthMask(false)\n\n // Use a unit square as the vertex point and vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 2, GL_FLOAT, false, 0, 0)\n dc.gl.vertexAttribPointer(1 /*vertexTexCoord*/, 2, GL_FLOAT, false, 0, 0)\n\n // Draw this DrawableScreenTextures.\n doDraw(dc, this)\n\n // Draw all DrawableScreenTextures adjacent in the queue that share the same GLSL program.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n val drawable = dc.pollDrawable() as DrawableScreenTexture // take it off the queue\n doDraw(dc, drawable)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n\n protected open fun doDraw(dc: DrawContext, drawable: DrawableScreenTexture) {\n val program = drawable.program ?: return\n\n // Use the drawable's color.\n program.loadColor(drawable.color)\n program.loadOpacity(opacity)\n\n // Attempt to bind the drawable's texture, configuring the shader program appropriately if there is no texture\n // or if the texture failed to bind.\n val texture = drawable.texture\n if (texture?.bindTexture(dc) == true) {\n program.enableTexture(true)\n program.loadTexCoordMatrix(texture.coordTransform)\n } else {\n program.enableTexture(false)\n }\n\n // Use a modelview-projection matrix that transforms the unit square to screen coordinates.\n drawable.mvpMatrix.setToMultiply(dc.screenProjection, drawable.unitSquareTransform)\n program.loadModelviewProjection(drawable.mvpMatrix)\n\n // Disable depth testing if requested.\n if (!drawable.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Draw the unit square as triangles.\n dc.gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4)\n\n // Restore the default WorldWind OpenGL state.\n if (!drawable.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableScreenTexture && program === that.program\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_CULL_FACE\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableShape protected constructor(): Drawable {\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableShape {\n val instance = pool.acquire() ?: DrawableShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n // TODO shape batching\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (drawState.vertexBuffer?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n if (drawState.elementBuffer?.bindBuffer(dc) != true) return // element buffer unspecified or failed to bind\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Use the draw context's modelview projection matrix, transformed to shape local coordinates.\n if (drawState.depthOffset != 0.0) {\n mvpMatrix.copy(dc.projection).offsetProjectionDepth(drawState.depthOffset)\n mvpMatrix.multiplyByMatrix(dc.modelview)\n } else {\n mvpMatrix.copy(dc.modelviewProjection)\n }\n mvpMatrix.multiplyByTranslation(\n drawState.vertexOrigin.x,\n drawState.vertexOrigin.y,\n drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable triangle back face culling if requested.\n if (!drawState.enableCullFace) dc.gl.disable(GL_CULL_FACE)\n\n // Disable depth testing if requested.\n if (!drawState.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Disable depth writing if requested.\n if (!drawState.enableDepthWrite) dc.gl.depthMask(false)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0 /*offset*/)\n\n // Draw the specified primitives.\n for (idx in 0 until drawState.primCount) {\n val prim = drawState.prims[idx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Restore the default WorldWind OpenGL state.\n if (!drawState.enableCullFace) dc.gl.enable(GL_CULL_FACE)\n if (!drawState.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n if (!drawState.enableDepthWrite) dc.gl.depthMask(true)\n dc.gl.lineWidth(1f)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSightline protected constructor(): Drawable {\n val centerTransform = Matrix4()\n var range = 0f\n val visibleColor = Color(0f, 0f, 0f, 0f)\n val occludedColor = Color(0f, 0f, 0f, 0f)\n var program: SightlineProgram? = null\n private var pool: Pool? = null\n private val sightlineView = Matrix4()\n private val matrix = Matrix4()\n private val cubeMapProjection = Matrix4()\n private val cubeMapFace = arrayOf(\n Matrix4().setToRotation(0.0, 0.0, 1.0, NEG90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // positive X\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative X\n Matrix4().setToRotation(1.0, 0.0, 0.0, POS90), // positive Y\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS180).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative Y\n /*Matrix4().setToRotation(1.0, 0.0, 0.0, POS180),*/ // positive Z, intentionally omitted as terrain is never visible when looking up\n Matrix4() // negative Z\n )\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSightline {\n val instance = pool.acquire() ?: DrawableSightline()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n visibleColor.set(0f, 0f, 0f, 0f)\n occludedColor.set(0f, 0f, 0f, 0f)\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the drawable's color.\n program.loadRange(range)\n program.loadColor(visibleColor, occludedColor)\n\n // Configure the cube map projection matrix to capture one face of the cube map as far as the sightline's range.\n cubeMapProjection.setToPerspectiveProjection(1, 1, POS90, 1.0, range.toDouble())\n\n // TODO accumulate only the visible terrain, which can be used in both passes\n // TODO give terrain a bounding box, test with a frustum set using depthviewProjection\n for (i in cubeMapFace.indices) {\n sightlineView.copy(centerTransform)\n sightlineView.multiplyByMatrix(cubeMapFace[i])\n sightlineView.invertOrthonormal()\n if (drawSceneDepth(dc)) drawSceneOcclusion(dc)\n }\n }\n\n protected open fun drawSceneDepth(dc: DrawContext): Boolean {\n val program = program ?: return false\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return false // framebuffer failed to bind\n\n // Clear the framebuffer.\n val depthTexture = framebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n dc.gl.viewport(0, 0, depthTexture.width, depthTexture.height)\n dc.gl.clear(GL_DEPTH_BUFFER_BIT)\n\n // Draw only depth values offset slightly away from the viewer.\n dc.gl.colorMask(r = false, g = false, b = false, a = false)\n dc.gl.enable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(4f, 4f)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Draw the terrain onto one face of the cube map, from the sightline's point of view.\n matrix.setToMultiply(cubeMapProjection, sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Restore the default World Wind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.colorMask(r = true, g = true, b = true, a = true)\n dc.gl.disable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(0f, 0f)\n }\n return true\n }\n\n protected open fun drawSceneOcclusion(dc: DrawContext) {\n val program = program ?: return\n try {\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n val depthTexture = dc.scratchFramebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n if (!depthTexture.bindTexture(dc)) return // framebuffer texture failed to bind\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n matrix.copy(dc.modelviewProjection)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Map the terrain into one face of the cube map, from the sightline's point of view.\n matrix.copy(sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadSightlineProjection(cubeMapProjection, matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Unbind depth attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceColor protected constructor(): Drawable {\n val color = Color()\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceColor {\n val instance = pool.acquire() ?: DrawableSurfaceColor()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceShape protected constructor(): Drawable {\n val sector = Sector()\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val textureMvpMatrix = Matrix4()\n private val identityMatrix3 = Matrix3()\n private val color = Color()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceShape {\n val instance = pool.acquire() ?: DrawableSurfaceShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n\n // Accumulate shapes in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this shape.\n scratchList.add(this)\n\n // Add all shapes that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (next !is DrawableSurfaceShape) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated shapes on each drawable terrain.\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n // Draw the accumulated surface shapes to a texture representing the terrain's sector.\n if (drawShapesToTexture(dc, terrain) > 0) {\n // Draw the texture containing the rasterized shapes onto the terrain geometry.\n drawTextureToTerrain(dc, terrain)\n }\n }\n } finally {\n // Clear the accumulated shapes.\n scratchList.clear()\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n }\n\n protected open fun drawShapesToTexture(dc: DrawContext, terrain: DrawableTerrain): Int {\n // Shapes have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n\n // The terrain's sector defines the geographic region in which to draw.\n val terrainSector = terrain.sector\n\n // Keep track of the number of shapes drawn into the texture.\n var shapeCount = 0\n val program = drawState.program ?: return 0\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return 0 // framebuffer failed to bind\n\n // Clear the framebuffer and disable the depth test.\n val colorAttachment = framebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n dc.gl.viewport(0, 0, colorAttachment.width, colorAttachment.height)\n dc.gl.clear(GL_COLOR_BUFFER_BIT)\n dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Compute the tile common matrix that transforms geographic coordinates to texture fragments appropriate\n // for the terrain sector.\n // TODO capture this in a method on Matrix4\n textureMvpMatrix.setToIdentity()\n textureMvpMatrix.multiplyByTranslation(-1.0, -1.0, 0.0)\n textureMvpMatrix.multiplyByScale(\n 2.0 / terrainSector.deltaLongitude.inDegrees,\n 2.0 / terrainSector.deltaLatitude.inDegrees,\n 0.0\n )\n textureMvpMatrix.multiplyByTranslation(\n -terrainSector.minLongitude.inDegrees,\n -terrainSector.minLatitude.inDegrees,\n 0.0\n )\n for (element in scratchList) {\n // Get the shape.\n val shape = element as DrawableSurfaceShape\n if (!shape.sector.intersectsOrNextTo(terrainSector)) continue\n if (shape.drawState.vertexBuffer?.bindBuffer(dc) != true) continue // vertex buffer unspecified or failed to bind\n if (shape.drawState.elementBuffer?.bindBuffer(dc) != true) continue // element buffer unspecified or failed to bind\n\n // Transform local shape coordinates to texture fragments appropriate for the terrain sector.\n mvpMatrix.copy(textureMvpMatrix)\n mvpMatrix.multiplyByTranslation(\n shape.drawState.vertexOrigin.x,\n shape.drawState.vertexOrigin.y,\n shape.drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Use the shape's vertex point attribute.\n dc.gl.vertexAttribPointer(\n 0 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0\n )\n\n // Draw the specified primitives to the framebuffer texture.\n for (primIdx in 0 until shape.drawState.primCount) {\n val prim = shape.drawState.prims[primIdx]\n program.loadColor(prim.color)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n shape.drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Accumulate the number of shapes drawn into the texture.\n shapeCount++\n }\n } finally {\n // Restore the default WorldWind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.lineWidth(1f)\n }\n return shapeCount\n }\n\n protected open fun drawTextureToTerrain(dc: DrawContext, terrain: DrawableTerrain) {\n val program = drawState.program ?: return\n try {\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)) return // terrain vertex attribute failed to bind\n val colorAttachment = dc.scratchFramebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n if (!colorAttachment.bindTexture(dc)) return // framebuffer texture failed to bind\n\n // Configure the program to draw texture fragments unmodified and aligned with the terrain.\n // TODO consolidate pickMode and enableTexture into a single textureMode\n // TODO it's confusing that pickMode must be disabled during surface shape render-to-texture\n program.enablePickMode(false)\n program.enableTexture(true)\n program.loadTexCoordMatrix(identityMatrix3)\n program.loadColor(color)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n } finally {\n // Unbind color attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceTexture protected constructor(): Drawable {\n val sector = Sector()\n val color = Color()\n var opacity: Float = 1.0f\n val texCoordMatrix = Matrix3()\n var texture: Texture? = null\n var program: SurfaceTextureProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceTexture {\n val instance = pool.acquire() ?: DrawableSurfaceTexture()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(\n program: SurfaceTextureProgram?, sector: Sector?, texture: Texture?, texCoordMatrix: Matrix3?\n ) = apply {\n if (sector != null) this.sector.copy(sector) else this.sector.setEmpty()\n this.opacity = 1f\n this.color.set(1f, 1f, 1f, 1f)\n if (texCoordMatrix != null) this.texCoordMatrix.copy(texCoordMatrix) else this.texCoordMatrix.setToIdentity()\n this.texture = texture\n this.program = program\n }\n\n override fun recycle() {\n texture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Accumulate surface textures in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this surface texture.\n scratchList.add(this)\n\n // Add all surface textures that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated surface textures.\n drawSurfaceTextures(dc)\n } finally {\n // Clear the accumulated surface textures.\n scratchList.clear()\n }\n }\n\n protected open fun drawSurfaceTextures(dc: DrawContext) {\n val program = program ?: return // program unspecified\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Enable the program to display surface textures from multi-texture unit 0.\n program.enableTexture(true)\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Surface textures have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainSector = terrain.sector\n val terrainOrigin = terrain.vertexOrigin\n var usingTerrainAttrs = false\n for (element in scratchList) {\n // Get the surface texture and its sector.\n val texture = element as DrawableSurfaceTexture\n val textureSector = texture.sector\n if (!textureSector.intersects(terrainSector)) continue // texture does not intersect the terrain\n if (!texture.bindTexture(dc)) continue // texture failed to bind\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!usingTerrainAttrs &&\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) {\n // Suppress subsequent tile state application until the next terrain.\n usingTerrainAttrs = true\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n }\n if (!usingTerrainAttrs) continue // terrain vertex attribute failed to bind\n\n // Use tex coord matrices that register the surface texture correctly and mask terrain fragments that\n // fall outside the surface texture's sector.\n program.texCoordMatrix[0].copy(texture.texCoordMatrix)\n program.texCoordMatrix[0].multiplyByTileTransform(terrainSector, textureSector)\n program.texCoordMatrix[1].setToTileTransform(terrainSector, textureSector)\n program.loadTexCoordMatrix()\n\n // Use the surface texture's RGBA color.\n program.loadColor(texture.color)\n // Use the surface texture's opacity.\n program.loadOpacity(texture.opacity)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableSurfaceTexture && program === that.program\n\n private fun bindTexture(dc: DrawContext) = texture?.bindTexture(dc) == true\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableTessellation protected constructor(): Drawable {\n val color = Color()\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val offsetMvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableTessellation {\n val instance = pool.acquire() ?: DrawableTessellation()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(program: BasicShaderProgram?, color: Color?) = apply {\n if (color != null) this.color.copy(color) else this.color.set(1f, 1f, 1f, 1f)\n this.program = program\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n\n // Suppress writes to the OpenGL depth buffer.\n dc.gl.depthMask(false)\n\n // Compute the portion of the modelview projection matrix that remains constant for each tile.\n offsetMvpMatrix.copy(dc.projection)\n offsetMvpMatrix.offsetProjectionDepth(-1.0e-3) // offset this layer's depth values toward the eye\n offsetMvpMatrix.multiplyByMatrix(dc.modelview)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(offsetMvpMatrix)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as lines.\n terrain.drawLines(dc)\n }\n\n // Restore default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObject.Companion.fromTerrain\nimport earth.worldwind.PickedObject.Companion.identifierToUniqueColor\nimport earth.worldwind.PickedObject.Companion.uniqueColorToIdentifier\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableSurfaceColor\nimport earth.worldwind.draw.DrawableSurfaceColor.Companion.obtain\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_COLOR_BUFFER_BIT\nimport earth.worldwind.util.kgl.GL_DEPTH_BUFFER_BIT\nimport kotlin.math.roundToInt\n\nopen class BasicFrameController: FrameController {\n private var pickColor = Color()\n private val pickPoint = Vec3()\n private val pickPos = Position()\n\n override fun renderFrame(rc: RenderContext) {\n rc.terrainTessellator.tessellate(rc)\n if (rc.isPickMode) renderTerrainPickedObject(rc)\n rc.layers.render(rc)\n rc.sortDrawables()\n }\n\n protected open fun renderTerrainPickedObject(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to pick\n\n // Acquire a unique picked object ID for terrain.\n val pickedObjectId = rc.nextPickedObjectId()\n\n // Enqueue a drawable for processing on the OpenGL thread that displays terrain in the unique pick color.\n val pool = rc.getDrawablePool()\n val drawable = obtain(pool)\n identifierToUniqueColor(pickedObjectId, drawable.color)\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n rc.offerSurfaceDrawable(drawable, Double.NEGATIVE_INFINITY)\n\n // If the pick ray intersects the terrain, enqueue a picked object that associates the terrain drawable with its\n // picked object ID and the intersection position.\n val pickRay = rc.pickRay\n if (pickRay != null && rc.terrain.intersect(pickRay, pickPoint)) {\n rc.globe.cartesianToGeographic(pickPoint.x, pickPoint.y, pickPoint.z, pickPos)\n rc.offerPickedObject(fromTerrain(pickedObjectId, pickPos))\n }\n }\n\n override fun drawFrame(dc: DrawContext) {\n clearFrame(dc)\n drawDrawables(dc)\n if (dc.isPickMode) resolvePick(dc)\n }\n\n protected open fun clearFrame(dc: DrawContext) {\n dc.gl.clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)\n }\n\n protected open fun drawDrawables(dc: DrawContext) {\n dc.rewindDrawables()\n while (true) {\n val next = dc.pollDrawable() ?: break\n try {\n next.draw(dc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"BasicFrameController\", \"drawDrawables\",\n \"Exception while drawing '$next'\", e\n )\n // Keep going. Draw the remaining drawables.\n }\n }\n }\n\n protected open fun resolvePick(dc: DrawContext) {\n val pickedObjects = dc.pickedObjects ?: return\n if (pickedObjects.count == 0) return // no eligible objects; avoid expensive calls to glReadPixels\n val pickViewport = dc.pickViewport ?: return\n val pickPointOnly = dc.pickPoint != null && pickViewport.width <= 3 && pickViewport.height <= 3\n var objectFound = false\n\n dc.pickPoint?.let { pickPoint ->\n // Read the fragment color at the pick point.\n dc.readPixelColor(pickPoint.x.roundToInt(), pickPoint.y.roundToInt(), pickColor)\n\n // Convert the fragment color to a picked object ID. It returns zero if the color cannot indicate a picked\n // object ID, in which case no objects have been drawn at the pick point.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject != null) {\n if (!topObject.isTerrain) objectFound = true // Non-terrain object found in pick point\n if (pickPointOnly || objectFound) {\n topObject.markOnTop()\n // Remove picked objects except top and terrain in case of object found or point only mode\n // Using clearPickedObjects and two offerPickedObject is faster than keepTopAndTerrainObjects\n val terrainObject = pickedObjects.terrainPickedObject\n pickedObjects.clearPickedObjects()\n pickedObjects.offerPickedObject(topObject)\n // handles null objects and duplicate objects\n if (terrainObject != null) pickedObjects.offerPickedObject(terrainObject)\n }\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no eligible objects drawn at the pick point\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no objects drawn at the pick point\n }\n\n if (!pickPointOnly && !objectFound) {\n // Read the unique fragment colors in the pick rectangle.\n dc.readPixelColors(pickViewport.x, pickViewport.y, pickViewport.width, pickViewport.height).forEach { pickColor ->\n // Convert the fragment color to a picked object ID. This returns zero if the color cannot indicate a picked\n // object ID.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject?.isTerrain == false) topObject.markOnTop()\n }\n }\n\n // Remove all picked objects not marked as on top or terrain.\n pickedObjects.keepTopAndTerrainObjects()\n }\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.util.Pool\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.jvm.JvmStatic\n\nopen class Frame {\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n// val infiniteProjection = Matrix4()\n val drawableQueue = DrawableQueue()\n val drawableTerrain = DrawableQueue()\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): Frame {\n val instance = pool.acquire() ?: Frame() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n open fun recycle() {\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue.clearDrawables()\n drawableTerrain.clearDrawables()\n pickedObjects?.let{ pickDeferred?.complete(it) } // Complete deferred pick if available\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pool?.release(this) // return this instance to the pool\n pool = null\n }\n}","package earth.worldwind.geom\n\n/**\n * Altitude mode indicates how WorldWind interprets a position's altitude component.\n * Accepted values are [ABSOLUTE], [CLAMP_TO_GROUND] and [RELATIVE_TO_GROUND].\n */\nenum class AltitudeMode {\n /**\n * Indicating an altitude relative to the globe's ellipsoid. Ignores the elevation of\n * the terrain directly beneath the position's latitude and longitude.\n */\n ABSOLUTE,\n /**\n * Indicating an altitude on the terrain. Ignores a position's specified altitude, and\n * always places the position on the terrain.\n */\n CLAMP_TO_GROUND,\n /**\n * Indicating an altitude relative to the terrain. The altitude indicates height above\n * the terrain directly beneath the position's latitude and longitude.\n */\n RELATIVE_TO_GROUND;\n}","package earth.worldwind.geom\n\nimport earth.worldwind.globe.Globe\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * Represents a bounding box in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingBox {\n /**\n * The box's center point.\n */\n internal val center = Vec3(0.0, 0.0, 0.0)\n /**\n * The center point of the box's bottom. (The origin of the R axis.)\n */\n protected val bottomCenter = Vec3(-0.5, 0.0, 0.0)\n /**\n * The center point of the box's top. (The end of the R axis.)\n */\n protected val topCenter = Vec3(0.5, 0.0, 0.0)\n /**\n * The box's R axis, its longest axis.\n */\n protected val r = Vec3(1.0, 0.0, 0.0)\n /**\n * The box's S axis, its mid-length axis.\n */\n protected val s = Vec3(0.0, 1.0, 0.0)\n /**\n * The box's T axis, its shortest axis.\n */\n protected val t = Vec3(0.0, 0.0, 1.0)\n /**\n * The box's radius. (The half-length of its diagonal.)\n */\n protected var radius = sqrt(3.0)\n\n private val endPoint1 = Vec3()\n private val endPoint2 = Vec3()\n private val scratchHeights = FloatArray(NUM_LAT * NUM_LON)\n private val scratchPoints = FloatArray(NUM_LAT * NUM_LON * 3)\n private var coherentPlaneIdx = -1\n\n /**\n * Indicates whether this bounding box is a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return true if this bounding box is a unit box, otherwise false\n */\n val isUnitBox get() = center.x == 0.0 && center.y == 0.0 && center.z == 0.0 && radius == sqrt(3.0)\n\n /**\n * Sets this bounding box to a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return This bounding box set to a unit box\n */\n fun setToUnitBox() = apply {\n center.set(0.0, 0.0, 0.0)\n bottomCenter.set(-0.5, 0.0, 0.0)\n topCenter.set(0.5, 0.0, 0.0)\n\n r.set(1.0, 0.0, 0.0)\n s.set(0.0, 1.0, 0.0)\n t.set(0.0, 0.0, 1.0)\n\n radius = sqrt(3.0)\n }\n\n /**\n * Sets this bounding box such that it minimally encloses a specified array of points.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return This bounding box set to contain the specified array of points.\n */\n fun setToPoints(array: FloatArray, count: Int, stride: Int) = apply {\n // Compute this box's axes by performing a principal component analysis on the array of points.\n val matrix = Matrix4()\n matrix.setToCovarianceOfPoints(array, count, stride)\n matrix.extractEigenvectors(r, s, t)\n r.normalize()\n s.normalize()\n t.normalize()\n\n // Find the extremes along each axis.\n var rMin = Double.POSITIVE_INFINITY\n var rMax = Double.NEGATIVE_INFINITY\n var sMin = Double.POSITIVE_INFINITY\n var sMax = Double.NEGATIVE_INFINITY\n var tMin = Double.POSITIVE_INFINITY\n var tMax = Double.NEGATIVE_INFINITY\n\n val p = Vec3()\n for (idx in 0 until count step stride) {\n p.set(array[idx].toDouble(), array[idx + 1].toDouble(), array[idx + 2].toDouble())\n\n val pdr = p.dot(r)\n if (rMin > pdr) rMin = pdr\n if (rMax < pdr) rMax = pdr\n\n val pds = p.dot(s)\n if (sMin > pds) sMin = pds\n if (sMax < pds) sMax = pds\n\n val pdt = p.dot(t)\n if (tMin > pdt) tMin = pdt\n if (tMax < pdt) tMax = pdt\n }\n\n // Ensure that the extremes along each axis have nonzero separation.\n if (rMax == rMin) rMax = rMin + 1\n if (sMax == sMin) sMax = sMin + 1\n if (tMax == tMin) tMax = tMin + 1\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rMax - rMin\n val sLen = sMax - sMin\n val tLen = tMax - tMin\n\n val rSum = rMax + rMin\n val sSum = sMax + sMin\n val tSum = tMax + tMin\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Sets this bounding box such that it contains a specified sector on a specified globe with min and max terrain\n * height.\n *
\n * To create a bounding box that contains the sector at mean sea level, specify zero for the minimum and maximum\n * height. To create a bounding box that contains the terrain surface in this sector, specify the actual minimum and\n * maximum height values associated with the terrain in the sector, multiplied by the scene's vertical\n * exaggeration.\n *
\n *\n * @param sector the sector for which to create the bounding box\n * @param globe the globe associated with the sector\n * @param minHeight the minimum terrain height within the sector\n * @param maxHeight the maximum terrain height within the sector\n *\n * @return this bounding box set to contain the specified sector\n */\n fun setToSector(sector: Sector, globe: Globe, minHeight: Float, maxHeight: Float) = apply {\n // Compute the cartesian points for a 3x3 geographic grid. This grid captures enough detail to bound the\n // sector. Use minimum elevation at the corners and max elevation everywhere else.\n val heights = scratchHeights\n heights.fill(maxHeight)\n heights[0] = minHeight\n heights[2] = minHeight\n heights[6] = minHeight\n heights[8] = minHeight\n val points = scratchPoints\n globe.geographicToCartesianGrid(sector, NUM_LAT, NUM_LON, heights, 1.0f, null, points, 0, 0)\n\n // Compute the local coordinate axes. Since we know this box is bounding a geographic sector, we use the\n // local coordinate axes at its centroid as the box axes. Using these axes results in a box that has +-10%\n // the volume of a box with axes derived from a principal component analysis, but is faster to compute.\n val centroidLat = sector.centroidLatitude\n val centroidLon = sector.centroidLongitude\n val matrix = globe.geographicToCartesianTransform(centroidLat, centroidLon, 0.0, Matrix4())\n val m = matrix.m\n r.set(m[0], m[4], m[8])\n s.set(m[1], m[5], m[9])\n t.set(m[2], m[6], m[10])\n\n // Find the extremes along each axis.\n val rExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val sExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val tExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n\n val p = Vec3()\n for (idx in points.indices step 3) {\n p.set(points[idx].toDouble(), points[idx + 1].toDouble(), points[idx + 2].toDouble())\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, p)\n }\n\n // If the sector encompasses more than one hemisphere, the 3x3 grid does not capture enough detail to bound\n // the sector. The antipodal points along the parallel through the sector's centroid represent its extremes\n // in longitude. Incorporate those antipodal points into the extremes along each axis.\n if (sector.deltaLongitude.inDegrees > 180.0) {\n val altitude = maxHeight.toDouble()\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.plusDegrees(90.0), altitude, endPoint1)\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.minusDegrees(90.0), altitude, endPoint2)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint1)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint2)\n }\n\n // Sort the axes from most prominent to least prominent. The frustum intersection methods assume that the axes\n // are defined in this way.\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n if (sExtremes[1] - sExtremes[0] < tExtremes[1] - tExtremes[0]) swapAxes(s, sExtremes, t, tExtremes)\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rExtremes[1] - rExtremes[0]\n val sLen = sExtremes[1] - sExtremes[0]\n val tLen = tExtremes[1] - tExtremes[0]\n\n val rSum = rExtremes[1] + rExtremes[0]\n val sSum = sExtremes[1] + sExtremes[0]\n val tSum = tExtremes[1] + tExtremes[0]\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Translates this bounding box by specified components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this bounding box translated by the specified components\n */\n fun translate(x: Double, y: Double, z: Double) = apply {\n center.x += x\n center.y += y\n center.z += z\n\n bottomCenter.x += x\n bottomCenter.y += y\n bottomCenter.z += z\n\n topCenter.x += x\n topCenter.y += y\n topCenter.z += z\n }\n\n fun distanceTo(point: Vec3): Double {\n var minDist2 = Double.POSITIVE_INFINITY\n\n // Start with distance to the center of the box.\n var dist2 = center.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the R axis.\n dist2 = bottomCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the R axis.\n dist2 = topCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the S axis.\n endPoint1.x = center.x - 0.5 * s.x\n endPoint1.y = center.y - 0.5 * s.y\n endPoint1.z = center.z - 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the S axis.\n endPoint1.x = center.x + 0.5 * s.x\n endPoint1.y = center.y + 0.5 * s.y\n endPoint1.z = center.z + 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n return sqrt(minDist2)\n }\n\n /**\n * Indicates whether this bounding box intersects a specified frustum.\n *\n * @param frustum The frustum of interest.\n *\n * @return true if the specified frustum intersects this bounding box, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n endPoint1.copy(bottomCenter)\n endPoint2.copy(topCenter)\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { intersectsAt(it) >= 0 } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || intersectsAt(plane) >= 0).also { if (!it) coherentPlaneIdx = idx }\n }\n }\n\n private fun intersectsAt(plane: Plane): Double {\n val n = plane.normal\n val effectiveRadius = 0.5 * (abs(s.dot(n)) + abs(t.dot(n)))\n\n // Test the distance from the first end-point.\n val dq1 = plane.dot(endPoint1)\n val bq1 = dq1 <= -effectiveRadius\n\n // Test the distance from the second end-point.\n val dq2 = plane.dot(endPoint2)\n val bq2 = dq2 <= -effectiveRadius\n if (bq1 && bq2) return -1.0 // endpoints more distant from plane than effective radius; box is on neg. side of plane\n if (bq1 == bq2) return 0.0 // endpoints less distant from plane than effective radius; can't draw any conclusions\n\n // Compute and return the endpoints of the box on the positive side of the plane\n val dot = n.x * (endPoint1.x - endPoint2.x) + n.y * (endPoint1.y - endPoint2.y) + n.z * (endPoint1.z - endPoint2.z)\n val t = (effectiveRadius + dq1) / dot\n\n // Truncate the line to only that in the positive half-space, e.g., inside the frustum.\n val x = (endPoint2.x - endPoint1.x) * t + endPoint1.x\n val y = (endPoint2.y - endPoint1.y) * t + endPoint1.y\n val z = (endPoint2.z - endPoint1.z) * t + endPoint1.z\n if (bq1) endPoint1.set(x, y, z) else endPoint2.set(x, y, z)\n return t\n }\n\n override fun toString() = \"BoundingBox(center=$center, bottomCenter=$bottomCenter, topCenter=$topCenter, r=$r, s=$s, t=$t, radius=$radius)\"\n\n companion object {\n private const val NUM_LAT = 3\n private const val NUM_LON = 3\n\n private fun adjustExtremes(\n r: Vec3, rExtremes: DoubleArray, s: Vec3, sExtremes: DoubleArray, t: Vec3, tExtremes: DoubleArray, p: Vec3\n ) {\n val pdr = p.dot(r)\n if (rExtremes[0] > pdr) rExtremes[0] = pdr\n if (rExtremes[1] < pdr) rExtremes[1] = pdr\n\n val pds = p.dot(s)\n if (sExtremes[0] > pds) sExtremes[0] = pds\n if (sExtremes[1] < pds) sExtremes[1] = pds\n\n val pdt = p.dot(t)\n if (tExtremes[0] > pdt) tExtremes[0] = pdt\n if (tExtremes[1] < pdt) tExtremes[1] = pdt\n }\n\n private fun swapAxes(a: Vec3, aExtremes: DoubleArray, b: Vec3, bExtremes: DoubleArray) {\n a.swap(b)\n\n var tmp = aExtremes[0]\n aExtremes[0] = bExtremes[0]\n bExtremes[0] = tmp\n\n tmp = aExtremes[1]\n aExtremes[1] = bExtremes[1]\n bExtremes[1] = tmp\n }\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a bounding sphere in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingSphere {\n /**\n * The sphere's center point.\n */\n val center = Vec3()\n /**\n * The sphere's radius.\n */\n var radius = 1.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"BoundingSphere\", \"setRadius\", \"invalidRadius\")\n }\n field = value\n }\n private var coherentPlaneIdx = -1\n\n /**\n * Sets this bounding sphere to the specified center point and radius.\n *\n * @param center the new center point\n * @param radius the new radius\n *\n * @return This bounding sphere with its center point and radius set to the specified values\n */\n fun set(center: Vec3, radius: Double) = apply {\n this.center.copy(center)\n this.radius = radius\n }\n\n /**\n * Indicates whether this bounding sphere intersects a specified frustum.\n *\n * @param frustum the frustum of interest\n *\n * @return true if the specified frustum intersects this bounding sphere, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n // See if the extent's bounding sphere is within or intersects the frustum. The dot product of the extent's\n // center point with each plane's vector provides a distance to each plane. If this distance is less than\n // -radius, the extent is completely clipped by that plane and therefore does not intersect the space enclosed\n // by this Frustum.\n val nr = -radius\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { it.distanceToPoint(center) > nr } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || plane.distanceToPoint(center) > nr).also { if (!it) coherentPlaneIdx = idx }\n }\n\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is BoundingSphere) return false\n return center == other.center && radius == other.radius\n }\n\n override fun hashCode(): Int {\n var result = center.hashCode()\n result = 31 * result + radius.hashCode()\n return result\n }\n\n override fun toString() = \"BoundingSphere(center=$center, radius=$radius)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.AltitudeMode.ABSOLUTE\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class Camera {\n val position = Position()\n var altitudeMode = ABSOLUTE\n var heading = ZERO\n var tilt = ZERO\n var roll = ZERO\n var fieldOfView = 45.0.degrees\n set(value) {\n require(value.inDegrees > 0.0 && value.inDegrees < 180.0) {\n logMessage(ERROR, \"Camera\", \"setFieldOfView\", \"invalidFieldOfView\")\n }\n field = value\n }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle, fieldOfView: Angle\n ) = set(latitude, longitude, altitude, altitudeMode, heading, tilt, roll).apply { this.fieldOfView = fieldOfView }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(camera: Camera) = set(\n camera.position.latitude,\n camera.position.longitude,\n camera.position.altitude,\n camera.altitudeMode,\n camera.heading,\n camera.tilt,\n camera.roll,\n camera.fieldOfView\n )\n\n override fun toString() = \"Camera(position=$position, altitudeMode=$altitudeMode, heading=$heading, tilt=$tilt, roll=$roll, fieldOfView=$fieldOfView)\"\n}","package earth.worldwind.geom\n\nimport kotlin.jvm.JvmStatic\n\n/**\n * Oblate ellipsoid with semi-major axis and inverse flattening.\n */\ndata class Ellipsoid(\n /**\n * One half of the ellipsoid's major axis length in meters, which runs through the center to opposite points on the\n * equator.\n */\n val semiMajorAxis: Double,\n /**\n * Measure of the ellipsoid's compression. Indicates how much the ellipsoid's semi-minor axis is compressed relative\n * to the semi-major axis. Expressed as `1/f`, where `f = (a - b) / a`, given the semi-major axis `a` and the semi-minor axis `b`.\n */\n val inverseFlattening: Double\n) {\n /**\n * Computes this ellipsoid's semi-minor length axis in meters. The semi-minor axis is one half of the ellipsoid's\n * minor axis, which runs through the center to opposite points on the poles.\n */\n val semiMinorAxis: Double get() {\n val f = 1 / inverseFlattening\n return semiMajorAxis * (1 - f)\n }\n /**\n * Computes this ellipsoid's eccentricity squared. The returned value is equivalent to `2*f - f*f`,\n * where `f` is this ellipsoid's flattening.\n */\n val eccentricitySquared: Double get() {\n val f = 1 / inverseFlattening\n return 2 * f - f * f\n }\n\n companion object {\n /**\n * WGS 84 reference ellipsoid for Earth. The ellipsoid's semi-major axis and inverse flattening factor are\n * configured according to the WGS 84 reference system (aka WGS 1984, EPSG:4326). WGS 84 reference values taken from\n * [here](http://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf).\n */\n @JvmStatic val WGS84 = Ellipsoid(6378137.0, 298.257223563)\n /**\n * Krasovsky 1940 reference ellipsoid for Earth.\n */\n @JvmStatic val Krasovsky = Ellipsoid(6378245.0, 298.3)\n }\n}","package earth.worldwind.geom\n\n/**\n * Represents a six-sided view frustum in Cartesian coordinates with a corresponding viewport in screen coordinates.\n */\nopen class Frustum {\n internal val left = Plane(1.0, 0.0, 0.0, 1.0)\n internal val right = Plane(-1.0, 0.0, 0.0, 1.0)\n internal val bottom = Plane(0.0, 1.0, 0.0, 1.0)\n internal val top = Plane(0.0, -1.0, 0.0, 1.0)\n internal val near = Plane(0.0, 0.0, -1.0, 1.0)\n internal val far = Plane(0.0, 0.0, 1.0, 1.0)\n internal val viewport = Viewport(0, 0, 1, 1)\n internal val planes = arrayOf(near, far, left, right, top, bottom)\n private val scratchMatrix = Matrix4()\n\n /**\n * Constructs a new unit frustum with each of its planes 1 meter from the center and a viewport with width and\n * height both 1.\n */\n constructor()\n\n /**\n * Constructs a frustum from planes.\n *\n * @param left the frustum's left plane\n * @param right the frustum's right plane\n * @param bottom the frustum's bottom plane\n * @param top the frustum's top plane\n * @param near the frustum's near plane\n * @param far the frustum's far plane\n * @param viewport the frustum's viewport\n */\n constructor(left: Plane, right: Plane, bottom: Plane, top: Plane, near: Plane, far: Plane, viewport: Viewport): this() {\n this.left.copy(left)\n this.right.copy(right)\n this.bottom.copy(bottom)\n this.top.copy(top)\n this.near.copy(near)\n this.far.copy(far)\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to a unit frustum with each of its planes 1 meter from the center a viewport with width and\n * height both 1.\n *\n * @return this frustum, set to a unit frustum\n */\n fun setToUnitFrustum() = apply {\n left.set(1.0, 0.0, 0.0, 1.0)\n right.set(-1.0, 0.0, 0.0, 1.0)\n bottom.set(0.0, 1.0, 0.0, 1.0)\n top.set(0.0, -1.0, 0.0, 1.0)\n near.set(0.0, 0.0, -1.0, 1.0)\n far.set(0.0, 0.0, 1.0, 1.0)\n viewport.set(0, 0, 1, 1)\n }\n\n /**\n * Sets this frustum to one appropriate for a modelview-projection matrix. A modelview-projection matrix's view\n * frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport) = apply {\n // Compute the transpose of the modelview matrix.\n scratchMatrix.transposeMatrix(modelview)\n\n // Get the components of the projection matrix.\n val m = projection.m\n\n // Left Plane = row 4 + row 1:\n var x = m[12] + m[0]\n var y = m[13] + m[1]\n var z = m[14] + m[2]\n var w = m[15] + m[3]\n left.set(x, y, z, w) // normalizes the plane's coordinates\n left.transformByMatrix(scratchMatrix)\n\n // Right Plane = row 4 - row 1:\n x = m[12] - m[0]\n y = m[13] - m[1]\n z = m[14] - m[2]\n w = m[15] - m[3]\n right.set(x, y, z, w) // normalizes the plane's coordinates\n right.transformByMatrix(scratchMatrix)\n\n // Bottom Plane = row 4 + row 2:\n x = m[12] + m[4]\n y = m[13] + m[5]\n z = m[14] + m[6]\n w = m[15] + m[7]\n bottom.set(x, y, z, w) // normalizes the plane's coordinates\n bottom.transformByMatrix(scratchMatrix)\n\n // Top Plane = row 4 - row 2:\n x = m[12] - m[4]\n y = m[13] - m[5]\n z = m[14] - m[6]\n w = m[15] - m[7]\n top.set(x, y, z, w) // normalizes the plane's coordinates\n top.transformByMatrix(scratchMatrix)\n\n // Near Plane = row 4 + row 3:\n x = m[12] + m[8]\n y = m[13] + m[9]\n z = m[14] + m[10]\n w = m[15] + m[11]\n near.set(x, y, z, w) // normalizes the plane's coordinates\n near.transformByMatrix(scratchMatrix)\n\n // Far Plane = row 4 - row 3:\n x = m[12] - m[8]\n y = m[13] - m[9]\n z = m[14] - m[10]\n w = m[15] - m[11]\n far.set(x, y, z, w) // normalizes the plane's coordinates\n far.transformByMatrix(scratchMatrix)\n\n // Copy the specified viewport.\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to one appropriate for a subset of a modelview-projection matrix. A modelview-projection\n * matrix's view frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix. The subset is defined by the region within the original viewport that the frustum\n * contains.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n * @param subViewport the screen coordinate region the frustum should contain\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport, subViewport: Viewport) = apply {\n // Compute the sub-viewport's four edges in screen coordinates.\n val left = subViewport.x.toDouble()\n val right = (subViewport.x + subViewport.width).toDouble()\n val bottom = subViewport.y.toDouble()\n val top = (subViewport.y + subViewport.height).toDouble()\n\n // Transform the sub-viewport's four edges from screen coordinates to Cartesian coordinates.\n var bln: Vec3\n var blf: Vec3\n var brn: Vec3\n var brf: Vec3\n var tln: Vec3\n var tlf: Vec3\n var trn: Vec3\n var trf: Vec3\n val mvpInv = scratchMatrix.setToMultiply(projection, modelview).invert()\n mvpInv.unProject(left, bottom, viewport, Vec3().also { bln = it }, Vec3().also { blf = it })\n mvpInv.unProject(right, bottom, viewport, Vec3().also { brn = it }, Vec3().also { brf = it })\n mvpInv.unProject(left, top, viewport, Vec3().also { tln = it }, Vec3().also { tlf = it })\n mvpInv.unProject(right, top, viewport, Vec3().also { trn = it }, Vec3().also { trf = it })\n\n val va = Vec3(tlf.x - bln.x, tlf.y - bln.y, tlf.z - bln.z)\n val vb = Vec3(tln.x - blf.x, tln.y - blf.y, tln.z - blf.z)\n\n val nl = va.cross(vb)\n this.left.set(nl.x, nl.y, nl.z, -nl.dot(bln))\n va.set(trn.x - brf.x, trn.y - brf.y, trn.z - brf.z)\n vb.set(trf.x - brn.x, trf.y - brn.y, trf.z - brn.z)\n\n val nr = va.cross(vb)\n this.right.set(nr.x, nr.y, nr.z, -nr.dot(brn))\n va.set(brf.x - bln.x, brf.y - bln.y, brf.z - bln.z)\n vb.set(blf.x - brn.x, blf.y - brn.y, blf.z - brn.z)\n\n val nb = va.cross(vb)\n this.bottom.set(nb.x, nb.y, nb.z, -nb.dot(brn))\n va.set(tlf.x - trn.x, tlf.y - trn.y, tlf.z - trn.z)\n vb.set(trf.x - tln.x, trf.y - tln.y, trf.z - tln.z)\n\n val nt = va.cross(vb)\n this.top.set(nt.x, nt.y, nt.z, -nt.dot(tln))\n va.set(tln.x - brn.x, tln.y - brn.y, tln.z - brn.z)\n vb.set(trn.x - bln.x, trn.y - bln.y, trn.z - bln.z)\n\n val nn = va.cross(vb)\n this.near.set(nn.x, nn.y, nn.z, -nn.dot(bln))\n va.set(trf.x - blf.x, trf.y - blf.y, trf.z - blf.z)\n vb.set(tlf.x - brf.x, tlf.y - brf.y, tlf.z - brf.z)\n\n val nf = va.cross(vb)\n this.far.set(nf.x, nf.y, nf.z, -nf.dot(blf))\n\n // Copy the specified sub-viewport.\n this.viewport.copy(subViewport)\n }\n\n /**\n * See if the point is entirely within the frustum. The dot product of the point with each plane's vector\n * provides a distance to each plane. If this distance is less than 0, the point is clipped by that plane and\n * neither intersects nor is contained by the space enclosed by this Frustum.\n *\n * @param point Vector to check\n *\n * @return true if point contains in frustum\n */\n fun containsPoint(point: Vec3) = far.dot(point) > 0 && left.dot(point) > 0 && right.dot(point) > 0\n && top.dot(point) > 0 && bottom.dot(point) > 0 && near.dot(point) > 0\n\n /**\n * Determines whether a line segment intersects this frustum.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return true if the segment intersects or is contained in this frustum, otherwise false\n */\n fun intersectsSegment(pointA: Vec3, pointB: Vec3): Boolean {\n // First do a trivial accept test.\n if (containsPoint(pointA) || containsPoint(pointB)) return true\n if (pointA == pointB) return false\n for (i in planes.indices) {\n val plane = planes[i]\n // See if both points are behind the plane and therefore not in the frustum.\n if (plane.onSameSide(pointA, pointB) < 0) return false\n // See if the segment intersects the plane.\n if (plane.clip(pointA, pointB) != null) return true\n }\n return false // segment does not intersect frustum\n }\n\n /**\n * Determines whether a screen coordinate viewport intersects this frustum.\n *\n * @param viewport the viewport to test\n *\n * @return true if the viewport intersects or is contained in this frustum, otherwise false\n */\n fun intersectsViewport(viewport: Viewport) = this.viewport.intersects(viewport)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a line in Cartesian coordinates.\n */\nopen class Line {\n /**\n * This line's origin.\n */\n val origin = Vec3()\n /**\n * This line's direction.\n */\n val direction = Vec3()\n\n /**\n * Constructs a line with origin and direction both zero.\n */\n constructor()\n\n /**\n * Constructs a line with a specified origin and direction.\n *\n * @param origin the line's origin\n * @param direction the line's direction\n */\n constructor(origin: Vec3, direction: Vec3): this() { set(origin, direction) }\n\n /**\n * Constructs a line with the origin and direction from a specified line.\n *\n * @param line the line specifying origin and direction\n */\n constructor(line: Line): this(line.origin, line.direction)\n\n /**\n * Sets this line to a specified origin and direction.\n *\n * @param origin the line's new origin\n * @param direction the line's new direction\n *\n * @return this line, set to the new origin and direction\n */\n fun set(origin: Vec3, direction: Vec3) = apply {\n this.origin.copy(origin)\n this.direction.copy(direction)\n }\n\n /**\n * Sets this line to the specified segment. This line has its origin at the first endpoint and its direction\n * extending from the first endpoint to the second.\n *\n * @param pointA the segment's first endpoint\n * @param pointB the segment's second endpoint\n *\n * @return this line, set to the specified segment\n */\n fun setToSegment(pointA: Vec3, pointB: Vec3) = apply {\n origin.copy(pointA)\n direction.set(pointB.x - pointA.x, pointB.y - pointA.y, pointB.z - pointA.z)\n }\n\n /**\n * Computes a Cartesian point a specified distance along this line.\n *\n * @param distance The distance from this line's origin at which to compute the point.\n * @param result A pre-allocated [Vec3] instance in which to return the computed point.\n *\n * @return The specified result argument containing the computed point.\n */\n fun pointAt(distance: Double, result: Vec3): Vec3 {\n result.x = origin.x + direction.x * distance\n result.y = origin.y + direction.y * distance\n result.z = origin.z + direction.z * distance\n return result\n }\n\n /**\n * Computes the first intersection of a triangle strip with this line. This line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *
\n * The triangle strip is specified by a list of vertex points and a list of elements indicating the triangle strip\n * tessellation of those vertices. The triangle strip elements are interpreted in the same manner as OpenGL, where\n * each index indicates a vertex position rather than an actual index into the points array (e.g. a triangle strip\n * index of 1 indicates the XYZ tuple starting at array index 3).\n *\n * @param points an array of points containing XYZ tuples\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n * @param elements an array of indices into the points defining the triangle strip organization\n * @param count the number of indices to consider\n * @param result a pre-allocated Vec3 in which to return the nearest intersection point, if any\n *\n * @return true if this line intersects the triangle strip, otherwise false\n *\n * @throws IllegalArgumentException If array is empty, if the stride is less than 3,\n * if the count is less than 0\n */\n fun triStripIntersection(points: FloatArray, stride: Int, elements: ShortArray, count: Int, result: Vec3): Boolean {\n require(points.size >= stride) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidStride\")\n }\n require(elements.isNotEmpty()) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidCount\")\n }\n\n // Taken from Moller and Trumbore\n // http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf\n\n // Adapted from the original ray-triangle intersection algorithm to optimize for ray-triangle strip\n // intersection. We optimize by reusing constant terms, replacing use of Vec3 with inline primitives, and\n // exploiting the triangle strip organization to reuse computations common to adjacent triangles. These\n // optimizations reduced worst-case terrain picking performance for Web WorldWind by approximately 50% in\n // Chrome on a 2010 iMac and a Nexus 9.\n val vx = direction.x\n val vy = direction.y\n val vz = direction.z\n val sx = origin.x\n val sy = origin.y\n val sz = origin.z\n var tMin = Double.POSITIVE_INFINITY\n val epsilon = 0.00001\n\n // Get the triangle strip's first vertex.\n var vertex = elements[0] * stride\n var vert1x = points[vertex++]\n var vert1y = points[vertex++]\n var vert1z = points[vertex]\n\n // Get the triangle strip's second vertex.\n vertex = elements[1] * stride\n var vert2x = points[vertex++]\n var vert2y = points[vertex++]\n var vert2z = points[vertex]\n\n // Compute the intersection of each triangle with the specified ray.\n for (idx in 2 until count) {\n // Move the last two vertices into the first two vertices. This takes advantage of the triangle strip's\n // structure and avoids redundant reads from points and elements. During the first iteration this places the\n // triangle strip's first three vertices in vert0, vert1 and vert2, respectively.\n val vert0x = vert1x\n val vert0y = vert1y\n val vert0z = vert1z\n vert1x = vert2x\n vert1y = vert2y\n vert1z = vert2z\n\n // Get the triangle strip's next vertex.\n vertex = elements[idx] * stride\n vert2x = points[vertex++]\n vert2y = points[vertex++]\n vert2z = points[vertex]\n\n // find vectors for two edges sharing point a: vert1 - vert0 and vert2 - vert0\n val edge1x = vert1x - vert0x\n val edge1y = vert1y - vert0y\n val edge1z = vert1z - vert0z\n val edge2x = vert2x - vert0x\n val edge2y = vert2y - vert0y\n val edge2z = vert2z - vert0z\n\n // Compute cross product of line direction and edge2\n val px = vy * edge2z - vz * edge2y\n val py = vz * edge2x - vx * edge2z\n val pz = vx * edge2y - vy * edge2x\n\n // Get determinant\n val det = edge1x * px + edge1y * py + edge1z * pz // edge1 dot p\n // if det is near zero then ray lies in plane of triangle\n if (det > -epsilon && det < epsilon) continue\n\n val invDet = 1.0 / det\n\n // Compute distance for vertex A to ray origin: origin - vert0\n val tx = sx - vert0x\n val ty = sy - vert0y\n val tz = sz - vert0z\n\n // Calculate u parameter and test bounds: 1/det * t dot p\n val u = invDet * (tx * px + ty * py + tz * pz)\n if (u < -epsilon || u > 1 + epsilon) continue\n\n // Prepare to test v parameter: tvec cross edge1\n val qx = ty * edge1z - tz * edge1y\n val qy = tz * edge1x - tx * edge1z\n val qz = tx * edge1y - ty * edge1x\n\n // Calculate v parameter and test bounds: 1/det * dir dot q\n val v = invDet * (vx * qx + vy * qy + vz * qz)\n if (v < -epsilon || u + v > 1 + epsilon) continue\n\n // Calculate the point of intersection on the line: t = 1/det * edge2 dot q\n val t = invDet * (edge2x * qx + edge2y * qy + edge2z * qz)\n if (t >= 0 && t < tMin) tMin = t\n }\n if (tMin != Double.POSITIVE_INFINITY) result.set(sx + vx * tMin, sy + vy * tMin, sz + vz * tMin)\n return tMin != Double.POSITIVE_INFINITY\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Line) return false\n return origin == other.origin && direction == other.direction\n }\n\n override fun hashCode(): Int {\n var result = origin.hashCode()\n result = 31 * result + direction.hashCode()\n return result\n }\n\n override fun toString() = \"Line(origin=$origin, direction=$direction)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.normalizeLongitude\nimport earth.worldwind.shape.PathType\nimport earth.worldwind.shape.PathType.GREAT_CIRCLE\nimport earth.worldwind.shape.PathType.RHUMB_LINE\nimport earth.worldwind.util.format.format\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.offsetIn\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographic location with a latitude and longitude.\n */\nopen class Location(\n /**\n * The location's latitude.\n */\n var latitude: Angle,\n /**\n * The location's longitude.\n */\n var longitude: Angle\n) {\n /**\n * Constructs a location with latitude and longitude both 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO)\n\n /**\n * Constructs a location with the latitude and longitude of a specified location.\n *\n * @param location the location specifying the coordinates\n */\n constructor(location: Location): this(location.latitude, location.longitude)\n\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-15\n protected val timeZoneLatitudes = mapOf(\n -12 to -45, // GMT-12\n -11 to -30, // GMT-11\n -10 to 20, // GMT-10\n -9 to 45, // GMT-9\n -8 to 40, // GMT-8\n -7 to 35, // GMT-7\n -6 to 30, // GMT-6\n -5 to 25, // GMT-5\n -4 to -15, // GMT-4\n -3 to 0, // GMT-3\n -2 to 45, // GMT-2\n -1 to 30, // GMT-1\n 0 to 30, // GMT+0\n 1 to 20, // GMT+1\n 2 to 20, // GMT+2\n 3 to 25, // GMT+3\n 4 to 30, // GMT+4\n 5 to 35, // GMT+5\n 6 to 30, // GMT+6\n 7 to 25, // GMT+7\n 8 to -30, // GMT+8\n 9 to -30, // GMT+9\n 10 to -30, // GMT+10\n 11 to -45, // GMT+11\n 12 to -45 // GMT+12\n )\n\n /**\n * Constructs a location with a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n *\n * @return the new location\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n Location(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Constructs a location with a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n *\n * @return the new location\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double) =\n Location(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Constructs an approximate location for a specified time zone. Used when selecting an initial camera position\n * based on the device's current time zone.\n *\n * @param timeZone the time zone in question\n *\n * @return the new location\n */\n @JvmStatic\n fun fromTimeZone(timeZone: TimeZone): Location {\n val secPerHour = 3.6e3\n val offsetSec = Clock.System.now().offsetIn(timeZone).totalSeconds\n val offsetHours = (offsetSec / secPerHour).toInt()\n // use a pre-determined latitude or 0 if none is available\n val latDegrees = (timeZoneLatitudes[offsetHours]?:0).toDouble()\n val lonDegrees = 180.0 * offsetHours / 12 // center on the time zone's average longitude\n return Location(fromDegrees(latDegrees), fromDegrees(lonDegrees))\n }\n\n /**\n * Determines whether a list of locations crosses the antimeridian.\n *\n * @param locations the locations to test\n *\n * @return true if the antimeridian is crossed, false otherwise\n */\n @JvmStatic\n fun locationsCrossAntimeridian(locations: List): Boolean {\n // Check the list's length. A list with fewer than two locations does not cross the antimeridan.\n val len = locations.size\n if (len < 2) return false\n\n // Compute the longitude attributes associated with the first location.\n var lon1 = normalizeLongitude(locations[0].longitude.inDegrees)\n var sig1 = sign(lon1)\n\n // Iterate over the segments in the list. A segment crosses the antimeridian if its endpoint longitudes have\n // different signs and are more than 180 degrees apart (but not 360, which indicates the longitudes are the same).\n for (idx in 1 until len) {\n val lon2 = normalizeLongitude(locations[idx].longitude.inDegrees)\n val sig2 = sign(lon2)\n if (sig1 != sig2) {\n val delta = abs(lon1 - lon2)\n if (delta > 180 && delta < 360) return true\n }\n lon1 = lon2\n sig1 = sig2\n }\n return false\n }\n\n @JvmStatic\n fun fromString(coordinates: String): Location {\n val tokens = coordinates.replace(\"[*'\\\"NSEW;°′″,]\".toRegex(), \" \").trim { it <= ' ' }\n .split(\"\\\\s+\".toRegex()).toTypedArray()\n // Lat\n var lat = 0.0\n var exponent = 0\n var i = 0\n while (i < tokens.size / 2) {\n lat += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n // Lon\n var lon = 0.0\n exponent = 0\n while (i < tokens.size) {\n lon += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n return fromDegrees(if (coordinates.contains(\"S\")) -lat else lat, if (coordinates.contains(\"W\")) -lon else lon)\n }\n }\n\n /**\n * Sets this location to a specified latitude and longitude.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle) = apply {\n this.latitude = latitude\n this.longitude = longitude\n }\n\n /**\n * Sets this location to a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n set(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Sets this location to a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double) =\n set(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Sets this location to the latitude and longitude of a specified location.\n *\n * @param location the location specifying the new coordinates\n *\n * @return this location with its latitude and longitude set to that of the specified location\n */\n fun copy(location: Location) = set(location.latitude, location.longitude)\n\n /**\n * Compute a location along a path between two locations. The amount indicates the fraction of the path at which to\n * compute a location. This value is typically between 0 and 1, where 0 indicates the begin location (this location)\n * and 1 indicates the end location.\n *\n * @param endLocation the path's end location\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a location\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun interpolateAlongPath(endLocation: Location, pathType: PathType, amount: Double, result: Location): Location {\n return if (this == endLocation) {\n result.latitude = latitude\n result.longitude = longitude\n result\n } else when (pathType) {\n GREAT_CIRCLE -> {\n val azimuth = greatCircleAzimuth(endLocation)\n val distanceRadians = greatCircleDistance(endLocation) * amount\n greatCircleLocation(azimuth, distanceRadians, result)\n }\n RHUMB_LINE -> {\n val azimuth = rhumbAzimuth(endLocation)\n val distanceRadians = rhumbDistance(endLocation) * amount\n rhumbLocation(azimuth, distanceRadians, result)\n }\n else -> {\n val azimuth = linearAzimuth(endLocation)\n val distanceRadians = linearDistance(endLocation) * amount\n linearLocation(azimuth, distanceRadians, result)\n }\n }\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the great circle path between this location and a specified\n * location. This angle can be used as the starting azimuth for a great circle path beginning at this location, and\n * passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed azimuth\n */\n fun greatCircleAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n if (lon1 == lon2) return if (lat1 > lat2) POS180 else ZERO\n\n // Taken from \"Map Projections - A Working Manual\", page 30, equation 5-4b.\n // The atan2() function is used in place of the traditional atan(y/x) to simplify the case when x == 0.\n val y = cos(lat2) * sin(lon2 - lon1)\n val x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1)\n val azimuthRadians = atan2(y, x)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the great circle path between this location and a specified location. In\n * radians, this angle is the arc length of the segment between the two locations. To compute a distance in meters\n * from this value, multiply the return value by the radius of the globe. This function uses a spherical model, not\n * elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun greatCircleDistance(location: Location): Double {\n val lat1Radians = latitude.inRadians\n val lon1Radians = longitude.inRadians\n val lat2Radians = location.latitude.inRadians\n val lon2Radians = location.longitude.inRadians\n if (lat1Radians == lat2Radians && lon1Radians == lon2Radians) return 0.0\n\n // \"Haversine formula,\" taken from http://en.wikipedia.org/wiki/Great-circle_distance#Formul.C3.A6\n val a = sin((lat2Radians - lat1Radians) / 2.0)\n val b = sin((lon2Radians - lon1Radians) / 2.0)\n val c = a * a + cos(lat1Radians) * cos(lat2Radians) * b * b\n val distanceRadians = 2.0 * asin(sqrt(c))\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the great circle path starting at this location and traversing with the specified\n * azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun greatCircleLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n val cosLat = cos(latRadians)\n val sinLat = sin(latRadians)\n val cosAzimuth = cos(azimuthRadians)\n val sinAzimuth = sin(azimuthRadians)\n val sinDistance = sin(distanceRadians)\n val cosDistance = cos(distanceRadians)\n\n // Taken from \"Map Projections - A Working Manual\", page 31, equation 5-5 and 5-6.\n val endLatRadians = asin(sinLat * cosDistance + cosLat * sinDistance * cosAzimuth)\n val endLonRadians = lonRadians + atan2(\n sinDistance * sinAzimuth, cosLat * cosDistance - sinLat * sinDistance * cosAzimuth\n )\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the rhumb path (line of constant azimuth) between this\n * location and a specified location. This angle can be used as the starting azimuth for a rhumb path beginning at\n * this location, and passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the rhumb path's ending location\n *\n * @return the computed azimuth\n */\n fun rhumbAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the rhumb path (line of constant azimuth) between this location and a specified\n * location. In radians, this angle is the arc length of the segment between the two locations. To compute a\n * distance in meters from this value, multiply the return value by the radius of the globe. This function uses a\n * spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun rhumbDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(lat1)\n else {\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n dLat / dPhi\n }\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + q * q * dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on a rhumb path (line of constant azimuth) starting at this location and traversing with\n * the specified azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun rhumbLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n val dLat = endLatRadians - latRadians\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(latRadians)\n else {\n val dPhi = ln(tan(endLatRadians / 2 + PI / 4) / tan(latRadians / 2 + PI / 4))\n dLat / dPhi\n }\n val dLon = distanceRadians * sin(azimuthRadians) / q\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + dLon + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the linear path between this location and a specified\n * location. This angle can be used as the starting azimuth for a linear path beginning at this location, and\n * passing through the specified location. This function uses a flat-earth approximation proximal to this location.\n *\n * @param location the linear path's ending location\n *\n * @return the computed azimuth\n */\n fun linearAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = lat2 - lat1\n\n // If longitude change is over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the linear path between this location and a specified location. In radians, this\n * angle is the arc length of the segment between the two locations. To compute a distance in meters from this\n * value, multiply the return value by the radius of the globe. This function uses a flat-earth approximation\n * proximal to this location.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun linearDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n\n // If lonChange over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the linear path starting at this location and traversing with the specified azimuth and\n * angular distance. This function uses a flat-earth approximation proximal to this location.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun linearLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + distanceRadians * sin(azimuthRadians) + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Location) return false\n return latitude.inDegrees == other.latitude.inDegrees && longitude.inDegrees == other.longitude.inDegrees\n }\n\n override fun hashCode(): Int {\n var result = latitude.hashCode()\n result = 31 * result + longitude.hashCode()\n return result\n }\n\n override fun toString() = \"Location(latitude=$latitude, longitude=$longitude)\"\n\n fun toDDString() = \"%s%09.6f°, %s%010.6f°\"\n .format(latitude.latitudeLetter, abs(latitude.inDegrees), longitude.longitudeLetter, abs(longitude.inDegrees))\n\n fun toDMString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%06.3f′, %s%03d°%06.3f′\".format(\n latitude.latitudeLetter, lat[1], lat[2] + lat[3] / 60.0,\n longitude.longitudeLetter, lon[1], lon[2] + lon[3] / 60.0\n )\n }\n\n fun toDMSString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%02d′%04.1f″, %s%03d°%02d′%04.1f″\".format(\n latitude.latitudeLetter, lat[1], lat[2], lat[3],\n longitude.longitudeLetter, lon[1], lon[2], lon[3]\n )\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\n\nopen class LookAt(\n val position: Position, var altitudeMode: AltitudeMode, var range: Double, var heading: Angle, var tilt: Angle, var roll: Angle,\n) {\n constructor(): this(\n position = Position(),\n altitudeMode = AltitudeMode.ABSOLUTE,\n range = 0.0,\n heading = ZERO,\n tilt = ZERO,\n roll = ZERO)\n\n constructor(lookAt: LookAt): this(\n Position(lookAt.position),\n lookAt.altitudeMode,\n lookAt.range,\n lookAt.heading,\n lookAt.tilt,\n lookAt.roll\n )\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n range: Double, heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.range = range\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(lookAt: LookAt) = set(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude,\n lookAt.altitudeMode, lookAt.range, lookAt.heading, lookAt.tilt, lookAt.roll\n )\n\n override fun toString() = \"LookAt(position=$position, altitudeMode=$altitudeMode, range=$range, heading=$heading, tilt=$tilt, roll=$roll)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.cos\nimport kotlin.math.sin\n\n/**\n * 3 x 3 matrix in row-major order.\n */\nopen class Matrix3 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n /**\n * The components for the 3 x 3 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n )\n }\n\n /**\n * Constructs a 3 x 3 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 3 x 3 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n */\n constructor(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ): this(doubleArrayOf(m11, m12, m13, m21, m22, m23, m31, m32, m33))\n\n /**\n * Constructs a 3 x 3 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix3): this(matrix.m.copyOf())\n\n /**\n * Sets this 3 x 3 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m21\n m[4] = m22\n m[5] = m23\n m[6] = m31\n m[7] = m32\n m[8] = m33\n }\n\n /**\n * Sets this 3 x 3 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix3) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double) = apply {\n m[2] = x\n m[5] = y\n }\n\n /**\n * Sets the rotation components of this matrix to a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[3] = s\n m[4] = c\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[4] = yScale\n }\n\n /**\n * Sets this matrix to the 3 x 3 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = x\n m[3] = 0.0\n m[4] = 1.0\n m[5] = y\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[2] = 0.0\n m[3] = s\n m[4] = c\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = yScale\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that flips and shifts the y-axis. The resultant matrix maps Y=0 to Y=1 and Y=1 to Y=0.\n * All existing values are overwritten. This matrix is usually used to change the coordinate origin from an upper\n * left coordinate origin to a lower left coordinate origin.\n *
\n * This matrix is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix set to values described above\n */\n fun setToVerticalFlip() = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = -1.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that transforms normalized coordinates from a source sector to a destination sector.\n * Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner and (1, 1)\n * indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its corresponding\n * normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix set to values described above\n */\n fun setToTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n m[0] = xs\n m[1] = 0.0\n m[2] = xt\n m[3] = 0.0\n m[4] = ys\n m[5] = yt\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix3, b: Matrix3) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[3] + ma[2] * mb[6]\n m[1] = ma[0] * mb[1] + ma[1] * mb[4] + ma[2] * mb[7]\n m[2] = ma[0] * mb[2] + ma[1] * mb[5] + ma[2] * mb[8]\n m[3] = ma[3] * mb[0] + ma[4] * mb[3] + ma[5] * mb[6]\n m[4] = ma[3] * mb[1] + ma[4] * mb[4] + ma[5] * mb[7]\n m[5] = ma[3] * mb[2] + ma[4] * mb[5] + ma[5] * mb[8]\n m[6] = ma[6] * mb[0] + ma[7] * mb[3] + ma[8] * mb[6]\n m[7] = ma[6] * mb[1] + ma[7] * mb[4] + ma[8] * mb[7]\n m[8] = ma[6] * mb[2] + ma[7] * mb[5] + ma[8] * mb[8]\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double) = apply {\n multiplyByMatrix(1.0, 0.0, x, 0.0, 1.0, y, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(c, -s, 0.0, s, c, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double) = apply {\n multiplyByMatrix(xScale, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a matrix that flips and shifts the y-axis. The vertical flip matrix maps Y=0 to Y=1 and\n * Y=1 to Y=0. This matrix is usually used to change the coordinate origin from an upper left coordinate origin to a\n * lower left coordinate origin.\n *
\n * This is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix multiplied by a vertical flip matrix implied by values described above\n */\n fun multiplyByVerticalFlip() = apply {\n m[2] += m[1]\n m[5] += m[4]\n m[8] += m[7]\n m[1] = -m[1]\n m[4] = -m[4]\n m[7] = -m[7]\n }\n\n /**\n * Multiplies this matrix by a matrix that transforms normalized coordinates from a source sector to a destination\n * sector. Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner\n * and (1, 1) indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its\n * corresponding normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix multiplied by the transform matrix implied by values described above\n */\n fun multiplyByTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n\n m[2] += m[0] * xt + m[1] * yt\n m[5] += m[3] * xt + m[4] * yt\n m[8] += m[6] * xt + m[6] * yt\n m[0] *= xs\n m[1] *= ys\n m[3] *= xs\n m[4] *= ys\n m[6] *= xs\n m[7] *= ys\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n ma[0] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[1] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[2] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[3]\n ma1 = ma[4]\n ma2 = ma[5]\n ma[3] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[4] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[5] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[6]\n ma1 = ma[7]\n ma2 = ma[8]\n ma[6] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[7] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[8] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[3]\n mr2 = m[4]\n mr3 = m[5]\n m[3] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[4] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[5] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[6]\n mr2 = m[7]\n mr3 = m[8]\n m[6] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[7] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[8] = mr1 * m13 + mr2 * m23 + mr3 * m33\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[3]\n m[3] = tmp\n\n tmp = m[2]\n m[2] = m[6]\n m[6] = tmp\n\n tmp = m[5]\n m[5] = m[7]\n m[7] = tmp\n }\n\n /**\n * Transposes the specified matrix and stores the result in this matrix.\n *\n * @param matrix the matrix whose transpose is computed\n *\n * @return this matrix set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix3) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[3]\n m[2] = matrix.m[6]\n m[3] = matrix.m[1]\n m[4] = matrix.m[4]\n m[5] = matrix.m[7]\n m[6] = matrix.m[2]\n m[7] = matrix.m[5]\n m[8] = matrix.m[8]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix3fv.\n *\n * @param result a pre-allocated array of length 9 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 9) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[5].toFloat()\n result[o] = m[8].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert(): Matrix3 {\n throw UnsupportedOperationException(\"Matrix3.invert is not implemented\") // TODO\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertMatrix(matrix: Matrix3): Matrix3 { \n TODO(\"Matrix3.invertMatrix is not implemented\")\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix3) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix3([${m[0]}, ${m[1]}, ${m[2]}], [${m[3]}, ${m[4]}, ${m[5]}], [${m[6]}, ${m[7]}, ${m[8]}])\"\n}",null,"package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/**\n * 4 x 4 matrix in row-major order.\n */\nopen class Matrix4 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1.0e-8\n protected const val TINY = 1.0e-20\n protected const val EPSILON = 1.0e-10\n protected const val MAX_SWEEPS = 32\n\n /**\n * The components for the 4 x 4 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0\n )\n\n /**\n * Inverts a 4 x 4 matrix, storing the result in a destination argument. The source and destination arguments\n * represent a 4 x 4 matrix with a one-dimensional array in row-major order. The source and destination may\n * reference the same array.\n *\n * @param src the matrix components to invert in row-major order\n * @param dst the inverted components in row-major order\n *\n * @return true if the matrix was successfully inverted, false otherwise\n */\n protected fun invert(src: DoubleArray, dst: DoubleArray): Boolean {\n // Copy the specified matrix into a mutable two-dimensional array.\n val a = Array(4) { DoubleArray(4) }\n a[0][0] = src[0]\n a[0][1] = src[1]\n a[0][2] = src[2]\n a[0][3] = src[3]\n a[1][0] = src[4]\n a[1][1] = src[5]\n a[1][2] = src[6]\n a[1][3] = src[7]\n a[2][0] = src[8]\n a[2][1] = src[9]\n a[2][2] = src[10]\n a[2][3] = src[11]\n a[3][0] = src[12]\n a[3][1] = src[13]\n a[3][2] = src[14]\n a[3][3] = src[15]\n\n val index = IntArray(4)\n var d = ludcmp(a, index)\n\n // Compute the matrix's determinant.\n for (i in 0..3) d *= a[i][i]\n\n // The matrix is singular if its determinant is zero or very close to zero.\n if (abs(d) < NEAR_ZERO_THRESHOLD) return false\n\n val y = Array(4) { DoubleArray(4) }\n val col = DoubleArray(4)\n for (j in 0..3) {\n for (i in 0..3) col[i] = 0.0\n col[j] = 1.0\n lubksb(a, index, col)\n for (i in 0..3) y[i][j] = col[i]\n }\n dst[0] = y[0][0]\n dst[1] = y[0][1]\n dst[2] = y[0][2]\n dst[3] = y[0][3]\n dst[4] = y[1][0]\n dst[5] = y[1][1]\n dst[6] = y[1][2]\n dst[7] = y[1][3]\n dst[8] = y[2][0]\n dst[9] = y[2][1]\n dst[10] = y[2][2]\n dst[11] = y[2][3]\n dst[12] = y[3][0]\n dst[13] = y[3][1]\n dst[14] = y[3][2]\n dst[15] = y[3][3]\n return true\n }\n\n /**\n * Utility method to perform an LU factorization of a matrix. Algorithm derived from \"Numerical Recipes in C\", Press\n * et al., 1988.\n *\n * @param A matrix to be factored\n * @param index permutation vector\n *\n * @return condition number of matrix\n */\n protected fun ludcmp(A: Array, index: IntArray): Double {\n val vv = DoubleArray(4)\n var d = 1.0\n var temp: Double\n for (i in 0..3) {\n var big = 0.0\n for (j in 0..3) if (abs(A[i][j]).also { temp = it } > big) big = temp\n if (big == 0.0) return 0.0 // Matrix is singular if the entire row contains zero.\n else vv[i] = 1 / big\n }\n for (j in 0..3) {\n for (i in 0 until j) {\n var sum = A[i][j]\n for (k in 0 until i) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n }\n var big = 0.0\n var imax = -1\n var dum: Double\n for (i in j..3) {\n var sum = A[i][j]\n for (k in 0 until j) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n if (vv[i] * abs(sum).also { dum = it } >= big) {\n big = dum\n imax = i\n }\n }\n if (j != imax) {\n for (k in 0..3) {\n dum = A[imax][k]\n A[imax][k] = A[j][k]\n A[j][k] = dum\n }\n d = -d\n vv[imax] = vv[j]\n }\n index[j] = imax\n if (A[j][j] == 0.0) A[j][j] = TINY\n if (j != 3) {\n dum = 1.0 / A[j][j]\n for (i in (j + 1)..3) {\n A[i][j] *= dum\n }\n }\n }\n return d\n }\n\n /**\n * Utility method to solve a linear system with an LU factorization of a matrix. Solves Ax=b, where A is in LU\n * factorized form. Algorithm derived from \"Numerical Recipes in C\", Press et al., 1988\n *\n * @param A an LU factorization of a matrix\n * @param index permutation vector of that LU factorization\n * @param b vector to be solved\n */\n protected fun lubksb(A: Array, index: IntArray, b: DoubleArray) {\n var ii = -1\n for (i in 0..3) {\n val ip = index[i]\n var sum = b[ip]\n b[ip] = b[i]\n if (ii != -1) for (j in ii until i) sum -= A[i][j] * b[j]\n else if (sum != 0.0) ii = i\n b[i] = sum\n }\n for (i in 3 downTo 0) {\n var sum = b[i]\n for (j in (i + 1)..3) sum -= A[i][j] * b[j]\n b[i] = sum / A[i][i]\n }\n }\n }\n\n /**\n * Constructs a 4 x 4 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 4 x 4 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n */\n constructor(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ): this(doubleArrayOf(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))\n\n /**\n * Constructs a 4 x 4 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix4): this(matrix.m.copyOf())\n\n /**\n * Sets this 4 x 4 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m14\n m[4] = m21\n m[5] = m22\n m[6] = m23\n m[7] = m24\n m[8] = m31\n m[9] = m32\n m[10] = m33\n m[11] = m34\n m[12] = m41\n m[13] = m42\n m[14] = m43\n m[15] = m44\n }\n\n /**\n * Sets this 4 x 4 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix4) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] = x\n m[7] = y\n m[11] = z\n }\n\n /**\n * Sets the rotation components of this matrix to a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[5] = yScale\n m[10] = zScale\n }\n\n /**\n * Sets this matrix to the 4 x 4 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double, z: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = x\n m[4] = 0.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = y\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 1.0\n m[11] = z\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[3] = 0.0\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[7] = 0.0\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = yScale\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = zScale\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix4, b: Matrix4) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[4] + ma[2] * mb[8] + ma[3] * mb[12]\n m[1] = ma[0] * mb[1] + ma[1] * mb[5] + ma[2] * mb[9] + ma[3] * mb[13]\n m[2] = ma[0] * mb[2] + ma[1] * mb[6] + ma[2] * mb[10] + ma[3] * mb[14]\n m[3] = ma[0] * mb[3] + ma[1] * mb[7] + ma[2] * mb[11] + ma[3] * mb[15]\n m[4] = ma[4] * mb[0] + ma[5] * mb[4] + ma[6] * mb[8] + ma[7] * mb[12]\n m[5] = ma[4] * mb[1] + ma[5] * mb[5] + ma[6] * mb[9] + ma[7] * mb[13]\n m[6] = ma[4] * mb[2] + ma[5] * mb[6] + ma[6] * mb[10] + ma[7] * mb[14]\n m[7] = ma[4] * mb[3] + ma[5] * mb[7] + ma[6] * mb[11] + ma[7] * mb[15]\n m[8] = ma[8] * mb[0] + ma[9] * mb[4] + ma[10] * mb[8] + ma[11] * mb[12]\n m[9] = ma[8] * mb[1] + ma[9] * mb[5] + ma[10] * mb[9] + ma[11] * mb[13]\n m[10] = ma[8] * mb[2] + ma[9] * mb[6] + ma[10] * mb[10] + ma[11] * mb[14]\n m[11] = ma[8] * mb[3] + ma[9] * mb[7] + ma[10] * mb[11] + ma[11] * mb[15]\n m[12] = ma[12] * mb[0] + ma[13] * mb[4] + ma[14] * mb[8] + ma[15] * mb[12]\n m[13] = ma[12] * mb[1] + ma[13] * mb[5] + ma[14] * mb[9] + ma[15] * mb[13]\n m[14] = ma[12] * mb[2] + ma[13] * mb[6] + ma[14] * mb[10] + ma[15] * mb[14]\n m[15] = ma[12] * mb[3] + ma[13] * mb[7] + ma[14] * mb[11] + ma[15] * mb[15]\n }\n\n /**\n * Sets this matrix to an infinite perspective projection matrix for the specified viewport dimensions, vertical\n * field of view and near clip distance.\n *
\n * An infinite perspective projection matrix maps points in a manner similar to a standard projection matrix, but is\n * not bounded by depth. Objects at any depth greater than or equal to the near distance may be rendered. In\n * addition, this matrix interprets vertices with a w-coordinate of 0 as infinitely far from the camera in the\n * direction indicated by the point's coordinates.\n *
\n * The field of view must be positive and less than 180. The near distance must be positive.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near distance is\n * less than or equal to zero\n */\n fun setToInfiniteProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -1.0\n m[11] = -2 * nearDistance\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a perspective projection matrix for the specified viewport dimensions, vertical field of view\n * and clip distances.\n *
\n * A perspective projection matrix maps points in eye coordinates into clip coordinates in a way that causes distant\n * objects to appear smaller, and preserves the appropriate depth information for each point. In model coordinates,\n * a perspective projection is defined by frustum originating at the eye position and extending outward in the\n * viewer's direction. The near distance and the far distance identify the minimum and maximum distance,\n * respectively, at which an object in the scene is visible.\n *
\n * The field of view must be positive and less than 180. Near and far distances must be positive and must not be\n * equal to one another.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n * @param farDistance the far clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near and far\n * distances are equal, or if either the near or far distance are less than or\n * equal to zero\n */\n fun setToPerspectiveProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double, farDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance != farDistance) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n require(nearDistance > 0 && farDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -(farDistance + nearDistance) / (farDistance - nearDistance)\n m[11] = -(2 * nearDistance * farDistance) / (farDistance - nearDistance)\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a screen projection matrix for the specified viewport dimensions.\n *
\n * A screen projection matrix is an orthographic projection that interprets points in model coordinates as\n * representing a screen XY and a Z depth. Screen projection matrices therefore map coordinates directly into screen\n * coordinates without modification. A point's XY coordinates are interpreted as literal screen coordinates and must\n * be in the viewport to be visible. A point's Z coordinate is interpreted as a depth value that ranges from 0 to 1.\n * Additionally, the screen projection matrix preserves the depth value returned by\n * `RenderContext.project`.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero\n */\n fun setToScreenProjection(viewportWidth: Double, viewportHeight: Double) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidHeight\")\n }\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.57.\n // Simplified to assume that the viewport origin is (0, 0).\n //\n // The third row of this projection matrix is configured so that points with z coordinates representing\n // depth values ranging from 0 to 1 are not modified after transformation into window coordinates. This\n // projection matrix maps z values in the range [0, 1] to the range [-1, 1] by applying the following\n // function to incoming z coordinates:\n //\n // zp = z0 * 2 - 1\n //\n // Where 'z0' is the point's z coordinate and 'zp' is the projected z coordinate. The GPU then maps the\n // projected z coordinate into window coordinates in the range [0, 1] by applying the following function:\n //\n // zw = zp * 0.5 + 0.5\n //\n // The result is that a point's z coordinate is effectively passed to the GPU without modification.\n m[0] = 2 / viewportWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = -1.0\n m[4] = 0.0\n m[5] = 2 / viewportHeight\n m[6] = 0.0\n m[7] = -1.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 2.0\n m[11] = -1.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the symmetric covariance Matrix computed from an array of points.\n *
\n * The computed covariance matrix represents the correlation between each pair of x-, y-, and z-coordinates as\n * they're distributed about the point array's arithmetic mean. Its layout is as follows:\n *
\n * ` C(x, x) C(x, y) C(x, z)
C(x, y) C(y, y) C(y, z)
C(x, z) C(y, z) C(z, z) `\n *
\n * C(i, j) is the covariance of coordinates i and j, where i or j are a coordinate's dispersion about its mean\n * value. If any entry is zero, then there's no correlation between the two coordinates defining that entry. If the\n * returned matrix is diagonal, then all three coordinates are uncorrelated, and the specified point is distributed\n * evenly about its mean point.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return this matrix set to the covariance matrix for the specified array of points\n *\n * @throws IllegalArgumentException If the array is null or empty, if the count is less than 0, or if the stride is\n * less than 3\n */\n fun setToCovarianceOfPoints(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidCount\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidStride\")\n }\n\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var c11 = 0.0\n var c22 = 0.0\n var c33 = 0.0\n var c12 = 0.0\n var c13 = 0.0\n var c23 = 0.0\n var numPoints = 0.0\n for (idx in 0 until count step stride) {\n mx += array[idx]\n my += array[idx + 1]\n mz += array[idx + 2]\n numPoints++\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n for (idx in 0 until count step stride) {\n val dx = array[idx] - mx\n val dy = array[idx + 1] - my\n val dz = array[idx + 2] - mz\n c11 += dx * dx\n c22 += dy * dy\n c33 += dz * dz\n c12 += dx * dy // c12 = c21\n c13 += dx * dz // c13 = c31\n c23 += dy * dz // c23 = c32\n }\n m[0] = c11 / numPoints\n m[1] = c12 / numPoints\n m[2] = c13 / numPoints\n m[3] = 0.0\n m[4] = c12 / numPoints\n m[5] = c22 / numPoints\n m[6] = c23 / numPoints\n m[7] = 0.0\n m[8] = c13 / numPoints\n m[9] = c23 / numPoints\n m[10] = c33 / numPoints\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 0.0\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] += m[0] * x + m[1] * y + m[2] * z\n m[7] += m[4] * x + m[5] * y + m[6] * z\n m[11] += m[8] * x + m[9] * y + m[10] * z\n m[15] += m[12] * x + m[13] * y + m[14] * z\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis.\n *\n * @param x the X component of the rotation axis\n * @param y the Y component of the rotation axis\n * @param z the Z component of the rotation axis\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(\n c + (1 - c) * x * x,\n (1 - c) * x * y - s * z,\n (1 - c) * x * z + s * y,\n 0.0,\n (1 - c) * x * y + s * z,\n c + (1 - c) * y * y,\n (1 - c) * y * z - s * x,\n 0.0,\n (1 - c) * x * z - s * y,\n (1 - c) * y * z + s * x,\n c + (1 - c) * z * z,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n )\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] *= xScale\n m[4] *= xScale\n m[8] *= xScale\n m[12] *= xScale\n m[1] *= yScale\n m[5] *= yScale\n m[9] *= yScale\n m[13] *= yScale\n m[2] *= zScale\n m[6] *= zScale\n m[10] *= zScale\n m[14] *= zScale\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n var ma3 = ma[3]\n ma[0] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[1] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[2] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[3] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[4]\n ma1 = ma[5]\n ma2 = ma[6]\n ma3 = ma[7]\n ma[4] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[5] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[6] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[7] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[8]\n ma1 = ma[9]\n ma2 = ma[10]\n ma3 = ma[11]\n ma[8] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[9] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[10] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[11] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[12]\n ma1 = ma[13]\n ma2 = ma[14]\n ma3 = ma[15]\n ma[12] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[13] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[14] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[15] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n var mr4 = m[3]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[3] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[4]\n mr2 = m[5]\n mr3 = m[6]\n mr4 = m[7]\n m[4] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[5] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[6] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[7] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[8]\n mr2 = m[9]\n mr3 = m[10]\n mr4 = m[11]\n m[8] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[9] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[10] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[11] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[12]\n mr2 = m[13]\n mr3 = m[14]\n mr4 = m[15]\n m[12] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[13] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[14] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[15] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[3]\n m[3] = m[12]\n m[12] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n tmp = m[7]\n m[7] = m[13]\n m[13] = tmp\n\n tmp = m[11]\n m[11] = m[14]\n m[14] = tmp\n }\n\n /**\n * Sets this matrix to the transpose of a specified matrix.\n *\n * @param matrix the matrix whose transpose is to be computed\n *\n * @return this matrix with its values set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix4) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = matrix.m[12]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = matrix.m[13]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = matrix.m[14]\n m[12] = matrix.m[3]\n m[13] = matrix.m[7]\n m[14] = matrix.m[11]\n m[15] = matrix.m[15]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix4fv.\n *\n * @param result a pre-allocated array of length 16 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 16) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[8].toFloat()\n result[o++] = m[12].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[5].toFloat()\n result[o++] = m[9].toFloat()\n result[o++] = m[13].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[10].toFloat()\n result[o++] = m[14].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[11].toFloat()\n result[o] = m[15].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert() = apply {\n val success = invert(m, m) // passing the same array as src and dst is supported\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the specified matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n *\n * @throws IllegalArgumentException If the matrix cannot be inverted\n */\n fun invertMatrix(matrix: Matrix4) = apply {\n val success = invert(matrix.m, m) // store inverse of matrix in this matrix\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts this orthonormal transform matrix in place. This matrix's upper 3x3 is transposed, then its fourth column\n * is transformed by the transposed upper 3x3 and negated.\n *
\n * The result of this method is undefined if this matrix's values are not consistent with those of an orthonormal\n * transform.\n *\n * @return this matrix, inverted\n */\n fun invertOrthonormal() = apply {\n // This is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n val x = m[3]\n val y = m[7]\n val z = m[11]\n\n m[3] = -(m[0] * x) - m[1] * y - m[2] * z\n m[7] = -(m[4] * x) - m[5] * y - m[6] * z\n m[11] = -(m[8] * x) - m[9] * y - m[10] * z\n\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Inverts the specified orthonormal transform matrix and stores the result in 'this' matrix. The specified matrix's\n * upper 3x3 is transposed, then its fourth column is transformed by the transposed upper 3x3 and negated. The\n * result is stored in 'this' matrix.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert, or if the matrix's\n * values are not consistent with those of an orthonormal transform.\n *\n * @param matrix the matrix whose inverse is computed. The matrix is assumed to represent an orthonormal transform\n * matrix.\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertOrthonormalMatrix(matrix: Matrix4) = apply {\n // The matrix is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = -(matrix.m[0] * matrix.m[3]) - matrix.m[4] * matrix.m[7] - matrix.m[8] * matrix.m[11]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = -(matrix.m[1] * matrix.m[3]) - matrix.m[5] * matrix.m[7] - matrix.m[9] * matrix.m[11]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = -(matrix.m[2] * matrix.m[3]) - matrix.m[6] * matrix.m[7] - matrix.m[10] * matrix.m[11]\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Applies a specified depth offset to this projection matrix. The depth offset may be any real number and is\n * typically used to draw geometry slightly closer to the user's eye in order to give those shapes visual priority\n * over nearby or geometry. An offset of zero has no effect. An offset less than zero brings depth values closer to\n * the eye, while an offset greater than zero pushes depth values away from the eye.\n *
\n * The result of this method is undefined if this matrix is not a projection matrix. Projection matrices can be\n * created by calling `setToPerspectiveProjection` or `setToScreenProjection`\n *
\n * Depth offset may be applied to both perspective and screen projection matrices. The effect on each type is\n * outlined here:\n *
\n * **Perspective Projection**\n *
\n * The effect of depth offset on a perspective projection increases exponentially with distance from the eye. This\n * has the effect of adjusting the offset for the loss in depth precision with geometry drawn further from the eye.\n * Distant geometry requires a greater offset to differentiate itself from nearby geometry, while close geometry\n * does not.\n *
\n * **Screen Projection**\n *
\n * The effect of depth offset on an screen projection increases linearly with distance from the eye. While it is\n * reasonable to apply a depth offset to an screen projection, the effect is most appropriate when applied to the\n * projection used to draw the scene. For example, when an object's coordinates are projected by a perspective\n * projection into screen coordinates then drawn using a screen projection, it is best to apply the offset to the\n * original perspective projection. The method `RenderContext.project` performs the correct behavior for\n * the projection type used to draw the scene.\n *\n * @param depthOffset the amount of offset to apply\n *\n * @return this matrix with its components adjusted to account for the specified depth offset\n */\n fun offsetProjectionDepth(depthOffset: Double) = apply { m[10] *= 1 + depthOffset }\n\n /**\n * Returns this viewing matrix's eye point. In model coordinates, a viewing matrix's eye point is the point the\n * viewer is looking from and maps to the center of the screen.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's eye point\n */\n fun extractEyePoint(result: Vec3): Vec3 {\n // The eye point of a modelview matrix is computed by transforming the origin (0, 0, 0, 1) by the matrix's\n // inverse. This is equivalent to transforming the inverse of this matrix's translation components in the\n // rightmost column by the transpose of its upper 3x3 components.\n result.x = -(m[0] * m[3]) - m[4] * m[7] - m[8] * m[11]\n result.y = -(m[1] * m[3]) - m[5] * m[7] - m[9] * m[11]\n result.z = -(m[2] * m[3]) - m[6] * m[7] - m[10] * m[11]\n return result\n }\n\n /**\n * Returns this viewing matrix's forward vector.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's forward vector\n */\n fun extractForwardVector(result: Vec3): Vec3 {\n // The forward vector of a modelview matrix is computed by transforming the negative Z axis (0, 0, -1, 0) by the\n // matrix's inverse. We have pre-computed the result inline here to simplify this computation.\n result.x = -m[8]\n result.y = -m[9]\n result.z = -m[10]\n return result\n }\n\n /**\n * Returns this viewing matrix's heading angle. The roll argument enables the caller to disambiguate\n * heading and roll when the two rotation axes for heading and roll are parallel, causing gimbal lock.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param roll the viewing matrix's roll angle, or 0 if the roll angle is unknown\n *\n * @return the extracted heading angle\n */\n fun extractHeading(roll: Angle): Angle {\n val cr = cos(roll.inRadians)\n val sr = sin(roll.inRadians)\n val ch = cr * m[0] - sr * m[4]\n val sh = sr * m[5] - cr * m[1]\n return atan2(sh, ch).radians\n }\n\n /**\n * Returns this viewing matrix's tilt angle.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @return the extracted heading angle\n */\n fun extractTilt(): Angle {\n val ct = m[10]\n val st = sqrt(m[2] * m[2] + m[6] * m[6])\n return atan2(st, ct).radians\n }\n\n /**\n * Returns this symmetric matrix's eigenvectors. The eigenvectors are returned in the specified result arguments in\n * order of descending magnitude (most prominent to least prominent). Each eigenvector has length equal to its\n * corresponding eigenvalue.\n *
\n * This method returns false if this matrix is not a symmetric matrix.\n *\n * @param result1 a pre-allocated Vec3 in which to return the most prominent eigenvector\n * @param result2 a pre-allocated Vec3 in which to return the second most prominent eigenvector\n * @param result3 a pre-allocated Vec3 in which to return the least prominent eigenvector\n *\n * @return true if this matrix is symmetric and its eigenvectors can be determined, otherwise false\n */\n fun extractEigenvectors(result1: Vec3, result2: Vec3, result3: Vec3): Boolean {\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition,\n // listing 14.6.\n if (m[1] != m[4] || m[2] != m[8] || m[6] != m[9]) return false // matrix is not symmetric\n\n // Since the matrix is symmetric m12=m21, m13=m31 and m23=m32, therefore we can ignore the values m21,\n // m32 and m32.\n var m11 = m[0]\n var m12 = m[1]\n var m13 = m[2]\n var m22 = m[5]\n var m23 = m[6]\n var m33 = m[10]\n val r = Array(3) { DoubleArray(3) }\n r[2][2] = 1.0\n r[1][1] = r[2][2]\n r[0][0] = r[1][1]\n for (a in 0 until MAX_SWEEPS) {\n // Exit if off-diagonal entries small enough\n if (abs(m12) < EPSILON && abs(m13) < EPSILON && abs(m23) < EPSILON) break\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n val u = (m22 - m11) * 0.5 / m12\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m12\n m22 += t * m12\n m12 = 0.0\n var temp = c * m13 - s * m23\n m23 = s * m13 + c * m23\n m13 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][1]\n r[i][1] = s * r[i][0] + c * r[i][1]\n r[i][0] = temp\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n val u = (m33 - m11) * 0.5 / m13\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m13\n m33 += t * m13\n m13 = 0.0\n var temp = c * m12 - s * m23\n m23 = s * m12 + c * m23\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][2]\n r[i][2] = s * r[i][0] + c * r[i][2]\n r[i][0] = temp\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n val u = (m33 - m22) * 0.5 / m23\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m22 -= t * m23\n m33 += t * m23\n m23 = 0.0\n var temp = c * m12 - s * m13\n m13 = s * m12 + c * m13\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][1] - s * r[i][2]\n r[i][2] = s * r[i][1] + c * r[i][2]\n r[i][1] = temp\n }\n }\n }\n\n // Sort the eigenvectors by descending magnitude.\n var i1 = 0\n var i2 = 1\n var i3 = 2\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n if (m22 < m33) {\n val temp = m22\n m22 = m33\n m33 = temp\n val itemp = i2\n i2 = i3\n i3 = itemp\n }\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n result1.set(r[0][i1], r[1][i1], r[2][i1])\n result2.set(r[0][i2], r[1][i2], r[2][i2])\n result3.set(r[0][i3], r[1][i3], r[2][i3])\n result1.normalize()\n result2.normalize()\n result3.normalize()\n result1.multiply(m11)\n result2.multiply(m22)\n result3.multiply(m33)\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. This method assumes this matrix represents an inverse\n * modelview-projection matrix. The result of this method is undefined if this matrix is not an inverse\n * modelview-projection matrix.\n *
\n * The resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes\n * that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's y component\n * @param z the Cartesian point's z component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(x: Double, y: Double, z: Double, viewport: Viewport, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This inverts\n // the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n var sx = m[0] * x + m[1] * y + m[2] * z + m[3]\n var sy = m[4] * x + m[5] * y + m[6] * z + m[7]\n var sz = m[8] * x + m[9] * y + m[10] * z + m[11]\n val sw = m[12] * x + m[13] * y + m[14] * z + m[15]\n if (sw == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n sx /= sw\n sy /= sw\n sz /= sw\n\n // Clip the point against the near and far clip planes.\n if (sz < -1 || sz > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n sx = sx * 0.5 + 0.5\n sy = sy * 0.5 + 0.5\n sz = sz * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n sx = sx * viewport.width + viewport.x\n sy = sy * viewport.height + viewport.y\n result.x = sx\n result.y = sy\n result.z = sz\n return true\n }\n\n /**\n * Un-projects a screen coordinate point to Cartesian coordinates at the near clip plane and the far clip plane.\n * This method assumes this matrix represents an inverse modelview-projection matrix. The result of this method is\n * undefined if this matrix is not an inverse modelview-projection matrix.\n *
\n * The screen point is understood to be in OpenGL screen coordinates, with the origin in the bottom-left corner and\n * axes that extend up and to the right from the origin.\n *
\n * This function stores the un-projected points in the result argument, and a boolean value indicating whether the\n * un-projection is successful.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param nearResult a pre-allocated [Vec3] in which to return the un-projected near clip plane point\n * @param farResult a pre-allocated [Vec3] in which to return the un-projected far clip plane point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun unProject(x: Double, y: Double, viewport: Viewport, nearResult: Vec3, farResult: Vec3): Boolean {\n // Convert the XY screen coordinates to coordinates in the range [0, 1]. This enables the XY coordinates to\n // be converted to clip coordinates.\n var sx = (x - viewport.x) / viewport.width\n var sy = (y - viewport.y) / viewport.height\n\n // Convert from coordinates in the range [0, 1] to clip coordinates in the range [-1, 1].\n sx = sx * 2 - 1\n sy = sy * 2 - 1\n\n // Transform the screen point from clip coordinates to model coordinates. This is a partial transformation that\n // factors out the contribution from the screen point's X and Y components. The contribution from the Z\n // component, which is both -1 and +1, is included next.\n val mx = m[0] * sx + m[1] * sy + m[3]\n val my = m[4] * sx + m[5] * sy + m[7]\n val mz = m[8] * sx + m[9] * sy + m[11]\n val mw = m[12] * sx + m[13] * sy + m[15]\n\n // Transform the screen point at the near clip plane (z = -1) to model coordinates.\n val nx = mx - m[2]\n val ny = my - m[6]\n val nz = mz - m[10]\n val nw = mw - m[14]\n\n // Transform the screen point at the far clip plane (z = +1) to model coordinates.\n val fx = mx + m[2]\n val fy = my + m[6]\n val fz = mz + m[10]\n val fw = mw + m[14]\n if (nw == 0.0 || fw == 0.0) return false\n\n // Complete the conversion from near clip coordinates to model coordinates by dividing by the W component.\n nearResult.x = nx / nw\n nearResult.y = ny / nw\n nearResult.z = nz / nw\n\n // Complete the conversion from far clip coordinates to model coordinates by dividing by the W component.\n farResult.x = fx / fw\n farResult.y = fy / fw\n farResult.z = fz / fw\n return true\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix4) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix4([${m[0]}, ${m[1]}, ${m[2]}, ${m[3]}], [${m[4]}, ${m[5]}, ${m[6]}, ${m[7]}], [${m[8]}, ${m[9]}, ${m[10]}, ${m[11]}], [${m[12]}, ${m[13]}, ${m[14]}, ${m[15]}])\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.OffsetMode.FRACTION\nimport earth.worldwind.geom.OffsetMode.INSET_PIXELS\nimport kotlin.jvm.JvmStatic\n\n/**\n * Specifies an offset relative to a rectangle. Used by renderable shapes.\n */\ndata class Offset(\n /**\n * The units of this instance's X offset. See this class' constructor description for a list of the possible\n * values.\n */\n var xUnits: OffsetMode,\n /**\n * The offset in the X dimension, interpreted according to this instance's xUnits argument.\n */\n var x: Double,\n /**\n * The units of this instance's Y offset. See this class' constructor description for a list of the possible\n * values.\n */\n var yUnits: OffsetMode,\n /**\n * The offset in the Y dimension, interpreted according to this instance's yUnits argument.\n */\n var y: Double\n) {\n /**\n * Creates a new offset of this offset with identical property values.\n */\n constructor(offset: Offset): this(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n companion object {\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its center.\n */\n @JvmStatic fun center() = Offset(FRACTION, 0.5, FRACTION, 0.5)\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its bottom-left corner.\n */\n @JvmStatic fun bottomLeft() = Offset(FRACTION, 0.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its center of its bottom edge.\n */\n @JvmStatic fun bottomCenter() = Offset(FRACTION, 0.5, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its bottom-right corner.\n */\n @JvmStatic fun bottomRight() = Offset(FRACTION, 1.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle its top-left corner.\n */\n @JvmStatic fun topLeft() = Offset(FRACTION, 0.0, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to the center of its top edge.\n */\n @JvmStatic fun topCenter() = Offset(FRACTION, 0.5, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its top-right corner.\n */\n @JvmStatic fun topRight() = Offset(FRACTION, 1.0, FRACTION, 1.0)\n }\n\n /**\n * Sets this offset to specified property values.\n */\n fun set(xUnits: OffsetMode, x: Double, yUnits: OffsetMode, y: Double) = apply {\n this.xUnits = xUnits\n this.x = x\n this.yUnits = yUnits\n this.y = y\n }\n\n /**\n * Sets this offset to identical property values of the specified offset.\n */\n fun copy(offset: Offset) = set(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n /**\n * Returns this offset's absolute X and Y coordinates in pixels for a rectangle of a specified size in pixels. The\n * returned offset is in pixels relative to the rectangle's origin, and is defined in the coordinate system used by\n * the caller.\n *\n * @param width the rectangle's width in pixels\n * @param height the rectangles height in pixels\n * @param result a pre-allocated Vec2 in which to return the computed offset relative to the rectangle's origin\n *\n * @return the result argument set to the computed offset\n */\n fun offsetForSize(width: Double, height: Double, result: Vec2): Vec2 {\n val x = when (xUnits) {\n FRACTION -> width * x\n INSET_PIXELS -> width - x\n else -> x // default to OFFSET_PIXELS\n }\n val y = when (yUnits) {\n FRACTION -> height * y\n INSET_PIXELS -> height - y\n else -> y // default to OFFSET_PIXELS\n }\n return result.set(x, y)\n }\n}","package earth.worldwind.geom\n\n/**\n * Offset mode indicates how WorldWind interprets an offset's x and y values.\n * Accepted values are [FRACTION], [INSET_PIXELS] and [PIXELS].\n */\nenum class OffsetMode {\n /**\n * Indicating that the associated parameters are fractional values of the virtual\n * rectangle's width or height in the range [0, 1], where 0 indicates the rectangle's origin and 1 indicates the\n * corner opposite its origin.\n */\n FRACTION,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's corner opposite its origin corner.\n */\n INSET_PIXELS,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's origin.\n */\n PIXELS;\n}","package earth.worldwind.geom\n\n/**\n * Represents a plane in Cartesian coordinates. The plane's X, Y and Z components indicate the plane's normal vector.\n * The distance component indicates the plane's distance from the origin relative to its unit normal.\n */\nopen class Plane {\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-10\n }\n\n /**\n * The normal vector to the plane.\n */\n val normal = Vec3(0.0, 0.0, 1.0)\n /**\n * The plane's distance from the origin.\n */\n var distance = 0.0\n\n /**\n * Constructs a plane in the X-Y plane with its unit normal pointing along the Z axis.\n */\n constructor()\n\n /**\n * Constructs a plane with specified normal vector components and distance from the origin.\n * This constructor normalizes the components, ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n */\n constructor(x: Double, y: Double, z: Double, distance: Double) { set(x, y, z, distance) }\n\n /**\n * Constructs a plane with the normal vector and distance from a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n */\n constructor(plane: Plane): this() { copy(plane) }\n\n /**\n * Computes the distance between this plane and a point.\n *\n * @param point the point whose distance to compute\n *\n * @return the computed distance\n */\n fun distanceToPoint(point: Vec3) = dot(point)\n\n /**\n * Sets this plane's specified normal vector and distance to specified values. This normalizes the components,\n * ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n *\n * @return this plane with its normal vector and distance set to specified values\n */\n fun set(x: Double, y: Double, z: Double, distance: Double) = apply {\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Sets this plane's normal vector and distance to that of a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n *\n * @return this plane with its normal vector and distance set to those of the specified plane\n */\n fun copy(plane: Plane) = apply {\n // Assumes the specified plane's parameters are normalized.\n normal.copy(plane.normal)\n distance = plane.distance\n }\n\n /**\n * Transforms this plane by a specified matrix.\n *\n * @param matrix the matrix to apply to this plane\n *\n * @return this plane transformed by the specified matrix\n */\n fun transformByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * normal.x + m[1] * normal.y + m[2] * normal.z + m[3] * distance\n val y = m[4] * normal.x + m[5] * normal.y + m[6] * normal.z + m[7] * distance\n val z = m[8] * normal.x + m[9] * normal.y + m[10] * normal.z + m[11] * distance\n val distance = m[12] * normal.x + m[13] * normal.y + m[14] * normal.z + m[15] * distance\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Computes the dot product of this plane's components with a specified vector. Since the plane was defined with a\n * unit normal vector, this function returns the distance of the vector from the plane.\n *\n * @param vector the vector to dot with this plane's components\n *\n * @return the computed dot product\n */\n fun dot(vector: Vec3) = normal.dot(vector) + distance\n\n /**\n * Determines whether a specified line segment intersects this plane.\n *\n * @param endPoint1 the line segment's first end point\n * @param endPoint2 the line segment's second end point\n *\n * @return true if the line segment intersects this plane, otherwise false\n */\n fun intersectsSegment(endPoint1: Vec3, endPoint2: Vec3): Boolean {\n val distance1 = dot(endPoint1)\n val distance2 = dot(endPoint2)\n return distance1 * distance2 <= 0\n }\n\n /**\n * Determines whether two points are on the same side of this plane.\n *\n * @param pointA the first point\n * @param pointB the second point\n *\n * @return -1 if both points are on the negative side of this plane, +1 if both points are on the positive side of\n * this plane, 0 if the points are on opposite sides of this plane\n */\n fun onSameSide(pointA: Vec3, pointB: Vec3): Int {\n val da = distanceToPoint(pointA)\n val db = distanceToPoint(pointB)\n if (da < 0 && db < 0) return -1\n return if (da > 0 && db > 0) 1 else 0\n }\n\n /**\n * Clips a line segment to this plane, returning an two-point array indicating the clipped segment. If the direction\n * of the line formed by the two points is positive with respect to this plane's normal vector, the first point in\n * the array will be the intersection point on the plane, and the second point will be the original segment end\n * point. If the direction of the line is negative with respect to this plane's normal vector, the first point in\n * the array will be the original segment's begin point, and the second point will be the intersection point on the\n * plane. If the segment does not intersect the plane, null is returned. If the segment is coincident with the\n * plane, the input points are returned, in their input order.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return an array of two points both on the positive side of the plane, or null if the segment does not intersect\n * this plane\n */\n fun clip(pointA: Vec3, pointB: Vec3): Array? {\n if (pointA == pointB) return null\n\n // Get the projection of the segment onto the plane.\n val line = Line().setToSegment(pointA, pointB)\n val lDotV = normal.dot(line.direction)\n\n // Are the line and plane parallel?\n if (lDotV == 0.0) { // line and plane are parallel and may be coincident.\n val lDotS = dot(line.origin)\n return if (lDotS == 0.0) arrayOf(pointA, pointB) // line is coincident with the plane\n else null // line is not coincident with the plane.\n }\n\n // Not parallel so the line intersects. But does the segment intersect?\n val t = -dot(line.origin) / lDotV // lDotS / lDotV\n if (t < 0 || t > 1) return null // segment does not intersect\n val p = line.pointAt(t, Vec3())\n return if (lDotV > 0) arrayOf(p, pointB) else arrayOf(pointA, p)\n }\n\n protected open fun normalizeIfNeeded() {\n // Compute the plane normal's magnitude in order to determine whether or not the plane needs normalization.\n val magnitude = normal.magnitude\n\n // Don't normalize a zero vector; the result is NaN when it should be 0.0.\n if (magnitude == 0.0) return\n\n // Don't normalize a unit vector, this indicates that the caller has already normalized the vector, but floating\n // point round-off results in a length not exactly 1.0. Since we're normalizing on the caller's behalf, we want\n // to avoid unnecessary any normalization that modifies the specified values.\n if (magnitude >= 1 - NEAR_ZERO_THRESHOLD && magnitude <= 1 + NEAR_ZERO_THRESHOLD) return\n\n // Normalize the caller-specified plane coordinates.\n normal.x /= magnitude\n normal.y /= magnitude\n normal.z /= magnitude\n distance /= magnitude\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Plane) return false\n return normal == other.normal && distance == other.distance\n }\n\n override fun hashCode(): Int {\n var result = normal.hashCode()\n result = 31 * result + distance.hashCode()\n return result\n }\n\n override fun toString() = \"Plane(normal=$normal, distance=$distance)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.shape.PathType\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic position with a latitude and longitude and altitude in meters.\n */\nopen class Position(\n /**\n * The position's latitude.\n */\n latitude: Angle,\n /**\n * The position's longitude.\n */\n longitude: Angle,\n /**\n * The position's altitude in meters.\n */\n var altitude: Double\n): Location(latitude, longitude) {\n /**\n * Constructs a position with latitude, longitude and altitude all 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO, altitude = 0.0)\n\n /**\n * Constructs a position with the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the coordinates\n */\n constructor(position: Position): this(position.latitude, position.longitude, position.altitude)\n\n companion object {\n /**\n * Constructs a position with a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) =\n Position(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees), altitude)\n\n /**\n * Constructs a position with a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) =\n Position(fromRadians(latitudeRadians), fromRadians(longitudeRadians), altitude)\n }\n\n /**\n * Sets this position to a specified latitude and longitude and altitude in meters.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle, altitude: Double) = apply {\n set(latitude, longitude)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) = apply {\n setDegrees(latitudeDegrees, longitudeDegrees)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) = apply {\n setRadians(latitudeRadians, longitudeRadians)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the new coordinates\n *\n * @return this position with its latitude, longitude and altitude set to that of the specified position\n */\n fun copy(position: Position) = set(position.latitude, position.longitude, position.altitude)\n\n /**\n * Compute a position along a path between two positions. The amount indicates the fraction of the path at which to\n * compute a position. This value is typically between 0 and 1, where 0 indicates the begin position (this position)\n * and 1 indicates the end position.\n *\n * @param endPosition the path's end position\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a position\n * @param result a pre-allocated Position in which to return the computed result\n *\n * @return the result argument set to the computed position\n */\n fun interpolateAlongPath(endPosition: Position, pathType: PathType, amount: Double, result: Position): Position {\n // Interpolate latitude and longitude.\n super.interpolateAlongPath(endPosition, pathType, amount, result)\n // Interpolate altitude.\n result.altitude = (1 - amount) * altitude + amount * endPosition.altitude\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Position) return false\n if (!super.equals(other)) return false\n return altitude == other.altitude\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + altitude.hashCode()\n return result\n }\n\n override fun toString() = \"Position(latitude=$latitude, longitude=$longitude, altitude=$altitude)\"\n}","package earth.worldwind.geom\n\n/**\n * Continuous interval in a one-dimensional coordinate system expressed as a lower bound an an upper bound, inclusive.\n */\nopen class Range(\n /**\n * The range's lower bound, inclusive.\n */\n var lower: Int,\n /**\n * The range's upper bound, inclusive.\n */\n var upper: Int\n) {\n /**\n * Constructs an empty range with lower and upper both zero.\n */\n constructor(): this(lower = 0, upper = 0)\n\n /**\n * Constructs a range with the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the values\n */\n constructor(range: Range) : this(range.lower, range.upper)\n\n /**\n * Returns the length of the interval between this range's lower bound and upper bound, or 0 if this range is empty.\n */\n val length get() = if (upper > lower) upper - lower else 0\n\n /**\n * Indicates whether or not this range is empty. An range is empty when its lower bound is greater than or equal to\n * its upper bound.\n *\n * @return true if this range is empty, false otherwise\n */\n val isEmpty get() = lower >= upper\n\n /**\n * Sets this range to an empty range.\n *\n * @return this range with its lower bound and upper bound both set to zero\n */\n fun setEmpty() = set(0, 0)\n\n /**\n * Sets this range to the specified lower bound and upper bound.\n *\n * @param lower the new lower bound, inclusive\n * @param upper the new upper bound, inclusive\n *\n * @return this range set to the specified values\n */\n fun set(lower: Int, upper: Int) = apply {\n this.lower = lower\n this.upper = upper\n }\n\n /**\n * Sets this range to the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the new values\n *\n * @return this range with its lower bound and upper bound set to that of the specified range\n */\n fun copy(range: Range) = set(range.lower, range.upper)\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Range) return false\n return lower == other.lower && upper == other.upper\n }\n\n override fun hashCode(): Int {\n var result = lower\n result = 31 * result + upper\n return result\n }\n\n override fun toString() = \"Range(lower=$lower, upper=$upper)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.geom.Angle.Companion.clampLatitude\nimport earth.worldwind.geom.Angle.Companion.clampLongitude\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.max\nimport earth.worldwind.geom.Angle.Companion.min\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic rectangular region.\n */\nopen class Sector(\n /**\n * The sector's minimum latitude.\n */\n var minLatitude: Angle,\n /**\n * The sector's maximum latitude.\n */\n var maxLatitude: Angle,\n /**\n * The sector's minimum longitude.\n */\n var minLongitude: Angle,\n /**\n * The sector's maximum longitude.\n */\n var maxLongitude: Angle\n) {\n /**\n * Indicates whether this sector has no dimensions.\n */\n val isEmpty get() = minLatitude == ZERO && maxLatitude == ZERO && minLongitude == ZERO && maxLongitude == ZERO\n /**\n * Indicates whether this sector contains the full range of latitude [90 to +90] and longitude [-180 to +180].\n */\n val isFullSphere get() = minLatitude == NEG90 && maxLatitude == POS90 && minLongitude == NEG180 && maxLongitude == POS180\n /**\n * Returns the angle between this sector's minimum and maximum latitudes.\n */\n val deltaLatitude get() = maxLatitude - minLatitude\n /**\n * Returns the angle between this sector's minimum and maximum longitudes.\n */\n val deltaLongitude get() = maxLongitude - minLongitude\n /**\n * Returns the angle midway between this sector's minimum and maximum latitudes.\n */\n val centroidLatitude get() = average(minLatitude, maxLatitude)\n /**\n * Returns the angle midway between this sector's minimum and maximum longitudes.\n */\n val centroidLongitude get() = average(minLongitude, maxLongitude)\n\n /**\n * Constructs an empty sector with minimum and maximum latitudes and longitudes all 0.\n */\n constructor(): this(minLatitude = ZERO, maxLatitude = ZERO, minLongitude = ZERO, maxLongitude = ZERO)\n\n /**\n * Constructs a sector with the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the coordinates\n */\n constructor(sector: Sector): this(sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude)\n\n companion object {\n @JvmStatic\n fun fromDegrees(minLatDegrees: Double, minLonDegrees: Double, deltaLatDegrees: Double, deltaLonDegrees: Double): Sector {\n val maxLatDegrees = if (deltaLatDegrees > 0)\n clampLatitude(minLatDegrees + deltaLatDegrees) else minLatDegrees\n val maxLonDegrees = if (deltaLonDegrees > 0)\n clampLongitude(minLonDegrees + deltaLonDegrees) else minLonDegrees\n return Sector(\n fromDegrees(minLatDegrees), fromDegrees(maxLatDegrees),\n fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n }\n\n @JvmStatic\n fun fromRadians(minLatRadians: Double, minLonRadians: Double, deltaLatRadians: Double, deltaLonRadians: Double): Sector {\n val maxLatRadians = if (deltaLatRadians > 0)\n clampLatitude(minLatRadians + deltaLatRadians) else minLatRadians\n val maxLonRadians = if (deltaLonRadians > 0)\n clampLongitude(minLonRadians + deltaLonRadians) else minLonRadians\n return Sector(\n fromRadians(minLatRadians), fromRadians(maxLatRadians),\n fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n }\n }\n\n /**\n * Computes the location of the angular center of this sector, which is the mid-angle of each of this sector's\n * latitude and longitude dimensions.\n *\n * @param result a pre-allocated [Location] in which to return the computed centroid\n *\n * @return the specified result argument containing the computed centroid\n */\n fun centroid(result: Location): Location {\n result.latitude = centroidLatitude\n result.longitude = centroidLongitude\n return result\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension.\n *\n * @param minLatitude the minimum latitude, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun set(minLatitude: Angle, minLongitude: Angle, deltaLatitude: Angle, deltaLongitude: Angle) = apply {\n this.minLatitude = minLatitude\n this.minLongitude = minLongitude\n maxLatitude = if (deltaLatitude.inDegrees > 0.0) (minLatitude + deltaLatitude).clampLatitude() else minLatitude\n maxLongitude = if (deltaLongitude.inDegrees > 0.0) (minLongitude + deltaLongitude).clampLongitude() else minLongitude\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in degrees.\n *\n * @param minLatitude the minimum latitude in degrees, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in degrees, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in degrees; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in degrees; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setDegrees(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromDegrees(minLatitude), fromDegrees(minLongitude),\n fromDegrees(deltaLatitude), fromDegrees(deltaLongitude),\n )\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in radians.\n *\n * @param minLatitude the minimum latitude in radians, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in radians, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in radians; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in radians; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setRadians(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromRadians(minLatitude), fromRadians(minLongitude),\n fromRadians(deltaLatitude), fromRadians(deltaLongitude),\n )\n\n /**\n * Sets this sector to the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the new coordinates\n *\n * @return this sector with its coordinates set to that of the specified sector\n */\n fun copy(sector: Sector) = apply {\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n\n /**\n * Sets this sector to an empty sector.\n *\n * @return this sector with its coordinates set to an empty sector\n */\n fun setEmpty() = apply {\n minLatitude = ZERO\n maxLatitude = ZERO\n minLongitude = ZERO\n maxLongitude = ZERO\n }\n\n /**\n * Sets this sector to the full range of latitude [90 to +90] and longitude [-180 to +180].\n *\n * @return this sector with its coordinates set to the full range of latitude and longitude\n */\n fun setFullSphere() = apply {\n minLatitude = NEG90\n maxLatitude = POS90\n minLongitude = NEG180\n maxLongitude = POS180\n }\n\n /**\n * Indicates whether this sector intersects a specified sector. Two sectors intersect when both the latitude\n * boundaries and the longitude boundaries overlap by a non-zero amount. An empty sector never intersects another\n * sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersections this sector, false otherwise\n */\n fun intersects(sector: Sector) = minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n\n /**\n * Indicates if this sector is next to, or intersects, a specified sector. Two sectors intersect when the conditions\n * of the [Sector.intersects] methods have been met, and if the boundary or corner is shared with the\n * specified sector. This is a temporary implementation and will be deprecated in future releases.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersects or is next to this sector, false otherwise\n */\n fun intersectsOrNextTo(sector: Sector) = minLatitude.inDegrees <= sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.minLatitude.inDegrees\n && minLongitude.inDegrees <= sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.minLongitude.inDegrees\n\n /**\n * Computes the intersection of this sector and a specified sector, storing the result in this sector and returning\n * whether or not the sectors intersect. Two sectors intersect when both the latitude boundaries and the longitude\n * boundaries overlap by a non-zero amount. An empty sector never intersects another sector. When there is no\n * intersection, this returns false and leaves this sector unchanged.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to intersect with\n *\n * @return this true if this sector intersects the specified sector, false otherwise\n */\n fun intersect(sector: Sector): Boolean {\n if (minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n ) {\n if (minLatitude.inDegrees < sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees > sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees < sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees > sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n return true\n }\n return false // the two sectors do not intersect\n }\n\n /**\n * Indicates whether this sector contains a specified geographic location.\n * An empty sector never contains a location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(latitude: Angle, longitude: Angle) = latitude.inDegrees in minLatitude.inDegrees..maxLatitude.inDegrees\n && longitude.inDegrees in minLongitude.inDegrees..maxLongitude.inDegrees\n\n /**\n * Indicates whether this sector contains a specified geographic location. An empty sector never contains a\n * location.\n *\n * @param location the location\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(location: Location) = contains(location.latitude, location.longitude)\n\n /**\n * Indicates whether this sector fully contains a specified sector. This sector contains the specified sector when\n * the specified sector's boundaries are completely contained within this sector's boundaries, or are equal to this\n * sector's boundaries. An empty sector never contains another sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test containment with\n *\n * @return true if the specified sector contains this sector, false otherwise\n */\n fun contains(sector: Sector) = minLatitude.inDegrees <= sector.minLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.maxLatitude.inDegrees\n && minLongitude.inDegrees <= sector.minLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.maxLongitude.inDegrees\n\n /**\n * Sets this sector to the union of itself and a specified location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(latitude: Angle, longitude: Angle) = apply {\n if (!isEmpty) {\n minLatitude = min(minLatitude, latitude)\n maxLatitude = max(maxLatitude, latitude)\n minLongitude = min(minLongitude, longitude)\n maxLongitude = max(maxLongitude, longitude)\n } else {\n minLatitude = latitude\n maxLatitude = latitude\n minLongitude = longitude\n maxLongitude = longitude\n }\n }\n\n /**\n * Sets this sector to the union of itself and a specified location.\n *\n * @param location the location\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(location: Location) = union(location.latitude, location.longitude)\n\n /**\n * Sets this sector to the union of itself and an array of specified locations. If this sector is empty, it bounds\n * the specified locations. The array is understood to contain location of at least two coordinates organized as\n * (longitude, latitude, ...), where stride indicates the number of coordinates between longitude values.\n *\n * @param array the array of locations to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent locations - must be at least 2\n *\n * @return This bounding box set to contain the specified array of locations.\n *\n * @throws IllegalArgumentException If the array is empty, if the count is less than 0, or if the stride is\n * less than 2\n */\n fun union(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Sector\", \"union\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidCount\")\n }\n require(stride >= 2) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidStride\")\n }\n val empty = isEmpty\n var minLat = if (empty) Double.MAX_VALUE else minLatitude.inDegrees\n var maxLat = if (empty) -Double.MAX_VALUE else maxLatitude.inDegrees\n var minLon = if (empty) Double.MAX_VALUE else minLongitude.inDegrees\n var maxLon = if (empty) -Double.MAX_VALUE else maxLongitude.inDegrees\n for (idx in 0 until count step stride) {\n val lon = array[idx].toDouble()\n val lat = array[idx + 1].toDouble()\n if (maxLat < lat) maxLat = lat\n if (minLat > lat) minLat = lat\n if (maxLon < lon) maxLon = lon\n if (minLon > lon) minLon = lon\n }\n if (minLat < Double.MAX_VALUE) minLatitude = fromDegrees(minLat)\n if (maxLat > -Double.MAX_VALUE) maxLatitude = fromDegrees(maxLat)\n if (minLon < Double.MAX_VALUE) minLongitude = fromDegrees(minLon)\n if (maxLon > -Double.MAX_VALUE) maxLongitude = fromDegrees(maxLon)\n }\n\n /**\n * Sets this sector to the union of itself and a specified sector.\n * This has no effect if the specified sector is empty.\n * If this sector is empty, it is set to the specified sector.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param sector the sector to union with\n *\n * @return this sector, set to its union with the specified sector\n */\n fun union(sector: Sector) = apply {\n if (!sector.isEmpty) {\n // specified sector not empty\n if (!isEmpty) {\n // this sector not empty, make a union\n if (minLatitude.inDegrees > sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees < sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees > sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees < sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n } else {\n // this sector is empty, set to the specified sector\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n }\n }\n\n /**\n * Translates this sector by a specified geographic increment.\n *
\n * The translated sector is assumed to have normalized angles (angles within the range [-90, +90] latitude and\n * [-180, +180] longitude).\n *\n * @param deltaLatitudeDegrees the translation's latitude increment in degrees\n * @param deltaLongitudeDegrees the translation's longitude increment in degrees\n *\n * @return this sector, translated by the specified increment\n */\n fun translate(deltaLatitudeDegrees: Double, deltaLongitudeDegrees: Double) = apply {\n minLatitude = minLatitude.plusDegrees(deltaLatitudeDegrees)\n maxLatitude = maxLatitude.plusDegrees(deltaLatitudeDegrees)\n minLongitude = minLongitude.plusDegrees(deltaLongitudeDegrees)\n maxLongitude = maxLongitude.plusDegrees(deltaLongitudeDegrees)\n }\n\n override fun equals(other: Any?): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (other !is Sector) return false\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return minLatitude == other.minLatitude && maxLatitude == other.maxLatitude\n && minLongitude == other.minLongitude && maxLongitude == other.maxLongitude\n }\n\n override fun hashCode(): Int {\n var result = minLatitude.hashCode()\n result = 31 * result + maxLatitude.hashCode()\n result = 31 * result + minLongitude.hashCode()\n result = 31 * result + maxLongitude.hashCode()\n return result\n }\n\n override fun toString() = \"Sector(minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlin.math.ceil\n\nopen class TileMatrix internal constructor(\n val sector: Sector, val ordinal: Int, val matrixWidth: Int, val matrixHeight: Int, val tileWidth: Int, val tileHeight: Int\n) {\n val degreesPerPixel get() = sector.deltaLatitude.inDegrees / (matrixHeight * tileHeight)\n\n fun tileKey(row: Int, column: Int): Long {\n val lOrd = (ordinal and 0xFF).toLong() // 8 bits\n val lRow = (row and 0xFFFFFFF).toLong() // 28 bits\n val lCol = (column and 0xFFFFFFF).toLong() // 28 bits\n return lOrd.shl(56) or lRow.shl(28) or lCol\n }\n\n fun tileSector(row: Int, column: Int): Sector {\n val deltaLat = sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = sector.deltaLongitude.inDegrees / matrixWidth\n val minLat = sector.maxLatitude.inDegrees - deltaLat * (row + 1)\n val minLon = sector.minLongitude.inDegrees + deltaLon * column\n return fromDegrees(minLat, minLon, deltaLat, deltaLon)\n }\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val deltaLat = this.sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = this.sector.deltaLongitude.inDegrees / matrixWidth\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / deltaLat).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / deltaLon).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.makeMessage\nimport kotlin.jvm.JvmStatic\n\nopen class TileMatrixSet(val sector: Sector, val entries: List) {\n /**\n * Construct empty tile matrix set.\n */\n constructor(): this(Sector(), emptyList())\n\n companion object {\n @JvmStatic\n fun fromTilePyramid(\n sector: Sector, matrixWidth: Int, matrixHeight: Int, tileWidth: Int, tileHeight: Int, resolution: Angle\n ): TileMatrixSet {\n require(resolution.inDegrees > 0.0) {\n makeMessage(\"TileMatrixSet\", \"fromTilePyramid\", \"invalidResolution\")\n }\n var idx = 0\n var width = matrixWidth\n var height = matrixHeight\n val tileMatrices = mutableListOf()\n do {\n val matrix = TileMatrix(sector, idx++, width, height, tileWidth, tileHeight)\n tileMatrices.add(matrix)\n width *= 2\n height *= 2\n } while (matrix.degreesPerPixel > resolution.inDegrees)\n return TileMatrixSet(sector, tileMatrices)\n }\n }\n\n fun indexOfMatrixNearest(degreesPerPixel: Double): Int {\n var nearestIdx = -1\n var nearestDelta2 = Double.POSITIVE_INFINITY\n for (idx in entries.indices) {\n val delta = entries[idx].degreesPerPixel - degreesPerPixel\n val delta2 = delta * delta\n if (nearestDelta2 > delta2) {\n nearestDelta2 = delta2\n nearestIdx = idx\n }\n }\n return nearestIdx\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Two-component vector with X and Y coordinates.\n */\nopen class Vec2(\n /**\n * The vector's X component.\n */\n var x: Double,\n /**\n * The vector's Y component.\n */\n var y: Double\n) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n *\n * @return the squared magnitude of this vector\n */\n open val magnitudeSquared get() = x * x + y * y\n /**\n * Computes the magnitude of this vector.\n *\n * @return the magnitude of this vector\n */\n val magnitude get() = sqrt(magnitudeSquared)\n\n /**\n * Constructs a two-component vector with X and Y both 0.\n */\n constructor(): this(x = 0.0, y = 0.0)\n\n /**\n * Constructs a two-component vector with the X and Y of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec2): this(vector.x, vector.y)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform2fv.\n *\n * @param result a pre-allocated array of length 2 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n open fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 2) {\n logMessage(ERROR, \"Vec2\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o] = y.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec2) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec2): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n return dx * dx + dy * dy\n }\n\n /**\n * Sets this vector to the specified X and Y.\n *\n * @param x the new X component\n * @param y the new Y component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double) = apply {\n this.x = x\n this.y = y\n }\n\n /**\n * Sets this vector to the X and Y of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X and Y set to that of the specified vector\n */\n fun copy(vector: Vec2) = set(vector.x, vector.y)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec2) = apply {\n var tmp = x\n x = vector.x\n vector.x = tmp\n\n tmp = y\n y = vector.y\n vector.y = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec2) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec2) = Vec2(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec2) {\n x += vector.x\n y += vector.y\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec2) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec2) = Vec2(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec2) {\n x -= vector.x\n y -= vector.y\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n open fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n open operator fun times(scalar: Double) = Vec2(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n open operator fun timesAssign(scalar: Double) {\n x *= scalar\n y *= scalar\n }\n\n /**\n * Multiplies this vector by a 3x3 matrix. The multiplication is performed with an implicit Z component of 1. The\n * resultant Z component of the product is then divided through the X and Y components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2]\n val y = m[3] * this.x + m[4] * y + m[5]\n val z = m[6] * this.x + m[7] * this.y + m[8]\n this.x = x / z\n this.y = y / z\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n open fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n open operator fun div(divisor: Double) = Vec2(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n open operator fun divAssign(divisor: Double) {\n x /= divisor\n y /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n open operator fun unaryMinus() = Vec2(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n open fun negate() = apply {\n x = -x\n y = -y\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n open fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec2) = x * vector.x + y * vector.y\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec2, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec2) return false\n return x == other.x && y == other.y\n }\n\n override fun hashCode(): Int {\n var result = x.hashCode()\n result = 31 * result + y.hashCode()\n return result\n }\n\n override fun toString() = \"Vec2(x=$x, y=$y)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Three-component vector with X, Y and Z coordinates.\n */\nopen class Vec3(\n /**\n * The vector's X component.\n */\n x: Double,\n /**\n * The vector's Y component.\n */\n y: Double,\n /**\n * The vector's Z component.\n */\n var z: Double\n): Vec2(x, y) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n */\n override val magnitudeSquared get() = super.magnitudeSquared + z * z\n\n /**\n * Constructs a three-component vector with X, Y and Z all 0.\n */\n constructor(): this(x = 0.0, y = 0.0, z = 0.0)\n\n /**\n * Constructs a three-component vector with the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec3): this(vector.x, vector.y, vector.z)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform3fv.\n *\n * @param result a pre-allocated array of length 3 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n override fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 3) {\n logMessage(ERROR, \"Vec3\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o++] = y.toFloat()\n result[o] = z.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector The vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec3) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec3): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n val dz = z - vector.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Sets this vector to the specified X, Y and Z.\n *\n * @param x the new X component\n * @param y the new Y component\n * @param z the new Z component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double, z: Double) = apply {\n set(x, y)\n this.z = z\n }\n\n /**\n * Sets this vector to the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X, Y and Z set to that of the specified vector\n */\n fun copy(vector: Vec3) = set(vector.x, vector.y, vector.z)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec3) = apply {\n super.swap(vector)\n val tmp = z\n z = vector.z\n vector.z = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec3) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec3) = Vec3(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec3) {\n super.plusAssign(vector)\n z += vector.z\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec3) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec3) = Vec3(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec3) {\n super.minusAssign(vector)\n z -= vector.z\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n override fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n override fun times(scalar: Double) = Vec3(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n override fun timesAssign(scalar: Double) {\n super.timesAssign(scalar)\n z *= scalar\n }\n\n /**\n * Multiplies this vector by a 4x4 matrix. The multiplication is performed with an implicit W component of 1. The\n * resultant W component of the product is then divided through the X, Y, and Z components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2] * z + m[3]\n val y = m[4] * this.x + m[5] * y + m[6] * z + m[7]\n val z = m[8] * this.x + m[9] * this.y + m[10] * z + m[11]\n val w = m[12] * this.x + m[13] * this.y + m[14] * this.z + m[15]\n this.x = x / w\n this.y = y / w\n this.z = z / w\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n override fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n override fun div(divisor: Double) = Vec3(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n override fun divAssign(divisor: Double) {\n super.divAssign(divisor)\n z /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n override fun unaryMinus() = Vec3(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n override fun negate() = apply {\n super.negate()\n z = -z\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n override fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n z /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec3) = super.dot(vector) + z * vector.z\n\n /**\n * Computes the cross product of this vector and a specified vector, modifying this vector.\n *\n * @param vector the vector to cross with this vector\n *\n * @return this vector set to the cross product of itself and the specified vector\n */\n fun cross(vector: Vec3) = apply {\n val x = y * vector.z - z * vector.y\n val y = z * vector.x - this.x * vector.z\n val z = this.x * vector.y - this.y * vector.x\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Computes the cross product of two vectors, setting this vector to the result.\n *\n * @param a the first vector\n * @param b the second vector\n *\n * @return this vector set to the cross product of the two specified vectors\n */\n fun cross(a: Vec3, b: Vec3) = apply {\n x = a.y * b.z - a.z * b.y\n y = a.z * b.x - a.x * b.z\n z = a.x * b.y - a.y * b.x\n }\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec3, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n z = z * w0 + vector.z * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec3) return false\n if (!super.equals(other)) return false\n return z == other.z\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + z.hashCode()\n return result\n }\n\n override fun toString() = \"Vec3(x=$x, y=$y, z=$z)\"\n}","package earth.worldwind.geom\n\n/**\n * Rectangular region in a two-dimensional coordinate system expressed as an origin and dimensions extending from the\n * origin.\n */\nopen class Viewport(\n /**\n * The X component of the viewport's origin.\n */\n var x: Int,\n /**\n * The Y component of the viewport's origin.\n */\n var y: Int,\n /**\n * The viewport's width.\n */\n var width: Int,\n /**\n * The viewport's height.\n */\n var height: Int\n) {\n /**\n * Constructs an empty viewport width X, Y, width and height all zero.\n */\n constructor(): this(x = 0, y = 0, width = 0, height = 0)\n\n /**\n * Constructs a viewport with the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the values\n */\n constructor(viewport: Viewport): this(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport is empty. A viewport is empty when either its width or its height are\n * zero (or negative).\n *\n * @return true if this viewport is empty, false otherwise\n */\n val isEmpty get() = width <= 0 || height <= 0\n\n /**\n * Sets this viewport to an empty viewport.\n *\n * @return this viewport with its width and height both set to zero\n */\n fun setEmpty() = apply {\n width = 0\n height = 0\n }\n\n /**\n * Sets this viewport to the specified origin and dimensions.\n *\n * @param x the new X component of the viewport's lower left corner\n * @param y the new Y component of the viewport's lower left corner\n * @param width the viewport's new width\n * @param height the viewport's new height\n *\n * @return this viewport set to the specified values\n */\n fun set(x: Int, y: Int, width: Int, height: Int) = apply {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n /**\n * Sets this viewport to the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the new values\n *\n * @return this viewport with its origin and dimensions set to that of the specified viewport\n */\n fun copy(viewport: Viewport) = set(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param x the X component of the viewport to test intersection with\n * @param y the Y component of the viewport to test intersection with\n * @param width the viewport width to test intersection with\n * @param height the viewport height to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(x: Int, y: Int, width: Int, height: Int) =\n this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param viewport the viewport to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(viewport: Viewport) =\n width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param x the X component of the viewport to intersect with\n * @param y the Y component of the viewport to intersect with\n * @param width the viewport width to intersect with\n * @param height the viewport height to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(x: Int, y: Int, width: Int, height: Int): Boolean {\n if (this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height) {\n if (this.x < x) {\n this.width -= x - this.x\n this.x = x\n }\n if (this.y < y) {\n this.height -= y - this.y\n this.y = y\n }\n if (this.x + this.width > x + width) this.width = x + width - this.x\n if (this.y + this.height > y + height) this.height = y + height - this.y\n return true\n }\n return false\n }\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param viewport the viewport to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(viewport: Viewport): Boolean {\n if (width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height) {\n if (x < viewport.x) {\n width -= viewport.x - x\n x = viewport.x\n }\n if (y < viewport.y) {\n height -= viewport.y - y\n y = viewport.y\n }\n if (x + width > viewport.x + viewport.width) width = viewport.x + viewport.width - x\n if (y + height > viewport.y + viewport.height) height = viewport.y + viewport.height - y\n return true\n }\n return false\n }\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param point the point\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(point: Vec2) = contains(point.x, point.y)\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param x the point's X component\n * @param y the point's Y component\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(x: Number, y: Number) = x.toDouble() >= this.x && x.toDouble() < this.x + width\n && y.toDouble() >= this.y && y.toDouble() < this.y + height\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Viewport) return false\n return x == other.x && y == other.y && width == other.width && height == other.height\n }\n\n override fun hashCode(): Int {\n var result = x\n result = 31 * result + y\n result = 31 * result + width\n result = 31 * result + height\n return result\n }\n\n override fun toString() = \"Viewport(x=$x, y=$y, width=$width, height=$height)\"\n}","package earth.worldwind.geom.coords\n\nenum class Hemisphere { N, S; }","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds an immutable MGRS coordinate string along with\r\n * the corresponding latitude and longitude.\r\n */\r\nclass MGRSCoord private constructor(val latitude: Angle, val longitude: Angle, private val MGRSString: String) {\r\n companion object {\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the maximum precision of five digits (one meter).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 5)\r\n\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the given precision or number of digits (1 to 5).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @param precision the number of digits used for easting and northing (1 to 5).\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle, precision: Int): MGRSCoord {\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertGeodeticToMGRS(latitude.inRadians, longitude.inRadians, precision)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(latitude, longitude, converter.mgrsString)\r\n }\r\n\r\n /**\r\n * Create a MGRS coordinate from a standard MGRS coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * Valid examples:
\r\n * 32TLP5626635418
\r\n * 32 T LP 56266 35418
\r\n * 11S KU 528 111
\r\n *\r\n * @param MGRSString the MGRS coordinate text string.\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the [MGRSString] is empty,\r\n * the [Globe] is null, or the conversion to geodetic coordinates fails (invalid coordinate string).\r\n */\r\n @JvmStatic\r\n fun fromString(MGRSString: String): MGRSCoord {\r\n var str = MGRSString\r\n str = str.uppercase().replace(\" \", \"\")\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertMGRSToGeodetic(str)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(converter.latitude.radians, converter.longitude.radians, str)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = MGRSString\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.util.format.format\r\nimport kotlin.math.PI\r\nimport kotlin.math.floor\r\nimport kotlin.math.pow\r\n\r\n/*\r\n * Converter used to translate MGRS coordinate strings to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans mgrs.c and mgrs.h code. Contains routines to convert from Geodetic to MGRS and\r\n * the other direction.\r\n */\r\ninternal class MGRSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val STRING_ERROR = 0x0004\r\n const val PRECISION_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0040\r\n const val NORTHING_ERROR = 0x0080\r\n const val HEMISPHERE_ERROR = 0x0200\r\n const val LAT_WARNING = 0x0400\r\n const val UTM_ERROR = 0x1000\r\n const val UPS_ERROR = 0x2000\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val MAX_PRECISION = 5\r\n private const val MIN_UTM_LAT = -80 * PI / 180.0 // -80 degrees in radians\r\n private const val MAX_UTM_LAT = 84 * PI / 180.0 // 84 degrees in radians\r\n private const val DEG_TO_RAD = 0.017453292519943295 // PI/180\r\n private const val RAD_TO_DEG = 57.29577951308232 // 180/PI\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n private const val TWO_MIL = 2000000.0\r\n private const val ONE_HT = 100000.0\r\n private const val CLARKE_1866 = \"CC\"\r\n private const val CLARKE_1880 = \"CD\"\r\n private const val BESSEL_1841 = \"BR\"\r\n private const val BESSEL_1841_NAMIBIA = \"BN\"\r\n private const val LETTER_A = 0 /* ARRAY INDEX FOR LETTER A */\r\n private const val LETTER_B = 1 /* ARRAY INDEX FOR LETTER B */\r\n private const val LETTER_C = 2 /* ARRAY INDEX FOR LETTER C */\r\n private const val LETTER_D = 3 /* ARRAY INDEX FOR LETTER D */\r\n private const val LETTER_E = 4 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_F = 5 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_G = 6 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_H = 7 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_I = 8 /* ARRAY INDEX FOR LETTER I */\r\n private const val LETTER_J = 9 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_K = 10 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_L = 11 /* ARRAY INDEX FOR LETTER L */\r\n private const val LETTER_M = 12 /* ARRAY INDEX FOR LETTER M */\r\n private const val LETTER_N = 13 /* ARRAY INDEX FOR LETTER N */\r\n private const val LETTER_O = 14 /* ARRAY INDEX FOR LETTER O */\r\n private const val LETTER_P = 15 /* ARRAY INDEX FOR LETTER P */\r\n private const val LETTER_Q = 16 /* ARRAY INDEX FOR LETTER Q */\r\n private const val LETTER_R = 17 /* ARRAY INDEX FOR LETTER R */\r\n private const val LETTER_S = 18 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_T = 19 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_U = 20 /* ARRAY INDEX FOR LETTER U */\r\n private const val LETTER_V = 21 /* ARRAY INDEX FOR LETTER V */\r\n private const val LETTER_W = 22 /* ARRAY INDEX FOR LETTER W */\r\n private const val LETTER_X = 23 /* ARRAY INDEX FOR LETTER X */\r\n private const val LETTER_Y = 24 /* ARRAY INDEX FOR LETTER Y */\r\n private const val LETTER_Z = 25 /* ARRAY INDEX FOR LETTER Z */\r\n private const val MGRS_LETTERS = 3 /* NUMBER OF LETTERS IN MGRS */\r\n private const val alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\r\n\r\n // UPS Constants are in the following order:\r\n // letter representing latitude band\r\n // 2nd letter range - high number\r\n // 2nd letter range - low number\r\n // 3rd letter range - high number (UPS)\r\n // False easting based on 2nd letter\r\n // False northing based on 3rd letter\r\n private val upsConstants = arrayOf(\r\n intArrayOf(LETTER_A, LETTER_J, LETTER_Z, LETTER_Z, 800000, 800000),\r\n intArrayOf(LETTER_B, LETTER_A, LETTER_R, LETTER_Z, 2000000, 800000),\r\n intArrayOf(LETTER_Y, LETTER_J, LETTER_Z, LETTER_P, 800000, 1300000),\r\n intArrayOf(LETTER_Z, LETTER_A, LETTER_J, LETTER_P, 2000000, 1300000)\r\n )\r\n\r\n // Latitude Band Constants are in the following order:\r\n // letter representing latitude band\r\n // minimum northing for latitude band\r\n // upper latitude for latitude band\r\n // lower latitude for latitude band\r\n private val latitudeBandConstants = arrayOf(\r\n doubleArrayOf(LETTER_C.toDouble(), 1100000.0, -72.0, -80.5, 0.0),\r\n doubleArrayOf(LETTER_D.toDouble(), 2000000.0, -64.0, -72.0, 2000000.0),\r\n doubleArrayOf(LETTER_E.toDouble(), 2800000.0, -56.0, -64.0, 2000000.0),\r\n doubleArrayOf(LETTER_F.toDouble(), 3700000.0, -48.0, -56.0, 2000000.0),\r\n doubleArrayOf(LETTER_G.toDouble(), 4600000.0, -40.0, -48.0, 4000000.0),\r\n doubleArrayOf(LETTER_H.toDouble(), 5500000.0, -32.0, -40.0, 4000000.0),\r\n doubleArrayOf(LETTER_J.toDouble(), 6400000.0, -24.0, -32.0, 6000000.0),\r\n doubleArrayOf(LETTER_K.toDouble(), 7300000.0, -16.0, -24.0, 6000000.0),\r\n doubleArrayOf(LETTER_L.toDouble(), 8200000.0, -8.0, -16.0, 8000000.0),\r\n doubleArrayOf(LETTER_M.toDouble(), 9100000.0, 0.0, -8.0, 8000000.0),\r\n doubleArrayOf(LETTER_N.toDouble(), 0.0, 8.0, 0.0, 0.0),\r\n doubleArrayOf(LETTER_P.toDouble(), 800000.0, 16.0, 8.0, 0.0),\r\n doubleArrayOf(LETTER_Q.toDouble(), 1700000.0, 24.0, 16.0, 0.0),\r\n doubleArrayOf(LETTER_R.toDouble(), 2600000.0, 32.0, 24.0, 2000000.0),\r\n doubleArrayOf(LETTER_S.toDouble(), 3500000.0, 40.0, 32.0, 2000000.0),\r\n doubleArrayOf(LETTER_T.toDouble(), 4400000.0, 48.0, 40.0, 4000000.0),\r\n doubleArrayOf(LETTER_U.toDouble(), 5300000.0, 56.0, 48.0, 4000000.0),\r\n doubleArrayOf(LETTER_V.toDouble(), 6200000.0, 64.0, 56.0, 6000000.0),\r\n doubleArrayOf(LETTER_W.toDouble(), 7000000.0, 72.0, 64.0, 6000000.0),\r\n doubleArrayOf(LETTER_X.toDouble(), 7900000.0, 84.5, 72.0, 6000000.0)\r\n )\r\n }\r\n\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n var mgrsString = \"\"\r\n private set\r\n private var ltr2LowValue = 0\r\n private var ltr2HighValue = 0 // this is only used for doing MGRS to xxx conversions.\r\n private var falseNorthing = 0.0\r\n private var lastLetter = 0\r\n private var lastError = NO_ERROR\r\n private var north = 0.0\r\n private var south = 0.0\r\n private var minNorthing = 0.0\r\n private var northingOffset = 0.0\r\n private val mgrsEllipsoidCode = \"WE\"\r\n\r\n private class MGRSComponents(\r\n val zone: Int, val latitudeBand: Int, val squareLetter1: Int, val squareLetter2: Int,\r\n val easting: Double, val northing: Double, val precision: Int\r\n ) {\r\n override fun toString() = \"MGRS: \" + zone + \" \" + alphabet[latitudeBand] + \" \" +\r\n alphabet[squareLetter1] + alphabet[squareLetter2] + \" \" +\r\n easting + \" \" + northing + \" \" + \"(\" + precision + \")\"\r\n }\r\n\r\n /**\r\n * The function ConvertMGRSToGeodetic converts an MGRS coordinate string to Geodetic (latitude and longitude)\r\n * coordinates according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param MGRSString MGRS coordinate string.\r\n *\r\n * @return the error code.\r\n */\r\n fun convertMGRSToGeodetic(MGRSString: String): Int {\r\n latitude = 0.0\r\n longitude = 0.0\r\n val mgrs = breakMGRSString(MGRSString) ?: return lastError\r\n var errorCode = NO_ERROR\r\n if (mgrs.zone != 0) {\r\n val utm = convertMGRSToUTM(MGRSString)\r\n if (utm != null) {\r\n latitude = utm.latitude.inRadians\r\n longitude = utm.longitude.inRadians\r\n } else errorCode = UTM_ERROR\r\n } else {\r\n val ups = convertMGRSToUPS(MGRSString)\r\n if (ups != null) {\r\n latitude = ups.latitude.inRadians\r\n longitude = ups.longitude.inRadians\r\n } else errorCode = UPS_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Break_MGRS_String breaks down an MGRS coordinate string into its component parts. Updates\r\n * last_error.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [MGRSComponents] or null.\r\n */\r\n private fun breakMGRSString(MGRSString: String): MGRSComponents? {\r\n var str = MGRSString\r\n var i = 0\r\n var errorCode = NO_ERROR\r\n var zone = 0\r\n val letters = IntArray(3)\r\n var easting = 0L\r\n var northing = 0L\r\n var precision = 0\r\n str = str.uppercase().replace(\"\\\\s\", \"\")\r\n var j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n var numDigits = i - j\r\n if (numDigits <= 2) {\r\n if (numDigits > 0) {\r\n /* get zone */\r\n zone = str.substring(j, i).toInt()\r\n if (zone < 1 || zone > 60) errorCode = errorCode or STRING_ERROR\r\n }\r\n }\r\n j = i\r\n while (i < str.length && str[i].isLetter()) i++\r\n val numLetters = i - j\r\n if (numLetters == 3) {\r\n /* get letters */\r\n letters[0] = alphabet.indexOf(str[j].uppercaseChar())\r\n if (letters[0] == LETTER_I || letters[0] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[1] = alphabet.indexOf(str[j + 1].uppercaseChar())\r\n if (letters[1] == LETTER_I || letters[1] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[2] = alphabet.indexOf(str[j + 2].uppercaseChar())\r\n if (letters[2] == LETTER_I || letters[2] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n } else errorCode = errorCode or STRING_ERROR\r\n j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n numDigits = i - j\r\n if (numDigits <= 10 && numDigits % 2 == 0) {\r\n /* get easting, northing and precision */\r\n /* get easting & northing */\r\n val n = numDigits / 2\r\n precision = n\r\n if (n > 0) {\r\n easting = str.substring(j, j + n).toLong()\r\n northing = str.substring(j + n, j + n + n).toLong()\r\n val multiplier = 10.0.pow(5 - n).toLong()\r\n easting *= multiplier\r\n northing *= multiplier\r\n } else {\r\n easting = 0\r\n northing = 0\r\n }\r\n } else errorCode = errorCode or STRING_ERROR\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR) MGRSComponents(\r\n zone, letters[0], letters[1], letters[2],\r\n easting.toDouble(), northing.toDouble(), precision\r\n ) else null\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Band_Min_Northing receives a latitude band letter and uses the Latitude_Band_Table to\r\n * determine the minimum northing for that latitude band letter. Updates min_northing.\r\n *\r\n * @param letter Latitude band letter.\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeBandMinNorthing(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n minNorthing = latitudeBandConstants[letter - 2][1]\r\n northingOffset = latitudeBandConstants[letter - 2][4]\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n minNorthing = latitudeBandConstants[letter - 3][1]\r\n northingOffset = latitudeBandConstants[letter - 3][4]\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n minNorthing = latitudeBandConstants[letter - 4][1]\r\n northingOffset = latitudeBandConstants[letter - 4][4]\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Range receives a latitude band letter and uses the Latitude_Band_Table to determine the\r\n * latitude band boundaries for that latitude band letter. Updates north and south.\r\n *\r\n * @param letter the Latitude band letter\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeRange(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n north = latitudeBandConstants[letter - 2][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 2][3] * DEG_TO_RAD\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n north = latitudeBandConstants[letter - 3][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 3][3] * DEG_TO_RAD\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n north = latitudeBandConstants[letter - 4][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 4][3] * DEG_TO_RAD\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function convertMGRSToUTM converts an MGRS coordinate string to UTM projection (zone, hemisphere, easting and\r\n * northing) coordinates according to the current ellipsoid parameters. Updates last_error if any errors occurred.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [UTMCoord] or null.\r\n */\r\n private fun convertMGRSToUTM(MGRSString: String): UTMCoord? {\r\n var errorCode = NO_ERROR\r\n var utm: UTMCoord? = null\r\n val mgrs = breakMGRSString(MGRSString)\r\n if (mgrs == null) errorCode = errorCode or STRING_ERROR else {\r\n if (mgrs.latitudeBand == LETTER_X && (mgrs.zone == 32 || mgrs.zone == 34 || mgrs.zone == 36))\r\n errorCode = errorCode or STRING_ERROR\r\n else {\r\n val hemisphere = if (mgrs.latitudeBand < LETTER_N) Hemisphere.S else Hemisphere.N\r\n getGridValues(mgrs.zone)\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter2 > LETTER_V) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n var gridNorthing = mgrs.squareLetter2 * ONE_HT\r\n var gridEasting = (mgrs.squareLetter1 - ltr2LowValue + 1) * ONE_HT\r\n if (ltr2LowValue == LETTER_J && mgrs.squareLetter1 > LETTER_O) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n errorCode = getLatitudeBandMinNorthing(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing -= falseNorthing\r\n if (gridNorthing < 0.0) gridNorthing += TWO_MIL\r\n gridNorthing += northingOffset\r\n if (gridNorthing < minNorthing) gridNorthing += TWO_MIL\r\n val easting = gridEasting + mgrs.easting\r\n val northing = gridNorthing + mgrs.northing\r\n try {\r\n utm = UTMCoord.fromUTM(mgrs.zone, hemisphere, easting, northing)\r\n latitude = utm.latitude.inRadians\r\n val divisor = 10.0.pow(mgrs.precision)\r\n errorCode = getLatitudeRange(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n if (!(south - DEG_TO_RAD / divisor <= latitude\r\n && latitude <= north + DEG_TO_RAD / divisor)\r\n ) errorCode = errorCode or LAT_WARNING\r\n }\r\n } catch (e: Exception) {\r\n errorCode = UTM_ERROR\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR || errorCode == LAT_WARNING) utm else null\r\n }\r\n\r\n /**\r\n * The function convertGeodeticToMGRS converts Geodetic (latitude and longitude) coordinates to an MGRS coordinate\r\n * string, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned by\r\n * the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radian\r\n * @param precision Precision level of MGRS string\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToMGRS(latitude: Double, longitude: Double, precision: Int): Int {\r\n mgrsString = \"\"\r\n var errorCode = NO_ERROR\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = LAT_ERROR\r\n if (longitude < -PI || longitude > 2 * PI) errorCode = LON_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n errorCode = if (latitude < MIN_UTM_LAT || latitude > MAX_UTM_LAT) {\r\n try {\r\n val ups = UPSCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUPSToMGRS(ups.hemisphere, ups.easting, ups.northing, precision)\r\n } catch (e: Exception) {\r\n UPS_ERROR\r\n }\r\n } else {\r\n try {\r\n val utm = UTMCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUTMToMGRS(utm.zone, latitude, utm.easting, utm.northing, precision)\r\n } catch (e: Exception) {\r\n UTM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, and northing) coordinates to an MGRS\r\n * coordinate string according to the current ellipsoid parameters. If any errors occur, the error code(s) are\r\n * returned by the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n * @param precision precision level of MGRS string\r\n *\r\n * @return error value\r\n */\r\n private fun convertUPSToMGRS(hemisphere: Hemisphere, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* northing used to derive 3rd letter of MGRS */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (east < MIN_EAST_NORTH || east > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (north < MIN_EAST_NORTH || north > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = errorCode or PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n if (Hemisphere.N == hemisphere) {\r\n if (east >= TWO_MIL) letters[0] = LETTER_Z else letters[0] = LETTER_Y\r\n val index = letters[0] - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n if (east >= TWO_MIL) letters[0] = LETTER_B else letters[0] = LETTER_A\r\n ltr2LowValue = upsConstants[letters[0]][1]\r\n falseEasting = upsConstants[letters[0]][4].toDouble()\r\n falseNorthing = upsConstants[letters[0]][5].toDouble()\r\n }\r\n gridNorthing = north\r\n gridNorthing -= falseNorthing\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n gridEasting -= falseEasting\r\n letters[1] = ltr2LowValue + (gridEasting / ONE_HT).toInt()\r\n if (east < TWO_MIL) {\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n if (letters[1] > LETTER_U) letters[1] = letters[1] + 2\r\n } else {\r\n if (letters[1] > LETTER_C) letters[1] = letters[1] + 2\r\n if (letters[1] > LETTER_H) letters[1] = letters[1] + 1\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n }\r\n makeMGRSString(0, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function UTM_To_MGRS calculates an MGRS coordinate string based on the zone, latitude, easting and northing.\r\n *\r\n * @param zone Zone number\r\n * @param latitude Latitude in radians\r\n * @param easting Easting\r\n * @param northing Northing\r\n * @param precision Precision\r\n *\r\n * @return error code\r\n */\r\n private fun convertUTMToMGRS(zone: Int, latitude: Double, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n var gridEasting: Double /* Easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* Northing used to derive 3rd letter of MGRS */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n\r\n /* Round easting and northing values */\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n getGridValues(zone)\r\n val errorCode = getLatitudeLetter(latitude)\r\n letters[0] = lastLetter\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = north\r\n if (gridNorthing == 1e7) gridNorthing -= 1.0\r\n while (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n gridNorthing += falseNorthing\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n if (letters[0] == LETTER_V && zone == 31 && gridEasting == 500000.0) gridEasting -= 1.0 /* SUBTRACT 1 METER */\r\n letters[1] = ltr2LowValue + ((gridEasting / ONE_HT).toInt() - 1)\r\n if (ltr2LowValue == LETTER_J && letters[1] > LETTER_N) letters[1] = letters[1] + 1\r\n makeMGRSString(zone, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Grid_Values sets the letter range used for the 2nd letter in the MGRS coordinate string, based\r\n * on the set number of the utm zone. It also sets the false northing using a value of A for the second letter of\r\n * the grid square, based on the grid pattern and set number of the utm zone.\r\n *
\r\n * Key values that are set in this function include: ltr2_low_value, ltr2_high_value, and false_northing.\r\n *\r\n * @param zone Zone number\r\n */\r\n private fun getGridValues(zone: Int) {\r\n var setNumber = zone % 6 /* Set number (1-6) based on UTM zone number */\r\n if (setNumber == 0) setNumber = 6\r\n val aaPattern = if (mgrsEllipsoidCode.compareTo(CLARKE_1866) == 0\r\n || mgrsEllipsoidCode.compareTo(CLARKE_1880) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841_NAMIBIA) == 0\r\n ) 0 else 1 /* Pattern based on ellipsoid code */\r\n if (setNumber == 1 || setNumber == 4) {\r\n ltr2LowValue = LETTER_A\r\n ltr2HighValue = LETTER_H\r\n } else if (setNumber == 2 || setNumber == 5) {\r\n ltr2LowValue = LETTER_J\r\n ltr2HighValue = LETTER_R\r\n } else if (setNumber == 3 || setNumber == 6) {\r\n ltr2LowValue = LETTER_S\r\n ltr2HighValue = LETTER_Z\r\n }\r\n\r\n /* False northing at A for second letter of grid square */\r\n falseNorthing = if (aaPattern == 1) {\r\n if (setNumber % 2 == 0) 500000.0\r\n else 0.0\r\n } else {\r\n if (setNumber % 2 == 0) 1500000.0\r\n else 1000000.00\r\n }\r\n }\r\n\r\n /**\r\n * The function receives a latitude value and uses the Latitude_Band_Table to determine the\r\n * latitude band letter for that latitude.\r\n *\r\n * @param latitude latitude to turn into code\r\n *\r\n * @return error code\r\n */\r\n private fun getLatitudeLetter(latitude: Double): Int {\r\n var errorCode = NO_ERROR\r\n val latDeg = latitude * RAD_TO_DEG\r\n if (latDeg >= 72 && latDeg < 84.5) lastLetter = LETTER_X\r\n else if (latDeg > -80.5 && latDeg < 72) {\r\n val temp = (latitude + 80.0 * DEG_TO_RAD) / (8.0 * DEG_TO_RAD) + 1.0e-12\r\n lastLetter = latitudeBandConstants[temp.toInt()][0].toInt()\r\n } else errorCode = errorCode or LAT_ERROR\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Round_MGRS rounds the input value to the nearest integer, using the standard engineering rule. The\r\n * rounded integer value is then returned.\r\n *\r\n * @param value Value to be rounded\r\n *\r\n * @return rounded double value\r\n */\r\n private fun roundMGRS(value: Double): Double {\r\n val floorValue = floor(value)\r\n val fraction = value - floorValue\r\n var intValue = floorValue.toLong()\r\n if (fraction > 0.5 || fraction == 0.5 && intValue % 2 == 1L) intValue++\r\n return intValue.toDouble()\r\n }\r\n\r\n /**\r\n * The function Make_MGRS_String constructs an MGRS string from its component parts.\r\n *\r\n * @param zone UTM Zone\r\n * @param letters MGRS coordinate string letters\r\n * @param easting Easting value\r\n * @param northing Northing value\r\n * @param precision Precision level of MGRS string\r\n */\r\n private fun makeMGRSString(zone: Int, letters: IntArray, easting: Double, northing: Double, precision: Int) {\r\n var east = easting\r\n var north = northing\r\n mgrsString = if (zone != 0) \"%02d\".format(zone) else \" \"\r\n for (j in 0..2) {\r\n if (letters[j] < 0 || letters[j] > 26) return\r\n mgrsString += alphabet[letters[j]]\r\n }\r\n val divisor = 10.0.pow(5 - precision)\r\n east %= 100000.0\r\n if (east >= 99999.5) east = 99999.0\r\n\r\n // Here we need to only use the number requesting in the precision\r\n val iEast = (east / divisor).toInt()\r\n var sEast = StringBuilder(iEast.toString())\r\n if (sEast.length > precision) sEast = StringBuilder(sEast.substring(0, precision - 1))\r\n else for (i in 0 until precision - sEast.length) sEast.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sEast\"\r\n north %= 100000.0\r\n if (north >= 99999.5) north = 99999.0\r\n val iNorth = (north / divisor).toInt()\r\n var sNorth = StringBuilder(iNorth.toString())\r\n if (sNorth.length > precision) sNorth = StringBuilder(sNorth.substring(0, precision - 1))\r\n else for (i in 0 until precision - sNorth.length) sNorth.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sNorth\"\r\n }\r\n\r\n /**\r\n * The function Convert_MGRS_To_UPS converts an MGRS coordinate string to UPS (hemisphere, easting, and northing)\r\n * coordinates, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param MGRS the MGRS coordinate string.\r\n *\r\n * @return a corresponding [UPSCoord] instance.\r\n */\r\n private fun convertMGRSToUPS(MGRS: String): UPSCoord? {\r\n val ltr2HighValue: Int /* 2nd letter range - high number */\r\n val ltr3HighValue: Int /* 3rd letter range - high number (UPS) */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting for 100,000 meter grid square */\r\n var gridNorthing: Double /* northing for 100,000 meter grid square */\r\n var errorCode = NO_ERROR\r\n val hemisphere: Hemisphere\r\n var easting: Double\r\n var northing: Double\r\n val mgrs = breakMGRSString(MGRS)\r\n if (mgrs != null) {\r\n if (mgrs.zone > 0) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n easting = mgrs.easting\r\n northing = mgrs.northing\r\n if (mgrs.latitudeBand >= LETTER_Y) {\r\n hemisphere = Hemisphere.N\r\n val index = mgrs.latitudeBand - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n ltr2HighValue = upsConstants[index][2]\r\n ltr3HighValue = upsConstants[index][3]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n hemisphere = Hemisphere.S\r\n ltr2LowValue = upsConstants[mgrs.latitudeBand][1]\r\n ltr2HighValue = upsConstants[mgrs.latitudeBand][2]\r\n ltr3HighValue = upsConstants[mgrs.latitudeBand][3]\r\n falseEasting = upsConstants[mgrs.latitudeBand][4].toDouble()\r\n falseNorthing = upsConstants[mgrs.latitudeBand][5].toDouble()\r\n }\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter1 == LETTER_D || mgrs.squareLetter1 == LETTER_E ||\r\n mgrs.squareLetter1 == LETTER_M || mgrs.squareLetter1 == LETTER_N ||\r\n mgrs.squareLetter1 == LETTER_V || mgrs.squareLetter1 == LETTER_W ||\r\n mgrs.squareLetter2 > ltr3HighValue) errorCode = STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = mgrs.squareLetter2 * ONE_HT + falseNorthing\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n gridEasting = (mgrs.squareLetter1 - ltr2LowValue) * ONE_HT + falseEasting\r\n if (ltr2LowValue != LETTER_A) {\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n if (mgrs.squareLetter1 > LETTER_U) gridEasting -= 200000.0\r\n } else {\r\n if (mgrs.squareLetter1 > LETTER_C) gridEasting -= 200000.0\r\n if (mgrs.squareLetter1 > LETTER_I) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n }\r\n easting += gridEasting\r\n northing += gridNorthing\r\n return UPSCoord.fromUPS(hemisphere, easting, northing)\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans polarst.c and polarst.h code.\r\n */\r\ninternal class PolarCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val ORIGIN_LAT_ERROR = 0x0004\r\n const val ORIGIN_LON_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0010\r\n const val NORTHING_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val RADIUS_ERROR = 0x0100\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val PI_Over_4 = PI / 4.0\r\n private const val TWO_PI = 2.0 * PI\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private var es = 0.08181919084262188000 /* Eccentricity of ellipsoid */\r\n private var esOver2 = .040909595421311 /* es / 2.0 */\r\n private var southernHemisphere = 0.0 /* Flag variable */\r\n private var mc = 1.0\r\n private var tc = 1.0\r\n private var e4 = 1.0033565552493\r\n private var amc = 6378137.0 /* Polar_a * mc */\r\n private var twoA = 12756274.0 /* 2.0 * Polar_a */\r\n\r\n /* Polar Stereographic projection Parameters */\r\n private var originLat = PI * 90.0 / 180.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 12713601.0\r\n private var deltaNorthing = 12713601.0\r\n\r\n var easting = 0.0\r\n private set\r\n var northing = 0.0\r\n private set\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function setPolarStereographicParameters receives the ellipsoid parameters and Polar Stereographic projection\r\n * parameters as inputs, and sets the corresponding state variables. If any errors occur, error code(s) are\r\n * returned by the function, otherwise POLAR_NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude of true scale, in radians\r\n * @param longitude Longitude down from pole, in radians\r\n * @param easting Easting (X) at center of projection, in meters\r\n * @param northing Northing (Y) at center of projection, in meters\r\n * @return error code\r\n */\r\n fun setPolarStereographicParameters(\r\n a: Double, f: Double, latitude: Double, longitude: Double, easting: Double, northing: Double\r\n ): Int {\r\n var lon = longitude\r\n val invF = 1 / f\r\n val epsilon = 1.0e-2\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* Origin Latitude out of range */\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* Origin Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or ORIGIN_LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n twoA = 2.0 * this.a\r\n this.f = f\r\n if (lon > PI) lon -= TWO_PI\r\n if (latitude < 0) {\r\n southernHemisphere = 1.0\r\n originLat = -latitude\r\n originLong = -lon\r\n } else {\r\n southernHemisphere = 0.0\r\n originLat = latitude\r\n originLong = lon\r\n }\r\n falseEasting = easting\r\n falseNorthing = northing\r\n val es2 = 2 * this.f - this.f * this.f\r\n es = sqrt(es2)\r\n esOver2 = es / 2.0\r\n if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) {\r\n val sLat = sin(originLat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val cLat = cos(originLat)\r\n mc = cLat / sqrt(1.0 - esSin * esSin)\r\n amc = this.a * mc\r\n tc = tan(PI_Over_4 - originLat / 2.0) / powEs\r\n } else {\r\n val onePlusEs = 1.0 + es\r\n val oneMinusEs = 1.0 - es\r\n e4 = sqrt(onePlusEs.pow(onePlusEs) * oneMinusEs.pow(oneMinusEs))\r\n }\r\n }\r\n\r\n /* Calculate Radius */\r\n convertGeodeticToPolarStereographic(0.0, originLong)\r\n deltaNorthing = this.northing * 2 // Increased range for accepted easting and northing values\r\n deltaNorthing = abs(deltaNorthing) + epsilon\r\n deltaEasting = deltaNorthing\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic coordinates (latitude and longitude) to\r\n * Polar Stereographic coordinates (easting and northing), according to the current ellipsoid and Polar\r\n * Stereographic projection parameters. If any errors occur, error code(s) are returned by the function, otherwise\r\n * POLAR_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude, in radians\r\n * @param longitude Longitude, in radians\r\n * @return error code\r\n */\r\n fun convertGeodeticToPolarStereographic(latitude: Double, longitude: Double): Int {\r\n var lat = latitude\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (lat < -PI_OVER_2 || lat > PI_OVER_2) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat < 0 && southernHemisphere == 0.0) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat > 0 && southernHemisphere == 1.0) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (abs(abs(lat) - PI_OVER_2) < 1.0e-10) {\r\n easting = 0.0\r\n northing = 0.0\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n lon *= -1.0\r\n lat *= -1.0\r\n }\r\n var dLam = lon - originLong\r\n if (dLam > PI) dLam -= TWO_PI\r\n if (dLam < -PI) dLam += TWO_PI\r\n val sLat = sin(lat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val t = tan(PI_Over_4 - lat / 2.0) / powEs\r\n val rho = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) amc * t / tc else twoA * t / e4\r\n if (southernHemisphere != 0.0) {\r\n easting = -(rho * sin(dLam) - falseEasting)\r\n northing = rho * cos(dLam) + falseNorthing\r\n } else easting = rho * sin(dLam) + falseEasting\r\n northing = -rho * cos(dLam) + falseNorthing\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Polar_Stereographic_To_Geodetic converts Polar\r\n * Stereographic coordinates (easting and northing) to geodetic\r\n * coordinates (latitude and longitude) according to the current ellipsoid\r\n * and Polar Stereographic projection Parameters. If any errors occur, the\r\n * code(s) are returned by the function, otherwise POLAR_NO_ERROR\r\n * is returned.\r\n *\r\n * @param Easting Easting (X), in meters\r\n * @param Northing Northing (Y), in meters\r\n * @return error code\r\n */\r\n fun convertPolarStereographicToGeodetic(Easting: Double, Northing: Double): Int {\r\n var dy = 0.0\r\n var dx = 0.0\r\n var rho = 0.0\r\n var tempPhi = 0.0\r\n var errorCode = NO_ERROR\r\n val minEasting = falseEasting - deltaEasting\r\n val maxEasting = falseEasting + deltaEasting\r\n val minNorthing = falseNorthing - deltaNorthing\r\n val maxNorthing = falseNorthing + deltaNorthing\r\n /* Easting out of range */\r\n if (Easting > maxEasting || Easting < minEasting) errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (Northing > maxNorthing || Northing < minNorthing) errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n dy = Northing - falseNorthing\r\n dx = Easting - falseEasting\r\n /* Radius of point with origin of false easting, false northing */\r\n rho = sqrt(dx * dx + dy * dy)\r\n val deltaRadius = sqrt(deltaEasting * deltaEasting + deltaNorthing * deltaNorthing)\r\n /* Point is outside of projection area */\r\n if (rho > deltaRadius) errorCode = errorCode or RADIUS_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (dy == 0.0 && dx == 0.0) {\r\n latitude = PI_OVER_2\r\n longitude = originLong\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n dy *= -1.0\r\n dx *= -1.0\r\n }\r\n val t = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) rho * tc / amc else rho * e4 / twoA\r\n var phi = PI_OVER_2 - 2.0 * atan(t)\r\n while (abs(phi - tempPhi) > 1.0e-10) {\r\n tempPhi = phi\r\n val sinPhi = sin(phi)\r\n val esSin = es * sinPhi\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n phi = PI_OVER_2 - 2.0 * atan(t * powEs)\r\n }\r\n latitude = phi\r\n longitude = originLong + atan2(dx, -dy)\r\n if (longitude > PI) longitude -= TWO_PI\r\n else if (longitude < -PI) longitude += TWO_PI\r\n /* force distorted values to 90, -90 degrees */\r\n if (latitude > PI_OVER_2) latitude = PI_OVER_2\r\n else if (latitude < -PI_OVER_2) latitude = -PI_OVER_2\r\n /* force distorted values to 180, -180 degrees */\r\n if (longitude > PI) longitude = PI else if (longitude < -PI) longitude = -PI\r\n }\r\n if (southernHemisphere != 0.0) {\r\n latitude *= -1.0\r\n longitude *= -1.0\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds a set of Transverse Mercator coordinates along with the\r\n * corresponding latitude and longitude.\r\n */\r\nclass TMCoord private constructor(val latitude: Angle, val longitude: Angle, val easting: Double, val northing: Double) {\r\n companion object {\r\n /**\r\n * Create a set of Transverse Mercator coordinates from a pair of latitude and longitude,\r\n * for the given [Globe] and projection parameters.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n * @param aOrNull semi-major ellipsoid radius. If this and argument f are non-null and globe is null, will use the specified a and f.\r\n * @param fOrNull ellipsoid flattening. If this and argument a are non-null and globe is null, will use the specified a and f.\r\n * @param originLatitude the origin latitude.\r\n * @param centralMeridian the central meridian longitude.\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * or the conversion to TM coordinates fails. If the globe is null conversion will default\r\n * to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(\r\n latitude: Angle, longitude: Angle, aOrNull: Double?, fOrNull: Double?,\r\n originLatitude: Angle, centralMeridian: Angle, falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n var a = aOrNull\r\n var f = fOrNull\r\n val converter = TMCoordConverter()\r\n if (a == null || f == null) {\r\n a = converter.a\r\n f = converter.f\r\n }\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertGeodeticToTransverseMercator(latitude.inRadians, longitude.inRadians)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(latitude, longitude, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of Transverse Mercator coordinates for the given [Globe],\r\n * easting, northing and projection parameters.\r\n *\r\n * @param easting the easting distance value in meters.\r\n * @param northing the northing distance value in meters.\r\n * @param originLatitude the origin latitude [Angle].\r\n * @param centralMeridian the central meridian longitude [Angle].\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * @throws IllegalArgumentException if the conversion to geodetic coordinates fails.\r\n * If the globe is null conversion will default to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromTM(\r\n easting: Double, northing: Double, originLatitude: Angle, centralMeridian: Angle,\r\n falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n val converter = TMCoordConverter()\r\n val a = converter.a\r\n val f = converter.f\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertTransverseMercatorToGeodetic(easting, northing)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(converter.latitude.radians, converter.longitude.radians, easting, northing)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/*\r\n * Converter used to translate Transverse Mercator coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans code tranmerc.c and tranmerc.h\r\n */\r\ninternal class TMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ORIGIN_LAT_ERROR = 0x0010\r\n const val CENT_MER_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val SCALE_FACTOR_ERROR = 0x0100\r\n const val LON_WARNING = 0x0200\r\n private const val MAX_LAT = PI * 89.99 / 180.0 /* 90 degrees in radians */\r\n private const val MAX_DELTA_LONG = PI * 90 / 180.0 /* 90 degrees in radians */\r\n private const val MIN_SCALE_FACTOR = 0.3\r\n private const val MAX_SCALE_FACTOR = 3.0\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid i meters */\r\n private set\r\n var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private set\r\n private var es = 0.0066943799901413800 /* Eccentricity (0.08181919084262188000) squared */\r\n private var ebs = 0.0067394967565869 /* Second Eccentricity squared */\r\n\r\n /* Transverse_Mercator projection Parameters */\r\n private var originLat = 0.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var scaleFactor = 1.0 /* Scale factor */\r\n\r\n /* Isometric to geodetic latitude parameters, default to WGS 84 */\r\n private var ap = 6367449.1458008\r\n private var bp = 16038.508696861\r\n private var cp = 16.832613334334\r\n private var dp = 0.021984404273757\r\n private var ep = 3.1148371319283e-005\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 40000000.0\r\n private var deltaNorthing = 40000000.0\r\n\r\n /** Easting/X at the center of the projection */\r\n var easting = 0.0\r\n private set\r\n /** Northing/Y at the center of the projection */\r\n var northing = 0.0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians. */\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function receives the ellipsoid parameters and Transverse Mercator\r\n * projection parameters as inputs, and sets the corresponding state variables. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude in radians at the origin of the projection\r\n * @param centralMeridian Longitude in radians at the center of the projection\r\n * @param easting Easting/X at the center of the projection\r\n * @param northing Northing/Y at the center of the projection\r\n * @param scaleFactor Projection scale factor\r\n *\r\n * @return error code\r\n */\r\n fun setTransverseMercatorParameters(\r\n a: Double, f: Double, latitude: Double, centralMeridian: Double, easting: Double, northing: Double, scaleFactor: Double\r\n ): Int {\r\n var cm = centralMeridian\r\n val invF = 1 / f\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* origin latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* origin longitude out of range */\r\n if (cm < -PI || cm > 2 * PI) errorCode = errorCode or CENT_MER_ERROR\r\n if (scaleFactor < MIN_SCALE_FACTOR || scaleFactor > MAX_SCALE_FACTOR) {\r\n errorCode = errorCode or SCALE_FACTOR_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n this.f = f\r\n originLat = 0.0\r\n originLong = 0.0\r\n falseNorthing = 0.0\r\n falseEasting = 0.0\r\n this.scaleFactor = 1.0\r\n\r\n /* Eccentricity Squared */\r\n es = 2 * this.f - this.f * this.f\r\n /* Second Eccentricity Squared */\r\n ebs = 1 / (1 - es) - 1\r\n val b = this.a * (1 - this.f)\r\n /*True meridional constants */\r\n val tn = (this.a - b) / (this.a + b)\r\n val tn2 = tn * tn\r\n val tn3 = tn2 * tn\r\n val tn4 = tn3 * tn\r\n val tn5 = tn4 * tn\r\n ap = this.a * (1e0 - tn + 5e0 * (tn2 - tn3) / 4e0 + 81e0 * (tn4 - tn5) / 64e0)\r\n bp = 3e0 * this.a * (tn - tn2 + (7e0 * (tn3 - tn4) / 8e0) + 55e0 * tn5 / 64e0) / 2e0\r\n cp = 15e0 * this.a * (tn2 - tn3 + 3e0 * (tn4 - tn5) / 4e0) / 16.0\r\n dp = 35e0 * this.a * (tn3 - tn4 + 11e0 * tn5 / 16e0) / 48e0\r\n ep = 315e0 * this.a * (tn4 - tn5) / 512e0\r\n convertGeodeticToTransverseMercator(MAX_LAT, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n deltaNorthing = this.northing\r\n convertGeodeticToTransverseMercator(0.0, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n originLat = latitude\r\n if (cm > PI) cm -= 2 * PI\r\n originLong = cm\r\n falseNorthing = northing\r\n falseEasting = easting\r\n this.scaleFactor = scaleFactor\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Transverse_Mercator converts geodetic (latitude and longitude) coordinates to\r\n * Transverse Mercator projection (easting and northing) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection coordinates. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToTransverseMercator(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n if (lon > PI) lon -= 2 * PI\r\n if (lon < originLong - MAX_DELTA_LONG || lon > originLong + MAX_DELTA_LONG) {\r\n val tempLong = if (lon < 0) lon + 2 * PI else lon\r\n val tempOrigin = if (originLong < 0) originLong + 2 * PI else originLong\r\n if (tempLong < tempOrigin - MAX_DELTA_LONG || tempLong > tempOrigin + MAX_DELTA_LONG)\r\n errorCode = errorCode or LON_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n /*\r\n * Delta Longitude\r\n */\r\n var dLam = lon - originLong\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian */\r\n if (abs(dLam) > 9.0 * PI / 180) errorCode = errorCode or LON_WARNING\r\n if (dLam > PI) dLam -= 2 * PI\r\n if (dLam < -PI) dLam += 2 * PI\r\n if (abs(dLam) < 2e-10) dLam = 0.0\r\n val s = sin(latitude)\r\n val c = cos(latitude)\r\n val c2 = c * c\r\n val c3 = c2 * c\r\n val c5 = c3 * c2\r\n val c7 = c5 * c2\r\n val t = tan(latitude)\r\n val tan2 = t * t\r\n val tan3 = tan2 * t\r\n val tan4 = tan3 * t\r\n val tan5 = tan4 * t\r\n val tan6 = tan5 * t\r\n val eta = ebs * c2\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n\r\n /* radius of curvature in prime vertical */\r\n val sn = a / sqrt(1 - es * sin(latitude).pow(2))\r\n\r\n /* True Meridional Distances */\r\n val tmd = (ap * latitude\r\n - bp * sin(2.0 * latitude)\r\n + cp * sin(4.0 * latitude)\r\n - dp * sin(6.0 * latitude)\r\n + ep * sin(8.0 * latitude))\r\n\r\n /* Origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* northing */\r\n val t1 = (tmd - tmdO) * scaleFactor\r\n val t2 = sn * s * c * scaleFactor / 2e0\r\n val t3 = sn * s * c3 * scaleFactor * (5e0 - tan2 + 9e0 * eta + 4e0 * eta2) / 24e0\r\n val t4 = sn * s * c5 * scaleFactor * (61e0 - 58e0 * tan2 + tan4 + 270e0 * eta - 330e0 * tan2 * eta + 445e0 * eta2 + 324e0 * eta3 - 680e0 * tan2 * eta2 + 88e0 * eta4 - 600e0 * tan2 * eta3 - 192e0 * tan2 * eta4) / 720e0\r\n val t5 = sn * s * c7 * scaleFactor * (1385e0 - 3111e0 * tan2 + 543e0 * tan4 - tan6) / 40320e0\r\n northing = falseNorthing + t1 + dLam.pow(2e0) * t2 + dLam.pow(4e0) * t3 + dLam.pow(6e0) * t4 + dLam.pow(8e0) * t5\r\n\r\n /* Easting */\r\n val t6 = sn * c * scaleFactor\r\n val t7 = sn * c3 * scaleFactor * (1e0 - tan2 + eta) / 6e0\r\n val t8 = sn * c5 * scaleFactor * ((5e0 - 18e0 * tan2 + tan4 + 14e0 * eta) - 58e0 * tan2 * eta + 13e0 * eta2 + 4e0 * eta3 - 64e0 * tan2 * eta2 - 24e0 * tan2 * eta3) / 120e0\r\n val t9 = sn * c7 * scaleFactor * (61e0 - 479e0 * tan2 + 179e0 * tan4 - tan6) / 5040e0\r\n easting = falseEasting + dLam * t6 + dLam.pow(3e0) * t7 + dLam.pow(5e0) * t8 + dLam.pow(7e0) * t9\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Transverse_Mercator_To_Geodetic converts Transverse Mercator projection (easting and\r\n * northing) coordinates to geodetic (latitude and longitude) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection parameters. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param easting Easting/X in meters\r\n * @param northing Northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertTransverseMercatorToGeodetic(easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n /* Easting out of range */\r\n if (easting < falseEasting - deltaEasting || easting > falseEasting + deltaEasting)\r\n errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (northing < falseNorthing - deltaNorthing || northing > falseNorthing + deltaNorthing)\r\n errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n /* True Meridional Distances for latitude of origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* Origin */\r\n val tmd = tmdO + (northing - falseNorthing) / scaleFactor\r\n\r\n /* First Estimate */\r\n var sr = a * (1e0 - es) / sqrt(1e0 - es * sin(0e0).pow(2)).pow(3)\r\n var ftphi = tmd / sr\r\n for (i in 0..4) {\r\n val t10 = (ap * ftphi\r\n - bp * sin(2.0 * ftphi)\r\n + cp * sin(4.0 * ftphi)\r\n - dp * sin(6.0 * ftphi)\r\n + ep * sin(8.0 * ftphi))\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n ftphi += (tmd - t10) / sr\r\n }\r\n\r\n /* Radius of Curvature in the meridian */\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n\r\n /* Radius of Curvature in the meridian */\r\n val sn = a / sqrt(1e0 - es * sin(ftphi).pow(2))\r\n\r\n /* Sine Cosine terms */\r\n val c = cos(ftphi)\r\n\r\n /* Tangent Value */\r\n val t = tan(ftphi)\r\n val tan2 = t * t\r\n val tan4 = tan2 * tan2\r\n val eta = ebs * c.pow(2)\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n var de = easting - falseEasting\r\n if (abs(de) < 0.0001) de = 0.0\r\n\r\n /* Latitude */\r\n val t10 = t / (2e0 * sr * sn * scaleFactor.pow(2))\r\n val t11 = t * (5e0 + 3e0 * tan2 + eta - 4e0 * eta.pow(2) - 9e0 * tan2 * eta) / (24e0 * sr * sn.pow(3) * scaleFactor.pow(4))\r\n val t12 = (t * ((61e0 + 90e0 * tan2 + 46e0 * eta + 45e0 * tan4 - 252e0 * tan2 * eta - 3e0 * eta2 + 100e0\r\n * eta3) - 66e0 * tan2 * eta2 - (90e0 * tan4\r\n * eta) + 88e0 * eta4 + 225e0 * tan4 * eta2 + 84e0 * tan2 * eta3 - 192e0 * tan2 * eta4)\r\n / (720e0 * sr * sn.pow(5) * scaleFactor.pow(6)))\r\n val t13 = t * (1385e0 + 3633e0 * tan2 + 4095e0 * tan4 + (1575e0 * t.pow(6))) / (40320e0 * sr * sn.pow(7) * scaleFactor.pow(8))\r\n latitude = (ftphi - de.pow(2) * t10 + de.pow(4) * t11 - de.pow(6) * t12 + de.pow(8) * t13)\r\n val t14 = 1e0 / (sn * c * scaleFactor)\r\n val t15 = (1e0 + 2e0 * tan2 + eta) / (6e0 * sn.pow(3) * c * scaleFactor.pow(3))\r\n val t16 = ((5e0 + 6e0 * eta + 28e0 * tan2 - 3e0 * eta2 + 8e0 * tan2 * eta + 24e0 * tan4 - 4e0\r\n * eta3) + 4e0 * tan2 * eta2 + (24e0 * tan2 * eta3)) / (120e0 * sn.pow(5) * c * scaleFactor.pow(5))\r\n val t17 = (61e0 + 662e0 * tan2 + 1320e0 * tan4 + (720e0 * t.pow(6))) / (5040e0 * sn.pow(7) * c * scaleFactor.pow(7))\r\n\r\n /* Difference in Longitude */\r\n val dLam = de * t14 - de.pow(3) * t15 + de.pow(5) * t16 - de.pow(7) * t17\r\n\r\n /* Longitude */\r\n longitude = originLong + dLam\r\n if (abs(latitude) > 90.0 * PI / 180.0) errorCode = errorCode or NORTHING_ERROR\r\n if (longitude > PI) {\r\n longitude -= 2 * PI\r\n if (abs(longitude) > PI) errorCode = errorCode or EASTING_ERROR\r\n }\r\n if (abs(dLam) > 9.0 * PI / 180 * cos(latitude)) {\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian at the equator */\r\n /* and decreases to 0 degrees at the poles */\r\n /* As you move towards the poles, distortion will become more significant */\r\n errorCode = errorCode or LON_WARNING\r\n }\r\n if (latitude > 1.0e10) errorCode = errorCode or LON_WARNING\r\n }\r\n return errorCode\r\n }\r\n}\r\n","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This immutable class holds a set of UPS coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UPSCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UPS coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertGeodeticToUPS(latitude.inRadians, longitude.inRadians)\r\n require(err == UPSCoordConverter.NO_ERROR) { \"UPS Conversion Error\" }\r\n return UPSCoord(latitude, longitude, converter.hemisphere, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of UPS coordinates for the given [Globe].\r\n *\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertUPSToGeodetic(hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UPSCoord(\r\n converter.latitude.radians, converter.longitude.radians, hemisphere, easting, northing\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = hemisphere.toString() + \" \" + easting + \"E\" + \" \" + northing + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans ups.c and ups.h code\r\n */\r\ninternal class UPSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val HEMISPHERE_ERROR = 0x0004\r\n const val EASTING_ERROR = 0x0008\r\n const val NORTHING_ERROR = 0x0010\r\n private const val MAX_LAT = PI * 90 / 180.0 // 90 degrees in radians\r\n\r\n // Min and max latitude values accepted\r\n private const val MIN_NORTH_LAT = 72 * PI / 180.0 // 83.5\r\n private const val MIN_SOUTH_LAT = -72 * PI / 180.0 // -79.5\r\n private const val MAX_ORIGIN_LAT = 81.114528 * PI / 180.0\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n }\r\n\r\n private var originLatitude = MAX_ORIGIN_LAT /*set default = North hemisphere */\r\n private val originLongitude = 0.0\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val falseEasting = 2000000.0\r\n private val falseNorthing = 2000000.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** easting/X in meters */\r\n var easting = 0.0\r\n private set\r\n /** northing/Y in meters */\r\n var northing = 0.0\r\n private set\r\n /** latitude in radians.*/\r\n var latitude = 0.0\r\n private set\r\n /** longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n private val polarConverter = PolarCoordConverter()\r\n\r\n /**\r\n * The function convertGeodeticToUPS converts geodetic (latitude and longitude) coordinates to UPS (hemisphere,\r\n * easting, and northing) coordinates, according to the current ellipsoid parameters. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude in radians\r\n * @param longitude longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUPS(latitude: Double, longitude: Double): Int {\r\n /* latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) return LAT_ERROR\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) return LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) return LAT_ERROR\r\n /* slam out of range */\r\n if (longitude < -PI || longitude > 2 * PI) return LON_ERROR\r\n if (latitude < 0) {\r\n originLatitude = -MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.S\r\n } else {\r\n originLatitude = MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.N\r\n }\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, 0.0, 0.0)\r\n polarConverter.convertGeodeticToPolarStereographic(latitude, longitude)\r\n easting = falseEasting + polarConverter.easting\r\n northing = falseNorthing + if (Hemisphere.S == hemisphere) - polarConverter.northing else polarConverter.northing\r\n return NO_ERROR\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_Geodetic converts UPS (hemisphere, easting, and northing) coordinates to geodetic\r\n * (latitude and longitude) coordinates according to the current ellipsoid parameters. If any errors occur, the\r\n * error code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertUPSToGeodetic(hemisphere: Hemisphere?, easting: Double, northing: Double): Int{\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (easting < MIN_EAST_NORTH || easting > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (northing < MIN_EAST_NORTH || northing > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (Hemisphere.N == hemisphere) originLatitude = MAX_ORIGIN_LAT\r\n if (Hemisphere.S == hemisphere) originLatitude = -MAX_ORIGIN_LAT\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, falseEasting, falseNorthing)\r\n polarConverter.convertPolarStereographicToGeodetic(easting, northing)\r\n latitude = polarConverter.latitude\r\n longitude = polarConverter.longitude\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) errorCode = errorCode or LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) errorCode = errorCode or LAT_ERROR\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\nimport kotlin.math.roundToInt\r\n\r\n/**\r\n * This immutable class holds a set of UTM coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UTMCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val zone: Int, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UTM coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertGeodeticToUTM(latitude.inRadians, longitude.inRadians)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n latitude, longitude, converter.zone, converter.hemisphere, converter.easting, converter.northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a set of UTM coordinates for the given [Globe].\r\n *\r\n * @param zone the UTM zone - 1 to 60.\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUTM(\r\n zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double\r\n ): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertUTMToGeodetic(zone, hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n converter.latitude.radians, converter.longitude.radians, zone, hemisphere, easting, northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a UTM coordinate from a standard UTM coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * @param UTMString the UTM coordinate text string.\r\n * @return the corresponding [UTMCoord].\r\n * @throws IllegalArgumentException if the [UTMString] is empty, or the conversion to geodetic coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromString(UTMString: String): UTMCoord {\r\n val separated = UTMString.trim { it <= ' ' }.replace(\" +\".toRegex(), \" \")\r\n .split(\" \").toTypedArray()\r\n return fromUTM(\r\n separated[0].toInt(),\r\n if (separated[1] == \"S\") Hemisphere.S else Hemisphere.N, //Hemisphere.valueOf(separated[1]),\r\n separated[2].substring(0, separated[2].length - 1).toDouble(),\r\n separated[3].substring(0, separated[3].length - 1).toDouble()\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = zone.toString() + \" \" + hemisphere + \" \" + easting.roundToInt() + \"E\" + \" \" + northing.roundToInt() + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/*\r\n * Converter used to translate UTM coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans utm.c and utm.h\r\n */\r\ninternal class UTMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ZONE_ERROR = 0x0010\r\n const val HEMISPHERE_ERROR = 0x0020\r\n const val ZONE_OVERRIDE_ERROR = 0x0040\r\n const val TM_ERROR = 0x0200\r\n private const val MIN_LAT = -82 * PI / 180.0 /* -82 degrees in radians */\r\n private const val MAX_LAT = 86 * PI / 180.0 /* 86 degrees in radians */\r\n private const val MIN_EASTING = 100000\r\n private const val MAX_EASTING = 900000\r\n private const val MIN_NORTHING = 0\r\n private const val MAX_NORTHING = 10000000\r\n }\r\n\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val override = 0 /* Zone override flag */\r\n private var centralMeridian = 0.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** Easting (X) in meters */\r\n var easting = 0.0\r\n private set\r\n /** Northing (Y) in meters */\r\n var northing = 0.0\r\n private set\r\n /** UTM zone */\r\n var zone = 0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function Convert_Geodetic_To_UTM converts geodetic (latitude and longitude) coordinates to UTM projection\r\n * (zone, hemisphere, easting and northing) coordinates according to the current ellipsoid and UTM zone override\r\n * parameters. If any errors occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is\r\n * returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUTM(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > 2 * PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (lon < 0) lon += 2 * PI + 1.0e-10\r\n val latDegrees = (latitude * 180.0 / PI).toInt()\r\n val lonDegrees = (lon * 180.0 / PI).toInt()\r\n var tempZone = (if (lon < PI) 31 + lon * 180.0 / PI / 6.0 else lon * 180.0 / PI / 6.0 - 29).toInt()\r\n if (tempZone > 60) tempZone = 1\r\n /* UTM special cases */\r\n if (latDegrees in 56..63 && lonDegrees > -1 && lonDegrees < 3) tempZone = 31\r\n if (latDegrees in 56..63 && lonDegrees > 2 && lonDegrees < 12) tempZone = 32\r\n if (latDegrees > 71 && lonDegrees > -1 && lonDegrees < 9) tempZone = 31\r\n if (latDegrees > 71 && lonDegrees > 8 && lonDegrees < 21) tempZone = 33\r\n if (latDegrees > 71 && lonDegrees > 20 && lonDegrees < 33) tempZone = 35\r\n if (latDegrees > 71 && lonDegrees > 32 && lonDegrees < 42) tempZone = 37\r\n if (override != 0) {\r\n if (tempZone == 1 && override == 60) tempZone = override\r\n else if (tempZone == 60 && override == 1) tempZone = override\r\n else if (tempZone - 1 <= override && override <= tempZone + 1) tempZone = override\r\n else errorCode = ZONE_OVERRIDE_ERROR\r\n }\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (tempZone >= 31) (6 * tempZone - 183) * PI / 180.0 else (6 * tempZone + 177) * PI / 180.0\r\n zone = tempZone\r\n if (latitude < 0) {\r\n falseNorthing = 10000000.0\r\n hemisphere = Hemisphere.S\r\n } else hemisphere = Hemisphere.N\r\n try {\r\n val tm = TMCoord.fromLatLon(\r\n latitude.radians, lon.radians, a, f, originLatitude.radians,\r\n centralMeridian.radians, falseEasting, falseNorthing, scale\r\n )\r\n easting = tm.easting\r\n northing = tm.northing\r\n if (easting < MIN_EASTING || easting > MAX_EASTING) errorCode = EASTING_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UTM_To_Geodetic converts UTM projection (zone, hemisphere, easting and northing) coordinates\r\n * to geodetic(latitude and longitude) coordinates, according to the current ellipsoid parameters. If any errors\r\n * occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param zone UTM zone.\r\n * @param hemisphere The coordinate hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting (X) in meters.\r\n * @param northing Northing (Y) in meters.\r\n *\r\n * @return error code.\r\n */\r\n fun convertUTMToGeodetic(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n if (zone < 1 || zone > 60) errorCode = errorCode or ZONE_ERROR\r\n if (hemisphere != Hemisphere.S && hemisphere != Hemisphere.N) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (zone >= 31) (6 * zone - 183) * PI / 180.0 else (6 * zone + 177) * PI / 180.0\r\n if (hemisphere == Hemisphere.S) falseNorthing = 10000000.0\r\n try {\r\n val tm = TMCoord.fromTM(\r\n easting, northing,\r\n originLatitude.radians, centralMeridian.radians,\r\n falseEasting, falseNorthing, scale\r\n )\r\n latitude = tm.latitude.inRadians\r\n longitude = tm.longitude.inRadians\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.gesture\n\n/**\n * Gesture state indicates a GestureRecognizer's current state.\n * Accepted values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN], [CHANGED], [CANCELLED], and [ENDED].\n */\nenum class GestureState {\n /**\n * POSSIBLE gesture recognizer state. Gesture recognizers in this state are\n * idle when there is no input event to evaluate, or are evaluating input events to determine whether or not to\n * transition into another state.\n */\n POSSIBLE,\n /**\n * FAILED gesture recognizer state. Gesture recognizers transition to this\n * state from the POSSIBLE state when the gesture cannot be recognized given the current input.\n */\n FAILED,\n /**\n * RECOGNIZED gesture recognizer state. Discrete gesture recognizers\n * transition to this state from the POSSIBLE state when the gesture is recognized.\n */\n RECOGNIZED,\n /**\n * BEGAN gesture recognizer state. Continuous gesture recognizers transition\n * to this state from the POSSIBLE state when the gesture is first recognized.\n */\n BEGAN,\n /**\n * CHANGED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from the BEGAN state or the CHANGED state, whenever an input event indicates a change in\n * the gesture.\n */\n CHANGED,\n /**\n * CANCELLED gesture recognizer state. Continuous gesture recognizers may\n * transition to this state from the BEGAN state or the CHANGED state when the touch events are cancelled.\n */\n CANCELLED,\n /**\n * ENDED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from either the BEGAN state or the CHANGED state when the current input no longer\n * represents the gesture.\n */\n ENDED;\n}","package earth.worldwind.globe\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.elevation.ElevationModel\nimport earth.worldwind.globe.projection.GeographicProjection\nimport kotlin.math.sin\nimport kotlin.math.sqrt\n\n/**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models. Globe expresses its\n * ellipsoidal parameters and elevation values in meters.\n */\nopen class Globe(\n /**\n * The globe's reference ellipsoid defining the globe's equatorial radius and polar radius.\n */\n var ellipsoid: Ellipsoid,\n /**\n * Indicates the geographic projection used by this globe. The projection specifies this globe's Cartesian\n * coordinate system.\n */\n var projection: GeographicProjection\n) {\n /**\n * Represents the elevations for an area, often but not necessarily the whole globe.\n */\n var elevationModel = ElevationModel()\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the equator.\n */\n val equatorialRadius get() = ellipsoid.semiMajorAxis\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the poles.\n */\n val polarRadius get() = ellipsoid.semiMinorAxis\n /**\n * Indicates the eccentricity squared parameter of the globe's ellipsoid. This is equivalent to `2*f -\n * f*f`, where `f` is the ellipsoid's flattening parameter.\n */\n val eccentricitySquared get() = ellipsoid.eccentricitySquared\n /**\n * Indicates whether this is a 2D globe.\n */\n val is2D get() = projection.is2D\n\n /**\n * Indicates the radius in meters of the globe's ellipsoid at a specified location.\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return the radius in meters of the globe's ellipsoid at the specified location\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun getRadiusAt(latitude: Angle, longitude: Angle): Double {\n // The radius for an ellipsoidal globe is a function of its latitude. The following solution was derived by\n // observing that the length of the ellipsoidal point at the specified latitude and longitude indicates the\n // radius at that location. The formula for the length of the ellipsoidal point was then converted into the\n // simplified form below.\n val sinLat = sin(latitude.inRadians)\n val ec2 = ellipsoid.eccentricitySquared\n val rpm = ellipsoid.semiMajorAxis / sqrt(1 - ec2 * sinLat * sinLat)\n return rpm * sqrt(1 + (ec2 * ec2 - 2 * ec2) * sinLat * sinLat)\n }\n\n /**\n * Converts a geographic position to Cartesian coordinates. This globe's projection specifies the Cartesian\n * coordinate system.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(latitude: Angle, longitude: Angle, altitude: Double, result: Vec3) =\n projection.geographicToCartesian(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianNormal(latitude: Angle, longitude: Angle, result: Vec3) =\n projection.geographicToCartesianNormal(this, latitude, longitude, result)\n\n fun geographicToCartesianTransform(latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4) =\n projection.geographicToCartesianTransform(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianGrid(\n sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, offset: Int, rowStride: Int\n ) = projection.geographicToCartesianGrid(\n this, sector, numLat, numLon, height, verticalExaggeration,\n origin, result, offset, rowStride\n )\n\n fun geographicToCartesianBorder(\n sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3, result: FloatArray\n ) = projection.geographicToCartesianBorder(this, sector, numLat, numLon, height, origin, result)\n\n /**\n * Converts a Cartesian point to a geographic position. This globe's projection specifies the Cartesian coordinate\n * system.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(x: Double, y: Double, z: Double, result: Position) =\n projection.cartesianToGeographic(this, x, y, z, result)\n\n fun cartesianToLocalTransform(x: Double, y: Double, z: Double, result: Matrix4) =\n projection.cartesianToLocalTransform(this, x, y, z, result)\n\n /**\n * Indicates the distance to the globe's horizon from a specified height above the globe's ellipsoid. The result of\n * this method is undefined if the height is negative.\n *\n * @param height the viewer's height above the globe's ellipsoid in meters\n *\n * @return the horizon distance in meters\n */\n fun horizonDistance(height: Double) = if (height > 0.0) sqrt(height * (2 * ellipsoid.semiMajorAxis + height)) else 0.0\n\n /**\n * Computes the first intersection of this globe with a specified line. The line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *\n * @param line the line to intersect with this globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(line: Line, result: Vec3) = projection.intersect(this, line, result)\n\n /**\n * Determine terrain altitude in specified geographic point from elevation model\n *\n * @param latitude location latitude\n * @param longitude location longitude\n * @param retrieve retrieve the most detailed elevation data instead of using first available cached value\n *\n * @return Elevation in meters in specified location\n */\n fun getElevation(latitude: Angle, longitude: Angle, retrieve: Boolean = false) =\n elevationModel.getHeight(latitude, longitude, retrieve).toDouble()\n\n /**\n * Get absolute position with terrain elevation at specified coordinates\n *\n * @param latitude Specified latitude\n * @param longitude Specified longitude\n *\n * @return Absolute position with terrain elevation\n */\n fun getAbsolutePosition(latitude: Angle, longitude: Angle) =\n Position(latitude, longitude, getElevation(latitude, longitude, retrieve = true))\n\n /**\n * Get absolute position for specified position and specified altitude mode\n *\n * @param position Specified position\n * @param altitudeMode Specified altitude mode\n *\n * @return Absolute position for specified altitude mode\n */\n fun getAbsolutePosition(position: Position, altitudeMode: AltitudeMode) = when (altitudeMode) {\n AltitudeMode.CLAMP_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude)\n AltitudeMode.RELATIVE_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude).apply {\n altitude += position.altitude\n }\n else -> Position(position)\n }\n\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.elevation.coverage.ElevationCoverage\n\nopen class ElevationModel(): Iterable {\n protected val coverages = mutableListOf()\n val timestamp: Long get() {\n var maxTimestamp = 0L\n for (i in coverages.indices) {\n val timestamp = coverages[i].timestamp\n if (maxTimestamp < timestamp) maxTimestamp = timestamp\n }\n return maxTimestamp\n }\n val count get() = coverages.size\n\n constructor(model: ElevationModel): this() { addAllCoverages(model) }\n\n constructor(iterable: Iterable): this() { for (coverage in iterable) addCoverage(coverage) }\n\n fun invalidate() = coverages.forEach { coverage -> coverage.invalidateTiles() }\n\n fun getCoverageNamed(name: String) = coverages.firstOrNull { coverage -> coverage.displayName == name }\n\n fun getCoverageWithProperty(key: Any, value: Any) = coverages.firstOrNull { coverage ->\n coverage.hasUserProperty(key) && coverage.getUserProperty(key) == value\n }\n\n fun addCoverage(coverage: ElevationCoverage) = !coverages.contains(coverage) && coverages.add(coverage)\n\n fun addAllCoverages(model: ElevationModel): Boolean {\n val thatList = model.coverages\n //coverages.ensureCapacity(thatList.size)\n var changed = false\n for (thatCoverage in thatList) changed = changed or addCoverage(thatCoverage)\n return changed\n }\n\n fun removeCoverage(coverage: ElevationCoverage) = coverages.remove(coverage)\n\n fun removeAllCoverages(model: ElevationModel) = coverages.removeAll(model.coverages)\n\n fun clearCoverages() = coverages.clear()\n\n override fun iterator() = coverages.iterator()\n\n fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float {\n // coverages composite from fine to coarse\n for (i in coverages.indices.reversed()) {\n val height = coverages[i].getHeight(latitude, longitude, retrieve)\n if (height != null) return height\n }\n return 0f\n }\n\n fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n // coverages composite from coarse to fine\n for (i in coverages.indices) {\n coverages[i].getHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n }\n\n fun getHeightLimits(sector: Sector, result: FloatArray) {\n // coverage order is irrelevant\n for (i in coverages.indices) {\n coverages[i].getHeightLimits(sector, result)\n }\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.LruMemoryCache\nimport kotlinx.datetime.Clock\n\nabstract class AbstractElevationCoverage: ElevationCoverage {\n override var displayName: String? = null\n override var isEnabled = true\n set(value) {\n field = value\n updateTimestamp()\n }\n override var timestamp = Clock.System.now().toEpochMilliseconds()\n protected set\n private var userProperties: MutableMap? = null\n private val heightCache = LruMemoryCache(50000)\n\n protected fun updateTimestamp() {\n timestamp = Clock.System.now().toEpochMilliseconds()\n heightCache.clear() // Invalidate cache if elevation coverage changed\n }\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n return if (isEnabled) {\n val key = 31 * latitude.inDegrees.hashCode() + longitude.inDegrees.hashCode()\n heightCache[key] ?: doGetHeight(latitude, longitude, retrieve)?.also {\n heightCache.put(key, it, 1)\n }\n } else null\n }\n\n override fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (isEnabled) doGetHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n override fun getHeightLimits(sector: Sector, result: FloatArray) {\n if (isEnabled) doGetHeightLimits(sector, result)\n }\n\n protected abstract fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float?\n\n protected abstract fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray)\n\n protected abstract fun doGetHeightLimits(sector: Sector, result: FloatArray)\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationTileFactory\nimport earth.worldwind.util.*\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.format.format\nimport earth.worldwind.util.math.fract\nimport earth.worldwind.util.math.mod\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.time.Duration.Companion.seconds\n\nabstract class AbstractTiledElevationCoverage(\n tileMatrixSet: TileMatrixSet, tileFactory: ElevationTileFactory,\n): AbstractElevationCoverage() {\n companion object {\n protected const val GET_HEIGHT_LIMIT_SAMPLES = 32\n }\n\n var tileMatrixSet: TileMatrixSet = tileMatrixSet\n set(value) {\n field = value\n invalidateTiles()\n }\n var tileFactory: ElevationTileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Controls how many concurrent tile requests are allowed for this coverage.\n */\n var retrievalQueueSize = 4\n /**\n * The list of elevation retrievals in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n protected var coverageCache = LruMemoryCache(1024 * 1024 * 64)\n protected var isRetrievalEnabled = false\n protected val absentResourceList = AbsentResourceList(3, 5.seconds)\n\n init { log(INFO, \"Coverage cache initialized %.0f KB\".format(coverageCache.capacity / 1024.0)) }\n\n /**\n * Setup custom coverage cache size according to device capabilities and user needs.\n */\n fun setupCoverageCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n coverageCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun invalidateTiles() {\n currentRetrievals.clear()\n coverageCache.clear()\n absentResourceList.clear()\n updateTimestamp()\n }\n\n override fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n if (!tileMatrixSet.sector.contains(latitude, longitude)) return null // no coverage in the specified location\n val targetIdx = tileMatrixSet.entries.size - 1 // retrieve height from last available matrix\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the last and the first matrix\n isRetrievalEnabled = retrieve && (idx == targetIdx || idx == 0)\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val row = floor((tileMatrix.sector.maxLatitude.inDegrees - latitude.inDegrees) / deltaLat).toInt()\n val col = floor((longitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n fetchTileArray(tileMatrix, row, col)?.let {\n val maxLat = tileMatrix.sector.maxLatitude.inDegrees - deltaLat * row\n val minLon = tileMatrix.sector.minLongitude.inDegrees + deltaLon * col\n val maxX = tileMatrix.tileWidth - 1\n val maxY = tileMatrix.tileHeight - 1\n val x = (maxX * (longitude.inDegrees - minLon) / deltaLon).toFloat()\n val y = (maxY * (maxLat - latitude.inDegrees) / deltaLat).toFloat()\n val x0 = floor(x).toInt().coerceIn(0, maxX)\n val x1 = (x0 + 1).coerceIn(0, maxX)\n val y0 = floor(y).toInt().coerceIn(0, maxY)\n val y1 = (y0 + 1).coerceIn(0, maxY)\n val x0y0 = it[x0 + y0 * tileMatrix.tileWidth]\n val x1y0 = it[x1 + y0 * tileMatrix.tileWidth]\n val x0y1 = it[x0 + y1 * tileMatrix.tileWidth]\n val x1y1 = it[x1 + y1 * tileMatrix.tileWidth]\n val xf = x - x0\n val yf = y - y0\n return (1 - xf) * (1 - yf) * x0y0 + xf * (1 - yf) * x1y0 + (1 - xf) * yf * x0y1 + xf * yf * x1y1\n }\n }\n return null // did not find a tile\n }\n\n override fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(gridSector)) return // no coverage in the specified sector\n val targetPixelSpan = gridSector.deltaLatitude.inDegrees / gridHeight\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(gridSector, gridWidth, gridHeight, tileMatrix, tileBlock)) {\n readHeightGrid(gridSector, gridWidth, gridHeight, tileBlock, result)\n return\n }\n }\n }\n\n override fun doGetHeightLimits(sector: Sector, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(sector)) return // no coverage in the specified sector\n val targetPixelSpan = sector.deltaLatitude.inDegrees / GET_HEIGHT_LIMIT_SAMPLES\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(sector, tileMatrix, tileBlock)) {\n scanHeightLimits(sector, tileBlock, result)\n return\n }\n }\n }\n\n protected open fun fetchTileBlock(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileMatrix: TileMatrix, result: TileBlock\n ): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n result.tileMatrix = tileMatrix\n result.clear()\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var uIdx = 0\n while (uIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (uIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n if (lon in matrixMinLon..matrixMaxLon) {\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n result.cols[col0] = 0\n result.cols[col1] = 0\n }\n uIdx++\n lon += deltaLon\n }\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var vIdx = 0\n while (vIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (vIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n if (lat in matrixMinLat..matrixMaxLat) {\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n result.rows[row0] = 0\n result.rows[row1] = 0\n }\n vIdx++\n lat += deltaLat\n }\n for (row in result.rows.keys) {\n for (col in result.cols.keys) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) result.putTileArray(row, col, tileArray) else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileBlock(sector: Sector, tileMatrix: TileMatrix, result: TileBlock): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val colMin = iMin / tileWidth\n val colMax = iMax / tileWidth\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n val rowMin = jMin / tileHeight\n val rowMax = jMax / tileHeight\n result.tileMatrix = tileMatrix\n result.clear()\n for (row in rowMin..rowMax) {\n for (col in colMin..colMax) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) {\n result.rows[row] = 0\n result.cols[col] = 0\n result.putTileArray(row, col, tileArray)\n } else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileArray(tileMatrix: TileMatrix, row: Int, column: Int): ShortArray? {\n val key = tileMatrix.tileKey(row, column)\n return coverageCache[key] ?: run {\n // Ignore retrieval of already requested or marked as absent tiles\n if (isRetrievalEnabled && currentRetrievals.size < retrievalQueueSize && !currentRetrievals.contains(key)\n && !absentResourceList.isResourceAbsent(key)) {\n currentRetrievals += key\n retrieveTileArray(key, tileMatrix, row, column)\n }\n null\n }\n }\n\n protected abstract fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int)\n\n protected fun retrievalSucceeded(key: Long, value: ShortArray) {\n coverageCache.put(key, value, value.size * 2)\n absentResourceList.unmarkResourceAbsent(key)\n currentRetrievals -= key\n updateTimestamp()\n WorldWind.requestRedraw()\n }\n\n protected fun retrievalFailed(key: Long) {\n absentResourceList.markResourceAbsent(key)\n currentRetrievals -= key\n }\n\n protected open fun readHeightGrid(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileBlock: TileBlock, result: FloatArray\n ) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileBlock.tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileBlock.tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n var rIdx = 0\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var hIdx = 0\n while (hIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (hIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val b = fract(v - 0.5).toFloat()\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var wIdx = 0\n while (wIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (wIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileBlock.tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val a = fract(u - 0.5).toFloat()\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n if (lat in matrixMinLat..matrixMaxLat && lon in matrixMinLon..matrixMaxLon) {\n val i0j0 = tileBlock.readTexel(row0, col0, i0 % tileWidth, j0 % tileHeight)\n val i1j0 = tileBlock.readTexel(row0, col1, i1 % tileWidth, j0 % tileHeight)\n val i0j1 = tileBlock.readTexel(row1, col0, i0 % tileWidth, j1 % tileHeight)\n val i1j1 = tileBlock.readTexel(row1, col1, i1 % tileWidth, j1 % tileHeight)\n result[rIdx] = (1 - a) * (1 - b) * i0j0 + a * (1 - b) * i1j0 + (1 - a) * b * i0j1 + a * b * i1j1\n }\n rIdx++\n wIdx++\n lon += deltaLon\n }\n hIdx++\n lat += deltaLat\n }\n }\n\n protected open fun scanHeightLimits(sector: Sector, tileBlock: TileBlock, result: FloatArray) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileBlock.tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n for (row in tileBlock.rows.keys) {\n val rowJMin = row * tileHeight\n val rowJMax = rowJMin + tileHeight - 1\n val j0 = jMin.coerceIn(rowJMin, rowJMax) % tileHeight\n val j1 = jMax.coerceIn(rowJMin, rowJMax) % tileHeight\n for (col in tileBlock.cols.keys) {\n val colIMin = col * tileWidth\n val colIMax = colIMin + tileWidth - 1\n val i0 = iMin.coerceIn(colIMin, colIMax) % tileWidth\n val i1 = iMax.coerceIn(colIMin, colIMax) % tileWidth\n tileBlock.getTileArray(row, col)?.let { tileArray ->\n // TODO how often do we read all of tileArray?\n for (j in j0..j1) for (i in i0..i1) {\n val pos = i + j * tileWidth\n val texel = tileArray[pos]\n if (result[0] > texel) result[0] = texel.toFloat()\n if (result[1] < texel) result[1] = texel.toFloat()\n }\n }\n }\n }\n }\n\n protected open fun assembleTilesList(sector: Sector, resolution: Angle): List {\n val result = mutableListOf()\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(resolution.inDegrees)\n for (idx in 0..targetIdx) {\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val minRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.maxLatitude.inDegrees) / deltaLat).toInt()\n val maxRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.minLatitude.inDegrees) / deltaLat).toInt()\n val minCol = floor((sector.minLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n val maxCol = floor((sector.maxLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n for (row in minRow..maxRow) for (col in minCol..maxCol) result.add(Tile(tileMatrix, row, col))\n }\n return result\n }\n\n protected data class Tile(val tileMatrix: TileMatrix, val row: Int, val col: Int)\n\n protected open class TileBlock {\n lateinit var tileMatrix: TileMatrix\n val rows = mutableMapOf()\n val cols = mutableMapOf()\n private val arrays = mutableMapOf()\n private var texelRow = -1\n private var texelCol = -1\n private var texelArray: ShortArray? = null\n\n open fun clear() {\n rows.clear()\n cols.clear()\n arrays.clear()\n texelRow = -1\n texelCol = -1\n texelArray = null\n }\n\n fun putTileArray(row: Int, column: Int, array: ShortArray) {\n val key = tileMatrix.tileKey(row, column)\n arrays[key] = array\n }\n\n fun getTileArray(row: Int, column: Int): ShortArray? {\n if (texelRow != row || texelCol != column) {\n texelRow = row\n texelCol = column\n texelArray = arrays[tileMatrix.tileKey(row, column)]\n }\n return texelArray\n }\n\n fun readTexel(row: Int, column: Int, i: Int, j: Int) =\n getTileArray(row, column)?.get(i + j * tileMatrix.tileWidth) ?: 0\n }\n}",null,"package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.WmsElevationCoverage\n\n/**\n * Displays NASA's global elevation coverage at 90m (3 arc-second) resolution and 900m resolution on the ocean floor.\n * By default, BasicElevationCoverage is configured to retrieve elevation coverage from the WMS at\n * [&https://wms.worldwind.earth/elev](https://wms.worldwind.earth/elev?SERVICE=WMS&REQUEST=GetCapabilities).\n */\nclass BasicElevationCoverage : WmsElevationCoverage(\n \"https://wms.worldwind.earth/elev\", \"GEBCO,SRTM-CGIAR\", \"application/bil16\",\n Sector().setFullSphere(), Angle.fromSeconds(3.0)\n)","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/*\n * GeographicProjection implementing coordinate transformations based on the WGS 84 reference system (aka WGS 1984,\n * EPSG:4326).\n *\n * The WGS 84 projection defines a Cartesian coordinate system whose origin is at the globe's center. It's Y axis points\n * to the North Pole, the Z axis points to the intersection of the prime meridian and the equator, and the X axis\n * completes a right-handed coordinate system, is in the equatorial plane and 90 degrees East of the Z axis.\n */\nopen class Wgs84Projection: GeographicProjection {\n private val scratchPos = Position()\n\n override val displayName = \"WGS84\"\n override val is2D = false\n\n override fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n return result.set(\n (altitude + rpm) * cosLat * sinLon,\n (altitude + rpm * (1.0 - ec2)) * sinLat,\n (altitude + rpm) * cosLat * cosLon\n )\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n return result.set(\n cosLat * sinLon / eqr2,\n (1 - globe.eccentricitySquared) * sinLat / pol2,\n cosLat * cosLon / eqr2\n ).normalize()\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Convert the geographic position to Cartesian coordinates. This is equivalent to calling geographicToCartesian\n // but is much more efficient as an inline computation, as the results of cosLat/sinLat/etc. can be computed\n // once and reused.\n val px = (rpm + altitude) * cosLat * sinLon\n val py = (rpm * (1.0 - ec2) + altitude) * sinLat\n val pz = (rpm + altitude) * cosLat * cosLon\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, px,\n ey, ny, uy, py,\n ez, nz, uz, pz,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, offset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n logMessage(ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val cosLon = DoubleArray(numLon)\n val sinLon = DoubleArray(numLon)\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Compute and save values that are a function of each unique longitude value in the specified sector. This\n // eliminates the need to re-compute these values for each column of constant longitude.\n var lon = minLon\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n cosLon[lonIndex] = cos(lon)\n sinLon[lonIndex] = sin(lon)\n lon += deltaLon\n }\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian\n // point corresponding to each latitude and longitude.\n var rowIndex = offset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n val hgt = if (height != null) (height[elevIndex++] * verticalExaggeration).toDouble() else 0.0\n result[colIndex++] = ((hgt + rpm) * cosLat * sinLon[lonIndex] - xOffset).toFloat()\n result[colIndex++] = ((hgt + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[colIndex++] = ((hgt + rpm) * cosLat * cosLon[lonIndex] - zOffset).toFloat()\n }\n rowIndex += stride\n lat += deltaLat\n }\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, result: FloatArray\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianBorder\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 3 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 3 else 1\n var lat = minLat\n var lon = minLon\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n var resultIndex = 0\n\n // Iterate over the edges of the specified sector, computing the Cartesian point at designated latitude and\n // longitude around the border.\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon // explicitly set the first lon to the min longitude to ensure alignment\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n }\n val cosLon = cos(lon)\n val sinLon = sin(lon)\n result[resultIndex++] = ((height + rpm) * cosLat * sinLon - xOffset).toFloat()\n result[resultIndex++] = ((height + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[resultIndex++] = ((height + rpm) * cosLat * cosLon - zOffset).toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n return result\n }\n\n override fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, result: Position): Position {\n // According to H. Vermeille,\n // \"An analytical method to transform geocentric into geodetic coordinates\"\n // http://www.springerlink.com/content/3t6837t27t351227/fulltext.pdf\n // Journal of Geodesy, accepted 10/2010, not yet published\n val zpx = z * z + x * x\n val zpxSqrt = sqrt(zpx)\n val a = globe.equatorialRadius\n val ra2 = 1 / (a * a)\n val e2 = globe.eccentricitySquared\n val e4 = e2 * e2\n\n // Step 1\n val p = zpx * ra2\n val q = y * y * (1 - e2) * ra2\n val r = (p + q - e4) / 6\n val h: Double\n val phi: Double\n val evoluteBorderTest = 8 * r * r * r + e4 * p * q\n if (evoluteBorderTest > 0 || q != 0.0) {\n val u: Double\n if (evoluteBorderTest > 0) {\n // Step 2: general case\n val rad1 = sqrt(evoluteBorderTest)\n val rad2 = sqrt(e4 * p * q)\n\n // 10*e2 is my arbitrary decision of what Vermeille means by \"near... the cusps of the evolute\".\n val rad = ((rad1 + rad2) * (rad1 + rad2)).pow(1/3.0)\n u = if (evoluteBorderTest > 10 * e2) r + 0.5 * rad + 2 * r * r / rad\n else r + 0.5 * rad + 0.5 * ((rad1 - rad2) * (rad1 - rad2)).pow(1/3.0)\n } else {\n // Step 3: near evolute\n val rad1 = sqrt(-evoluteBorderTest)\n val rad2 = sqrt(-8 * r * r * r)\n val rad3 = sqrt(e4 * p * q)\n val aTan = 2 * atan2(rad3, rad1 + rad2) / 3\n u = -4 * r * sin(aTan) * cos(PI / 6 + aTan)\n }\n val v = sqrt(u * u + e4 * q)\n val w = e2 * (u + v - q) / (2 * v)\n val k = (u + v) / (sqrt(w * w + u + v) + w)\n val d = k * zpxSqrt / (k + e2)\n val dpySqrt = sqrt(d * d + y * y)\n h = (k + e2 - 1) * dpySqrt / k\n phi = 2 * atan2(y, dpySqrt + d)\n } else {\n // Step 4: singular disk\n val rad1 = sqrt(1 - e2)\n val rad2 = sqrt(e2 - p)\n val e = sqrt(e2)\n h = -a * rad1 * rad2 / e\n phi = rad2 / (e * rad2 + rad1 * sqrt(p))\n }\n\n // Compute lambda\n val s2 = sqrt(2.0)\n val lambda = when {\n (s2 - 1) * x < zpxSqrt + z -> 2 * atan2(x, zpxSqrt + z) // case 1 - -135deg < lambda < 135deg\n zpxSqrt + x < (s2 + 1) * z -> -PI * 0.5 + 2 * atan2(z, zpxSqrt - x) // case 2 - -225deg < lambda < 45deg\n else -> PI * 0.5 - 2 * atan2(z, zpxSqrt + x) // case 3: - -45deg < lambda < 225deg\n }\n return result.setRadians(phi, lambda, h)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4 {\n val pos = cartesianToGeographic(globe, x, y, z, scratchPos)\n val cosLat = cos(pos.latitude.inRadians)\n val sinLat = sin(pos.latitude.inRadians)\n val cosLon = cos(pos.longitude.inRadians)\n val sinLon = sin(pos.longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, x,\n ey, ny, uy, y,\n ez, nz, uz, z,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n val eqr = globe.equatorialRadius\n val eqr2 = eqr * eqr // nominal radius squared\n val m = eqr / globe.polarRadius // ratio of the x semi-axis length to the y semi-axis length\n val m2 = m * m\n val a = vx * vx + m2 * vy * vy + vz * vz\n val b = 2 * (sx * vx + m2 * sy * vy + sz * vz)\n val c = sx * sx + m2 * sy * sy + sz * sz - eqr2\n val d = b * b - 4 * a * c // discriminant\n if (d < 0) return false\n var t = (-b - sqrt(d)) / (2 * a)\n // check if the nearest intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n t = (-b + sqrt(d)) / (2 * a)\n // check if the second intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n\n // the intersection points were behind the origin of the provided line\n return false\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.util.math.fract\n\nopen class BasicTerrain: Terrain {\n protected val tiles = mutableListOf()\n override val sector = Sector()\n var triStripElements: ShortArray? = null\n private val intersectPoint = Vec3()\n\n open fun addTile(tile: TerrainTile) {\n tiles.add(tile)\n sector.union(tile.sector)\n }\n\n open fun clear() {\n triStripElements = null\n tiles.clear()\n sector.setEmpty()\n }\n\n open fun copy(terrain: BasicTerrain) {\n tiles.clear()\n tiles.addAll(terrain.tiles)\n sector.copy(terrain.sector)\n triStripElements = terrain.triStripElements\n }\n\n open fun sort() = tiles.sortBy { it.sortOrder }\n\n override fun intersect(line: Line, result: Vec3): Boolean {\n var found = false\n val triStripElements = triStripElements ?: return found\n\n // Tiles considered as sorted by L1 distance on cylinder from camera\n for (i in tiles.indices) {\n val tile = tiles[i]\n // Translate the line to the terrain tile's local coordinate system.\n line.origin.subtract(tile.origin)\n\n // Compute the first intersection of the terrain tile with the line. The line is interpreted as a ray;\n // intersection points behind the line's origin are ignored. Store the nearest intersection found so far\n // in the result argument.\n if (line.triStripIntersection(tile.points, 3, triStripElements, triStripElements.size, intersectPoint)) {\n result.copy(intersectPoint).add(tile.origin)\n found = true\n }\n\n // Restore the line's origin to its previous coordinate system.\n line.origin.add(tile.origin)\n\n // Do not analyze other tiles as they are sorted by distance from camera\n if (found) break\n }\n return found\n }\n\n override fun surfacePoint(latitude: Angle, longitude: Angle, result: Vec3): Boolean {\n for (i in tiles.indices) {\n val tile = tiles[i]\n val sector = tile.sector\n\n // Find the first tile that contains the specified location.\n if (sector.contains(latitude, longitude)) {\n // Compute the location's parameterized coordinates (s, t) within the tile grid, along with the\n // fractional component (sf, tf) and integral component (si, ti).\n val tileWidth = tile.level.tileWidth\n val tileHeight = tile.level.tileHeight\n val s = (longitude.inDegrees - sector.minLongitude.inDegrees) / sector.deltaLongitude.inDegrees * (tileWidth - 1)\n val t = (latitude.inDegrees - sector.minLatitude.inDegrees) / sector.deltaLatitude.inDegrees * (tileHeight - 1)\n val sf = if (s < tileWidth - 1) fract(s) else 1.0\n val tf = if (t < tileHeight - 1) fract(t) else 1.0\n val si = if (s < tileWidth - 1) (s + 1).toInt() else tileWidth - 1\n val ti = if (t < tileHeight - 1) (t + 1).toInt() else tileHeight - 1\n\n // Compute the location in the tile's local coordinate system. Perform a bilinear interpolation of\n // the cell's four points based on the fractional portion of the location's parameterized coordinates.\n // Tile coordinates are organized in the points array in row major order, starting at the tile's\n // Southwest corner. Account for the tile's border vertices, which are embedded in the points array but\n // must be ignored for this computation.\n val tileRowStride = tileWidth + 2\n val i00 = (si + ti * tileRowStride) * 3 // lower left coordinate\n val i10 = i00 + 3 // lower right coordinate\n val i01 = (si + (ti + 1) * tileRowStride) * 3 // upper left coordinate\n val i11 = i01 + 3 // upper right coordinate\n val f00 = (1 - sf) * (1 - tf)\n val f10 = sf * (1 - tf)\n val f01 = (1 - sf) * tf\n val f11 = sf * tf\n val points = tile.points\n result.x = points[i00] * f00 + points[i10] * f10 + points[i01] * f01 + points[i11] * f11\n result.y = points[i00 + 1] * f00 + points[i10 + 1] * f10 + points[i01 + 1] * f01 + points[i11 + 1] * f11\n result.z = points[i00 + 2] * f00 + points[i10 + 2] * f10 + points[i01 + 2] * f01 + points[i11 + 2] * f11\n\n // Translate the surface point from the tile's local coordinate system to Cartesian coordinates.\n result.x += tile.origin.x\n result.y += tile.origin.y\n result.z += tile.origin.z\n return true\n }\n }\n\n // No tile was found that contains the location.\n return false\n }\n}",null,"package earth.worldwind.globe.terrain\n\nimport earth.worldwind.draw.BasicDrawableTerrain\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.*\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\n\nopen class BasicTessellator: Tessellator, TileFactory {\n override val lastTerrain = BasicTerrain()\n /**\n * Default level set is configured to ~10 meter resolution\n */\n var levelSet = LevelSet(Sector().setFullSphere(), Location(NEG90, NEG180), Location(POS90, POS90), 16, 32, 32)\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Detail control determines how much times terrain texel is greater than screen pixel.\n */\n var detailControl = 20.0\n /**\n * Memory cache for this tessellator's subdivision tiles. Each entry contains an array of four terrain tiles\n * corresponding to the subdivision of the group's common parent tile. The cache is configured to hold 300 groups, a\n * number tuned to store the tiles needed to navigate a small region, given the tessellator's first level tile delta\n * of 90 degrees, tile dimensions of 32x32 and detail control of 20.\n */\n protected var tileCache = LruMemoryCache>(300)\n protected val topLevelTiles = mutableListOf()\n protected val currentTerrain = BasicTerrain()\n protected var levelSetVertexTexCoords: FloatArray? = null\n protected var levelSetLineElements: ShortArray? = null\n protected var levelSetTriStripElements: ShortArray? = null\n protected val levelSetLineElementRange = Range()\n protected val levelSetTriStripElementRange = Range()\n protected var levelSetVertexTexCoordBuffer: FloatBufferObject? = null\n protected var levelSetElementBuffer: ShortBufferObject? = null\n protected var levelSetVertexTexCoordKey = this::class.simpleName + \".vertexTexCoordKey\"\n protected var levelSetElementKey = this::class.simpleName + \".elementKey\"\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun tessellate(rc: RenderContext) {\n assembleTiles(rc)\n rc.terrain = currentTerrain\n if (!rc.isPickMode) lastTerrain.copy(currentTerrain)\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = TerrainTile(sector, level, row, column)\n\n protected open fun assembleTiles(rc: RenderContext) {\n // Clear previous terrain tiles\n currentTerrain.clear()\n\n // Assemble the terrain buffers and OpenGL buffer objects associated with the level set.\n assembleLevelSetBuffers(rc)\n currentTerrain.triStripElements = levelSetTriStripElements\n\n // Assemble the tessellator's top level terrain tiles, which we keep permanent references to.\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n\n // Subdivide the top level tiles until the desired resolution is achieved in each part of the scene.\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as TerrainTile)\n\n // Sort terrain tiles by L1 distance on cylinder from camera\n currentTerrain.sort()\n\n // Release references to render resources acquired while assembling tiles.\n levelSetVertexTexCoordBuffer = null\n levelSetElementBuffer = null\n }\n\n protected open fun createTopLevelTiles() {\n levelSet.firstLevel?.let{ Tile.assembleTilesForLevel(it, this, topLevelTiles) }\n }\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: TerrainTile) {\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsFrustum(rc)) return\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val childs = tile.subdivideToCache(this, tileCache, 4) // each tile has a cached size of 1\n for (i in childs.indices) addTileOrDescendants(rc, childs[i] as TerrainTile) // recursively process the tile's children\n }\n\n protected open fun addTile(rc: RenderContext, tile: TerrainTile) {\n // Prepare the terrain tile and add it.\n tile.prepare(rc)\n currentTerrain.addTile(tile)\n\n // Prepare a drawable for the terrain tile for processing on the OpenGL thread.\n val pool = rc.getDrawablePool()\n val drawable = BasicDrawableTerrain.obtain(pool)\n prepareDrawableTerrain(rc, tile, drawable)\n rc.offerDrawableTerrain(drawable, tile.sortOrder)\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n currentTerrain.clear()\n lastTerrain.clear()\n tileCache.clear()\n levelSetVertexTexCoords = null\n levelSetLineElements = null\n levelSetTriStripElements = null\n }\n\n protected open fun prepareDrawableTerrain(rc: RenderContext, tile: TerrainTile, drawable: BasicDrawableTerrain) {\n // Assemble the drawable's geographic sector and Cartesian vertex origin.\n drawable.sector.copy(tile.sector)\n drawable.vertexOrigin.copy(tile.origin)\n\n // Assemble the drawable's element buffer ranges.\n drawable.lineElementRange.copy(levelSetLineElementRange)\n drawable.triStripElementRange.copy(levelSetTriStripElementRange)\n\n // Assemble the drawable's OpenGL buffer objects.\n drawable.vertexPoints = tile.getPointBuffer(rc)\n drawable.vertexTexCoords = levelSetVertexTexCoordBuffer\n drawable.elements = levelSetElementBuffer\n }\n\n protected open fun assembleLevelSetBuffers(rc: RenderContext) {\n val numLat = levelSet.tileHeight + 2\n val numLon = levelSet.tileWidth + 2\n\n // Assemble the level set's vertex tex coords.\n val vertexTexCoords = levelSetVertexTexCoords ?: FloatArray(numLat * numLon * 2).also {\n levelSetVertexTexCoords = it\n assembleVertexTexCoords(numLat, numLon, it)\n }\n\n // Assemble the level set's line elements.\n val lineElements = levelSetLineElements ?: assembleLineElements(numLat, numLon).also { levelSetLineElements = it }\n\n // Assemble the level set's triangle strip elements.\n val triStripElements = levelSetTriStripElements ?: assembleTriStripElements(numLat, numLon).also { levelSetTriStripElements = it }\n\n // Retrieve or create the level set's OpenGL vertex tex coord buffer object.\n levelSetVertexTexCoordBuffer = rc.getBufferObject(levelSetVertexTexCoordKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexTexCoords)\n }\n\n // Retrieve or create the level set's OpenGL element buffer object.\n levelSetElementBuffer = rc.getBufferObject(levelSetElementKey) {\n ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, lineElements + triStripElements).also {\n levelSetLineElementRange.upper = lineElements.size\n levelSetTriStripElementRange.lower = lineElements.size\n levelSetTriStripElementRange.upper = lineElements.size + triStripElements.size\n }\n }\n }\n\n protected open fun assembleVertexTexCoords(numLat: Int, numLon: Int, result: FloatArray): FloatArray {\n val ds = 1f / if (numLon > 1) numLon - 3 else 1\n val dt = 1f / if (numLat > 1) numLat - 3 else 1\n var s = 0f\n var t = 0f\n var rIdx = 0\n\n // Iterate over the number of latitude and longitude vertices, computing the parameterized S and T coordinates\n // corresponding to each vertex.\n for (tIdx in 0 until numLat) {\n when {\n tIdx < 2 -> t = 0f // explicitly set the first T coordinate to 0 to ensure alignment\n tIdx < numLat - 2 -> t += dt\n else -> t = 1f // explicitly set the last T coordinate to 1 to ensure alignment\n }\n for (sIdx in 0 until numLon) {\n when {\n sIdx < 2 -> s = 0f // explicitly set the first S coordinate to 0 to ensure alignment\n sIdx < numLon - 2 -> s += ds\n else -> s = 1f // explicitly set the last S coordinate to 1 to ensure alignment\n }\n result[rIdx++] = s\n result[rIdx++] = t\n }\n }\n return result\n }\n\n protected open fun assembleLineElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = (numLat * (numLon - 1) + numLon * (numLat - 1)) * 2\n val result = ShortArray(count)\n var pos = 0\n\n // Add a line between each row to define the horizontal cell outlines.\n for (latIndex in 1 until numLat-1) {\n for (lonIndex in 1 until numLon - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + 1).toShort()\n }\n }\n\n // Add a line between each column to define the vertical cell outlines.\n for (lonIndex in 1 until numLon - 1) {\n for (latIndex in 1 until numLat - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + numLon).toShort()\n }\n }\n return result\n }\n\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val result = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n result[pos++] = (vertex + numLon).toShort()\n result[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n result[pos++] = vertex.toShort()\n result[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return result\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\n\n/**\n * Represents a portion of a globe's terrain. Applications typically do not interact directly with this class.\n */\nopen class TerrainTile(sector: Sector, level: Level, row: Int, column: Int): Tile(sector, level, row, column) {\n /**\n * Minimum elevation value used by the BasicTessellator to determine the terrain mesh edge extension depth (skirt).\n * This value is scaled by the vertical exaggeration when the terrain is generated.\n */\n val heights by lazy { FloatArray( level.tileWidth * level.tileHeight) }\n val points by lazy { FloatArray((level.tileWidth + 2) * (level.tileHeight + 2) * 3) }\n val origin = Vec3()\n internal val minTerrainElevation = -Short.MAX_VALUE.toFloat()\n internal var heightTimestamp = 0L\n internal var verticalExaggeration = 0.0f\n var sortOrder = 0.0\n protected set\n private lateinit var pointBufferKey: String\n\n open fun prepare(rc: RenderContext) {\n val globe = rc.globe\n val tileWidth = level.tileWidth\n val tileHeight = level.tileHeight\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightTimestamp) {\n val heights = heights\n heights.fill(0f)\n globe.elevationModel.getHeightGrid(sector, tileWidth, tileHeight, heights)\n }\n val ve = rc.verticalExaggeration.toFloat()\n if (ve != verticalExaggeration || timestamp != heightTimestamp) {\n val origin = origin\n val heights = heights\n val points = points\n val borderHeight = minTerrainElevation * ve\n val rowStride = (tileWidth + 2) * 3\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude, 0.0, origin)\n globe.geographicToCartesianGrid(\n sector, tileWidth, tileHeight, heights, ve, origin, points, rowStride + 3, rowStride\n )\n globe.geographicToCartesianBorder(\n sector, tileWidth + 2, tileHeight + 2, borderHeight, origin, points\n )\n updatePointBufferKey()\n }\n heightTimestamp = timestamp\n verticalExaggeration = ve\n sortOrder = drawSortOrder(rc)\n }\n\n fun getPointBuffer(rc: RenderContext) = rc.getBufferObject(pointBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n protected fun updatePointBufferKey() { pointBufferKey = \"TerrainTile.points.$tileKey.${pointBufferSequence++}\" }\n\n companion object {\n private var pointBufferSequence = 0L // must be static to avoid cache collisions when a tile instances is destroyed and re-created\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractLayer @JvmOverloads constructor(override var displayName: String? = null): Layer {\n override var isEnabled = true\n override var isPickEnabled = true\n override var opacity = 1f\n override var minActiveAltitude = Double.NEGATIVE_INFINITY\n override var maxActiveAltitude = Double.POSITIVE_INFINITY\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) {\n if (isEnabled && (isPickEnabled || !rc.isPickMode) && isWithinActiveAltitudes(rc)) doRender(rc)\n }\n\n override fun isWithinActiveAltitudes(rc: RenderContext) = rc.camera.position.altitude in minActiveAltitude..maxActiveAltitude\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.layer\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays a single image spanning the globe. By default, BackgroundLayer is configured to display NASA's Blue Marble\n * next generation image at 40km resolution from the built-in WorldWind library resource\n * res/drawable/worldwind_worldtopobathy2004053.\n */\nclass BackgroundLayer @JvmOverloads constructor(\n imageSource: ImageSource = ImageSource.fromResource(MR.images.worldwind_worldtopobathy2004053),\n imageOptions: ImageOptions = ImageOptions(ImageConfig.RGB_565)\n) : RenderableLayer(\"Background\") {\n // Disable picking for the layer because it covers the full sphere and will override a terrain pick.\n override var isPickEnabled = false\n\n init {\n // Delegate display to the SurfaceImage shape.\n val surfaceImage = SurfaceImage(Sector().setFullSphere(), imageSource)\n surfaceImage.imageOptions = imageOptions\n addRenderable(surfaceImage)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class LayerList() : Iterable {\n protected val layers = mutableListOf()\n\n constructor(layerList: LayerList): this() { addAllLayers(layerList) }\n\n constructor(layers: Iterable): this() { addAllLayers(layers) }\n\n fun getLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"getLayer\", \"invalidIndex\")\n }\n return layers[index]\n }\n\n fun setLayer(index: Int, layer: Layer): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"setLayer\", \"invalidIndex\")\n }\n return layers.set(index, layer)\n }\n\n fun indexOfLayer(layer: Layer) = layers.indexOf(layer)\n\n fun indexOfLayerNamed(name: String): Int {\n for (idx in layers.indices) if ( name == layers[idx].displayName) return idx\n return -1\n }\n\n fun indexOfLayerWithProperty(key: Any, value: Any): Int {\n for (idx in layers.indices) {\n val layer = layers[idx]\n if (layer.hasUserProperty(key) && value == layer.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addLayer(layer: Layer) { layers.add(layer) }\n\n fun addLayer(index: Int, layer: Layer) {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"addLayer\", \"invalidIndex\")\n }\n layers.add(index, layer)\n }\n\n fun addAllLayers(list: LayerList) {\n //layers.ensureCapacity(list.layers.size)\n for (layer in list.layers) layers.add(layer) // we know the contents of layerList.layers is valid\n }\n\n fun addAllLayers(iterable: Iterable) { for (layer in iterable) layers.add(layer) }\n\n fun removeLayer(layer: Layer): Boolean { return layers.remove(layer) }\n\n fun removeLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"removeLayer\", \"invalidIndex\")\n }\n return layers.removeAt(index)\n }\n\n fun removeAllLayers(layers: Iterable): Boolean {\n var removed = false\n for (layer in layers) removed = removed or this.layers.remove(layer)\n return removed\n }\n\n fun clearLayers() { layers.clear() }\n\n override fun iterator() = layers.iterator()\n\n fun render(rc: RenderContext) {\n for (i in layers.indices) {\n val layer = layers[i]\n rc.currentLayer = layer\n try {\n layer.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"LayerList\", \"render\",\n \"Exception while rendering layer '${layer.displayName}'\", e\n )\n // Keep going. Draw the remaining layers.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class RenderableLayer @JvmOverloads constructor(displayName: String? = null): AbstractLayer(displayName), Iterable {\n protected val renderables = mutableListOf()\n val count get() = renderables.size\n\n constructor(layer: RenderableLayer): this(layer.displayName) { addAllRenderables(layer) }\n\n constructor(renderables: Iterable): this() { addAllRenderables(renderables) }\n\n fun isEmpty() = renderables.isEmpty()\n\n fun getRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"getRenderable\", \"invalidIndex\")\n }\n return renderables[index]\n }\n\n fun setRenderable(index: Int, renderable: Renderable): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"setRenderable\", \"invalidIndex\")\n }\n return renderables.set(index, renderable)\n }\n\n fun indexOfRenderable(renderable: Renderable) = renderables.indexOf(renderable)\n\n fun indexOfRenderableNamed(name: String): Int {\n for (idx in renderables.indices) if (name == renderables[idx].displayName) return idx\n return -1\n }\n\n fun indexOfRenderableWithProperty(key: Any, value: Any): Int {\n for (idx in renderables.indices) {\n val renderable = renderables[idx]\n if (renderable.hasUserProperty(key) && value == renderable.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addRenderable(renderable: Renderable) { renderables.add(renderable) }\n\n fun addRenderable(index: Int, renderable: Renderable) {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"addRenderable\", \"invalidIndex\")\n }\n renderables.add(index, renderable)\n }\n\n fun addAllRenderables(layer: RenderableLayer) {\n //renderables.ensureCapacity(layer.renderables.size)\n for (renderable in layer.renderables) renderables.add(renderable) // we know the contents of layer.renderables is valid\n }\n\n fun addAllRenderables(iterable: Iterable) { for (renderable in iterable) renderables.add(renderable) }\n\n fun removeRenderable(renderable: Renderable) = renderables.remove(renderable)\n\n fun removeRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"removeRenderable\", \"invalidIndex\")\n }\n return renderables.removeAt(index)\n }\n\n fun removeAllRenderables(renderables: Iterable): Boolean {\n var removed = false\n for (renderable in renderables) removed = removed or this.renderables.remove(renderable)\n return removed\n }\n\n fun clearRenderables() { renderables.clear() }\n\n override fun iterator() = renderables.iterator()\n\n override fun doRender(rc: RenderContext) {\n for (i in renderables.indices) {\n val renderable = renderables[i]\n try {\n renderable.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"RenderableLayer\", \"doRender\",\n \"Exception while rendering shape '${renderable.displayName}'\", e\n )\n // Keep going. Draw the remaining renderables.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.draw.DrawableTessellation\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\n\nclass ShowTessellationLayer: AbstractLayer(\"Terrain Tessellation\") {\n override var isPickEnabled = false\n var color = Color()\n set(value) {\n field.copy(value)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to render\n\n // Use WorldWind's basic GLSL program.\n val program = rc.getShaderProgram { BasicShaderProgram() }\n val pool = rc.getDrawablePool()\n val drawable = DrawableTessellation.obtain(pool).set(program, color)\n rc.offerSurfaceDrawable(drawable, 1.0 /*z-order after surface textures*/)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\nimport kotlin.math.PI\nimport kotlin.math.pow\n\n// TODO Correctly compute the atmosphere color for eye positions beneath the atmosphere\n// TODO Test the effect of working in local coordinates (reference point) on the GLSL atmosphere programs\nabstract class AbstractAtmosphereProgram: AbstractShaderProgram() {\n protected var fragModeId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var vertexOriginId = KglUniformLocation.NONE\n protected var eyePointId = KglUniformLocation.NONE\n protected var eyeMagnitudeId = KglUniformLocation.NONE\n protected var eyeMagnitude2Id = KglUniformLocation.NONE\n protected var lightDirectionId = KglUniformLocation.NONE\n protected var invWavelengthId = KglUniformLocation.NONE\n protected var atmosphereRadiusId = KglUniformLocation.NONE\n protected var atmosphereRadius2Id = KglUniformLocation.NONE\n protected var globeRadiusId = KglUniformLocation.NONE\n protected var krESunId = KglUniformLocation.NONE\n protected var kmESunId = KglUniformLocation.NONE\n protected var kr4PIId = KglUniformLocation.NONE\n protected var km4PIId = KglUniformLocation.NONE\n protected var scaleId = KglUniformLocation.NONE\n protected var scaleDepthId = KglUniformLocation.NONE\n protected var scaleOverScaleDepthId = KglUniformLocation.NONE\n protected var gId = KglUniformLocation.NONE\n protected var g2Id = KglUniformLocation.NONE\n protected var exposureId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n /**\n * Frag color indicates the atmospheric scattering color components written to the fragment color. Accepted values\n * are [FRAGMODE_PRIMARY], [FRAGMODE_SECONDARY] and [FRAGMODE_PRIMARY_TEX_BLEND].\n */\n enum class FragMode(val asInt : Int) {\n PRIMARY(1),\n SECONDARY(2),\n PRIMARY_TEX_BLEND(3)\n }\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n val invWavelength = Vec3(\n 1 / 0.650.pow(4.0), // 650 nm for red\n 1 / 0.570.pow(4.0), // 570 nm for green\n 1 / 0.475.pow(4.0) // 475 nm for blue\n )\n val kr = 0.0025 // Rayleigh scattering constant\n val km = 0.0010 // Mie scattering constant\n val eSun = 20.0 // Sun brightness constant\n val g = -0.990 // The Mie phase asymmetry factor\n val exposure = 2.0\n fragModeId = gl.getUniformLocation(program, \"fragMode\")\n gl.uniform1i(fragModeId, FragMode.PRIMARY.asInt)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n vertexOriginId = gl.getUniformLocation(program, \"vertexOrigin\")\n array.fill(0f)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n eyePointId = gl.getUniformLocation(program, \"eyePoint\")\n array.fill(0f)\n gl.uniform3fv(eyePointId, 1, array, 0)\n eyeMagnitudeId = gl.getUniformLocation(program, \"eyeMagnitude\")\n gl.uniform1f(eyeMagnitudeId, 0f)\n eyeMagnitude2Id = gl.getUniformLocation(program, \"eyeMagnitude2\")\n gl.uniform1f(eyeMagnitude2Id, 0f)\n lightDirectionId = gl.getUniformLocation(program, \"lightDirection\")\n array.fill(0f)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n invWavelengthId = gl.getUniformLocation(program, \"invWavelength\")\n invWavelength.toArray(array, 0)\n gl.uniform3fv(invWavelengthId, 1, array, 0)\n atmosphereRadiusId = gl.getUniformLocation(program, \"atmosphereRadius\")\n atmosphereRadius2Id = gl.getUniformLocation(program, \"atmosphereRadius2\")\n globeRadiusId = gl.getUniformLocation(program, \"globeRadius\")\n krESunId = gl.getUniformLocation(program, \"KrESun\")\n gl.uniform1f(krESunId, (kr * eSun).toFloat())\n kmESunId = gl.getUniformLocation(program, \"KmESun\")\n gl.uniform1f(kmESunId, (km * eSun).toFloat())\n kr4PIId = gl.getUniformLocation(program, \"Kr4PI\")\n gl.uniform1f(kr4PIId, (kr * 4 * PI).toFloat())\n km4PIId = gl.getUniformLocation(program, \"Km4PI\")\n gl.uniform1f(km4PIId, (km * 4 * PI).toFloat())\n scaleId = gl.getUniformLocation(program, \"scale\")\n scaleDepthId = gl.getUniformLocation(program, \"scaleDepth\")\n scaleOverScaleDepthId = gl.getUniformLocation(program, \"scaleOverScaleDepth\")\n gId = gl.getUniformLocation(program, \"g\")\n gl.uniform1f(gId, g.toFloat())\n g2Id = gl.getUniformLocation(program, \"g2\")\n gl.uniform1f(g2Id, (g * g).toFloat())\n exposureId = gl.getUniformLocation(program, \"exposure\")\n gl.uniform1f(exposureId, exposure.toFloat())\n }\n\n fun loadFragMode(fragMode: FragMode) { gl.uniform1i(fragModeId, fragMode.asInt) }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n\n fun loadVertexOrigin(origin: Vec3) {\n origin.toArray(array, 0)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n }\n\n fun loadVertexOrigin(x: Double, y: Double, z: Double) {\n gl.uniform3f(vertexOriginId, x.toFloat(), y.toFloat(), z.toFloat())\n }\n\n fun loadLightDirection(direction: Vec3) {\n direction.toArray(array, 0)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n }\n\n fun loadEyePoint(eyePoint: Vec3) {\n eyePoint.toArray(array, 0)\n gl.uniform3fv(eyePointId, 1, array, 0)\n gl.uniform1f(eyeMagnitudeId, eyePoint.magnitude.toFloat())\n gl.uniform1f(eyeMagnitude2Id, eyePoint.magnitudeSquared.toFloat())\n }\n\n fun loadAtmosphereParams(equatorialRadius: Double, atmosphereAltitude: Double) {\n val rayleighScaleDepth = 0.25\n val ar = equatorialRadius + atmosphereAltitude\n gl.uniform1f(globeRadiusId, equatorialRadius.toFloat())\n gl.uniform1f(atmosphereRadiusId, ar.toFloat())\n gl.uniform1f(atmosphereRadius2Id, (ar * ar).toFloat())\n gl.uniform1f(scaleId, (1 / atmosphereAltitude).toFloat())\n gl.uniform1f(scaleDepthId, rayleighScaleDepth.toFloat())\n gl.uniform1f(scaleOverScaleDepthId, (1 / atmosphereAltitude / rayleighScaleDepth).toFloat())\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource.Companion.fromResource\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\nimport kotlinx.datetime.Instant\n\nopen class AtmosphereLayer: AbstractLayer(\"Atmosphere\") {\n override var isPickEnabled = false\n var nightImageSource = fromResource(MR.images.dnb_land_ocean_ice_2012)\n var nightImageOptions = ImageOptions(ImageConfig.RGB_565)\n /**\n * Display light location on a specified time point. If null, then light is located at camera position.\n */\n var time : Instant? = null\n protected val activeLightDirection = Vec3()\n private val fullSphereSector = Sector().setFullSphere()\n\n companion object {\n private val VERTEX_POINTS_KEY = AtmosphereLayer::class.simpleName + \".points\"\n private val TRI_STRIP_ELEMENTS_KEY = AtmosphereLayer::class.simpleName + \".triStripElements\"\n }\n\n override fun doRender(rc: RenderContext) {\n // Compute the currently active light direction.\n determineLightDirection(rc)\n\n // Render the sky portion of the atmosphere.\n renderSky(rc)\n\n // Render the ground portion of the atmosphere.\n renderGround(rc)\n }\n\n protected open fun determineLightDirection(rc: RenderContext) {\n // TODO Make light/sun direction an optional property of the WorldWindow and attach it to the RenderContext each frame\n // TODO RenderContext property defaults to the eye lat/lon like we have below\n time?.let {\n val lightLocation = SunPosition.getAsGeographicLocation(it)\n rc.globe.geographicToCartesianNormal(\n lightLocation.latitude, lightLocation.longitude, activeLightDirection\n )\n } ?: rc.globe.geographicToCartesianNormal(\n rc.camera.position.latitude, rc.camera.position.longitude, activeLightDirection\n )\n }\n\n protected open fun renderSky(rc: RenderContext) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableSkyAtmosphere.obtain(pool)\n val size = 128\n drawable.program = rc.getShaderProgram { SkyProgram() }\n drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY) {\n assembleVertexPoints(rc, size, size, rc.atmosphereAltitude.toFloat())\n }\n drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY) { assembleTriStripElements(size, size) }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun renderGround(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n val pool = rc.getDrawablePool()\n val drawable = DrawableGroundAtmosphere.obtain(pool)\n drawable.program = rc.getShaderProgram { GroundProgram() }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n\n // Use this layer's night image when the light location is different from the eye location.\n drawable.nightTexture = time?.run{ rc.getTexture(nightImageSource, nightImageOptions) }\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun assembleVertexPoints(rc: RenderContext, numLat: Int, numLon: Int, altitude: Float): FloatBufferObject {\n val count = numLat * numLon\n val altitudes = FloatArray(count)\n altitudes.fill(altitude)\n val points = FloatArray(count * 3)\n rc.globe.geographicToCartesianGrid(\n fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points, 0, 0\n )\n return FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n // TODO move this into a basic tessellator implementation in WorldWind\n // TODO tessellator and atmosphere needs the TriStripIndices - could we add these to BasicGlobe (needs to be on a static context)\n // TODO may need to switch the tessellation method anyway - geographic grid may produce artifacts at the poles\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortBufferObject {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val elements = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n elements[pos++] = (vertex + numLon).toShort()\n elements[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n elements[pos++] = vertex.toShort()\n elements[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.atmosphere.AbstractAtmosphereProgram.FragMode.*\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableGroundAtmosphere : Drawable {\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: GroundProgram? = null\n var nightTexture: Texture? = null\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val fullSphereSector = Sector().setFullSphere()\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableGroundAtmosphere {\n val instance = pool.acquire() ?: DrawableGroundAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n nightTexture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Set up to use the shared tile tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Attempt to bind the night side texture to multi-texture unit 0.\n dc.activeTextureUnit(GL_TEXTURE0)\n val nightTexture = nightTexture\n val textureBound = nightTexture?.bindTexture(dc) == true\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) ||\n !terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) continue // vertex buffer failed to bind\n\n // Use the vertex origin for the terrain.\n val terrainOrigin = terrain.vertexOrigin\n program.loadVertexOrigin(terrainOrigin)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Use a tex coord matrix that registers the night texture correctly on each terrain.\n if (textureBound && nightTexture != null) {\n texCoordMatrix.copy(nightTexture.coordTransform)\n texCoordMatrix.multiplyByTileTransform(terrain.sector, fullSphereSector)\n program.loadTexCoordMatrix(texCoordMatrix)\n }\n\n // Draw the terrain as triangles, multiplying the current fragment color by the program's secondary color.\n program.loadFragMode(SECONDARY)\n dc.gl.blendFunc(GL_DST_COLOR, GL_ZERO)\n terrain.drawTriangles(dc)\n\n // Draw the terrain as triangles, adding the current fragment color to the program's primary color.\n program.loadFragMode(if (textureBound) PRIMARY_TEX_BLEND else PRIMARY)\n dc.gl.blendFunc(GL_ONE, GL_ONE)\n terrain.drawTriangles(dc)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.disableVertexAttribArray(1)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nclass DrawableSkyAtmosphere : Drawable {\n var vertexPoints: FloatBufferObject? = null\n var triStripElements: ShortBufferObject? = null\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: SkyProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSkyAtmosphere {\n val instance = pool.acquire() ?: DrawableSkyAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n triStripElements = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n val triStripElements = triStripElements ?: return // element buffer unspecified\n if (!triStripElements.bindBuffer(dc)) return // element buffer failed to bind\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Use the vertex origin for the sky ellipsoid.\n program.loadVertexOrigin(0.0, 0.0, 0.0)\n\n // Use the draw context's modelview projection matrix.\n program.loadModelviewProjection(dc.modelviewProjection)\n\n // Use the sky's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the inside of the sky without writing to the depth buffer.\n dc.gl.depthMask(false)\n dc.gl.frontFace(GL_CW)\n dc.gl.drawElements(GL_TRIANGLE_STRIP, triStripElements.byteCount / 2, GL_UNSIGNED_SHORT, 0)\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.frontFace(GL_CCW)\n }\n}","package earth.worldwind.layer.atmosphere\n\nopen class GroundProgram: AbstractAtmosphereProgram() {\n override var programSources = arrayOf(\n \"\"\"\n precision mediump int; /* fragMode is used in both shaders, so we must use a common precision */\n\n const int FRAGMODE_PRIMARY = 1;\n const int FRAGMODE_SECONDARY = 2;\n const int FRAGMODE_PRIMARY_TEX_BLEND = 3;\n\n const int SAMPLE_COUNT = 2;\n const float SAMPLES = 2.0;\n\n uniform int fragMode;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n uniform vec3 vertexOrigin;\n uniform vec3 eyePoint;\n uniform float eyeMagnitude;\t /* The eye point's magnitude */\n uniform float eyeMagnitude2;\t /* eyeMagnitude^2 */\n uniform vec3 lightDirection;\t /* The direction vector to the light source */\n uniform vec3 invWavelength;\t /* 1 / pow(wavelength, 4) for the red, green, and blue channels */\n uniform float atmosphereRadius; /* The outer (atmosphere) radius */\n uniform float atmosphereRadius2; /* atmosphereRadius^2 */\n uniform float globeRadius;\t\t /* The inner (planetary) radius */\n uniform float KrESun;\t\t\t /* Kr * ESun */\n uniform float KmESun;\t\t\t /* Km * ESun */\n uniform float Kr4PI;\t\t\t /* Kr * 4 * PI */\n uniform float Km4PI;\t\t\t /* Km * 4 * PI */\n uniform float scale;\t\t\t /* 1 / (atmosphereRadius - globeRadius) */\n uniform float scaleDepth;\t\t /* The scale depth (i.e. the altitude at which the atmosphere's average density is found) */\n uniform float scaleOverScaleDepth;\t/* fScale / fScaleDepth */\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec3 primaryColor;\n varying vec3 secondaryColor;\n varying vec3 direction;\n varying vec2 texCoord;\n\n float scaleFunc(float cos) {\n float x = 1.0 - cos;\n return scaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n }\n\n void main() {\n /* Get the ray from the camera to the vertex and its length (which is the far point of the ray passing through the\n atmosphere) */\n vec3 point = vertexPoint.xyz + vertexOrigin;\n vec3 ray = point - eyePoint;\n float far = length(ray);\n ray /= far;\n\n vec3 start;\n if (eyeMagnitude < atmosphereRadius) {\n start = eyePoint;\n } else {\n /* Calculate the closest intersection of the ray with the outer atmosphere (which is the near point of the ray\n passing through the atmosphere) */\n float B = 2.0 * dot(eyePoint, ray);\n float C = eyeMagnitude2 - atmosphereRadius2;\n float det = max(0.0, B*B - 4.0 * C);\n float near = 0.5 * (-B - sqrt(det));\n\n /* Calculate the ray's starting point, then calculate its scattering offset */\n start = eyePoint + ray * near;\n far -= near;\n }\n\n float depth = exp((globeRadius - atmosphereRadius) / scaleDepth);\n float eyeAngle = dot(-ray, point) / length(point);\n float lightAngle = dot(lightDirection, point) / length(point);\n float eyeScale = scaleFunc(eyeAngle);\n float lightScale = scaleFunc(lightAngle);\n float eyeOffset = depth*eyeScale;\n float temp = (lightScale + eyeScale);\n\n /* Initialize the scattering loop variables */\n float sampleLength = far / SAMPLES;\n float scaledLength = sampleLength * scale;\n vec3 sampleRay = ray * sampleLength;\n vec3 samplePoint = start + sampleRay * 0.5;\n\n /* Now loop through the sample rays */\n vec3 frontColor = vec3(0.0, 0.0, 0.0);\n vec3 attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i
\n// *
`_________`
\n// *

is an example of a solid line.\n// */\n// val LINE_STYLE_SOLID = GraticuleRenderingParams.VALUE_LINE_STYLE_SOLID\n// /**\n// * Dashed line rendering style. This style specifies that a line will be drawn as a series of long strokes, with\n// * space in between.

\n// *
`- - - - -`
\n// *

is an example of a dashed line.\n// */\n// val LINE_STYLE_DASHED = GraticuleRenderingParams.VALUE_LINE_STYLE_DASHED\n// /**\n// * Dotted line rendering style. This style specifies that a line will be drawn as a series of evenly spaced \"square\"\n// * dots.

\n// *
`. . . . .`
\n// * is an example of a dotted line.\n// */\n// val LINE_STYLE_DOTTED = GraticuleRenderingParams.VALUE_LINE_STYLE_DOTTED\n private const val LOOK_AT_LATITUDE_PROPERTY = \"look_at_latitude\"\n private const val LOOK_AT_LONGITUDE_PROPERTY = \"look_at_longitude\"\n private const val GRATICULE_PIXEL_SIZE_PROPERTY = \"graticule_pixel_size\"\n private const val GRATICULE_LABEL_OFFSET_PROPERTY = \"graticule_label_offset\"\n }\n\n init {\n this.initRenderingParams()\n }\n\n protected abstract fun initRenderingParams()\n\n /**\n * Returns whether or not graticule lines will be rendered.\n *\n * @param key the rendering parameters key.\n *\n * @return true if graticule lines will be rendered; false otherwise.\n */\n fun isDrawGraticule(key: String) = getRenderingParams(key).isDrawLines\n\n /**\n * Sets whether or not graticule lines will be rendered.\n *\n * @param drawGraticule true to render graticule lines; false to disable rendering.\n * @param key the rendering parameters key.\n */\n fun setDrawGraticule(drawGraticule: Boolean, key: String) { getRenderingParams(key).isDrawLines = drawGraticule }\n\n /**\n * Returns the graticule line Color.\n *\n * @param key the rendering parameters key.\n *\n * @return Color used to render graticule lines.\n */\n fun getGraticuleLineColor(key: String) = getRenderingParams(key).lineColor\n\n /**\n * Sets the graticule line Color.\n *\n * @param color Color that will be used to render graticule lines.\n * @param key the rendering parameters key.\n */\n fun setGraticuleLineColor(color: Color, key: String) { getRenderingParams(key).lineColor = color }\n\n /**\n * Returns the graticule line width.\n *\n * @param key the rendering parameters key.\n *\n * @return width of the graticule lines.\n */\n fun getGraticuleLineWidth(key: String) = getRenderingParams(key).lineWidth\n\n /**\n * Sets the graticule line width.\n *\n * @param lineWidth width of the graticule lines.\n * @param key the rendering parameters key.\n */\n fun setGraticuleLineWidth(lineWidth: Double, key: String) { getRenderingParams(key).lineWidth = lineWidth }\n\n// /**\n// * Returns the graticule line rendering style.\n// *\n// * @param key the rendering parameters key.\n// *\n// * @return rendering style of the graticule lines.\n// */\n// fun getGraticuleLineStyle(key: String) = getRenderingParams(key).lineStyle\n//\n// /**\n// * Sets the graticule line rendering style.\n// *\n// * @param lineStyle rendering style of the graticule lines. One of LINE_STYLE_SOLID, LINE_STYLE_DASHED, or\n// * LINE_STYLE_DOTTED.\n// * @param key the rendering parameters key.\n// */\n// fun setGraticuleLineStyle(lineStyle: String, key: String) { getRenderingParams(key).lineStyle = lineStyle }\n\n /**\n * Returns whether or not graticule labels will be rendered.\n *\n * @param key the rendering parameters key.\n *\n * @return true if graticule labels will be rendered; false otherwise.\n */\n fun isDrawLabels(key: String) = getRenderingParams(key).isDrawLabels\n\n /**\n * Sets whether or not graticule labels will be rendered.\n *\n * @param drawLabels true to render graticule labels; false to disable rendering.\n * @param key the rendering parameters key.\n */\n fun setDrawLabels(drawLabels: Boolean, key: String) { getRenderingParams(key).isDrawLabels = drawLabels }\n\n /**\n * Returns the graticule label Color.\n *\n * @param key the rendering parameters key.\n *\n * @return Color used to render graticule labels.\n */\n fun getLabelColor(key: String) = getRenderingParams(key).labelColor\n\n /**\n * Sets the graticule label Color.\n *\n * @param color Color that will be used to render graticule labels.\n * @param key the rendering parameters key.\n */\n fun setLabelColor(color: Color, key: String) { getRenderingParams(key).labelColor = color }\n\n /**\n * Returns the Font used for graticule labels.\n *\n * @param key the rendering parameters key.\n *\n * @return Font used to render graticule labels.\n */\n fun getLabelFont(key: String) = getRenderingParams(key).labelFont\n\n /**\n * Sets the Font used for graticule labels.\n *\n * @param font Font that will be used to render graticule labels.\n * @param key the rendering parameters key.\n */\n fun setLabelFont(font: Font, key: String) { getRenderingParams(key).labelFont = font }\n\n fun getRenderingParams(key: String) = graticuleSupport.getRenderingParams(key)\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n graticuleSupport.setRenderingParams(key, renderingParams)\n }\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { graticuleSupport.addRenderable(renderable, paramsKey) }\n\n private fun removeAllRenderables() { graticuleSupport.removeAllRenderables() }\n\n public override fun doRender(rc: RenderContext) {\n// if (rc.isContinuous2DGlobe) {\n// if (needsToUpdate(rc)) {\n// clear(rc)\n// selectRenderables(rc)\n// }\n//\n// // If the frame time stamp is the same, then this is the second or third pass of the same frame. We continue\n// // selecting renderables in these passes.\n// if (rc.frameTimeStamp === frameTimeStamp) selectRenderables(rc)\n//\n// frameTimeStamp = rc.frameTimeStamp\n// } else {\n if (needsToUpdate(rc)) {\n clear(rc)\n selectRenderables(rc)\n }\n// }\n\n // Render\n graticuleSupport.render(rc, opacity)\n }\n\n /**\n * Select the visible grid elements\n *\n * @param rc the current `RenderContext`.\n */\n protected abstract fun selectRenderables(rc: RenderContext)\n protected abstract val orderedTypes: List\n abstract fun getTypeFor(resolution: Double): String\n\n /**\n * Determines whether the grid should be updated. It returns true if: * the eye has moved more than 1% of its\n * altitude above ground * the view FOV, heading or pitch have changed more than 1 degree * vertical\n * exaggeration has changed `RenderContext`.\n *\n * @return true if the graticule should be updated.\n */\n private fun needsToUpdate(rc: RenderContext): Boolean {\n if (lastVerticalExaggeration != rc.verticalExaggeration) return true\n if (abs(lastCameraHeading - rc.camera.heading.inDegrees) > 1) return true\n if (abs(lastCameraTilt - rc.camera.tilt.inDegrees) > 1) return true\n if (abs(lastFOV - rc.camera.fieldOfView.inDegrees) > 1) return true\n return rc.cameraPoint.distanceTo(lastCameraPoint) > computeAltitudeAboveGround(rc) / 100\n\n // We must test the globe and its projection to see if either changed. We can't simply use the globe state\n // key for this because we don't want a 2D globe offset change to cause an update. Offset changes don't\n // invalidate the current set of renderables.\n// if (rc.globe != lastGlobe) return true\n// if (rc.is2DGlobe) if ((rc.globe as Globe2D).projection != lastProjection) return true\n }\n\n protected open fun clear(rc: RenderContext) {\n removeAllRenderables()\n lastCameraPoint.copy(rc.cameraPoint)\n lastFOV = rc.camera.fieldOfView.inDegrees\n lastCameraHeading = rc.camera.heading.inDegrees\n lastCameraTilt = rc.camera.tilt.inDegrees\n lastVerticalExaggeration = rc.verticalExaggeration\n// lastGlobe = rc.globe\n// if (rc.is2DGlobe) lastProjection = (rc.globe as Globe2D).projection\n// terrainConformance = computeTerrainConformance(rc)\n// applyTerrainConformance()\n }\n\n// private fun computeTerrainConformance(rc: RenderContext): Double {\n// var value = 100\n// val alt = rc.camera.position.altitude\n// when {\n// alt < 10e3 -> value = 20\n// alt < 50e3 -> value = 30\n// alt < 100e3 -> value = 40\n// alt < 1000e3 -> value = 60\n// }\n// return value.toDouble()\n// }\n//\n// private fun applyTerrainConformance() {\n// val graticuleType = getOrderedTypes()\n// for (type in graticuleType) {\n// getRenderingParams(type)[GraticuleRenderingParams.KEY_LINE_CONFORMANCE] = terrainConformance\n// }\n// }\n\n fun computeLabelOffset(rc: RenderContext): Location {\n return if (hasLookAtPos(rc)) {\n val labelOffsetDegrees = getLabelOffset(rc)\n val labelPos = Location(\n getLookAtLatitude(rc).minusDegrees(labelOffsetDegrees),\n getLookAtLongitude(rc).minusDegrees(labelOffsetDegrees)\n )\n labelPos.setDegrees(\n normalizeLatitude(labelPos.latitude.inDegrees).coerceIn(-70.0, 70.0),\n normalizeLongitude(labelPos.longitude.inDegrees)\n )\n labelPos\n } else rc.camera.position\n }\n\n fun createLineRenderable(positions: List, pathType: PathType) =\n Path(positions).apply {\n this.pathType = pathType\n isFollowTerrain = true\n // terrainConformance = 1.0 // TODO Why not terrainConformance?\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n\n fun createTextRenderable(position: Position, label: String, resolution: Double) =\n Label(position, label).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n // priority = resolution * 1e6 // TODO Implement priority\n }\n\n fun hasLookAtPos(rc: RenderContext): Boolean {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(LOOK_AT_LATITUDE_PROPERTY) != null && rc.getUserProperty(LOOK_AT_LONGITUDE_PROPERTY) != null\n }\n\n fun getLookAtLatitude(rc: RenderContext): Angle {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(LOOK_AT_LATITUDE_PROPERTY) as Angle\n }\n\n fun getLookAtLongitude(rc: RenderContext): Angle {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(LOOK_AT_LONGITUDE_PROPERTY) as Angle\n }\n\n fun getPixelSize(rc: RenderContext): Double {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(GRATICULE_PIXEL_SIZE_PROPERTY) as Double\n }\n\n private fun getLabelOffset(rc: RenderContext): Double {\n calculateLookAtProperties(rc)\n return rc.getUserProperty(GRATICULE_LABEL_OFFSET_PROPERTY) as Double\n }\n\n fun getSurfacePoint(rc: RenderContext, latitude: Angle, longitude: Angle): Vec3 {\n if (!rc.terrain.surfacePoint(latitude, longitude, surfacePoint))\n rc.globe.geographicToCartesian(\n latitude, longitude, rc.globe.getElevation(latitude, longitude)\n * rc.verticalExaggeration, surfacePoint\n )\n return surfacePoint\n }\n\n fun computeAltitudeAboveGround(rc: RenderContext): Double {\n val surfacePoint = getSurfacePoint(rc, rc.camera.position.latitude, rc.camera.position.longitude)\n return rc.cameraPoint.distanceTo(surfacePoint)\n }\n\n fun computeTruncatedSegment(p1: Position, p2: Position, sector: Sector, positions: MutableList) {\n val p1In = sector.contains(p1.latitude, p1.longitude)\n val p2In = sector.contains(p2.latitude, p2.longitude)\n if (!p1In && !p2In) return // whole segment is (likely) outside\n if (p1In && p2In) {\n // whole segment is (likely) inside\n positions.add(p1)\n positions.add(p2)\n } else {\n // segment does cross the boundary\n var outPoint = if (!p1In) p1 else p2\n val inPoint = if (p1In) p1 else p2\n for (i in 1..2) {\n // there may be two intersections\n var intersection: Location? = null\n if (outPoint.longitude.inDegrees > sector.maxLongitude.inDegrees\n || sector.maxLongitude.inDegrees == 180.0 && outPoint.longitude.inDegrees < 0.0) {\n // intersect with east meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.maxLongitude\n )\n } else if (outPoint.longitude.inDegrees < sector.minLongitude.inDegrees\n || sector.minLongitude.inDegrees == -180.0 && outPoint.longitude.inDegrees > 0.0) {\n // intersect with west meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.minLongitude\n )\n } else if (outPoint.latitude.inDegrees > sector.maxLatitude.inDegrees) {\n // intersect with top parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.maxLatitude\n )\n } else if (outPoint.latitude.inDegrees < sector.minLatitude.inDegrees) {\n // intersect with bottom parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.minLatitude\n )\n }\n outPoint = if (intersection != null) Position(\n intersection.latitude,\n intersection.longitude,\n outPoint.altitude\n ) else break\n }\n positions.add(inPoint)\n positions.add(outPoint)\n }\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a meridian.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param longitude the meridian longitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLongitude(p1: Location, p2: Location, longitude: Angle): Location? {\n if (p1.longitude == longitude) return p1\n if (p2.longitude == longitude) return p2\n var pos: Location? = null\n val deltaLon = getDeltaLongitude(p1, p2.longitude)\n if (getDeltaLongitude(p1, longitude) < deltaLon && getDeltaLongitude(p2, longitude) < deltaLon) {\n var count = 0\n val precision = 1.0 / 6378137.0 // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (toRadians(getDeltaLongitude(midPoint, longitude)) > precision && count <= 20) {\n count++\n if (getDeltaLongitude(a, longitude) < getDeltaLongitude(b, longitude)) b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final longitude for an exact match\n if (pos != null) pos = Location(pos.latitude, longitude)\n return pos\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a parallel.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param latitude the parallel latitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLatitude(p1: Location, p2: Location, latitude: Angle): Location? {\n var pos: Location? = null\n if (sign(p1.latitude.inDegrees - latitude.inDegrees) != sign(p2.latitude.inDegrees - latitude.inDegrees)) {\n var count = 0\n val precision = 1.0 / 6378137.0 // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (abs(midPoint.latitude.inRadians - latitude.inRadians) > precision && count <= 20) {\n count++\n if (sign(a.latitude.inDegrees - latitude.inDegrees) != sign(midPoint.latitude.inDegrees - latitude.inDegrees))\n b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final latitude for an exact match\n if (pos != null) pos = Location(latitude, pos.longitude)\n return pos\n }\n\n private fun greatCircleMidPoint(p1: Location, p2: Location): Location {\n val azimuth = p1.greatCircleAzimuth(p2)\n val distance = p1.greatCircleDistance(p2)\n return p1.greatCircleLocation(azimuth, distance / 2, Location())\n }\n\n private fun getDeltaLongitude(p1: Location, longitude: Angle): Double {\n val deltaLon = abs(p1.longitude.inDegrees - longitude.inDegrees)\n return if (deltaLon < 180) deltaLon else 360 - deltaLon\n }\n\n private fun calculateLookAtProperties(rc: RenderContext) {\n if (!rc.hasUserProperty(LOOK_AT_LATITUDE_PROPERTY) || !rc.hasUserProperty(LOOK_AT_LONGITUDE_PROPERTY)) {\n //rc.modelview.extractEyePoint(forwardRay.origin)\n forwardRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(forwardRay.direction)\n val range = if (rc.terrain.intersect(forwardRay, lookAtPoint)) {\n rc.globe.cartesianToGeographic(lookAtPoint.x, lookAtPoint.y, lookAtPoint.z, lookAtPos)\n rc.putUserProperty(LOOK_AT_LATITUDE_PROPERTY, lookAtPos.latitude)\n rc.putUserProperty(LOOK_AT_LONGITUDE_PROPERTY, lookAtPos.longitude)\n lookAtPoint.distanceTo(rc.cameraPoint)\n } else {\n rc.removeUserProperty(LOOK_AT_LATITUDE_PROPERTY)\n rc.removeUserProperty(LOOK_AT_LONGITUDE_PROPERTY)\n rc.horizonDistance\n }\n val pixelSizeMeters = rc.pixelSizeAtDistance(range)\n rc.putUserProperty(GRATICULE_PIXEL_SIZE_PROPERTY, pixelSizeMeters)\n val pixelSizeDegrees = toDegrees(pixelSizeMeters / rc.globe.equatorialRadius)\n rc.putUserProperty(\n GRATICULE_LABEL_OFFSET_PROPERTY, pixelSizeDegrees * rc.viewport.width / 4\n )\n }\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.AbstractTile\n\nabstract class AbstractGraticuleTile(open val layer: AbstractGraticuleLayer, sector: Sector) : AbstractTile(sector) {\n var gridElements: MutableList? = null\n private set\n\n open fun isInView(rc: RenderContext) = intersectsSector(rc.terrain.sector) && intersectsFrustum(rc)\n\n open fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, sector.centroidLatitude, sector.centroidLongitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n val tileSizeMeter = sector.deltaLatitude.inRadians * rc.globe.equatorialRadius\n return tileSizeMeter / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n open fun selectRenderables(rc: RenderContext) {\n gridElements ?: createRenderables()\n }\n\n open fun clearRenderables() {\n gridElements?.clear()\n gridElements = null\n }\n\n open fun createRenderables() {\n gridElements = mutableListOf()\n }\n\n fun subdivide(div: Int): List {\n val dLat = sector.deltaLatitude.inDegrees / div\n val dLon = sector.deltaLongitude.inDegrees / div\n val sectors = mutableListOf()\n for (row in 0 until div) {\n for (col in 0 until div) {\n sectors += fromDegrees(\n sector.minLatitude.inDegrees + dLat * row,\n sector.minLongitude.inDegrees + dLon * col, dLat, dLon\n )\n }\n }\n return sectors\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord.Companion.fromUPS\nimport earth.worldwind.geom.coords.UTMCoord.Companion.fromUTM\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Displays the UTM graticule metric scale.\n */\nabstract class AbstractUTMGraticuleLayer(name: String, scaleModulo: Int, maxResolution: Double): AbstractGraticuleLayer(name) {\n private val metricScaleSupport = UTMMetricScaleSupport(this).apply {\n this.scaleModulo = scaleModulo\n this.maxResolution = maxResolution\n }\n\n override val orderedTypes = listOf(\n GRATICULE_UTM_100000M,\n GRATICULE_UTM_10000M,\n GRATICULE_UTM_1000M,\n GRATICULE_UTM_100M,\n GRATICULE_UTM_10M,\n GRATICULE_UTM_1M\n )\n\n override fun initRenderingParams() {\n // 100,000 meter graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n setRenderingParams(GRATICULE_UTM_100000M, params)\n // 10,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 102, 255)\n params[KEY_LABEL_COLOR] = Color(0, 102, 255)\n setRenderingParams(GRATICULE_UTM_10000M, params)\n // 1,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 255) // Cyan\n params[KEY_LABEL_COLOR] = Color(0, 255, 255) // Cyan\n setRenderingParams(GRATICULE_UTM_1000M, params)\n // 100 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 153, 153)\n params[KEY_LABEL_COLOR] = Color(0, 153, 153)\n setRenderingParams(GRATICULE_UTM_100M, params)\n // 10 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(102, 255, 204)\n params[KEY_LABEL_COLOR] = Color(102, 255, 204)\n setRenderingParams(GRATICULE_UTM_10M, params)\n // 1 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(153, 153, 255)\n params[KEY_LABEL_COLOR] = Color(153, 153, 255)\n setRenderingParams(GRATICULE_UTM_1M, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when {\n resolution >= 100000 -> GRATICULE_UTM_100000M\n resolution >= 10000 -> GRATICULE_UTM_10000M\n resolution >= 1000 -> GRATICULE_UTM_1000M\n resolution >= 100 -> GRATICULE_UTM_100M\n resolution >= 10 -> GRATICULE_UTM_10M\n resolution >= 1 -> GRATICULE_UTM_1M\n else -> GRATICULE_UTM_1M\n }\n\n override fun clear(rc: RenderContext) {\n super.clear(rc)\n metricScaleSupport.clear()\n metricScaleSupport.computeZone(rc)\n }\n\n override fun selectRenderables(rc: RenderContext) { metricScaleSupport.selectRenderables(rc) }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n metricScaleSupport.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n }\n\n fun computePosition(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n return if (zone > 0) computePositionFromUTM(zone, hemisphere, easting, northing)\n else computePositionFromUPS(hemisphere, easting, northing)\n }\n\n private fun computePositionFromUTM(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val utm = fromUTM(zone, hemisphere, easting, northing)\n return Position(utm.latitude.clampLatitude(), utm.longitude.clampLongitude(), 10e3)\n }\n\n private fun computePositionFromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val ups = fromUPS(hemisphere, easting, northing)\n return Position(ups.latitude.clampLatitude(), ups.longitude.clampLongitude(), 10e3)\n }\n\n fun createSquaresGrid(\n utmZone: Int, hemisphere: Hemisphere, utmZoneSector: Sector,\n minEasting: Double, maxEasting: Double, minNorthing: Double, maxNorthing: Double\n ): MutableList {\n val squares = mutableListOf()\n val startEasting = floor(minEasting / ONEHT) * ONEHT\n val startNorthing = floor(minNorthing / ONEHT) * ONEHT\n val cols = ceil((maxEasting - startEasting) / ONEHT).toInt()\n val rows = ceil((maxNorthing - startNorthing) / ONEHT).toInt()\n val squaresArray = Array(rows) { arrayOfNulls(cols) }\n var col = 0\n var easting = startEasting\n while (easting < maxEasting) {\n var row = 0\n var northing = startNorthing\n while (northing < maxNorthing) {\n val sz = UTMSquareZone(this, utmZone, hemisphere, utmZoneSector, easting, northing, ONEHT)\n if (!sz.isOutsideGridZone) {\n squares.add(sz)\n squaresArray[row][col] = sz\n }\n row++\n northing += ONEHT\n }\n col++\n easting += ONEHT\n }\n\n // Keep track of neighbors\n for (c in 0 until cols) {\n for (r in 0 until rows) {\n val sz = squaresArray[r][c]\n if (sz != null) {\n sz.northNeighbor = if (r + 1 < rows) squaresArray[r + 1][c] else null\n sz.eastNeighbor = if (c + 1 < cols) squaresArray[r][c + 1] else null\n }\n }\n }\n return squares\n }\n\n companion object {\n const val UTM_MIN_LATITUDE = -80.0\n const val UTM_MAX_LATITUDE = 84.0\n\n /** Graticule for the 100,000 meter grid. */\n private const val GRATICULE_UTM_100000M = \"Graticule.UTM.100000m\"\n\n /** Graticule for the 10,000 meter grid. */\n private const val GRATICULE_UTM_10000M = \"Graticule.UTM.10000m\"\n\n /** Graticule for the 1,000 meter grid. */\n private const val GRATICULE_UTM_1000M = \"Graticule.UTM.1000m\"\n\n /** Graticule for the 100 meter grid. */\n private const val GRATICULE_UTM_100M = \"Graticule.UTM.100m\"\n\n /** Graticule for the 10 meter grid. */\n private const val GRATICULE_UTM_10M = \"Graticule.UTM.10m\"\n\n /** Graticule for the 1 meter grid. */\n private const val GRATICULE_UTM_1M = \"Graticule.UTM.1m\"\n private const val ONEHT = 100e3\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\nclass GraticuleRenderingParams: MutableMap by HashMap() {\n var isDrawLines: Boolean\n get() = get(KEY_DRAW_LINES) as? Boolean ?: false\n set(drawLines) { put(KEY_DRAW_LINES, drawLines) }\n var lineColor: Color?\n get() = get(KEY_LINE_COLOR) as? Color\n set(color) { put(KEY_LINE_COLOR, color) }\n var lineWidth: Double\n get() = get(KEY_LINE_WIDTH) as? Double ?: 0.0\n set(lineWidth) { put(KEY_LINE_WIDTH, lineWidth) }\n// var lineStyle: String?\n// get() = get(KEY_LINE_STYLE) as? String\n// set(lineStyle) { put(KEY_LINE_STYLE, lineStyle) }\n var isDrawLabels: Boolean\n get() = get(KEY_DRAW_LABELS) as? Boolean ?: false\n set(drawLabels) { put(KEY_DRAW_LABELS, drawLabels) }\n var labelColor: Color?\n get() = get(KEY_LABEL_COLOR) as? Color\n set(color) { put(KEY_LABEL_COLOR, color) }\n var labelFont: Font?\n get() = get(KEY_LABEL_FONT) as? Font\n set(font) { put(KEY_LABEL_FONT, font) }\n\n fun getStringValue(key: String) = this[key]?.toString()\n\n fun getFloatValue(key: String): Float? {\n val o = get(key) ?: return null\n if (o is Float) return o\n val v = getStringValue(key)\n return v?.toFloat()\n }\n\n companion object {\n const val KEY_DRAW_LINES = \"DrawGraticule\"\n const val KEY_LINE_COLOR = \"GraticuleLineColor\"\n const val KEY_LINE_WIDTH = \"GraticuleLineWidth\"\n// const val KEY_LINE_STYLE = \"GraticuleLineStyle\";\n// const val KEY_LINE_CONFORMANCE = \"GraticuleLineConformance\";\n const val KEY_DRAW_LABELS = \"DrawLabels\"\n const val KEY_LABEL_COLOR = \"LabelColor\"\n const val KEY_LABEL_FONT = \"LabelFont\"\n// const val VALUE_LINE_STYLE_SOLID = \"LineStyleSolid\";\n// const val VALUE_LINE_STYLE_DASHED = \"LineStyleDashed\";\n// const val VALUE_LINE_STYLE_DOTTED = \"LineStyleDotted\";\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LINES\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_WIDTH\nimport earth.worldwind.render.*\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.ShapeAttributes\nimport kotlin.jvm.JvmOverloads\n\ninternal class GraticuleSupport {\n private val renderables = mutableMapOf()\n private val namedParams = mutableMapOf()\n private val namedShapeAttributes = mutableMapOf()\n var defaultParams: GraticuleRenderingParams? = null\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { renderables[renderable] = paramsKey }\n\n fun removeAllRenderables() { renderables.clear() }\n\n @JvmOverloads\n fun render(rc: RenderContext, opacity: Float = 1f) {\n namedShapeAttributes.clear()\n\n // Render lines and collect text labels\n for ((renderable, paramsKey) in renderables) {\n val renderingParams = namedParams[paramsKey]\n if (renderable is Path) {\n if (renderingParams?.isDrawLines != false) {\n applyRenderingParams(paramsKey, renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n } else if (renderable is Label) {\n if (renderingParams?.isDrawLabels != false) {\n applyRenderingParams(renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n }\n }\n }\n\n fun getRenderingParams(key: String): GraticuleRenderingParams {\n return namedParams[key] ?: GraticuleRenderingParams().also { params ->\n initRenderingParams(params)\n defaultParams?.let{ params.putAll(it) }\n namedParams[key] = params\n }\n }\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n initRenderingParams(renderingParams)\n namedParams[key] = renderingParams\n }\n\n private fun initRenderingParams(params: GraticuleRenderingParams) {\n if (params[KEY_DRAW_LINES] == null) params[KEY_DRAW_LINES] = true\n if (params[KEY_LINE_COLOR] == null) params[KEY_LINE_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LINE_WIDTH] == null) params[KEY_LINE_WIDTH] = .5f\n// if (params[KEY_LINE_STYLE] == null) params[KEY_LINE_STYLE] = GraticuleRenderingParams.VALUE_LINE_STYLE_SOLID\n if (params[KEY_DRAW_LABELS] == null) params[KEY_DRAW_LABELS] = true\n if (params[KEY_LABEL_COLOR] == null) params[KEY_LABEL_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LABEL_FONT] == null) params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 12)\n }\n\n private fun applyRenderingParams(params: GraticuleRenderingParams?, text: Label, opacity: Float) {\n if (params != null) {\n // Apply \"label\" properties to the Label.\n var o = params[KEY_LABEL_COLOR]\n if (o is Color) {\n val color = applyOpacity(o, opacity)\n val compArray = FloatArray(3)\n color.toHSV(compArray)\n val colorValue = if (compArray[2] < .5f) 1f else 0f\n text.attributes.textColor = color\n text.attributes.outlineColor = Color(colorValue, colorValue, colorValue, color.alpha)\n }\n o = params[KEY_LABEL_FONT]\n if (o is Font) text.attributes.font = o\n }\n }\n\n private fun applyRenderingParams(key: String, params: GraticuleRenderingParams?, path: Path, opacity: Float) {\n if (params != null) {\n path.attributes = getLineShapeAttributes(key, params, opacity)\n }\n }\n\n private fun getLineShapeAttributes(key: String, params: GraticuleRenderingParams, opacity: Float) =\n namedShapeAttributes[key] ?: createLineShapeAttributes(params, opacity).also { namedShapeAttributes[key] = it }\n\n private fun createLineShapeAttributes(params: GraticuleRenderingParams, opacity: Float): ShapeAttributes {\n val attrs = ShapeAttributes()\n attrs.isDrawInterior = false\n attrs.isDrawOutline = true\n\n // Apply \"line\" properties.\n val o = params[KEY_LINE_COLOR]\n if (o is Color) attrs.outlineColor = applyOpacity(o, opacity)\n val lineWidth = params.getFloatValue(KEY_LINE_WIDTH)\n if (lineWidth != null) attrs.outlineWidth = lineWidth\n// val s = params.getStringValue(KEY_LINE_STYLE)\n// when {\n// VALUE_LINE_STYLE_SOLID.equals(s, true) -> {\n// attrs.outlineStipplePattern = 0xAAAA.toShort()\n// attrs.outlineStippleFactor = 0\n// }\n// VALUE_LINE_STYLE_DASHED.equals(s, true) -> {\n// val baseFactor = lineWidth?.roundToInt() ?: 1\n// attrs.outlineStipplePattern = 0xAAAA.toShort()\n// attrs.outlineStippleFactor = 3 * baseFactor\n// }\n// VALUE_LINE_STYLE_DOTTED.equals(s, true) -> {\n// val baseFactor = lineWidth?.roundToInt() ?: 1\n// attrs.outlineStipplePattern =0xAAAA.toShort()\n// attrs.outlineStippleFactor = baseFactor\n// }\n// }\n return attrs\n }\n\n private fun applyOpacity(color: Color, opacity: Float) =\n if (opacity >= 1) color else Color(color.red, color.green, color.blue, color.alpha * opacity)\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\n\nclass GridElement(val sector: Sector, val renderable: Renderable, val type: String, val value: Angle) {\n constructor(sector: Sector, renderable: Renderable, type: String): this(sector, renderable, type, ZERO)\n\n fun isInView(rc: RenderContext) = sector.intersectsOrNextTo(rc.terrain.sector)\n\n companion object {\n const val TYPE_LINE = \"GridElement_Line\"\n const val TYPE_LINE_NORTH = \"GridElement_LineNorth\"\n const val TYPE_LINE_SOUTH = \"GridElement_LineSouth\"\n const val TYPE_LINE_WEST = \"GridElement_LineWest\"\n const val TYPE_LINE_EAST = \"GridElement_LineEast\"\n const val TYPE_LINE_NORTHING = \"GridElement_LineNorthing\"\n const val TYPE_LINE_EASTING = \"GridElement_LineEasting\"\n const val TYPE_GRIDZONE_LABEL = \"GridElement_GridZoneLabel\"\n const val TYPE_LONGITUDE_LABEL = \"GridElement_LongitudeLabel\"\n const val TYPE_LATITUDE_LABEL = \"GridElement_LatitudeLabel\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.floor\n\nopen class MGRSGraticuleLayer: AbstractUTMGraticuleLayer(\"MGRS graticule\", 100000, 1e5) {\n private val gridZones = Array(20) { arrayOfNulls(60) } // row/col\n private val poleZones = arrayOfNulls(4) // North x2 + South x2\n private val overview = MGRSOverview(this)\n\n /**\n * The maximum resolution graticule that will be rendered, or null if no graticules will be rendered. By\n * default, all graticules are rendered, and this will return GRATICULE_1M.\n */\n var maximumGraticuleResolution: String?\n get() {\n var maxTypeDrawn: String? = null\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n val params = getRenderingParams(type)\n if (params.isDrawLines) maxTypeDrawn = type\n }\n return maxTypeDrawn\n }\n set(graticuleType) {\n var pastTarget = false\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n // Enable all graticulte BEFORE and INCLUDING the target.\n // Disable all graticules AFTER the target.\n val params = getRenderingParams(type)\n params.isDrawLines = !pastTarget\n params.isDrawLabels = !pastTarget\n if (!pastTarget && type == graticuleType) pastTarget = true\n }\n }\n\n override val orderedTypes = mutableListOf(GRATICULE_MGRS_OVERVIEW, GRATICULE_MGRS_GRID_ZONE).apply { addAll(super.orderedTypes) }\n\n override fun initRenderingParams() {\n super.initRenderingParams()\n // MGRS Overview graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(.8f, .8f, .8f, .5f)\n params[KEY_LABEL_COLOR] = Color(1f, 1f, 1f, .8f)\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n params[KEY_DRAW_LABELS] = true\n setRenderingParams(GRATICULE_MGRS_OVERVIEW, params)\n // MGRS GridZone graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 16)\n setRenderingParams(GRATICULE_MGRS_GRID_ZONE, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when (resolution) {\n MGRS_OVERVIEW_RESOLUTION -> GRATICULE_MGRS_OVERVIEW\n MGRS_GRID_ZONE_RESOLUTION -> GRATICULE_MGRS_GRID_ZONE\n else -> super.getTypeFor(resolution)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n if (rc.camera.position.altitude <= GRID_ZONE_MAX_ALTITUDE) {\n selectMGRSRenderables(rc)\n super.selectRenderables(rc)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n private fun selectMGRSRenderables(rc: RenderContext) {\n val zoneList = getVisibleZones(rc)\n for (gz in zoneList) gz.selectRenderables(rc)\n }\n\n private fun getVisibleZones(rc: RenderContext): List {\n val zoneList = mutableListOf()\n val vs = rc.terrain.sector\n // UTM Grid\n val gridRectangle = getGridRectangleForSector(vs)\n if (gridRectangle != null) {\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n if (row != 19 || col != 31 && col != 33 && col != 35) {\n // ignore X32, 34 and 36\n val zone = gridZones[row][col] ?: MGRSGridZone(this, getGridSector(row, col)).also { gridZones[row][col] = it }\n if (zone.isInView(rc)) zoneList.add(zone) else zone.clearRenderables()\n }\n }\n }\n }\n // Poles\n if (vs.maxLatitude.inDegrees > 84) {\n // North pole\n if (poleZones[2] == null) poleZones[2] = MGRSGridZone(this, fromDegrees(84.0, -180.0, 6.0, 180.0)) // Y\n if (poleZones[3] == null) poleZones[3] = MGRSGridZone(this, fromDegrees(84.0, 0.0, 6.0, 180.0)) // Z\n zoneList.add(poleZones[2]!!)\n zoneList.add(poleZones[3]!!)\n }\n if (vs.minLatitude.inDegrees < -80) {\n // South pole\n if (poleZones[0] == null) poleZones[0] = MGRSGridZone(this, fromDegrees(-90.0, -180.0, 10.0, 180.0)) // B\n if (poleZones[1] == null) poleZones[1] = MGRSGridZone(this, fromDegrees(-90.0, 0.0, 10.0, 180.0)) // A\n zoneList.add(poleZones[0]!!)\n zoneList.add(poleZones[1]!!)\n }\n return zoneList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport? {\n var rectangle: Viewport? = null\n if (sector.minLatitude.inDegrees < 84 && sector.maxLatitude.inDegrees > -80) {\n val minLat = sector.minLatitude.inDegrees.coerceAtLeast(-80.0)\n val maxLat = sector.maxLatitude.inDegrees.coerceAtMost(84.0)\n val gridSector = fromDegrees(\n minLat, sector.minLongitude.inDegrees, maxLat - minLat, sector.deltaLongitude.inDegrees\n )\n var x1 = getGridColumn(gridSector.minLongitude)\n var x2 = getGridColumn(gridSector.maxLongitude)\n val y1 = getGridRow(gridSector.minLatitude)\n val y2 = getGridRow(gridSector.maxLatitude)\n // Adjust rectangle to include special zones\n if (y1 <= 17 && y2 >= 17 && x2 == 30) x2 = 31 // 32V Norway\n if (y1 <= 19 && y2 >= 19) { // X band\n if (x1 == 31) x1 = 30 // 31X\n if (x2 == 31) x2 = 32 // 33X\n if (x1 == 33) x1 = 32 // 33X\n if (x2 == 33) x2 = 34 // 35X\n if (x1 == 35) x1 = 34 // 35X\n if (x2 == 35) x2 = 36 // 37X\n }\n rectangle = Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n return rectangle\n }\n\n private fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n private fun getGridRow(latitude: Angle) = floor((latitude.inDegrees + 80) / 8.0).toInt().coerceAtMost(19)\n\n private fun getGridSector(row: Int, col: Int): Sector {\n val minLat = -80 + row * 8\n val maxLat = minLat + if (minLat != 72) 8 else 12\n var minLon = -180 + col * 6\n var maxLon = minLon + 6\n // Special sectors\n if (row == 17 && col == 30) // 31V\n maxLon -= 3 else if (row == 17 && col == 31) // 32V\n minLon -= 3 else if (row == 19 && col == 30) // 31X\n maxLon += 3 else if (row == 19 && col == 31) { // 32X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 32) { // 33X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 33) { // 34X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 34) { // 35X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 35) { // 36X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 36) // 37X\n minLon -= 3\n return fromDegrees(minLat.toDouble(), minLon.toDouble(), (maxLat - minLat).toDouble(), (maxLon - minLon).toDouble())\n }\n\n fun isNorthNeighborInView(gz: MGRSGridZone, rc: RenderContext): Boolean {\n if (gz.isUPS) return true\n val row = getGridRow(gz.sector.centroidLatitude)\n val col = getGridColumn(gz.sector.centroidLongitude)\n val neighbor = if (row + 1 <= 19) gridZones[row + 1][col] else null\n return neighbor?.isInView(rc) == true\n }\n\n fun isEastNeighborInView(gz: MGRSGridZone, rc: RenderContext): Boolean {\n if (gz.isUPS) return true\n val row = getGridRow(gz.sector.centroidLatitude)\n val col = getGridColumn(gz.sector.centroidLongitude)\n val neighbor = if (col + 1 <= 59) gridZones[row][col + 1] else null\n return neighbor?.isInView(rc) == true\n }\n\n companion object {\n const val MGRS_OVERVIEW_RESOLUTION = 1e6\n const val MGRS_GRID_ZONE_RESOLUTION = 5e5\n\n /** Graticule for the MGRS overview. */\n private const val GRATICULE_MGRS_OVERVIEW = \"Graticule.MGRS.Overview\"\n\n /** Graticule for the MGRS grid zone. */\n private const val GRATICULE_MGRS_GRID_ZONE = \"Graticule.MGRS.GridZone\"\n private const val GRID_ZONE_MAX_ALTITUDE = 5e6\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.MGRSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.MGRSGraticuleLayer.Companion.MGRS_GRID_ZONE_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a UTM zone / latitude band intersection\n */\nclass MGRSGridZone(layer: MGRSGraticuleLayer, sector: Sector) : AbstractGraticuleTile(layer, sector) {\n val isUPS = sector.maxLatitude.inDegrees > AbstractUTMGraticuleLayer.UTM_MAX_LATITUDE\n || sector.minLatitude.inDegrees < AbstractUTMGraticuleLayer.UTM_MIN_LATITUDE\n private var name: String\n private var hemisphere: Hemisphere\n private var zone: Int\n private var squares: MutableList? = null\n override val layer get() = super.layer as MGRSGraticuleLayer\n\n init {\n val mgrs = MGRSCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n if (isUPS) {\n name = mgrs.toString().substring(2, 3)\n hemisphere = if (sector.minLatitude.inDegrees > 0) Hemisphere.N else Hemisphere.S\n zone = 0\n } else {\n name = mgrs.toString().substring(0, 3)\n val utm = UTMCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n hemisphere = utm.hemisphere\n zone = utm.zone\n }\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(MGRS_GRID_ZONE_RESOLUTION)\n for (ge in gridElements!!) if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && layer.isNorthNeighborInView(this, rc)) continue\n if (ge.type == TYPE_LINE_EAST && layer.isEastNeighborInView(this, rc)) continue\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (rc.camera.position.altitude > SQUARE_MAX_ALTITUDE) return\n\n // Select 100km squares elements\n squares ?: if (isUPS) createSquaresUPS() else createSquaresUTM()\n for (sz in squares!!) if (sz.isInView(rc)) sz.selectRenderables(rc) else sz.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n squares?.run {\n for (sz in this) sz.clearRenderables()\n clear()\n }.also { squares = null }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf(\n Position(sector.minLatitude, sector.minLongitude, 10e3),\n Position(sector.maxLatitude, sector.minLongitude, 10e3)\n )\n var polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n var lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.minLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, GridElement.TYPE_LINE_WEST))\n if (!isUPS) {\n // right meridian segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.maxLongitude, sector.maxLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_EAST))\n\n // bottom parallel segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.minLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH))\n\n // top parallel segment\n positions.clear()\n positions.add(Position(sector.maxLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.maxLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH))\n }\n\n // Label\n val text = layer.createTextRenderable(\n Position(sector.centroidLatitude, sector.centroidLongitude, 0.0), name, 10e6\n )\n gridElements!!.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createSquaresUTM() {\n // Find grid zone easting and northing boundaries\n var utm = UTMCoord.fromLatLon(sector.minLatitude, sector.centroidLongitude)\n val minNorthing = utm.northing\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.centroidLongitude)\n var maxNorthing = utm.northing\n maxNorthing = if (maxNorthing == 0.0) 10e6 else maxNorthing\n utm = UTMCoord.fromLatLon(sector.minLatitude, sector.minLongitude)\n var minEasting = utm.easting\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.minLongitude)\n minEasting = utm.easting.coerceAtMost(minEasting)\n var maxEasting = 1e6 - minEasting\n\n // Compensate for some distorted zones\n if (name == \"32V\") maxNorthing += 20e3 // catch KS and LS in 32V\n if (name == \"31X\") maxEasting += ONEHT // catch GA and GV in 31X\n\n // Create squares\n squares = layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing)\n setSquareNames()\n }\n\n private fun createSquaresUPS() {\n squares = mutableListOf()\n val minEasting: Double\n val maxEasting: Double\n val minNorthing: Double\n val maxNorthing: Double\n if (Hemisphere.N == hemisphere) {\n minNorthing = TWOMIL - ONEHT * 7\n maxNorthing = TWOMIL + ONEHT * 7\n minEasting = if (name == \"Y\") TWOMIL - ONEHT * 7 else TWOMIL\n maxEasting = if (name == \"Y\") TWOMIL else TWOMIL + ONEHT * 7\n } else {\n minNorthing = TWOMIL - ONEHT * 12\n maxNorthing = TWOMIL + ONEHT * 12\n minEasting = if (name == \"A\") TWOMIL - ONEHT * 12 else TWOMIL\n maxEasting = if (name == \"A\") TWOMIL else TWOMIL + ONEHT * 12\n }\n\n // Create squares\n squares = layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing)\n setSquareNames()\n }\n\n private fun setSquareNames() {\n for (sz in squares!!) setSquareName(sz)\n }\n\n private fun setSquareName(sz: UTMSquareZone) {\n // Find out MGRS 100Km square name\n val tenMeterDegree = toDegrees(10.0 / 6378137.0)\n var mgrs: MGRSCoord? = null\n when {\n sz.isPositionInside(Position(sz.centroid.latitude, sz.centroid.longitude, 0.0)) ->\n mgrs = MGRSCoord.fromLatLon(sz.centroid.latitude, sz.centroid.longitude)\n sz.isPositionInside(sz.sw) -> mgrs = MGRSCoord.fromLatLon(\n sz.sw.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.sw.longitude.plusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.se) -> mgrs = MGRSCoord.fromLatLon(\n sz.se.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.se.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.nw) -> mgrs = MGRSCoord.fromLatLon(\n sz.nw.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.nw.longitude.plusDegrees(tenMeterDegree).clampLongitude())\n sz.isPositionInside(sz.ne) -> mgrs = MGRSCoord.fromLatLon(\n sz.ne.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.ne.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n }\n // Set square zone name\n if (mgrs != null) sz.name = mgrs.toString().substring(3, 5)\n }\n\n companion object {\n private const val ONEHT = 100e3\n private const val TWOMIL = 2e6\n private const val SQUARE_MAX_ALTITUDE = 3000e3\n }\n}",null,"package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.MGRSGraticuleLayer.Companion.MGRS_OVERVIEW_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class MGRSOverview(layer: MGRSGraticuleLayer): AbstractGraticuleTile(layer, Sector()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements!!) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n var pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) pos = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) pos = Position(labelPos.latitude, pos.longitude, pos.altitude)\n gt.position = pos\n }\n }\n layer.addRenderable(ge.renderable, layer.getTypeFor(MGRS_OVERVIEW_RESOLUTION))\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n var lon = -180\n var zoneNumber = 1\n var maxLat: Int\n for (i in 0..59) {\n val longitude = lon.toDouble()\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-80.0, longitude, 10e3))\n positions.add(fromDegrees(-60.0, longitude, 10e3))\n positions.add(fromDegrees(-30.0, longitude, 10e3))\n positions.add(fromDegrees(0.0, longitude, 10e3))\n positions.add(fromDegrees(30.0, longitude, 10e3))\n if (lon < 6 || lon > 36) {\n // 'regular' UTM meridians\n maxLat = 84\n positions.add(fromDegrees(60.0, longitude, 10e3))\n } else {\n // Exceptions: shorter meridians around and north-east of Norway\n if (lon == 6) {\n maxLat = 56\n } else {\n maxLat = 72\n positions.add(fromDegrees(60.0, longitude, 10e3))\n }\n }\n positions.add(fromDegrees(maxLat.toDouble(), longitude, 10e3))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-80.0, longitude, maxLat + 80.0, 1E-15)\n gridElements!!.add(GridElement(sector, polyline, TYPE_LINE))\n\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude + 3.0, 0.0),\n zoneNumber.toString(), 10e6\n )\n sector = fromDegrees(-90.0, longitude + 3.0, 180.0, 1E-15)\n gridElements!!.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n\n // Increase longitude and zone number\n lon += 6\n zoneNumber++\n }\n\n // Generate special meridian segments for exceptions around and north-east of Norway\n for (i in 0..4) {\n positions.clear()\n val longitude = SPECIAL_MERIDIANS[i][0].toDouble()\n val latitude1 = SPECIAL_MERIDIANS[i][1].toDouble()\n val latitude2 = SPECIAL_MERIDIANS[i][2].toDouble()\n positions.add(fromDegrees(latitude1, longitude, 10e3))\n positions.add(fromDegrees(latitude2, longitude, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val sector = fromDegrees(latitude1, longitude, latitude2 - latitude1, 1E-15)\n gridElements!!.add(GridElement(sector, polyline, TYPE_LINE))\n }\n\n // Generate parallels - no exceptions\n var lat = -80\n for (i in 0..20) {\n val latitude = lat.toDouble()\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n lon = -180 + j * 90\n val longitude = lon.toDouble()\n positions.add(fromDegrees(latitude, longitude, 10e3))\n positions.add(fromDegrees(latitude, longitude + 30, 10e3))\n positions.add(fromDegrees(latitude, longitude + 60, 10e3))\n positions.add(fromDegrees(latitude, longitude + 90, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 1E-15, 90.0)\n gridElements!!.add(GridElement(sector, polyline, TYPE_LINE))\n }\n // Latitude band label\n if (i < 20) {\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 4, 0.0, 0.0),\n LAT_BANDS[i].toString(), 10e6\n )\n val sector = fromDegrees(latitude + 4, -180.0, 1E-15, 360.0)\n gridElements!!.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n\n // Increase latitude\n lat += if (lat < 72) 8 else 12\n }\n }\n\n companion object {\n // Exceptions for some meridians. Values: longitude, min latitude, max latitude\n private val SPECIAL_MERIDIANS = arrayOf(\n intArrayOf(3, 56, 64), intArrayOf(6, 64, 72), intArrayOf(9, 72, 84), intArrayOf(21, 72, 84), intArrayOf(33, 72, 84)\n )\n\n // Latitude bands letters - from south to north\n private const val LAT_BANDS = \"CDEFGHJKLMNPQRSTUVWX\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.AbstractUTMGraticuleLayer.Companion.UTM_MAX_LATITUDE\nimport earth.worldwind.layer.graticule.AbstractUTMGraticuleLayer.Companion.UTM_MIN_LATITUDE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.log10\nimport kotlin.math.pow\n\ninternal class UTMMetricScaleSupport(private val layer: AbstractUTMGraticuleLayer) {\n private class UTMExtremes {\n var minX = 1e6\n var maxX = 0.0\n var minY = 10e6\n var maxY = 0.0\n var minYHemisphere = Hemisphere.N\n var maxYHemisphere = Hemisphere.S\n }\n\n var scaleModulo = 10000000\n var maxResolution = 1e5\n set(value) {\n field = value\n clear()\n }\n var zone = 0\n private set\n\n // 5 levels 100km to 10m\n private var extremes: Array? = null\n\n fun computeZone(rc: RenderContext) {\n try {\n if (layer.hasLookAtPos(rc)) {\n val latitude = layer.getLookAtLatitude(rc)\n val longitude = layer.getLookAtLongitude(rc)\n zone = if (latitude.inDegrees in UTM_MIN_LATITUDE..UTM_MAX_LATITUDE) {\n val utm = UTMCoord.fromLatLon(latitude, longitude)\n utm.zone\n } else 0\n }\n } catch (ex: Exception) {\n zone = 0\n }\n }\n\n fun clear() {\n val numLevels = log10(maxResolution).toInt()\n extremes = Array(numLevels) { UTMExtremes() }\n }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n if (UTMZone != zone) return\n if (size < 1 || size > maxResolution) return\n val levelExtremes = extremes!![log10(size).toInt() - 1]\n if (ge.type == TYPE_LINE_EASTING || ge.type == TYPE_LINE_EAST || ge.type == TYPE_LINE_WEST) {\n levelExtremes.minX = ge.value.inDegrees.coerceAtMost(levelExtremes.minX)\n levelExtremes.maxX = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxX)\n } else if (ge.type == TYPE_LINE_NORTHING || ge.type == TYPE_LINE_SOUTH || ge.type == TYPE_LINE_NORTH) {\n if (hemisphere == levelExtremes.minYHemisphere) {\n levelExtremes.minY = ge.value.inDegrees.coerceAtMost(levelExtremes.minY)\n } else if (hemisphere == Hemisphere.S) {\n levelExtremes.minY = ge.value.inDegrees\n levelExtremes.minYHemisphere = hemisphere\n }\n if (hemisphere == levelExtremes.maxYHemisphere) {\n levelExtremes.maxY = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxY)\n } else if (hemisphere == Hemisphere.N) {\n levelExtremes.maxY = ge.value.inDegrees\n levelExtremes.maxYHemisphere = hemisphere\n }\n }\n }\n\n fun selectRenderables(rc: RenderContext) {\n val extremes = extremes ?: return\n if (!layer.hasLookAtPos(rc)) return\n\n // Compute easting and northing label offsets\n val pixelSize = layer.getPixelSize(rc)\n val eastingOffset = rc.viewport.width * pixelSize * OFFSET_FACTOR_X / 2\n val northingOffset = rc.viewport.height * pixelSize * OFFSET_FACTOR_Y / 2\n // Derive labels center pos from the view center\n val labelEasting: Double\n var labelNorthing: Double\n var labelHemisphere: Hemisphere\n if (zone > 0) {\n val utm = UTMCoord.fromLatLon(layer.getLookAtLatitude(rc), layer.getLookAtLongitude(rc))\n labelEasting = utm.easting + eastingOffset\n labelNorthing = utm.northing + northingOffset\n labelHemisphere = utm.hemisphere\n if (labelNorthing < 0) {\n labelNorthing += 10e6\n labelHemisphere = Hemisphere.S\n }\n } else {\n val ups = UPSCoord.fromLatLon(layer.getLookAtLatitude(rc), layer.getLookAtLongitude(rc))\n labelEasting = ups.easting + eastingOffset\n labelNorthing = ups.northing + northingOffset\n labelHemisphere = ups.hemisphere\n }\n val viewFrustum = rc.frustum\n var labelPos: Position?\n for (i in extremes.indices) {\n val levelExtremes = extremes[i]\n val gridStep = 10.0.pow(i.toDouble())\n val gridStepTimesTen = gridStep * 10\n val graticuleType = layer.getTypeFor(gridStep)\n if (levelExtremes.minX <= levelExtremes.maxX) {\n // Process easting scale labels for this level\n var easting = levelExtremes.minX\n while (easting <= levelExtremes.maxX) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || easting % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, labelHemisphere, easting, labelNorthing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (easting % scaleModulo).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n layer.addRenderable(gt, graticuleType)\n }\n }\n easting += gridStep\n }\n }\n if (!(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)) {\n // Process northing scale labels for this level\n var currentHemisphere = levelExtremes.minYHemisphere\n var northing = levelExtremes.minY\n while (northing <= levelExtremes.maxY || currentHemisphere != levelExtremes.maxYHemisphere) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || northing % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, currentHemisphere, labelEasting, northing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text: String = (northing % scaleModulo).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n layer.addRenderable(gt, graticuleType)\n }\n if (currentHemisphere != levelExtremes.maxYHemisphere && northing >= 10e6 - gridStep) {\n // Switch hemisphere\n currentHemisphere = levelExtremes.maxYHemisphere\n northing = -gridStep\n }\n }\n northing += gridStep\n }\n }\n }\n }\n\n private fun isPointInRange(rc: RenderContext, point: Vec3): Boolean {\n val altitudeAboveGround = layer.computeAltitudeAboveGround(rc)\n return rc.cameraPoint.distanceTo(point) < altitudeAboveGround * VISIBLE_DISTANCE_FACTOR\n }\n\n override fun toString(): String {\n val sb = StringBuilder()\n for (i in 0..4) {\n sb.append(\"level \")\n sb.append(i)\n sb.append(\" : \")\n val levelExtremes = extremes!![i]\n if (levelExtremes.minX < levelExtremes.maxX ||\n !(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)\n ) {\n sb.append(levelExtremes.minX)\n sb.append(\", \")\n sb.append(levelExtremes.maxX)\n sb.append(\" - \")\n sb.append(levelExtremes.minY)\n sb.append(levelExtremes.minYHemisphere)\n sb.append(\", \")\n sb.append(levelExtremes.maxY)\n sb.append(levelExtremes.maxYHemisphere)\n } else {\n sb.append(\"empty\")\n }\n sb.append(\"\\n\")\n }\n return sb.toString()\n }\n\n companion object {\n private const val OFFSET_FACTOR_X = -.5\n private const val OFFSET_FACTOR_Y = -.5\n private const val VISIBLE_DISTANCE_FACTOR = 10.0\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a square 10x10 grid and recursive tree in easting/northing coordinates\n */\ninternal class UTMSquareGrid(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n private var subGrids: MutableList? = null\n\n override fun isInView(rc: RenderContext): Boolean {\n return super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val drawMetricLabels = getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4 * 1.7\n val graticuleType = layer.getTypeFor(size / 10)\n for (ge in gridElements!!) {\n if (ge.isInView(rc)) {\n if (drawMetricLabels) layer.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n layer.addRenderable(ge.renderable, graticuleType)\n }\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return\n\n // Select sub grids renderables\n subGrids ?: createSubGrids()\n for (sg in subGrids!!) if (sg.isInView(rc)) sg.selectRenderables(rc) else sg.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n subGrids?.run {\n for (sg in this) sg.clearRenderables()\n clear()\n }.also { subGrids = null }\n }\n\n private fun createSubGrids() {\n subGrids = mutableListOf()\n val gridStep = size / 10\n for (i in 0..9) {\n val easting = SWEasting + gridStep * i\n for (j in 0..9) {\n val northing = SWNorthing + gridStep * j\n val sg = UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, easting, northing, gridStep)\n if (!sg.isOutsideGridZone) subGrids!!.add(sg)\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val gridStep = size / 10\n val positions = mutableListOf()\n\n // South-North lines\n for (i in 1..9) {\n val easting = SWEasting + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing)\n var p2 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing + size)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(\n GridElement(lineSector, polyline, TYPE_LINE_EASTING, easting.degrees)\n )\n }\n }\n // West-East lines\n for (i in 1..9) {\n val northing = SWNorthing + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, SWEasting, northing)\n var p2 = layer.computePosition(UTMZone, hemisphere, SWEasting + size, northing)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_NORTHING, northing.degrees))\n }\n }\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.sign\n\n/**\n * Represent a generic UTM/UPS square area\n */\nabstract class UTMSquareSector(\n layer: AbstractUTMGraticuleLayer, val UTMZone: Int, val hemisphere: Hemisphere,\n val UTMZoneSector: Sector, val SWEasting: Double, val SWNorthing: Double, val size: Double\n): AbstractGraticuleTile(layer, Sector()) {\n val squareCenter = layer.computePosition(UTMZone, hemisphere, SWEasting + size / 2, SWNorthing + size / 2)\n // Four corners position\n var sw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing)\n var se = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing)\n var nw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing + size)\n var ne = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing + size)\n var boundingSector = boundingSector(adjustDateLineCrossingPoints()).apply { if (!isInsideGridZone) intersect(UTMZoneSector) }.also { sector.copy(it) }\n var centroid = boundingSector.centroid(Location())\n val isTruncated = !isInsideGridZone\n override val layer get() = super.layer as AbstractUTMGraticuleLayer\n /**\n * Determines whether this square is fully inside its parent grid zone.\n */\n private val isInsideGridZone get() = isPositionInside(nw) && isPositionInside(ne) && isPositionInside(sw) && isPositionInside(se)\n /**\n * Determines whether this square is fully outside its parent grid zone.\n */\n val isOutsideGridZone = !isPositionInside(nw) && !isPositionInside(ne) && !isPositionInside(sw) && !isPositionInside(se)\n\n private fun adjustDateLineCrossingPoints(): Iterable {\n val corners = listOf(sw, se, nw, ne)\n if (!locationsCrossDateLine(corners)) return corners\n\n var lonSign = 0.0\n for (corner in corners) if (abs(corner.longitude.inDegrees) != 180.0) lonSign = sign(corner.longitude.inDegrees)\n if (lonSign == 0.0) return corners\n\n if (abs(sw.longitude.inDegrees) == 180.0 && sign(sw.longitude.inDegrees) != lonSign)\n sw = Position(sw.latitude, -sw.longitude, sw.altitude)\n if (abs(se.longitude.inDegrees) == 180.0 && sign(se.longitude.inDegrees) != lonSign)\n se = Position(se.latitude, -se.longitude, se.altitude)\n if (abs(nw.longitude.inDegrees) == 180.0 && sign(nw.longitude.inDegrees) != lonSign)\n nw = Position(nw.latitude, -nw.longitude, nw.altitude)\n if (abs(ne.longitude.inDegrees) == 180.0 && sign(ne.longitude.inDegrees) != lonSign)\n ne = Position(ne.latitude, -ne.longitude, ne.altitude)\n\n return listOf(sw, se, nw, ne)\n }\n\n private fun locationsCrossDateLine(locations: Iterable): Boolean {\n var pos: Location? = null\n for (posNext in locations) {\n if (pos != null) {\n // A segment cross the line if end pos have different longitude signs\n // and are more than 180 degrees longitude apart\n if (sign(pos.longitude.inDegrees) != sign(posNext.longitude.inDegrees)) {\n val delta = abs(pos.longitude.inDegrees - posNext.longitude.inDegrees)\n if (delta > 180 && delta < 360) return true\n }\n }\n pos = posNext\n }\n return false\n }\n\n private fun boundingSector(locations: Iterable): Sector {\n var minLat = POS90\n var minLon = POS180\n var maxLat = NEG90\n var maxLon = NEG180\n for (p in locations) {\n val lat = p.latitude\n if (lat.inDegrees < minLat.inDegrees) minLat = lat\n if (lat.inDegrees > maxLat.inDegrees) maxLat = lat\n val lon = p.longitude\n if (lon.inDegrees < minLon.inDegrees) minLon = lon\n if (lon.inDegrees > maxLon.inDegrees) maxLon = lon\n }\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun boundingSector(pA: Location, pB: Location): Sector {\n var minLat = pA.latitude\n var minLon = pA.longitude\n var maxLat = pA.latitude\n var maxLon = pA.longitude\n if (pB.latitude.inDegrees < minLat.inDegrees) minLat = pB.latitude\n else if (pB.latitude.inDegrees > maxLat.inDegrees) maxLat = pB.latitude\n if (pB.longitude.inDegrees < minLon.inDegrees) minLon = pB.longitude\n else if (pB.longitude.inDegrees > maxLon.inDegrees) maxLon = pB.longitude\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun isPositionInside(position: Location) = UTMZoneSector.contains(position)\n\n override fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, centroid.latitude, centroid.longitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n return size / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n companion object {\n const val MIN_CELL_SIZE_PIXELS = 50\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_GRIDZONE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\nimport kotlin.math.cos\n\n/**\n * Represent a 100km square zone inside an UTM zone.\n */\nclass UTMSquareZone(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n var name: String? = null\n var northNeighbor: UTMSquareZone? = null\n var eastNeighbor: UTMSquareZone? = null\n private var squareGrid: UTMSquareGrid? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val drawMetricLabels = getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 2\n val graticuleType = layer.getTypeFor(size)\n for (ge in gridElements!!) {\n if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && isNorthNeighborInView(rc)) continue\n if (ge.type == TYPE_LINE_EAST && isEastNeighborInView(rc)) continue\n if (drawMetricLabels) layer.computeMetricScaleExtremes(\n UTMZone, hemisphere, ge, size * 10\n )\n layer.addRenderable(ge.renderable, graticuleType)\n }\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 2) return\n\n // Select grid renderables\n val squareGrid = squareGrid ?: UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size).also { squareGrid = it }\n if (squareGrid.isInView(rc)) squareGrid.selectRenderables(rc) else squareGrid.clearRenderables()\n }\n\n private fun isNorthNeighborInView(rc: RenderContext) = northNeighbor?.isInView(rc) == true\n\n private fun isEastNeighborInView(rc: RenderContext) = eastNeighbor?.isInView(rc) == true\n\n override fun clearRenderables() {\n super.clearRenderables()\n squareGrid?.clearRenderables()\n squareGrid = null\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // left segment\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, nw, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(nw)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(\n GridElement(lineSector, polyline, TYPE_LINE_WEST, SWEasting.degrees)\n )\n }\n\n // right segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(se, ne, UTMZoneSector, positions)\n } else {\n positions.add(se)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_EAST, (SWEasting + size).degrees))\n }\n\n // bottom segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, se, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(se)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH, SWNorthing.degrees))\n }\n\n // top segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(nw, ne, UTMZoneSector, positions)\n } else {\n positions.add(nw)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements!!.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH, (SWNorthing + size).degrees))\n }\n\n // Label\n if (name != null) {\n // Only add a label to squares above some dimension\n if (boundingSector.deltaLongitude.inDegrees * cos(centroid.latitude.inRadians) > .2\n && boundingSector.deltaLatitude.inDegrees > .2\n ) {\n val labelPos = if (UTMZone != 0) centroid // Not at poles\n else if (isPositionInside(Position(squareCenter.latitude, squareCenter.longitude, 0.0))) squareCenter\n else if (squareCenter.latitude.inDegrees <= UTMZoneSector.maxLatitude.inDegrees\n && squareCenter.latitude.inDegrees >= UTMZoneSector.minLatitude.inDegrees) centroid\n else null\n if (labelPos != null) {\n val text = layer.createTextRenderable(\n Position(labelPos.latitude, labelPos.longitude, 0.0), name!!, size * 10\n )\n gridElements!!.add(GridElement(boundingSector, text, TYPE_GRIDZONE_LABEL))\n }\n }\n }\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\nimport kotlin.jvm.JvmStatic\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nabstract class AbstractMercatorImageTile(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): ImageTile(sector, level, row, column) {\n companion object {\n /**\n * Creates all Mercator tiles for a specified level within a LevelSet.\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result a pre-allocated Collection in which to store the results\n */\n @JvmStatic\n fun assembleMercatorTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList) {\n val sector = fromSector(level.parent.sector)\n val tileOrigin = level.parent.tileOrigin\n val dLat = level.tileDelta.latitude\n val dLon = level.tileDelta.longitude\n val firstRow = computeRow(dLat, sector.minLatitude, tileOrigin.latitude)\n val lastRow = computeLastRow(dLat, sector.maxLatitude, tileOrigin.latitude)\n val firstCol = computeColumn(dLon, sector.minLongitude, tileOrigin.longitude)\n val lastCol = computeLastColumn(dLon, sector.maxLongitude, tileOrigin.longitude)\n val dLatPercent = dLat.inDegrees / sector.deltaLatitude.inDegrees * (sector.maxLatPercent - sector.minLatPercent)\n val firstRowPercent = gudermannianInverse(tileOrigin.latitude) + firstRow * dLatPercent\n val firstColLon = tileOrigin.longitude.plusDegrees(firstCol * dLon.inDegrees)\n var d1 = firstRowPercent\n for (row in firstRow..lastRow) {\n val d2 = d1 + dLatPercent\n var t1 = firstColLon\n for (col in firstCol..lastCol) {\n val t2 = t1 + dLon\n result.add(tileFactory.createTile(MercatorSector(d1, d2, t1, t2), level, row, col))\n t1 = t2\n }\n d1 = d2\n }\n }\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its LevelSet.\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n override fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n val sector = sector as MercatorSector\n val d0 = sector.minLatPercent\n val d2 = sector.maxLatPercent\n val d1 = d0 + (d2 - d0) / 2.0\n val t0 = sector.minLongitude\n val t2 = sector.maxLongitude\n val t1 = average(t0, t2)\n val northRow = 2 * row\n val southRow = northRow + 1\n val westCol = 2 * column\n val eastCol = westCol + 1\n val child0 = tileFactory.createTile(MercatorSector(d0, d1, t0, t1), childLevel, northRow, westCol)\n val child1 = tileFactory.createTile(MercatorSector(d0, d1, t1, t2), childLevel, northRow, eastCol)\n val child2 = tileFactory.createTile(MercatorSector(d1, d2, t0, t1), childLevel, southRow, westCol)\n val child3 = tileFactory.createTile(MercatorSector(d1, d2, t1, t2), childLevel, southRow, eastCol)\n return arrayOf(child0, child1, child2, child3)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Sector\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\nopen class MercatorSector(\n val minLatPercent: Double, val maxLatPercent: Double, minLongitude: Angle, maxLongitude: Angle\n): Sector(gudermannian(minLatPercent), gudermannian(maxLatPercent), minLongitude, maxLongitude) {\n companion object {\n @JvmStatic\n fun fromDegrees(\n minLatPercent: Double, maxLatPercent: Double, minLonDegrees: Double, maxLonDegrees: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n\n @JvmStatic\n fun fromRadians(\n minLatPercent: Double, maxLatPercent: Double, minLonRadians: Double, maxLonRadians: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n\n @JvmStatic\n fun fromSector(sector: Sector) = MercatorSector(\n gudermannianInverse(sector.minLatitude), gudermannianInverse(sector.maxLatitude),\n sector.minLongitude, sector.maxLongitude\n )\n\n @JvmStatic\n fun gudermannianInverse(latitude: Angle) = ln(tan(PI / 4.0 + latitude.inRadians / 2.0)) / PI\n\n @JvmStatic\n fun gudermannian(percent: Double) = fromRadians(atan(sinh(percent * PI)))\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.TileFactory\n\nabstract class MercatorTiledImageLayer(\n name: String, numLevels: Int, tileSize: Int, transparent: Boolean\n): TiledImageLayer(name) {\n private val tileFactory = object : TileFactory {\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) =\n MercatorImageTile(sector as MercatorSector, level, row, column).apply {\n imageSource = getImageSource(column, (1 shl level.levelNumber) - 1 - row, level.levelNumber)?.also {\n it.postprocessor = this as ResourcePostprocessor<*>\n }\n }\n }\n\n init {\n val sector = MercatorSector(-1.0, 1.0, NEG180, POS180)\n val tileOrigin = Location(sector.minLatitude, sector.minLongitude)\n val firstLevelDelta = Location(sector.deltaLatitude, sector.deltaLongitude)\n val levelSet = LevelSet(sector, tileOrigin, firstLevelDelta, numLevels, tileSize, tileSize)\n tiledSurfaceImage = MercatorTiledSurfaceImage(tileFactory, levelSet).apply {\n // Reduce memory usage by using a 16-bit configuration with no alpha\n if (!transparent) imageOptions = ImageOptions(ImageConfig.RGB_565)\n levelOffset = 1 // Skip topmost level with bad resolution from processing\n }\n }\n\n protected abstract fun getImageSource(x: Int, y: Int, z: Int): ImageSource?\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.TileFactory\n\nopen class MercatorTiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet) : TiledSurfaceImage(tileFactory, levelSet) {\n override fun createTopLevelTiles() {\n levelSet.firstLevel?.let { AbstractMercatorImageTile.assembleMercatorTilesForLevel(it, tileFactory, topLevelTiles) }\n }\n}","package earth.worldwind.layer.mercator.google\n\nimport earth.worldwind.layer.mercator.MercatorTiledImageLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.locale.language\n\nclass GoogleLayer(type: Type): MercatorTiledImageLayer(type.layerName, 22, 256, type.overlay) {\n private val lyrs = type.lyrs\n\n enum class Type(val layerName: String, val lyrs: String, val overlay: Boolean) {\n ROADMAP(\"Google road map\", \"m\", false),\n ROADMAP2(\"Google road map 2\", \"r\", false),\n TERRAIN(\"Google map w/ terrain\", \"p\", false),\n TERRAIN_ONLY(\"Google terrain only\", \"t\", false),\n HYBRID(\"Google hybrid\", \"y\", false),\n SATELLITE(\"Google satellite\", \"s\", false),\n ROADS(\"Google roads\", \"h\", true),\n TRAFFIC(\"Google traffic\", \"h,traffic&style=15\", true);\n }\n\n override fun getImageSource(x: Int, y: Int, z: Int) =\n ImageSource.fromUrlString(\"https://mt.google.com/vt/lyrs=$lyrs&x=$x&y=$y&z=$z&hl=$language\")\n}","package earth.worldwind.layer.starfield\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.MR\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableLambda\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ALIASED_POINT_SIZE_RANGE\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_POINTS\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.decodeFromString\nimport kotlinx.serialization.json.Json\n\n/**\n * Constructs a layer showing stars and the Sun around the Earth.\n * If used together with the AtmosphereLayer, the StarFieldLayer must be inserted before the AtmosphereLayer.\n *\n * If you want to use your own star data, the file provided must be .json\n * and the fields \"ra\", \"dec\" and \"vmag\" must be present in the metadata.\n * ra and dec must be expressed in degrees.\n *\n * This layer uses J2000.0 as the ref epoch.\n *\n * If the star data .json file is too big, consider enabling gzip compression on your web server.\n * For more info about enabling gzip compression consult the configuration for your web server.\n */\nopen class StarFieldLayer(starDataSource: FileResource = MR.files.stars): AbstractLayer(\"StarField\") {\n override var isPickEnabled = false // The StarField Layer is not pickable.\n /**\n * Resource for the stars data\n */\n var starDataSource = starDataSource\n set(value) {\n field = value\n invalidateStarData()\n }\n /**\n * Resource for the sun texture image.\n */\n var sunImageSource = ImageSource.fromResource(MR.images.sun_texture)\n /**\n * The size of the Sun in pixels.\n * This can not exceed the maximum allowed pointSize of the GPU.\n * A warning will be given if the size is too big and the allowed max size will be used.\n */\n var sunSize = 128f\n /**\n * Indicates weather to show or hide the Sun\n */\n var isShowSun = true\n /**\n * Display star field on a specified time point. If null, then current time will be used each frame.\n */\n var time : Instant? = null\n protected val matrix = Matrix4() //The MVP matrix of this layer.\n protected var starsPositionsVboCacheKey = nextCacheKey() //gpu cache key for the stars vbo.\n protected var numStars = 0\n protected var starData: StarData? = null\n protected var minMagnitude = Float.MAX_VALUE\n protected var maxMagnitude = Float.MIN_VALUE\n protected var sunBufferViewHashCode = 0\n /**\n * A flag to indicate the star data is currently being retrieved.\n */\n protected var loadStarted = false\n protected val minScale = 10e6\n protected var sunPositionsCacheKey = nextCacheKey()\n protected val sunBufferView = FloatArray(4)\n protected var MAX_GL_POINT_SIZE = 0f\n\n protected fun nextCacheKey() = Any()\n\n protected open fun invalidateStarData() {\n starData = null\n starsPositionsVboCacheKey = nextCacheKey()\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Star Field layer is not applicable for 2D globe\n\n loadStarData(rc)\n\n val sunTexture = rc.getTexture(sunImageSource, null) ?: return // Sun texture is not loaded yet\n val starData = starData ?: return // Star data is not loaded yet\n val starsPositionsBuffer = rc.getBufferObject(starsPositionsVboCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, createStarsGeometry(starData, rc))\n }\n val time = time ?: Clock.System.now()\n // Number of days since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val julianDate = SunPosition.computeJulianDate(time)\n val sunCelestialLocation = SunPosition.getAsCelestialLocation(time)\n\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n sunBufferView[0] = sunCelestialLocation.declination.inDegrees.toFloat()\n sunBufferView[1] = sunCelestialLocation.rightAscension.inDegrees.toFloat()\n sunBufferView[2] = sunSize.coerceAtMost(MAX_GL_POINT_SIZE)\n sunBufferView[3] = 1f\n\n val hashCode = sunBufferView.contentHashCode()\n if (sunBufferViewHashCode != hashCode) {\n sunBufferViewHashCode = hashCode\n sunPositionsCacheKey = nextCacheKey()\n }\n val sunPositionsBuffer = rc.getBufferObject(sunPositionsCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, sunBufferView)\n }\n\n val scale = (rc.camera.position.altitude * 1.5).coerceAtLeast(minScale)\n matrix.copy(rc.modelviewProjection)\n matrix.multiplyByScale(scale, scale, scale)\n\n val program = rc.getShaderProgram { StarFieldProgram() }\n rc.offerDrawable(DrawableLambda { dc ->\n program.useProgram(dc)\n dc.gl.depthMask(false)\n try {\n program.loadModelviewProjection(matrix)\n // This subtraction does not work properly on the GPU due to precision loss. It must be done on the CPU.\n program.loadNumDays((julianDate - 2451545.0).toFloat())\n renderStars(dc, program, starsPositionsBuffer)\n if (isShowSun) renderSun(dc, program, sunPositionsBuffer, sunTexture)\n } finally {\n dc.gl.depthMask(true)\n }\n }, DrawableGroup.BACKGROUND, 0.0)\n }\n\n protected open fun loadStarData(rc: RenderContext) {\n if (starData == null && !loadStarted) {\n loadStarted = true\n rc.renderResourceCache.retrieveTextFile(starDataSource) {\n starData = Json.decodeFromString(it)\n loadStarted = false\n WorldWind.requestRedraw()\n }\n }\n }\n\n protected open fun renderStars(dc: DrawContext, program: StarFieldProgram, buffer: FloatBufferObject) {\n buffer.bindBuffer(dc)\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadMagnitudeRange(minMagnitude, maxMagnitude)\n program.loadTextureEnabled(false)\n dc.gl.drawArrays(GL_POINTS, 0, numStars)\n }\n\n protected open fun renderSun(\n dc: DrawContext, program: StarFieldProgram, sunBuffer: FloatBufferObject, sunTexture: Texture\n ) {\n if (MAX_GL_POINT_SIZE == 0f) MAX_GL_POINT_SIZE = dc.gl.getParameterfv(GL_ALIASED_POINT_SIZE_RANGE)[1]\n\n if (sunSize > MAX_GL_POINT_SIZE)\n log(WARN, \"StarFieldLayer - sunSize is to big, max size allowed is: $MAX_GL_POINT_SIZE\")\n\n sunBuffer.bindBuffer(dc)\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadTextureEnabled(true)\n sunTexture.bindTexture(dc)\n dc.gl.drawArrays(GL_POINTS, 0, 1)\n }\n\n protected open fun createStarsGeometry(starData: StarData, rc: RenderContext): FloatArray {\n val indexes = parseStarsMetadata(starData.metadata)\n require(indexes[0] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing ra field in star data.\")\n }\n require(indexes[1] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing dec field in star data.\")\n }\n require(indexes[2] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing vmag field in star data.\")\n }\n\n numStars = starData.data.size\n minMagnitude = Float.MAX_VALUE\n maxMagnitude = Float.MIN_VALUE\n\n val positions = FloatArray(numStars * 4)\n var positionIndex = 0\n for (i in starData.data.indices) {\n val starInfo = starData.data[i]\n val rightAscension = starInfo[indexes[0]] //for longitude\n val declination = starInfo[indexes[1]] //for latitude\n val magnitude = starInfo[indexes[2]]\n val pointSize = if (magnitude < 2) 2f else 1f\n\n positions[positionIndex++] = declination\n positions[positionIndex++] = rightAscension\n positions[positionIndex++] = pointSize * rc.densityFactor\n positions[positionIndex++] = magnitude\n\n minMagnitude = minMagnitude.coerceAtMost(magnitude)\n maxMagnitude = maxMagnitude.coerceAtLeast(magnitude)\n }\n\n return positions\n }\n\n protected open fun parseStarsMetadata(metadata: List): Array {\n var raIndex = -1\n var decIndex = -1\n var magIndex = -1\n for (i in metadata.indices) {\n val starMetaInfo = metadata[i]\n if (starMetaInfo.name == \"ra\") raIndex = i\n if (starMetaInfo.name == \"dec\") decIndex = i\n if (starMetaInfo.name == \"vmag\") magIndex = i\n }\n return arrayOf(raIndex, decIndex, magIndex)\n }\n\n @Serializable\n data class StarMetadata(\n val name: String, val description: String, val datatype: String,\n val arraysize: Int, val unit: String, val ucd: String\n )\n\n @Serializable\n data class StarData(val metadata: List, val data: List>)\n}\n","package earth.worldwind.layer.starfield\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n/**\n * StarFieldProgram is a GLSL program that draws points representing stars.\n */\nopen class StarFieldProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n attribute vec4 vertexPoint;\n\n uniform mat4 mvpMatrix;\n /* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\n uniform float numDays;\n uniform vec2 magnitudeRange;\n\n varying float magnitudeWeight;\n\n /* normalizes an angle between 0.0 and 359.0 */\n float normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n }\n\n /* transforms declination and right ascension in cartesian coordinates */\n vec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n }\n\n /* normalizes a value between 0.0 and 1.0 */\n float normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n }\n\n void main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform sampler2D textureSampler;\n uniform int textureEnabled;\n\n varying float magnitudeWeight;\n\n const vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n const vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\n void main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n /* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var numDaysId = KglUniformLocation.NONE\n protected var magnitudeRangeId = KglUniformLocation.NONE\n protected var textureUnitId = KglUniformLocation.NONE\n protected var textureEnabledId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\");\n numDaysId = gl.getUniformLocation(program, \"numDays\");\n magnitudeRangeId = gl.getUniformLocation(program, \"magnitudeRange\");\n textureUnitId = gl.getUniformLocation(program, \"textureSampler\");\n textureEnabledId = gl.getUniformLocation(program, \"textureEnabled\");\n }\n\n /**\n * Loads the specified matrix as the value of this program's 'mvpMatrix' uniform variable.\n *\n * @param matrix The matrix to load.\n */\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n /**\n * Loads the specified number as the value of this program's 'numDays' uniform variable.\n *\n * @param numDays The number of days (positive or negative) since Greenwich noon, Terrestrial Time,\n * on 1 January 2000 (J2000.0)\n */\n fun loadNumDays(numDays: Float) = gl.uniform1f(numDaysId, numDays)\n\n /**\n * Loads the specified numbers as the value of this program's 'magnitudeRange' uniform variable.\n *\n * @param minMag Minimal magnitude\n * @param maxMag Maximal magnitude\n */\n fun loadMagnitudeRange(minMag: Float, maxMag: Float) = gl.uniform2f(magnitudeRangeId, minMag, maxMag)\n\n /**\n * Loads the specified number as the value of this program's 'textureSampler' uniform variable.\n *\n * @param unit The texture unit.\n */\n fun loadTextureUnit(unit: Int) = gl.uniform1i(textureUnitId, unit - GL_TEXTURE0);\n\n /**\n * Loads the specified boolean as the value of this program's 'textureEnabledLocation' uniform variable.\n *\n * @param value Texture enabled\n */\n fun loadTextureEnabled(value: Boolean) = gl.uniform1i(textureEnabledId, if (value) 1 else 0)\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationTileFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\n\n/**\n * Generates elevations from OGC Web Map Service (WMS) version 1.3.0.\n *\n * @param serviceAddress OGC Web Map Service (WMS) server address\n * @param coverage comma-separated coverage names\n * @param imageFormat required image format\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\nopen class WmsElevationCoverage(\n serviceAddress: String, coverage: String, imageFormat: String, sector: Sector, resolution: Angle\n): TiledElevationCoverage(\n buildTileMatrixSet(sector, resolution), buildTileFactory(serviceAddress, coverage, imageFormat)\n) {\n companion object {\n /**\n * 4x2 top level matrix equivalent to 90 degree top level tiles\n *\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n private fun buildTileMatrixSet(sector: Sector, resolution: Angle) = TileMatrixSet.fromTilePyramid(\n sector, 4, 2, 256, 256, resolution\n )\n\n private fun buildTileFactory(serviceAddress: String, coverage: String, imageFormat: String): ElevationTileFactory {\n val layerConfig = WmsLayerConfig(serviceAddress, coverage).apply { this.imageFormat = imageFormat }\n val wmsTileFactory = WmsTileFactory(layerConfig)\n return object : ElevationTileFactory {\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val tileSector = tileMatrix.tileSector(row, column)\n val urlString = wmsTileFactory.urlForTile(tileSector, tileMatrix.tileWidth, tileMatrix.tileHeight)\n return ElevationSource.fromUrlString(urlString)\n }\n }\n }\n }\n}","package earth.worldwind.ogc\n\n/**\n * Configuration values for a WMS layer.\n */\nclass WmsLayerConfig(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String\n) {\n /**\n * The WMS protocol version. Defaults to 1.3.0.\n */\n var wmsVersion = \"1.3.0\"\n /**\n * The comma-separated list of WMS style names.\n */\n var styleNames: String? = null\n /**\n * The coordinate reference system to use when requesting layers. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map requests.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map requests should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map requests.\n */\n var timeString: String? = null\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.wms.WmsCapabilities\nimport earth.worldwind.ogc.wms.WmsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LevelSetConfig\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.ExperimentalXmlUtilApi\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmsLayerFactory {\n\n private const val DEFAULT_WMS_NUM_LEVELS = 20\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n @OptIn(ExperimentalXmlUtilApi::class)\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n suspend fun createLayer(serviceAddress: String, layerNames: List): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerNames.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmsCapabilities = retrieveWmsCapabilities(serviceAddress)\n val wmsLayers = layerNames.mapNotNull { layerName -> wmsCapabilities.getNamedLayer(layerName) }\n require(wmsLayers.isNotEmpty()) {\n makeMessage(\"WmsLayerFactory\", \"createLayer\", \"Provided layers did not match available layers\")\n }\n // Collect WMS Layer Titles to set the Layer Display Name\n return object : TiledImageLayer(wmsLayers.joinToString(\",\") { lc -> lc.title }) {\n init { tiledSurfaceImage = createWmsSurfaceImage(wmsLayers) }\n }\n }\n\n private suspend fun retrieveWmsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.3.0\")\n .appendQueryParameter(\"SERVICE\", \"WMS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }.let { xmlText ->\n withContext(Dispatchers.Default) { xml.decodeFromString(xmlText) }\n }\n\n private fun createWmsSurfaceImage(wmsLayers: List): TiledSurfaceImage {\n // Check if the server supports multiple layer request\n val layerLimit = wmsLayers[0].capability?.capabilities?.service?.layerLimit\n require (layerLimit != null && layerLimit >= wmsLayers.size) {\n makeMessage(\n \"WmsLayerFactory\", \"createFromWmsAsync\",\n \"The number of layers specified exceeds the services limit\"\n )\n }\n val wmsLayerConfig = getLayerConfigFromWmsCapabilities(wmsLayers)\n val levelSetConfig = getLevelSetConfigFromWmsCapabilities(wmsLayers)\n return TiledSurfaceImage(WmsTileFactory(wmsLayerConfig), LevelSet(levelSetConfig))\n }\n\n internal fun getLayerConfigFromWmsCapabilities(wmsLayers: List): WmsLayerConfig {\n // Construct the WmsTiledImage renderable from the WMS Capabilities properties\n val wmsCapabilities = wmsLayers[0].capability?.capabilities\n val serviceAddress = wmsCapabilities?.capability?.request?.getMap?.getUrl ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Unable to resolve GetMap URL\")\n )\n var matchingCoordinateSystems: MutableSet? = null\n for (wmsLayer in wmsLayers) {\n val wmsLayerCoordinateSystems = wmsLayer.referenceSystems\n if (matchingCoordinateSystems == null) matchingCoordinateSystems = wmsLayerCoordinateSystems.toMutableSet()\n else matchingCoordinateSystems.retainAll(wmsLayerCoordinateSystems.toSet())\n }\n val wmsLayerConfig = WmsLayerConfig(serviceAddress, wmsLayers.joinToString(\",\") { l -> l.name ?: \"\" })\n when (val wmsVersion = wmsCapabilities.version) {\n \"1.3.0\" -> wmsLayerConfig.wmsVersion = wmsVersion\n else -> error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Version not compatible\")\n )\n }\n if (matchingCoordinateSystems?.contains(\"EPSG:4326\") == true) {\n wmsLayerConfig.coordinateSystem = \"EPSG:4326\"\n } else if (matchingCoordinateSystems?.contains(\"CRS:84\") == true) {\n wmsLayerConfig.coordinateSystem = \"CRS:84\"\n } else error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Coordinate systems not compatible\")\n )\n\n // Negotiate Image Formats\n val imageFormats = wmsCapabilities.capability.request.getMap.formats\n wmsLayerConfig.imageFormat = compatibleImageFormats.firstOrNull { format -> imageFormats.contains(format) } ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Image Formats Not Compatible\")\n )\n\n // Setup transparency. If at least one layer is opaque then transparency is disabled\n wmsLayerConfig.isTransparent = !wmsLayers.any { layer -> layer.isOpaque }\n\n return wmsLayerConfig\n }\n\n internal fun getLevelSetConfigFromWmsCapabilities(layerCapabilities: List): LevelSetConfig {\n val levelSetConfig = LevelSetConfig()\n var minScaleDenominator = Double.MAX_VALUE\n val sector = Sector()\n for (layerCapability in layerCapabilities) {\n layerCapability.minScaleDenominator?.let { minScaleDenominator = minScaleDenominator.coerceAtMost(it) }\n layerCapability.geographicBoundingBox?.let { sector.union(it) }\n }\n if (!sector.isEmpty) levelSetConfig.sector.copy(sector) else error(\n makeMessage(\n \"WmsLayerFactory\", \"getLevelSetConfigFromWmsCapabilities\", \"Geographic Bounding Box Not Defined\"\n )\n )\n levelSetConfig.numLevels = when {\n minScaleDenominator != Double.MAX_VALUE -> {\n // WMS 1.3.0 scale configuration. Based on the WMS 1.3.0 spec page 28. The hard coded value 0.00028 is\n // detailed in the spec as the common pixel size of 0.28mm x 0.28mm. Configures the maximum level not to\n // exceed the specified min scale denominator.\n val minMetersPerPixel = minScaleDenominator * 0.00028\n val minRadiansPerPixel = minMetersPerPixel / Ellipsoid.WGS84.semiMajorAxis\n levelSetConfig.numLevelsForMinResolution(minRadiansPerPixel)\n }\n else -> DEFAULT_WMS_NUM_LEVELS // Default scale configuration when no minimum scale denominator or scale hint is provided.\n }\n return levelSetConfig\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ln\nimport kotlin.math.roundToInt\n\n/**\n * Multi-resolution, hierarchical collection of tiles organized into levels of increasing resolution. Applications\n * typically do not interact with this class.\n */\nopen class LevelSet {\n /**\n * The sector spanned by this level set.\n */\n val sector: Sector\n /**\n * Tile origin for this level set\n */\n val tileOrigin: Location\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of this level set.\n */\n val firstLevelDelta: Location\n /**\n * The width in pixels of images associated with tiles in this level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with this level set.\n */\n val tileWidth: Int\n /**\n * The height in pixels of images associated with tiles in this level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with this level set.\n */\n val tileHeight: Int\n /**\n * The hierarchical levels, sorted from lowest to highest resolution.\n */\n protected val levels: Array\n /**\n * Returns the number of levels in this level set.\n */\n val numLevels get() = levels.size\n /**\n * Returns the first level (the lowest resolution) of this level set.\n */\n val firstLevel get() = if (levels.isNotEmpty()) levels[0] else null\n /**\n * Returns the last level (the highest resolution) of this level set.\n */\n val lastLevel get() = if (levels.isNotEmpty()) levels[levels.size - 1] else null\n\n /**\n * Constructs an empty level set with no levels. The methods `level`, `levelForResolution`,\n * `firstLevel` and `lastLevel` always return null.\n */\n constructor() {\n sector = Sector()\n tileOrigin = Location()\n firstLevelDelta = Location()\n tileWidth = 0\n tileHeight = 0\n levels = emptyArray()\n }\n\n /**\n * Constructs a level set with specified parameters.\n *\n * @param sector the sector spanned by this level set\n * @param tileOrigin the origin for this level set\n * @param firstLevelDelta the geographic width and height of tiles in the first level (the lowest resolution)\n * of the level set\n * @param numLevels the number of levels in the level set\n * @param tileWidth the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the longitudinal direction of elevation tiles associate with this leve set\n * @param tileHeight the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the latitudinal direction of elevation tiles associate with this level set\n *\n * @throws IllegalArgumentException If any dimension is zero\n */\n constructor(\n sector: Sector, tileOrigin: Location, firstLevelDelta: Location, numLevels: Int, tileWidth: Int, tileHeight: Int\n ) {\n require(firstLevelDelta.latitude.inDegrees > 0.0 && firstLevelDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidTileDelta\")\n }\n require(numLevels >= 0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidNumLevels\")\n }\n require(tileWidth >= 1 && tileHeight >= 1) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidWidthOrHeight\")\n }\n this.sector = sector\n this.tileOrigin = tileOrigin\n this.firstLevelDelta = firstLevelDelta\n this.tileWidth = tileWidth\n this.tileHeight = tileHeight\n this.levels = Array(numLevels) {\n val divisor = (1 shl it).toDouble()\n Level(this, it, Location(firstLevelDelta.latitude / divisor, firstLevelDelta.longitude / divisor))\n }\n }\n\n /**\n * Constructs a level set with parameters from a specified configuration. The configuration's sector must be\n * non-null, its first level delta must be positive, its number of levels must be 1 or more, and its tile width and\n * tile height must be 1 or greater.\n *\n * @param config the configuration for this level set\n */\n constructor(config: LevelSetConfig): this(\n config.sector,\n config.tileOrigin,\n config.firstLevelDelta,\n config.numLevels,\n config.tileWidth,\n config.tileHeight\n )\n\n /**\n * Returns the [Level] for a specified level number.\n *\n * @param levelNumber the number of the desired level\n *\n * @return the requested level, or null if the level does not exist\n */\n fun level(levelNumber: Int) = if (levelNumber in levels.indices) levels[levelNumber] else null\n\n /**\n * Returns the level that most closely approximates the specified resolution.\n *\n * @param resolution the desired resolution in angular value of latitude per pixel.\n *\n * @return the level for the specified resolution, or null if this level set is empty\n *\n * @throws IllegalArgumentException If the resolution is not positive\n * @throws IllegalStateException If this level set is empty\n */\n fun levelForResolution(resolution: Angle): Level {\n require(resolution.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSetConfig\", \"levelForResolution\", \"invalidResolution\")\n }\n if (levels.isEmpty()) error(\"This level set is empty\")\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / resolution.inDegrees) / ln(2.0) // fractional level address\n val levelNumber = level.roundToInt() // nearest neighbor level\n return when {\n levelNumber < 0 -> levels[0] // unable to match the resolution; return the first level\n levelNumber < levels.size -> levels[levelNumber] // nearest neighbor level is in this level set\n else -> levels[levels.size - 1] // unable to match the resolution; return the last level\n }\n }\n}",null,"package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.TileFactory\n\n/**\n * Factory for constructing URLs associated with WMS Get Map requests.\n */\nopen class WmsTileFactory(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n\n /**\n * The WMS protocol version.\n */\n var wmsVersion: String,\n\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String,\n /**\n * The comma-separated list of WMS style names. May be null in which case the default style is assumed.\n */\n var styleNames: String?\n): TileFactory {\n /**\n * The coordinate reference system to use in Get Map URLs. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map URLs. May be null in which case a default format is assumed.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map URLs should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map URLs. May be null in which case no time parameter is included.\n */\n var timeString: String? = null\n\n /**\n * Constructs a level set with a specified configuration. The configuration's service address, WMS protocol version,\n * layer names and coordinate reference system must be non-null. The style names may be null, in which case the\n * default style is assumed. The time string may be null, in which case no time parameter is included.\n *\n * @param config the configuration for this URL builder\n */\n constructor(config: WmsLayerConfig): this(config.serviceAddress, config.wmsVersion, config.layerNames, config.styleNames) {\n coordinateSystem = config.coordinateSystem\n imageFormat = config.imageFormat\n isTransparent = config.isTransparent\n timeString = config.timeString\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(sector, level.tileWidth, level.tileHeight).let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this as ResourcePostprocessor<*> }\n }\n }\n\n fun urlForTile(sector: Sector, width: Int, height: Int) = Uri.parse(serviceAddress).buildUpon().apply {\n require(width >= 1 && height >= 1) {\n logMessage(ERROR, \"WmsTileFactory\", \"urlForTile\", \"invalidWidthOrHeight\")\n }\n appendQueryParameter(\"VERSION\", wmsVersion)\n appendQueryParameter(\"SERVICE\", \"WMS\")\n appendQueryParameter(\"REQUEST\", \"GetMap\")\n appendQueryParameter(\"LAYERS\", layerNames)\n appendQueryParameter(\"STYLES\", styleNames ?: \"\")\n appendQueryParameter(\"WIDTH\", width.toString())\n appendQueryParameter(\"HEIGHT\", height.toString())\n appendQueryParameter(\"FORMAT\", imageFormat ?: \"image/png\")\n appendQueryParameter(\"TRANSPARENT\", if (isTransparent) \"TRUE\" else \"FALSE\")\n if (wmsVersion == \"1.3.0\") {\n appendQueryParameter(\"CRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n if (coordinateSystem == \"CRS:84\") {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n } else {\n \"${minLatitude.inDegrees},${minLongitude.inDegrees},${maxLatitude.inDegrees},${maxLongitude.inDegrees}\"\n }\n })\n } else {\n appendQueryParameter(\"SRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n }\n timeString?.let{ appendQueryParameter(\"TIME\", it) }\n }.build().toString()\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.wmts.WmtsCapabilities\nimport earth.worldwind.ogc.wmts.WmtsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.TileFactory\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.ExperimentalXmlUtilApi\nimport nl.adaptivity.xmlutil.serialization.XML\nimport kotlin.math.abs\n\nobject WmtsLayerFactory {\n\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val compatibleCoordinateSystems = listOf(\n \"urn:ogc:def:crs:OGC:1.3:CRS84\",\n \"urn:ogc:def:crs:EPSG::4326\",\n \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\"\n )\n @OptIn(ExperimentalXmlUtilApi::class)\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n suspend fun createLayer(serviceAddress: String, layerIdentifier: String): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerIdentifier.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmtsLayer = retrieveWmtsCapabilities(serviceAddress).getLayer(layerIdentifier)\n requireNotNull(wmtsLayer) {\n makeMessage(\"WmtsLayerFactory\", \"createLayer\", \"The layer identifier specified was not found\")\n }\n return object : TiledImageLayer(wmtsLayer.title ?: layerIdentifier) {\n init { tiledSurfaceImage = createWmtsSurfaceImage(wmtsLayer) }\n }\n }\n\n private suspend fun retrieveWmtsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }.let { xmlText ->\n withContext(Dispatchers.Default) { xml.decodeFromString(xmlText) }\n }\n\n private fun createWmtsSurfaceImage(wmtsLayer: WmtsLayer): TiledSurfaceImage {\n // Determine if there is a TileMatrixSet which matches our Coordinate System compatibility and tiling scheme\n val compatibleTileMatrixSets = determineCoordSysCompatibleTileMatrixSets(wmtsLayer)\n require(compatibleTileMatrixSets.isNotEmpty()) {\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Coordinate Systems Not Compatible\")\n }\n\n // Search the list of coordinate system compatible tile matrix sets for compatible tiling schemes\n val compatibleTileMatrixSet = determineCompatibleTileMatrixSet(wmtsLayer.capabilities, compatibleTileMatrixSets) ?: error(\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Tile Schemes Not Compatible\")\n )\n val tileFactory = createWmtsTileFactory(wmtsLayer, compatibleTileMatrixSet)\n val levelSet = createWmtsLevelSet(wmtsLayer, compatibleTileMatrixSet)\n return TiledSurfaceImage(tileFactory, levelSet)\n }\n\n private fun createWmtsTileFactory(wmtsLayer: WmtsLayer, compatibleTileMatrixSet: CompatibleTileMatrixSet): TileFactory {\n // First choice is a ResourceURL\n for (resourceUrl in wmtsLayer.resourceUrls) if (compatibleImageFormats.contains(resourceUrl.format)) {\n val template = resourceUrl.template\n .replace(\"{style}\", wmtsLayer.styles[0].identifier)\n .replace(\"{TileMatrixSet}\", compatibleTileMatrixSet.tileMatrixSetId)\n return WmtsTileFactory(template, compatibleTileMatrixSet.tileMatrices)\n }\n\n // Second choice is if the server supports KVP\n val baseUrl = determineKvpUrl(wmtsLayer)\n return if (baseUrl != null) {\n val imageFormat = compatibleImageFormats.firstOrNull { format -> wmtsLayer.formats.contains(format) } ?: error(\n makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"Image Formats Not Compatible\")\n )\n val styleIdentifier = wmtsLayer.styles[0].identifier\n val template = buildWmtsKvpTemplate(\n baseUrl, wmtsLayer.identifier, imageFormat, styleIdentifier, compatibleTileMatrixSet.tileMatrixSetId\n )\n WmtsTileFactory(template, compatibleTileMatrixSet.tileMatrices)\n } else error(makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"No KVP Get Support\"))\n }\n\n private fun createWmtsLevelSet(wmtsLayer: WmtsLayer, compatibleTileMatrixSet: CompatibleTileMatrixSet): LevelSet {\n val boundingBox = wmtsLayer.wgs84BoundingBox?.sector ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"WGS84BoundingBox not defined for layer: \" + wmtsLayer.identifier\n )\n )\n val tileMatrixSet = wmtsLayer.capabilities.getTileMatrixSet(compatibleTileMatrixSet.tileMatrixSetId) ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"Compatible TileMatrixSet not found for: $compatibleTileMatrixSet\"\n )\n )\n val imageSize = tileMatrixSet.tileMatrices[0].tileHeight\n return LevelSet(\n boundingBox, Location(NEG90, NEG180), Location(POS90, POS90),\n compatibleTileMatrixSet.tileMatrices.size, imageSize, imageSize\n )\n }\n\n private fun buildWmtsKvpTemplate(\n kvpServiceAddress: String, layer: String, format: String, styleIdentifier: String, tileMatrixSet: String\n ) = Uri.parse(kvpServiceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetTile\")\n .appendQueryParameter(\"LAYER\", layer)\n .appendQueryParameter(\"STYLE\", styleIdentifier)\n .appendQueryParameter(\"FORMAT\", format)\n .appendQueryParameter(\"TILEMATRIXSET\", tileMatrixSet)\n .appendQueryParameter(\"TILEMATRIX\", WmtsTileFactory.TILEMATRIX_TEMPLATE)\n .appendQueryParameter(\"TILEROW\", WmtsTileFactory.TILEROW_TEMPLATE)\n .appendQueryParameter(\"TILECOL\", WmtsTileFactory.TILECOL_TEMPLATE)\n .build().toString()\n\n private fun determineCoordSysCompatibleTileMatrixSets(layer: WmtsLayer) = layer.layerSupportedTileMatrixSets\n .filter { tileMatrixSet -> compatibleCoordinateSystems.contains(tileMatrixSet.supportedCrs) }\n .map { tileMatrixSet -> tileMatrixSet.identifier }\n\n private fun determineCompatibleTileMatrixSet(\n capabilities: WmtsCapabilities, tileMatrixSetIds: List\n ): CompatibleTileMatrixSet? {\n val compatibleSet = CompatibleTileMatrixSet()\n\n // Iterate through each provided tile matrix set\n for (tileMatrixSetId in tileMatrixSetIds) {\n compatibleSet.tileMatrixSetId = tileMatrixSetId\n compatibleSet.tileMatrices.clear()\n val tileMatrixSet = capabilities.getTileMatrixSet(tileMatrixSetId)!!\n var previousHeight = 0\n // Walk through the associated tile matrices and check for compatibility with WWA tiling scheme\n for (tileMatrix in tileMatrixSet.tileMatrices) {\n // Aspect and symmetry check of current matrix\n if (2 * tileMatrix.matrixHeight != tileMatrix.matrixWidth) continue\n // Quad division check\n else if (tileMatrix.matrixWidth % 2 != 0 || tileMatrix.matrixHeight % 2 != 0) continue\n // Square image check\n else if (tileMatrix.tileHeight != tileMatrix.tileWidth) continue\n // Minimum row check\n else if (tileMatrix.matrixHeight < 2) continue\n\n // Parse top left corner values\n val topLeftCornerValue = tileMatrix.topLeftCorner.split(\"\\\\s+\".toRegex())\n if (topLeftCornerValue.size != 2) continue\n\n // Convert Values\n val topLeftCorner = try {\n doubleArrayOf(topLeftCornerValue[0].toDouble(), topLeftCornerValue[1].toDouble())\n } catch (e: Exception) {\n logMessage(\n WARN, \"WmtsLayerFactory\", \"determineTileSchemeCompatibleTileMatrixSet\",\n \"Unable to parse TopLeftCorner values\"\n )\n continue\n }\n\n // Check top left corner values\n if (tileMatrixSet.supportedCrs == \"urn:ogc:def:crs:OGC:1.3:CRS84\"\n || tileMatrixSet.supportedCrs == \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\"\n ) {\n if (abs(topLeftCorner[0] + 180) > 1e-9) continue\n else if (abs(topLeftCorner[1] - 90) > 1e-9) continue\n } else if (tileMatrixSet.supportedCrs == \"urn:ogc:def:crs:EPSG::4326\") {\n if (abs(topLeftCorner[1] + 180) > 1e-9) continue\n else if (abs(topLeftCorner[0] - 90) > 1e-9) continue\n } else {\n // The provided list of tile matrix set ids should adhere to either EPGS:4326 or CRS84\n continue\n }\n\n // Ensure quad division behavior from previous tile matrix and add compatible tile matrix\n if (previousHeight == 0) {\n previousHeight = tileMatrix.matrixHeight\n compatibleSet.tileMatrices.add(tileMatrix.identifier)\n } else if (2 * previousHeight == tileMatrix.matrixHeight) {\n previousHeight = tileMatrix.matrixHeight\n compatibleSet.tileMatrices.add(tileMatrix.identifier)\n }\n }\n\n // Return the first compatible tile matrix set\n if (compatibleSet.tileMatrices.size > 2) return compatibleSet\n }\n return null\n }\n\n /**\n * Conducts a simple search through the [WmtsLayer]s distributed computing platform resources for a URL which\n * supports KVP queries to the WMTS. This method only looks at the first entry of every array of the layers 'GET'\n * retrieval methods.\n *\n * @param layer the [WmtsLayer] to search for KVP support\n *\n * @return the URL for the supported KVP or null if KVP or 'GET' method isn't provided by the layer\n */\n private fun determineKvpUrl(layer: WmtsLayer): String? {\n val capabilities = layer.capabilities\n val operationsMetadata = capabilities.operationsMetadata ?: return null\n val getTileOperation = operationsMetadata.getTile ?: return null\n val dcp = getTileOperation.dcps\n if (dcp.isEmpty()) return null\n val getMethods = dcp[0].getMethods\n if (getMethods.isEmpty()) return null\n val constraints = getMethods[0].constraints\n if (constraints.isEmpty()) return null\n val allowedValues = constraints[0].allowedValues\n return if (allowedValues.contains(\"KVP\")) getMethods[0].url else null\n }\n\n private class CompatibleTileMatrixSet {\n lateinit var tileMatrixSetId: String\n val tileMatrices = mutableListOf()\n }\n}",null,null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.TileFactory\n\nopen class WmtsTileFactory(var template: String, var tileMatrixIdentifiers: List): TileFactory {\n companion object {\n const val TILEMATRIX_TEMPLATE = \"{TileMatrix}\"\n const val TILEROW_TEMPLATE = \"{TileRow}\"\n const val TILECOL_TEMPLATE = \"{TileCol}\"\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(level.levelNumber, row, column)?.let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this as ResourcePostprocessor<*> }\n }\n }\n\n fun urlForTile(level: Int, row: Int, column: Int): String? {\n if (level >= tileMatrixIdentifiers.size) {\n logMessage(\n Logger.WARN, \"WmtsTileFactory\", \"urlForTile\",\n \"invalid level for tileMatrixIdentifiers: $level\"\n )\n return null\n }\n\n // flip the row index\n val rowHeight = 2 shl level\n val flipRow = rowHeight - row - 1\n return template.replace(TILEMATRIX_TEMPLATE, tileMatrixIdentifiers[level])\n .replace(TILEROW_TEMPLATE, flipRow.toString()).replace(TILECOL_TEMPLATE, column.toString())\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Attribution\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAttribution(\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String? = null,\n val onlineResource: WmsOnlineResource? = null,\n val logoURL: WmsLogoUrl? = null\n) {\n val url get() = onlineResource?.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"AuthorityURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAuthorityUrl(\n val name: String,\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsBoundingBox(\n val CRS: String,\n val minx: Double,\n val maxx: Double,\n val miny: Double,\n val maxy: Double,\n val resx: Double? = null,\n val resy: Double? = null,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"WMS_Capabilities\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapabilities(\n /**\n * Returns the document's version number.\n */\n val version: String = \"1.3.0\",\n /**\n * Returns the document's update sequence.\n */\n val updateSequence: String? = null,\n /**\n * Returns the document's service information.\n */\n val service: WmsService,\n val capability: WmsCapability\n) {\n /**\n * Returns all named layers in the capabilities document.\n */\n val namedLayers get() = capability.layers.flatMap { layer -> layer.namedLayers }\n\n init {\n capability.capabilities = this\n }\n\n fun getNamedLayer(name: String) = namedLayers.firstOrNull { layer -> layer.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capability\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapability(\n val request: WmsRequest,\n val layers: List = emptyList(),\n /**\n * Object representation of an Exception element. Pre-allocated to prevent NPE in the event the server does not\n * include an Exception block.\n */\n val exception: WmsException = WmsException()\n) {\n @Transient\n lateinit var capabilities: WmsCapabilities\n\n init {\n layers.forEach { layer -> layer.capability = this }\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactAddress\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactAddress(\n @XmlElement(true)\n @XmlSerialName(\"AddressType\", WMS_NAMESPACE, WMS_PREFIX)\n val addressType: String,\n @XmlElement(true)\n @XmlSerialName(\"Address\", WMS_NAMESPACE, WMS_PREFIX)\n val address: String,\n @XmlElement(true)\n @XmlSerialName(\"City\", WMS_NAMESPACE, WMS_PREFIX)\n val city: String,\n @XmlElement(true)\n @XmlSerialName(\"StateOrProvince\", WMS_NAMESPACE, WMS_PREFIX)\n val stateOrProvince: String,\n @XmlElement(true)\n @XmlSerialName(\"PostCode\", WMS_NAMESPACE, WMS_PREFIX)\n val postCode: String,\n @XmlElement(true)\n @XmlSerialName(\"Country\", WMS_NAMESPACE, WMS_PREFIX)\n val country: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInformation\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactInformation(\n @XmlElement(true)\n @XmlSerialName(\"ContactPosition\", WMS_NAMESPACE, WMS_PREFIX)\n val position: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactVoiceTelephone\", WMS_NAMESPACE, WMS_PREFIX)\n val voiceTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactFacsimileNumber\", WMS_NAMESPACE, WMS_PREFIX)\n val facsimileTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactElectronicMailAddress\", WMS_NAMESPACE, WMS_PREFIX)\n val electronicMailAddress: String? = null,\n val contactAddress: WmsContactAddress? = null,\n val contactPersonPrimary: WmsContactPersonPrimary? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactPersonPrimary\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactPersonPrimary(\n @XmlElement(true)\n @XmlSerialName(\"ContactPerson\", WMS_NAMESPACE, WMS_PREFIX)\n val contactPerson: String,\n @XmlElement(true)\n @XmlSerialName(\"ContactOrganization\", WMS_NAMESPACE, WMS_PREFIX)\n val contactOrganization: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCPType\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDcpType(\n val http: WmsHttp\n) {\n val getHref get() = http.get.onlineResource.url\n val postHref get() = http.post?.onlineResource?.url\n\n @Serializable\n @XmlSerialName(\"HTTP\", WMS_NAMESPACE, WMS_PREFIX)\n data class WmsHttp(\n @XmlSerialName(\"Get\", WMS_NAMESPACE, WMS_PREFIX)\n val get: WmsHttpProtocol,\n @XmlSerialName(\"Post\", WMS_NAMESPACE, WMS_PREFIX)\n val post: WmsHttpProtocol? = null,\n )\n\n @Serializable\n data class WmsHttpProtocol(\n val onlineResource: WmsOnlineResource\n )\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDimension(\n val name: String,\n val units: String,\n val unitSymbol: String? = null,\n val default: String? = null,\n val multipleValues: Boolean? = null,\n val nearestValue: Boolean? = null,\n val current: Boolean? = null,\n @XmlValue(true)\n val value: String? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Exception\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsException(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList()\n)","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"EX_GeographicBoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsGeographicBoundingBox(\n @XmlElement(true)\n @XmlSerialName(\"northBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val north: Double,\n @XmlElement(true)\n @XmlSerialName(\"eastBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val east: Double,\n @XmlElement(true)\n @XmlSerialName(\"southBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val south: Double,\n @XmlElement(true)\n @XmlSerialName(\"westBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val west: Double\n) {\n val geographicBoundingBox get() = fromDegrees(south, west, north - south, east - west)\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Identifier\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsIdentifier(\n val authority: String,\n @XmlValue(true)\n val identifier: String,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsInfoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLayer(\n // Properties of the Layer element\n val layers: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = emptyList(),\n private val _styles: List = emptyList(),\n @XmlSerialName(\"CRS\", WMS_NAMESPACE, WMS_PREFIX)\n private val _referenceSystems: List = emptyList(),\n private val _geographicBoundingBox: WmsGeographicBoundingBox? = null,\n private val _boundingBoxes: List = emptyList(),\n private val _dimensions: List = emptyList(),\n private val _attribution: WmsAttribution? = null,\n private val _authorityUrls: List = emptyList(),\n val identifiers: List = emptyList(),\n val metadataUrls: List = emptyList(),\n @XmlSerialName(\"DataURL\", WMS_NAMESPACE, WMS_PREFIX)\n val dataUrls: List = emptyList(),\n @XmlSerialName(\"FeatureListURL\", WMS_NAMESPACE, WMS_PREFIX)\n val featureListUrls: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"MaxScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _maxScaleDenominator: Double? = null,\n @XmlElement(true)\n @XmlSerialName(\"MinScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _minScaleDenominator: Double? = null,\n // Properties of the Layer attributes\n @XmlSerialName(\"queryable\", WMS_NAMESPACE, WMS_PREFIX)\n val isQueryable: Boolean = false,\n @XmlSerialName(\"cascaded\", WMS_NAMESPACE, WMS_PREFIX)\n private val _cascaded: Int? = null,\n @XmlSerialName(\"opaque\", WMS_NAMESPACE, WMS_PREFIX)\n val isOpaque: Boolean = false,\n @XmlSerialName(\"noSubsets\", WMS_NAMESPACE, WMS_PREFIX)\n val isNoSubsets: Boolean = false,\n @XmlSerialName(\"fixedWidth\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedWidth: Int? = null,\n @XmlSerialName(\"fixedHeight\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedHeight: Int? = null,\n) {\n val namedLayers: List get() = (name?.let { listOf(this) } ?: emptyList()) + layers.flatMap { layer -> layer.namedLayers }\n val styles: List get() = _styles + (parent?.styles ?: emptyList())\n val referenceSystems: List get() = _referenceSystems + (parent?.referenceSystems ?: emptyList())\n val geographicBoundingBox: Sector? get() = _geographicBoundingBox?.geographicBoundingBox ?: parent?.geographicBoundingBox\n val boundingBoxes get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._boundingBoxes.forEach { bBox -> if (!result.containsKey(bBox.CRS)) result[bBox.CRS] = bBox }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val dimensions get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._dimensions.forEach { dimen -> if (!result.containsKey(dimen.name)) result[dimen.name] = dimen }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val attribution: WmsAttribution? get() = _attribution ?: parent?.attribution\n val authorityUrls: List get() = _authorityUrls + (parent?.authorityUrls ?: emptyList())\n val maxScaleDenominator: Double? get() = _maxScaleDenominator ?: parent?.maxScaleDenominator\n val minScaleDenominator: Double? get() = _minScaleDenominator ?: parent?.minScaleDenominator\n val cascaded: Int? get() = _cascaded ?: parent?.cascaded\n val fixedWidth: Int? get() = _fixedWidth ?: parent?.fixedWidth\n val fixedHeight: Int? get() = _fixedHeight ?: parent?.fixedHeight\n @Transient\n var capability: WmsCapability? = null\n get() = field ?: parent?.capability\n @Transient\n var parent: WmsLayer? = null\n\n init {\n layers.forEach { layer -> layer.parent = this }\n }\n\n fun getStyle(name: String) = styles.firstOrNull { style -> style.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LogoURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLogoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: Set = setOf(),\n val onlineResource: WmsOnlineResource,\n val width: Int? = null,\n val height: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"MetadataURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsMetadataUrl(\n val type: String,\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsOnlineResource(\n @XmlSerialName(\"type\", XLINK_NAMESPACE, XLINK_PREFIX)\n val type: String = \"simple\",\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Request\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsRequest(\n @XmlSerialName(\"GetCapabilities\", WMS_NAMESPACE, WMS_PREFIX)\n val getCapabilities: WmsRequestOperation,\n @XmlSerialName(\"GetMap\", WMS_NAMESPACE, WMS_PREFIX)\n val getMap: WmsRequestOperation,\n @XmlSerialName(\"GetFeatureInfo\", WMS_NAMESPACE, WMS_PREFIX)\n val getFeatureInfo: WmsRequestOperation? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsRequestOperation(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val dcpType: WmsDcpType\n) {\n val getUrl get() = dcpType.getHref\n val postUrl get() = dcpType.postHref\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Service\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsService(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Fees\", WMS_NAMESPACE, WMS_PREFIX)\n val fees: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AccessConstraints\", WMS_NAMESPACE, WMS_PREFIX)\n val accessConstraints: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = listOf(),\n val onlineResource: WmsOnlineResource,\n val contactInformation: WmsContactInformation? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxWidth\", WMS_NAMESPACE, WMS_PREFIX)\n val maxWidth: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxHeight\", WMS_NAMESPACE, WMS_PREFIX)\n val maxHeight: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"LayerLimit\", WMS_NAMESPACE, WMS_PREFIX)\n val layerLimit: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"LegendURL\", WMS_NAMESPACE, WMS_PREFIX)\n val legendUrls: List = emptyList(),\n @XmlSerialName(\"StyleSheetURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleSheetUrl: WmsInfoUrl? = null,\n @XmlSerialName(\"StyleURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleUrl: WmsInfoUrl? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Address\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsAddress(\n @XmlSerialName(\"DeliveryPoint\", OWS11_NAMESPACE, OWS11_PREFIX)\n val deliveryPoints: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"City\", OWS11_NAMESPACE, OWS11_PREFIX)\n val city: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AdministrativeArea\", OWS11_NAMESPACE, OWS11_PREFIX)\n val administrativeArea: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PostalCode\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postalCode: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Country\", OWS11_NAMESPACE, OWS11_PREFIX)\n val country: String? = null,\n @XmlSerialName(\"ElectronicMailAddress\", OWS11_NAMESPACE, OWS11_PREFIX)\n val electronicMailAddresses: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsBoundingBox(\n val crs: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"LowerCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val lowerCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"UpperCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val upperCorner: String\n) {\n val sector get() = try {\n val regex = \"\\\\s+\".toRegex()\n val lowerValues = lowerCorner.split(regex)\n val upperValues = upperCorner.split(regex)\n val minLon = lowerValues[0].toDouble()\n val minLat = lowerValues[1].toDouble()\n val maxLon = upperValues[0].toDouble()\n val maxLat = upperValues[1].toDouble()\n Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n } catch (ex: Exception) {\n Logger.logMessage(\n Logger.ERROR, \"OwsBoundingBox\", \"sector\",\n \"Error parsing bounding box corners, LowerCorner=$lowerCorner UpperCorner=$upperCorner\", ex\n )\n null\n }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlDefault\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Constraint\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsConstraint(\n val name: String,\n @XmlSerialName(\"AllowedValues\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Value\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlDefault(\"AnyValue\")\n val allowedValues: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInfo\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsContactInfo(\n val phone: OwsPhone? = null,\n val address: OwsAddress? = null,\n val onlineResource: OwsOnlineResource? = null,\n @XmlElement(true)\n @XmlSerialName(\"HoursOfService\", OWS11_NAMESPACE, OWS11_PREFIX)\n val hoursOfService: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactInstructions\", OWS11_NAMESPACE, OWS11_PREFIX)\n val contactInstructions: String? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsDcp(\n val http: OwsHttp\n) {\n val getMethods get() = http.getMethods\n val postMethods get() = http.postMethods\n}","package earth.worldwind.ogc.wmts\n\nabstract class OwsDescription {\n abstract val title: String?\n abstract val abstract: String?\n abstract val keywords: List\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"HTTP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsHttp(\n @XmlSerialName(\"Get\", OWS11_NAMESPACE, OWS11_PREFIX)\n val getMethods: List = emptyList(),\n @XmlSerialName(\"Post\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postMethods: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class OwsHttpMethod(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val constraints: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOnlineResource(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Operation\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperation(\n val name: String,\n val dcps: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OperationsMetadata\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperationsMetadata(\n val operations: List = emptyList()\n) {\n val getCapabilities get() = operations.firstOrNull { operation -> operation.name == \"GetCapabilities\" }\n val getTile get() = operations.firstOrNull { operation -> operation.name == \"GetTile\" }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Phone\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsPhone(\n @XmlElement(true)\n @XmlSerialName(\"Voice\", OWS11_NAMESPACE, OWS11_PREFIX)\n val voice: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Facsimile\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fax: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceContact\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceContact(\n @XmlElement(true)\n @XmlSerialName(\"IndividualName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val individualName: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PositionName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val positionName: String? = null,\n val contactInfo: OwsContactInfo? = null,\n @XmlElement(true)\n @XmlSerialName(\"Role\", OWS11_NAMESPACE, OWS11_PREFIX)\n val role: String? = null,\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceIdentification\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceIdentification(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"ServiceType\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceType: String,\n @XmlSerialName(\"ServiceTypeVersion\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceTypeVersions: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Fees\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fees: String? = null,\n @XmlSerialName(\"AccessConstraints\", OWS11_NAMESPACE, OWS11_PREFIX)\n val accessConstraints: List = emptyList(),\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceProvider\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceProvider(\n @XmlElement(true)\n @XmlSerialName(\"ProviderName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val providerName: String,\n @XmlSerialName(\"ProviderSite\", OWS11_NAMESPACE, OWS11_PREFIX)\n val onlineResource: OwsOnlineResource? = null,\n val serviceContact: OwsServiceContact\n) {\n val providerSiteUrl get() = onlineResource?.url\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capabilities\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsCapabilities(\n val version: String,\n val updateSequence: String? = null,\n val serviceIdentification: OwsServiceIdentification? = null,\n val serviceProvider: OwsServiceProvider? = null,\n val operationsMetadata: OwsOperationsMetadata? = null,\n val contents: WmtsContents,\n @XmlSerialName(\"Themes\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val themes: List = emptyList(),\n @XmlSerialName(\"ServiceMetadataURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val serviceMetadataUrls: List = emptyList()\n) {\n val layers get() = contents.layers\n val tileMatrixSets get() = contents.tileMatrixSets\n\n init {\n layers.forEach { layer -> layer.capabilities = this }\n }\n\n fun getLayer(identifier: String) = contents.layers.firstOrNull { layer -> layer.identifier == identifier }\n\n fun getTileMatrixSet(identifier: String) = contents.tileMatrixSets.firstOrNull { tms -> tms.identifier == identifier }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Contents\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsContents(\n val layers: List = emptyList(),\n val tileMatrixSets: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsDimension(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"UOM\", OWS11_NAMESPACE, OWS11_PREFIX)\n val unitOfMeasure: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"UnitSymbol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val unitSymbol: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Default\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val valueDefault: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Current\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val current: Boolean? = null,\n @XmlSerialName(\"Value\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val values: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLayer(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val boundingBoxes: List = emptyList(),\n @XmlSerialName(\"WGS84BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\n val wgs84BoundingBox: OwsBoundingBox? = null,\n @XmlSerialName(\"Metadata\", OWS11_NAMESPACE, OWS11_PREFIX)\n val metadata: List = emptyList(),\n val styles: List = emptyList(),\n @XmlSerialName(\"Format\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val formats: List = emptyList(),\n @XmlSerialName(\"InfoFormat\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val infoFormats: List = emptyList(),\n val tileMatrixSetLinks: List = emptyList(),\n val resourceUrls: List = emptyList(),\n val dimensions: List = emptyList(),\n): OwsDescription() {\n val layerSupportedTileMatrixSets get() = tileMatrixSetLinks.flatMap { link ->\n capabilities.tileMatrixSets.filter { set -> set.identifier == link.identifier }\n }\n @Transient\n lateinit var capabilities: WmtsCapabilities\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LegendURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLegendURL(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val format: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ResourceURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsResourceUrl(\n val format: String,\n val resourceType: String,\n val template: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val isDefault: Boolean = false,\n val legendUrls: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTheme(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val themes: List = emptyList(),\n @XmlSerialName(\"LayerRef\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val layerRefs: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrix(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"ScaleDenominator\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val scaleDenominator: Double,\n @XmlElement(true)\n @XmlSerialName(\"TopLeftCorner\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val topLeftCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"TileWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"TileHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileHeight: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixHeight: Int\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixLimits(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixIdentifier: String,\n @XmlElement(true)\n @XmlSerialName(\"MinTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MinTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileCol: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileCol: Int\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSet(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"SupportedCRS\", OWS11_NAMESPACE, OWS11_PREFIX)\n val supportedCrs: String,\n @XmlElement(true)\n @XmlSerialName(\"WellKnownScaleSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val wellKnownScaleSet: String? = null,\n val boundingBox: OwsBoundingBox? = null,\n val tileMatrices: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSetLink\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSetLink(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val identifier: String,\n @XmlSerialName(\"TileMatrixSetLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixSetLimits: List = emptyList()\n)","package earth.worldwind.render\n\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractRenderable @JvmOverloads constructor(override var displayName: String? = null): Renderable {\n override var isEnabled = true\n override var isPickEnabled = true\n override var pickDelegate: Any? = null\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) { if (isEnabled && (isPickEnabled || !rc.isPickMode)) doRender(rc) }\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\n\nabstract class AbstractSurfaceRenderable(sector: Sector, displayName: String? = null) : AbstractRenderable(displayName) {\n var sector = Sector(sector)\n set(value) {\n field.copy(value)\n invalidateExtent()\n }\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val heightLimits = heightLimits\n val extent = extent\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n val ve = rc.verticalExaggeration.toFloat()\n if (ve != extentExaggeration || timestamp != heightLimitsTimestamp) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n return extent\n }\n\n protected open fun invalidateExtent() {\n heightLimitsTimestamp = 0L\n extentExaggeration = 0.0f\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Color with red, green, blue and alpha components. Each RGB component is a number between 0.0 and 1.0 indicating the\n * component's intensity. The alpha component is a number between 0.0 (fully transparent) and 1.0 (fully opaque)\n * indicating the color's opacity.\n */\nopen class Color @JvmOverloads constructor(\n /**\n * The color's red component.\n */\n var red: Float,\n /**\n * The color's green component.\n */\n var green: Float,\n /**\n * The color's blue component.\n */\n var blue: Float,\n /**\n * The color's alpha component.\n */\n var alpha: Float = 1f\n) {\n /**\n * Constructs a color with red, green, blue and alpha all 1.0.\n */\n constructor(): this(red = 1f, green = 1f, blue = 1f, alpha = 1f)\n\n /**\n * Constructs a color from integer components\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n @JvmOverloads\n constructor(red: Int, green: Int, blue: Int, alpha: Int = 255): this(\n red = red / 255f,\n green = green / 255f,\n blue = blue / 255f,\n alpha = alpha / 255f\n )\n\n /**\n * Constructs a color with components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the components\n */\n constructor(colorInt: Int): this(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue = blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Constructs a color with the components of a specified color.\n *\n * @param color the color specifying the components\n */\n constructor(color: Color): this(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Sets this color to the specified components.\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n fun set(red: Float, green: Float, blue: Float, alpha: Float) = apply {\n this.red = red\n this.green = green\n this.blue = blue\n this.alpha = alpha\n }\n\n /**\n * Sets this color to the components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the new components\n *\n * @return this color with its components set to those of the specified color int\n */\n fun set(colorInt: Int) = set(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue= blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Sets this color to the components of a specified color.\n *\n * @param color the color specifying the new components\n *\n * @return this color with its components set to that of the specified color\n */\n fun copy(color: Color) = set(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Copies this color's components to the specified array. The result is compatible with GLSL uniform vectors, and\n * can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's components\n */\n fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"toArray\", \"missingArray\")\n }\n result[o++] = red\n result[o++] = green\n result[o++] = blue\n result[o] = alpha\n return result\n }\n\n /**\n * Returns this color's components as a color int. Color ints are stored as packed ints as follows: `(alpha <<\n * 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and 255 with 0\n * indicating the component's intensity.\n *\n * @return this color converted to a color int\n */\n fun toColorInt(): Int {\n val r8 = (red * 0xFF).roundToInt()\n val g8 = (green * 0xFF).roundToInt()\n val b8 = (blue * 0xFF).roundToInt()\n val a8 = (alpha * 0xFF).roundToInt()\n return argb(a8, r8, g8, b8)\n }\n\n /**\n * Convert the argb color to its HSV components.\n * hsv[0] is Hue [0 .. 360)\n * hsv[1] is Saturation [0...1]\n * hsv[2] is Value [0...1]\n * @param hsv 3 element array which holds the resulting HSV components.\n */\n fun toHSV(hsv: FloatArray) {\n val v = red.coerceAtLeast(green).coerceAtLeast(blue)\n val diff = v - red.coerceAtMost(green).coerceAtMost(blue)\n var h: Float\n val s: Float\n if (diff == 0f) {\n h = 0f\n s = 0f\n } else {\n s = diff / v\n val rr = (v - red) / 6f / diff + 1f / 2f\n val gg = (v - green) / 6f / diff + 1f / 2f\n val bb = (v - blue) / 6f / diff + 1f / 2f\n\n h = if (red == v) bb - gg\n else if (green == v) (1f / 3f) + rr - bb\n else if (blue == v) (2f / 3f) + gg - rr\n else 0f\n if (h < 0f) h += 1f else if (h > 1f) h -= 1f\n }\n hsv[0] = h * 360f\n hsv[1] = s\n hsv[2] = v\n }\n\n /**\n * Premultiplies this color in place. The RGB components are multiplied by the alpha component.\n *\n * @return this color with its RGB components multiplied by its alpha component\n */\n fun premultiply() = apply {\n red *= alpha\n green *= alpha\n blue *= alpha\n }\n\n /**\n * Premultiplies the specified color and stores the result in this color. This color's RGB components are set to the\n * product of the specified color's RGB components and its alpha component. This color's alpha component is set to\n * the specified color's alpha.\n *\n * @param color the color with components to premultiply and store in this color\n *\n * @return this color set to the premultiplied components of the specified color\n */\n fun premultiplyColor(color: Color) = apply {\n red = color.red * color.alpha\n green = color.green * color.alpha\n blue = color.blue * color.alpha\n alpha = color.alpha\n }\n\n /**\n * Copies this color's premultiplied components to the specified array. The result is compatible with GLSL uniform\n * vectors, and can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's premultiplied components\n */\n fun premultiplyToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"premultiplyToArray\", \"missingArray\")\n }\n result[o++] = red * alpha\n result[o++] = green * alpha\n result[o++] = blue * alpha\n result[o] = alpha\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Color) return false\n return red == other.red && green == other.green && blue == other.blue && alpha == other.alpha\n }\n\n override fun hashCode(): Int {\n var result = red.hashCode()\n result = 31 * result + green.hashCode()\n result = 31 * result + blue.hashCode()\n result = 31 * result + alpha.hashCode()\n return result\n }\n\n override fun toString() = \"Color(red=$red, green=$green, blue=$blue, alpha=$alpha)\"\n\n /**\n * Returns a string representation of this color, indicating the byte values corresponding to this color's\n * floating-point component values.\n *\n * @returns Byte string\n */\n fun toByteString(): String {\n val rb = (red * 255).roundToInt()\n val gb = (green * 255).roundToInt()\n val bb = (blue * 255).roundToInt()\n val ab = (alpha * 255).roundToInt()\n return \"($rb,$gb,$bb,$ab)\"\n }\n\n /**\n * Create a hex color string that CSS can use. Optionally, inhibit capturing alpha,\n * because some uses reject a four-component color specification.\n *\n * @param isUsingAlpha Enable the use of an alpha component.\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @returns A color string suitable for CSS.\n */\n fun toHexString(isUsingAlpha: Boolean = false, argb: Boolean = false): String {\n // Use Math.ceil() to get 0.75 to map to 0xc0. This is important if the display is dithering.\n val redHex = ceil(red * 255).toInt().toString(16)\n val greenHex = ceil(green * 255).toInt().toString(16)\n val blueHex = ceil(blue * 255).toInt().toString(16)\n val alphaHex = ceil(alpha * 255).toInt().toString(16)\n\n var result = \"#\"\n if (isUsingAlpha && argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n result += if (redHex.length < 2) (\"0$redHex\") else redHex\n result += if (greenHex.length < 2) (\"0$greenHex\") else greenHex\n result += if (blueHex.length < 2) (\"0$blueHex\") else blueHex\n if (isUsingAlpha && !argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n return result\n }\n\n /**\n * Create a rgba color string that conforms to CSS Color Module Level 3 specification.\n * @returns A color string suitable for CSS.\n */\n fun toCssColorString(): String {\n val red = (red * 255).roundToInt()\n val green = (green * 255).roundToInt()\n val blue = (blue * 255).roundToInt()\n\n // Per the CSS Color Module Level 3 specification, alpha is expressed as floating point value between 0 - 1\n return \"rgba($red, $green, $blue, $alpha)\"\n }\n\n companion object {\n /**\n * @param hexString representing hex value\n * (formatted \"0xRRGGBB\" i.e. \"0xFFFFFF\")\n * OR\n * formatted \"0xAARRGGBB\" i.e. \"0x00FFFFFF\" for a color with an alpha value\n * I will also put up with \"RRGGBB\" and \"AARRGGBB\" without the starting \"0x\"\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @return color represented by hex string\n */\n fun fromHexString(hexString: String, argb: Boolean = false): Color {\n val hexValue = when {\n hexString[0] == '#' -> hexString.substring(1)\n hexString.substring(0, 2).equals(\"0x\", true) -> hexString.substring(2)\n else -> hexString\n }.uppercase()\n\n val length = hexValue.length\n\n return if (length == 8 || length == 6) {\n val hexAlphabet = \"0123456789ABCDEF\"\n val value = intArrayOf(0, 0, 0, 0)\n for ((k, i) in (0 until length step 2).withIndex()) {\n val int1 = hexAlphabet.indexOf(hexValue[i])\n val int2 = hexAlphabet.indexOf(hexValue[i + 1])\n value[k] = int1 * 16 + int2\n }\n\n when (length) {\n 8 -> if (argb) Color(value[1],value[2],value[3],value[0]) else Color(value[0],value[1],value[2],value[3])\n 6 -> Color(value[0],value[1],value[2])\n else -> error(\"Bad hex value: $hexString\")\n }\n } else error(\"Bad hex value: $hexString\")\n }\n\n /**\n * Return the alpha component of a color int. This is the same as saying\n * color >>> 24\n */\n private fun alpha(color: Int) = color ushr 24\n\n /**\n * Return the red component of a color int. This is the same as saying\n * (color >> 16) & 0xFF\n */\n private fun red(color: Int) = color shr 16 and 0xFF\n\n /**\n * Return the green component of a color int. This is the same as saying\n * (color >> 8) & 0xFF\n */\n private fun green(color: Int) = color shr 8 and 0xFF\n\n /**\n * Return the blue component of a color int. This is the same as saying\n * color & 0xFF\n */\n private fun blue(color: Int) = color and 0xFF\n\n /**\n * Return a color-int from alpha, red, green, blue components.\n * These component values should be \\([0..255]\\), but there is no\n * range check performed, so if they are out of range, the\n * returned color is undefined.\n * @param alpha Alpha component \\([0..255]\\) of the color\n * @param red Red component \\([0..255]\\) of the color\n * @param green Green component \\([0..255]\\) of the color\n * @param blue Blue component \\([0..255]\\) of the color\n */\n private fun argb(alpha: Int, red: Int, green: Int, blue: Int) = alpha shl 24 or (red shl 16) or (green shl 8) or blue\n }\n}","package earth.worldwind.render\n\nenum class FontWeight { NORMAL, BOLD, ITALIC }","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.*\n\nopen class Framebuffer : RenderResource {\n protected var framebufferName = KglFramebuffer.NONE\n protected val attachedTextures = mutableMapOf()\n\n override fun release(dc: DrawContext) {\n if (framebufferName.isValid()) {\n deleteFramebuffer(dc)\n attachedTextures.clear()\n }\n }\n\n fun bindFramebuffer(dc: DrawContext): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) dc.bindFramebuffer(framebufferName)\n return framebufferName.isValid()\n }\n\n fun attachTexture(dc: DrawContext, texture: Texture, attachment: Int): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) {\n framebufferTexture(dc, texture, attachment)\n attachedTextures[attachment] = texture\n }\n return framebufferName.isValid()\n }\n\n fun getAttachedTexture(attachment: Int) = attachedTextures[attachment] ?: error(\"Invalid attachment type\")\n\n fun isFramebufferComplete(dc: DrawContext) = framebufferStatus(dc) == GL_FRAMEBUFFER_COMPLETE\n\n protected open fun createFramebuffer(dc: DrawContext) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Create the OpenGL framebuffer object.\n framebufferName = dc.gl.createFramebuffer()\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, framebufferName)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer)\n }\n }\n\n protected open fun deleteFramebuffer(dc: DrawContext) {\n dc.gl.deleteFramebuffer(framebufferName)\n framebufferName = KglFramebuffer.NONE\n }\n\n protected open fun framebufferTexture(dc: DrawContext, texture: Texture?, attachment: Int) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Attach the texture to the framebuffer object, or remove the attachment if the texture is null.\n val textureName = texture?.getTextureName(dc) ?: KglTexture.NONE\n dc.gl.framebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, textureName, 0 /*level*/)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n\n protected open fun framebufferStatus(dc: DrawContext): Int {\n val currentFramebuffer = dc.currentFramebuffer\n return try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Get the OpenGL framebuffer object status code.\n dc.gl.checkFramebufferStatus(GL_FRAMEBUFFER)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.draw.DrawableTerrain\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.AltitudeMode.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.shape.TextAttributes\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.SynchronizedPool\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.math.tan\n\nopen class RenderContext {\n companion object {\n private const val MAX_PICKED_OBJECT_ID = 0xFFFFFF\n }\n\n lateinit var globe: Globe\n lateinit var terrainTessellator: Tessellator\n lateinit var terrain: Terrain\n lateinit var layers: LayerList\n lateinit var currentLayer: Layer\n lateinit var camera: Camera\n lateinit var renderResourceCache: RenderResourceCache\n var densityFactor = 1f\n var verticalExaggeration = 1.0\n var horizonDistance = 0.0\n var atmosphereAltitude = 0.0\n var elevationModelTimestamp = 0L\n var cameraPoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n val frustum = Frustum()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n var isRedrawRequested = false\n protected set\n private var pickedObjectId = 0\n private var pixelSizeFactor = 0.0\n private val userProperties = mutableMapOf()\n val drawablePools = mutableMapOf>()\n private val textRenderer = TextRenderer(this)\n private val scratchTextCacheKey = TextCacheKey()\n private val scratchVector = Vec3()\n\n val tessellator: GLUtessellator by lazy { GLU.gluNewTess() }\n\n open fun reset() {\n densityFactor = 1f\n verticalExaggeration = 1.0\n horizonDistance = 0.0\n atmosphereAltitude = 0.0\n elevationModelTimestamp = 0L\n cameraPoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n frustum.setToUnitFrustum()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pickedObjectId = 0\n isRedrawRequested = false\n pixelSizeFactor = 0.0\n userProperties.clear()\n }\n\n fun requestRedraw() { isRedrawRequested = true }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n fun pixelSizeAtDistance(distance: Double): Double {\n if (pixelSizeFactor == 0.0) { // cache the scaling factor used to convert distances to pixel sizes\n val fov = camera.fieldOfView\n val tanFov2 = tan(fov.inRadians * 0.5)\n pixelSizeFactor = 2 * tanFov2 / viewport.height\n }\n return distance * pixelSizeFactor\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. The resultant screen point is in OpenGL screen coordinates,\n * with the origin in the bottom-left corner and axes that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param modelPoint the Cartesian point to project\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(modelPoint: Vec3, result: Vec3): Boolean {\n // TODO consider consolidating this with Matrix4.project and moving projectWithDepth to Matrix4\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This\n // inverts the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelviewProjection.m\n var x = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n var y = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n var z = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val w = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates, applying an offset to the point's projected depth value. The\n * resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes that\n * extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *
\n * The depth offset may be any real number and is typically used to move the screenPoint slightly closer to the\n * user's eye in order to give it visual priority over nearby objects or terrain. An offset of zero has no effect.\n * An offset less than zero brings the screenPoint closer to the eye, while an offset greater than zero pushes the\n * projected screen point away from the eye.\n *
\n * Applying a non-zero depth offset has no effect on whether the model point is clipped by this method or by WebGL.\n * Clipping is performed on the original model point, ignoring the depth offset. The final depth value after\n * applying the offset is clamped to the range [0,1].\n *\n * @param modelPoint the Cartesian point to project\n * @param depthOffset the amount of depth offset to apply\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun projectWithDepth(modelPoint: Vec3, depthOffset: Double, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates. The eye coordinate and the clip\n // coordinate are transformed separately in order to reuse the eye coordinate below.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelview.m\n val ex = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n val ey = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n val ez = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val ew = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n\n // Transform the point from eye coordinates to clip coordinates.\n val p = projection.m\n var x = p[0] * ex + p[1] * ey + p[2] * ez + p[3] * ew\n var y = p[4] * ex + p[5] * ey + p[6] * ez + p[7] * ew\n var z = p[8] * ex + p[9] * ey + p[10] * ez + p[11] * ew\n val w = p[12] * ex + p[13] * ey + p[14] * ez + p[15] * ew\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Transform the Z eye coordinate to clip coordinates again, this time applying a depth offset. The depth\n // offset is applied only to the matrix element affecting the projected Z coordinate, so we inline the\n // computation here instead of re-computing X, Y, Z and W in order to improve performance. See\n // Matrix4.offsetProjectionDepth for more information on the effect of this offset.\n z = p[8] * ex + p[9] * ey + p[10] * ez * (1 + depthOffset) + p[11] * ew\n z /= w\n\n // Clamp the point to the near and far clip planes. We know the point's original Z value is contained within\n // the clip planes, so we limit its offset z value to the range [-1, 1] in order to ensure it is not clipped\n // by WebGL. In clip coordinates the near and far clip planes are perpendicular to the Z axis and are\n // located at -1 and 1, respectively.\n z = z.coerceIn(-1.0, 1.0)\n\n // Convert the point from clip coordinates to the range [0, 1]. This enables the XY coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range [0, 1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Converts a geographic [Position] to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param position the specified position\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n position: Position, altitudeMode: AltitudeMode, result: Vec3\n ) = geographicToCartesian(position.latitude, position.longitude, position.altitude, altitudeMode, result)\n\n /**\n * Converts a geographic position to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode, result: Vec3\n ): Vec3 {\n when (altitudeMode) {\n ABSOLUTE -> globe.geographicToCartesian(latitude, longitude, altitude * verticalExaggeration, result)\n CLAMP_TO_GROUND -> if (!terrain.surfacePoint(latitude, longitude, result)) globe.run {\n // Use elevation model height as a fallback\n val elevation = getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n RELATIVE_TO_GROUND -> if (terrain.surfacePoint(latitude, longitude, result)) {\n // Offset along the normal vector at the terrain surface point.\n if (altitude != 0.0) globe.geographicToCartesianNormal(latitude, longitude, scratchVector).also {\n result.add(scratchVector.multiply(altitude))\n }\n } else globe.run {\n // Use elevation model height as a fallback\n val elevation = altitude + getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n }\n return result\n }\n\n // TODO redesign ShaderProgram to operate as a resource accessible from DrawContext\n // TODO created automatically on OpenGL thread, unless the caller wants to explicitly create a program\n inline fun getShaderProgram(builder: () -> T): T {\n val key = T::class\n return renderResourceCache.run{ get(key) ?: builder().also { put(key, it, it.programLength) } } as T\n }\n\n fun getTexture(imageSource: ImageSource, imageOptions: ImageOptions?, retrieve: Boolean = true) =\n renderResourceCache.run { get(imageSource) ?: if (retrieve) retrieveTexture(imageSource, imageOptions) else null } as Texture?\n\n inline fun getBufferObject(key: Any, builder: () -> T) =\n renderResourceCache.run{ get(key) ?: builder().also { put(key, it, it.byteCount) } } as T\n\n fun getText(text: String?, attributes: TextAttributes, render: Boolean = true) = renderResourceCache.run {\n scratchTextCacheKey.text = text\n scratchTextCacheKey.attributes = attributes\n // Use scratch key on get operation to avoid unnecessary object creation on each text render on each frame\n get(scratchTextCacheKey) as Texture? ?: if (render) textRenderer.renderText(text, attributes)?.also {\n // Use new text cache key and copy attributes on put operation to avoid cache issues on attributes modification\n put(TextCacheKey(text, TextAttributes(attributes)), it, it.byteCount)\n } else null\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, order: Double) {\n drawableQueue?.offerDrawable(drawable, groupId, order)\n }\n\n fun offerSurfaceDrawable(drawable: Drawable, zOrder: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SURFACE, zOrder)\n }\n\n fun offerShapeDrawable(drawable: Drawable, cameraDistance: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SHAPE, -cameraDistance) // order by descending distance to the viewer\n }\n\n fun offerDrawableTerrain(drawable: DrawableTerrain, sortOrder: Double) {\n drawableTerrain?.offerDrawable(drawable, DrawableGroup.SURFACE, sortOrder)\n }\n\n fun sortDrawables() {\n drawableQueue?.sortDrawables()\n drawableTerrain?.sortDrawables()\n }\n\n val drawableCount get() = drawableQueue?.count ?: 0\n\n @Suppress(\"UNCHECKED_CAST\")\n inline fun getDrawablePool(): Pool {\n val key = T::class\n // use SynchronizedPool; acquire and are release may be called in separate threads\n return drawablePools[key] as Pool? ?: SynchronizedPool().also { drawablePools[key] = it }\n }\n\n fun offerPickedObject(pickedObject: PickedObject) { pickedObjects?.offerPickedObject(pickedObject) }\n\n fun nextPickedObjectId(): Int {\n if (++pickedObjectId > MAX_PICKED_OBJECT_ID) pickedObjectId = 1\n return pickedObjectId\n }\n\n fun getUserProperty(key: Any) = userProperties[key]\n\n fun putUserProperty(key: Any, value: Any) = userProperties.put(key, value)\n\n fun removeUserProperty(key: Any) = userProperties.remove(key)\n\n fun hasUserProperty(key: Any) = userProperties.containsKey(key)\n\n protected data class TextCacheKey(\n var text: String? = null,\n var attributes: TextAttributes? = null\n )\n}","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport earth.worldwind.util.math.powerOfTwoCeiling\n\nopen class Texture(val width: Int, val height: Int, protected val format: Int, protected val type: Int, protected val isRT: Boolean = false) : RenderResource {\n companion object {\n protected fun estimateByteCount(width: Int, height: Int, format: Int, type: Int, hasMipMap: Boolean): Int {\n require(width >= 0 && height >= 0) {\n logMessage(ERROR, \"Texture\", \"estimateByteCount\", \"invalidWidthOrHeight\")\n }\n // Compute the number of bytes per row of texture image level 0. Use a default of 32 bits per pixel when either\n // of the bitmap's type or internal format are unrecognized. Adjust the width to the next highest power-of-two\n // to better estimate the memory consumed by non-power-of-two images.\n val widthPow2 = powerOfTwoCeiling(width)\n val bytesPerRow = when (type) {\n GL_UNSIGNED_BYTE -> when (format) {\n GL_ALPHA, GL_LUMINANCE -> widthPow2 // 8 bits per pixel\n GL_LUMINANCE_ALPHA -> widthPow2 * 2 // 16 bits per pixel\n GL_RGB -> widthPow2 * 3 // 24 bits per pixel\n GL_RGBA -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT_5_6_5,\n GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1 -> widthPow2 * 2 // 16 bits per pixel\n GL_UNSIGNED_INT -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n\n // Compute the number of bytes for the entire texture image level 0 (i.e. bytePerRow * numRows). Adjust the\n // height to the next highest power-of-two to better estimate the memory consumed by non power-of-two images.\n val heightPow2 = powerOfTwoCeiling(height)\n var byteCount = bytesPerRow * heightPow2\n\n // If the texture will have mipmaps, add 1/3 to account for the bytes used by texture image level 1 through\n // texture image level N.\n if (hasMipMap) byteCount += byteCount / 3\n return byteCount\n }\n }\n\n val coordTransform = Matrix3()\n val byteCount get() = estimateByteCount(width, height, format, type, hasMipMap)\n protected var name = KglTexture.NONE\n protected var parameters: MutableMap? = null\n protected open val hasMipMap = false\n private var pickMode = false\n\n fun getTexParameter(name: Int) = parameters?.get(name)?:0\n\n fun setTexParameter(name: Int, param: Int) {\n val parameters = parameters ?: mutableMapOf().also { parameters = it }\n parameters[name] = param\n }\n\n override fun release(dc: DrawContext) {\n if (name.isValid()) deleteTexture(dc)\n }\n\n fun getTextureName(dc: DrawContext): KglTexture {\n if (!name.isValid()) createTexture(dc)\n return name\n }\n\n fun bindTexture(dc: DrawContext): Boolean {\n if (!name.isValid()) createTexture(dc)\n if (name.isValid()) dc.bindTexture(name)\n if (name.isValid() && pickMode != dc.isPickMode) {\n setTexParameters(dc)\n pickMode = dc.isPickMode\n }\n return name.isValid()\n }\n\n protected open fun createTexture(dc: DrawContext) {\n val currentTexture = dc.currentTexture\n try {\n // Create the OpenGL texture 2D object.\n name = dc.gl.createTexture()\n dc.gl.bindTexture(GL_TEXTURE_2D, name)\n\n // Specify the texture object's image data\n allocTexImage(dc)\n\n // Configure the texture object's parameters.\n setTexParameters(dc)\n } finally {\n // Restore the current OpenGL texture object binding.\n dc.gl.bindTexture(GL_TEXTURE_2D, currentTexture)\n }\n }\n\n protected open fun deleteTexture(dc: DrawContext) {\n dc.gl.deleteTexture(name)\n name = KglTexture.NONE\n }\n\n protected open fun allocTexImage(dc: DrawContext) {\n // Following line of code is a dirty hack to disable AFBC compression on Mali GPU driver,\n // which cause huge memory leak during surface shapes drawing on terrain textures.\n if (isRT and dc.gl.hasMaliOOMBug) dc.gl.texImage2D(GL_TEXTURE_2D, 0, format, 1, 1, 0, format, type, null)\n\n // Allocate texture memory for the OpenGL texture 2D object. The texture memory is initialized with 0.\n dc.gl.texImage2D(\n GL_TEXTURE_2D, 0 /*level*/, format, width, height, 0 /*border*/, format, type, null /*pixels*/\n )\n }\n\n // TODO refactor setTexParameters to apply all configured tex parameters\n // TODO apply defaults only when no parameter is configured\n // TODO consider simplifying the defaults and requiring that layers/shapes specify what they want\n protected open fun setTexParameters(dc: DrawContext) {\n var param: Int\n\n // Configure the OpenGL texture minification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MIN_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param)\n else -> dc.gl.texParameteri(\n GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, if (hasMipMap) GL_LINEAR_MIPMAP_LINEAR else GL_LINEAR\n )\n }\n\n // Configure the OpenGL texture magnification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MAG_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param)\n else -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)\n }\n\n // Configure the OpenGL texture wrapping function for texture coordinate S. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_S).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)\n\n // Configure the OpenGL texture wrapping function for texture coordinate T. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_T).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Range\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.KglBuffer\n\nabstract class AbstractBufferObject(protected val target: Int, val byteCount: Int) : RenderResource {\n val ranges = mutableMapOf()\n protected var id = KglBuffer.NONE\n\n override fun release(dc: DrawContext) { deleteBufferObject(dc) }\n\n open fun bindBuffer(dc: DrawContext): Boolean {\n if (id.isValid()) dc.bindBuffer(target, id)\n return id.isValid()\n }\n\n protected open fun loadBuffer(dc: DrawContext) {\n val currentBuffer = dc.currentBuffer(target)\n try {\n // Create the OpenGL buffer object.\n if (!id.isValid()) createBufferObject(dc)\n // Make the OpenGL buffer object bound to the specified target.\n dc.bindBuffer(target, id)\n // Load the current NIO buffer as the OpenGL buffer object's data.\n loadBufferObjectData(dc)\n } catch (e: Exception) {\n // The NIO buffer could not be used as buffer data for an OpenGL buffer object. Delete the buffer object\n // to ensure that calls to bindBuffer fail.\n deleteBufferObject(dc)\n logMessage(\n ERROR, \"BufferObject\", \"loadBuffer\", \"Exception attempting to load buffer data\", e\n )\n } finally {\n // Restore the current OpenGL buffer object binding.\n dc.bindBuffer(target, currentBuffer)\n }\n }\n\n protected open fun createBufferObject(dc: DrawContext) { id = dc.gl.createBuffer() }\n\n protected open fun deleteBufferObject(dc: DrawContext) {\n if (id.isValid()) {\n dc.gl.deleteBuffer(id)\n id = KglBuffer.NONE\n }\n }\n\n protected abstract fun loadBufferObjectData(dc: DrawContext)\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class FloatBufferObject(\n target: Int, array: FloatArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Float.SIZE_BYTES) {\n protected var array: FloatArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let{ loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class IntBufferObject(\n target: Int, array: IntArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Int.SIZE_BYTES) {\n protected var array: IntArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let{ loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class ShortBufferObject(\n target: Int, array: ShortArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Short.SIZE_BYTES) {\n protected var array: ShortArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let{ loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.image\n\n/**\n * Image config indicates the in-memory representation for images displayed by WorldWind components. Images are\n * typically represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do\n * not require an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration.\n * Accepted values are [RGBA_8888] and [RGB_565].\n */\nenum class ImageConfig {\n /**\n * Indicating 32-bit RGBA_8888 image configuration.\n */\n RGBA_8888,\n /**\n * Indicating 16-bit RGBA_565 image configuration.\n */\n RGB_565;\n}","package earth.worldwind.render.image\n\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Options for images displayed by WorldWind components.\n */\nopen class ImageOptions @JvmOverloads constructor(\n /**\n * Indicates the in-memory configuration for images displayed by WorldWind components. By default, images are\n * represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do not require\n * an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration. Accepted values are\n * [ImageConfig.RGBA_8888] and [ImageConfig.RGB_565].\n */\n var imageConfig: ImageConfig = ImageConfig.RGBA_8888\n) {\n /**\n * Indicates the image sampling algorithm used by WorldWind to display images that appear larger or smaller on\n * screen than their native resolution. Accepted values are [ResamplingMode.BILINEAR] and [ResamplingMode.NEAREST_NEIGHBOR].\n */\n var resamplingMode = ResamplingMode.BILINEAR\n /**\n * Indicates how WorldWind displays the contents of an image when attempting to draw a region outside of the image\n * bounds. Accepted values are [WrapMode.CLAMP] and [WrapMode.REPEAT].\n */\n var wrapMode = WrapMode.CLAMP\n /**\n * Initial width for image that has no dimensions (e.g. SVG image)\n */\n var initialWidth = 0\n /**\n * Initial height for image that has no dimensions (e.g. SVG image)\n */\n var initialHeight = 0\n}","package earth.worldwind.render.image\n\n/**\n * Resampling mode indicates the image sampling algorithm used by WorldWind to display images that appear larger or\n * smaller on screen than their native resolution. Accepted values are [BILINEAR] and [NEAREST_NEIGHBOR].\n */\nenum class ResamplingMode {\n /**\n * Indicating bilinear image sampling.\n */\n BILINEAR,\n /**\n * Indicating nearest neighbor image sampling.\n */\n NEAREST_NEIGHBOR;\n}","package earth.worldwind.render.image\n\n/**\n * Wrap mode indicates how WorldWind displays the contents of an image when attempting to draw a region outside of\n * the image bounds. Accepted values are [CLAMP] and [REPEAT].\n */\nenum class WrapMode {\n /**\n * Indicating that the image's edge pixels should be displayed outside of the image bounds.\n */\n CLAMP,\n /**\n * Indicating that the image should display as a repeating pattern outside of the image bounds.\n */\n REPEAT;\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\n\n/**\n * Represents an OpenGL shading language (GLSL) shader program and provides methods for identifying and accessing shader\n * variables. Shader programs are configured by calling `setProgramSources` to specify the the GLSL vertex\n * shader and fragment shader source code, then made current by calling `useProgram`.\n */\nabstract class AbstractShaderProgram: RenderResource {\n companion object {\n protected const val VERTEX_SHADER = 0\n protected const val FRAGMENT_SHADER = 1\n }\n\n protected abstract var programSources: Array\n protected abstract val attribBindings: Array\n protected lateinit var gl : Kgl\n private set\n /**\n * Indicates the approximate size of the OpenGL resources referenced by this GPU program.\n */\n val programLength get() = programSources.sumOf{str -> str.length}\n\n /**\n * Indicates the OpenGL program object associated with this GPU program.\n */\n protected var program = KglProgram.NONE\n protected var mustBuildProgram = true\n\n override fun release(dc: DrawContext) = deleteProgram(dc)\n\n fun useProgram(dc: DrawContext): Boolean {\n if (mustBuildProgram) {\n // Clear the program's build dirty bit.\n mustBuildProgram = false\n\n // Remove any existing GLSL program.\n if (program.isValid()) deleteProgram(dc)\n\n // Compile and link the GLSL program sources.\n buildProgram(dc)\n\n // Free memory, occupied by program sources\n programSources = emptyArray()\n\n // Give subclasses an opportunity to initialize default GLSL uniform values.\n if (program.isValid()) {\n val currentProgram = dc.currentProgram\n try {\n dc.useProgram(program)\n initProgram(dc)\n } finally {\n dc.useProgram(currentProgram)\n }\n }\n }\n if (program.isValid()) dc.useProgram(program)\n return program.isValid()\n }\n\n protected open fun buildProgram(dc: DrawContext) {\n val vs = dc.gl.createShader(GL_VERTEX_SHADER)\n dc.gl.shaderSource(vs, programSources[VERTEX_SHADER])\n dc.gl.compileShader(vs)\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(vs)\n dc.gl.deleteShader(vs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL vertex shader \\n$msg\"\n )\n return\n }\n val fs = dc.gl.createShader(GL_FRAGMENT_SHADER)\n dc.gl.shaderSource(fs, programSources[FRAGMENT_SHADER])\n dc.gl.compileShader(fs)\n\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(fs)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL fragment shader \\n$msg\"\n )\n return\n }\n val program = dc.gl.createProgram()\n dc.gl.attachShader(program, vs)\n dc.gl.attachShader(program, fs)\n for (i in attribBindings.indices) dc.gl.bindAttribLocation(program, i, attribBindings[i])\n dc.gl.linkProgram(program)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n if (dc.gl.getProgramParameteri(program, GL_LINK_STATUS) != GL_TRUE) {\n val msg = dc.gl.getProgramInfoLog(program)\n dc.gl.deleteProgram(program)\n logMessage(ERROR, \"ShaderProgram\", \"buildProgram\", \"Error linking GL program \\n$msg\")\n return\n }\n this.program = program\n }\n\n protected open fun initProgram(dc: DrawContext) { gl = dc.gl }\n\n protected open fun deleteProgram(dc: DrawContext) {\n if (program.isValid()) {\n dc.gl.deleteProgram(program)\n program = KglProgram.NONE\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class BasicShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n\n void main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class SightlineProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform mat4 slpMatrix[2];\n\n attribute vec4 vertexPoint;\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n uniform highp sampler2D depthSampler;\n #else\n precision mediump float;\n uniform mediump sampler2D depthSampler;\n #endif\n\n uniform float range;\n uniform vec4 color[2];\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n const vec3 minusOne = vec3(-1.0, -1.0, -1.0);\n const vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\n void main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var slpMatrixId = KglUniformLocation.NONE\n protected var rangeId = KglUniformLocation.NONE\n protected var depthSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n private val array = FloatArray(32)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n slpMatrixId = gl.getUniformLocation(program, \"slpMatrix\")\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n rangeId = gl.getUniformLocation(program, \"range\")\n gl.uniform1f(rangeId, 0f)\n colorId = gl.getUniformLocation(program, \"color\")\n gl.uniform4f(colorId, 1f, 1f, 1f, 1f)\n depthSamplerId = gl.getUniformLocation(program, \"depthSampler\")\n gl.uniform1i(depthSamplerId, 0) // GL_TEXTURE0\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadSightlineProjection(projection: Matrix4, sightline: Matrix4) {\n projection.transposeToArray(array, 0)\n sightline.transposeToArray(array, 16)\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n }\n\n fun loadRange(range: Float) {\n gl.uniform1f(rangeId, range)\n }\n\n fun loadColor(visibleColor: Color, occludedColor: Color) {\n visibleColor.premultiplyToArray(array, 0)\n occludedColor.premultiplyToArray(array, 4)\n gl.uniform4fv(colorId, 2, array, 0)\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating surface tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform\n// TODO index to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class SurfaceTextureProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix[2];\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n val texCoordMatrix = arrayOf(Matrix3(), Matrix3())\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n private val texCoordMatrixArray = FloatArray(9 * 2)\n private val color = Color()\n protected var opacity = 1.0f\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, 0) // disable pick mode\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, 0) // disable texture\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(texCoordMatrixArray, 0) // 3 x 3 identity matrix\n Matrix3().transposeToArray(texCoordMatrixArray, 9) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n color.set(1f, 1f, 1f, 1f) // opaque white\n gl.uniform4f(colorId, color.red, color.green, color.blue, color.alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) { gl.uniform1i(enablePickModeId, if (enable) 1 else 0) }\n\n fun enableTexture(enable: Boolean) { gl.uniform1i(enableTextureId, if (enable) 1 else 0) }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun loadTexCoordMatrix() {\n texCoordMatrix[0].transposeToArray(texCoordMatrixArray, 0)\n texCoordMatrix[1].transposeToArray(texCoordMatrixArray, 9)\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) { // suppress unnecessary writes to GLSL uniform variables\n this.color.copy(color)\n val a: Float = color.alpha\n gl.uniform4f(colorId, color.red * a, color.green * a, color.blue * a, a)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.sqrt\n\nabstract class AbstractShape @JvmOverloads constructor(\n override var attributes: ShapeAttributes = ShapeAttributes()\n): AbstractRenderable(), Attributable, Highlightable {\n companion object {\n const val NEAR_ZERO_THRESHOLD = 1.0e-10\n }\n\n var altitudeMode = AltitudeMode.ABSOLUTE\n set(value) {\n field = value\n reset()\n }\n var pathType = PathType.GREAT_CIRCLE\n set(value) {\n field = value\n reset()\n }\n /**\n * Draw sides of the shape which extend from the defined position and altitude to the ground.\n */\n var isExtrude = false\n set(value) {\n field = value\n reset()\n }\n /**\n * Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.\n */\n var isFollowTerrain = false\n set(value) {\n field = value\n reset()\n }\n override var highlightAttributes: ShapeAttributes? = null\n override var isHighlighted = false\n var maximumIntermediatePoints = 10\n protected lateinit var activeAttributes: ShapeAttributes\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n protected val boundingSector = Sector()\n protected val boundingBox = BoundingBox()\n private val scratchPoint = Vec3()\n\n override fun doRender(rc: RenderContext) {\n // Don't render anything if the shape is not visible.\n if (!intersectsFrustum(rc)) return\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this shape has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the shape's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun intersectsFrustum(rc: RenderContext) = boundingBox.isUnitBox || boundingBox.intersectsFrustum(rc.frustum)\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun cameraDistanceGeographic(rc: RenderContext, boundingSector: Sector): Double {\n val lat = rc.camera.position.latitude.inDegrees.coerceIn(\n boundingSector.minLatitude.inDegrees,\n boundingSector.maxLatitude.inDegrees\n )\n val lon = rc.camera.position.longitude.inDegrees.coerceIn(\n boundingSector.minLongitude.inDegrees,\n boundingSector.maxLongitude.inDegrees\n )\n val point = rc.geographicToCartesian(lat.degrees, lon.degrees, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n return point.distanceTo(rc.cameraPoint)\n }\n\n protected open fun cameraDistanceCartesian(rc: RenderContext, array: FloatArray, count: Int, stride: Int, offset: Vec3): Double {\n val cx = rc.cameraPoint.x - offset.x\n val cy = rc.cameraPoint.y - offset.y\n val cz = rc.cameraPoint.z - offset.z\n var minDistance2 = Double.POSITIVE_INFINITY\n for (idx in 0 until count step stride) {\n val px = array[idx]\n val py = array[idx + 1]\n val pz = array[idx + 2]\n val dx = px - cx\n val dy = py - cy\n val dz = pz - cz\n val distance2 = dx * dx + dy * dy + dz * dz\n if (minDistance2 > distance2) minDistance2 = distance2\n }\n return sqrt(minDistance2)\n }\n\n protected open fun computeRepeatingTexCoordTransform(texture: Texture, metersPerPixel: Double, result: Matrix3): Matrix3 {\n val texCoordMatrix = result.setToIdentity()\n texCoordMatrix.setScale(1.0 / (texture.width * metersPerPixel), 1.0 / (texture.height * metersPerPixel))\n texCoordMatrix.multiplyByMatrix(texture.coordTransform)\n return texCoordMatrix\n }\n\n protected abstract fun reset()\n\n protected abstract fun makeDrawable(rc: RenderContext)\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.*\n\n/**\n * Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.\n *
\n *

Axes and Heading

\n *
\n * Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points\n * North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and\n * semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is\n * defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis\n * pointing Southeast and the semi-minor axis pointing Northeast.\n *
\n *

Altitude Mode and Terrain Following

\n *
\n * Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For\n * example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean\n * sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative\n * to the ellipse's center location.\n *
\n * Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's\n * terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See [isFollowTerrain] and\n * [altitudeMode].\n *
\n *

Display Granularity

\n *
\n * Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This\n * approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the\n * maximum number of angular intervals used in this representation with [maximumIntervals].\n */\nopen class Ellipse @JvmOverloads constructor(\n center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n /**\n * The ellipse's geographic center position.\n */\n var center = Position(center)\n set(value) {\n field.copy(value)\n reset()\n }\n /**\n * The ellipse's radius perpendicular to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-major axis points East.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var majorRadius = majorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMajorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's radius parallel to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-minor axis points North.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var minorRadius = minorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMinorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's heading clockwise from North. When ellipse's heading is 0.0,\n * the semi-major axis points East and the semi-minor axis points North.\n * Headings other than 0.0 rotate the axes about the ellipse's center position,\n * while retaining the axes relative relationship to one another.\n */\n var heading = ZERO\n set(value) {\n field = value\n reset()\n }\n /**\n * The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this\n * value will make ellipses appear coarser.\n */\n var maximumPixelsPerInterval = 50.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"maximumPixelsPerInterval\", \"invalidPixelsPerInterval\")\n }\n field = value\n reset()\n }\n /**\n * Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.\n *
\n * Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly\n * approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an\n * implementation-defined minimum number of intervals.\n *
\n * Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number\n * of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used\n * instead.\n *\n * @throws IllegalArgumentException If the number of intervals is negative\n */\n var maximumIntervals = 256\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMaximumIntervals\", \"invalidNumIntervals\")\n }\n field = value\n reset()\n }\n /**\n * The number of intervals used for generating geometry. Clamped between MIN_INTERVALS and maximumIntervals.\n * Will always be even.\n */\n protected var activeIntervals = 0\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var vertexBufferKey = Any()\n protected val vertexOrigin = Vec3()\n protected var isSurfaceShape = false\n protected var texCoord1d = 0.0\n protected val texCoord2d = Vec3()\n protected val texCoordMatrix = Matrix3()\n protected val modelToTexCoord = Matrix4()\n protected var cameraDistance = 0.0\n protected val prevPoint = Vec3()\n\n init {\n require(majorRadius >= 0 && minorRadius >= 0) {\n logMessage(ERROR, \"Ellipse\", \"constructor\", \"invalidRadius\")\n }\n }\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n /**\n * The minimum number of intervals that will be used for geometry generation.\n */\n protected const val MIN_INTERVALS = 32\n /**\n * Key for Range object in the element buffer describing the top of the Ellipse.\n */\n protected const val TOP_RANGE = 0\n /**\n * Key for Range object in the element buffer describing the outline of the Ellipse.\n */\n protected const val OUTLINE_RANGE = 1\n /**\n * Key for Range object in the element buffer describing the extruded sides of the Ellipse.\n */\n protected const val SIDE_RANGE = 2\n\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n\n /**\n * Simple interval count based cache of the keys for element buffers. Element buffers are dependent only on the\n * number of intervals so the keys are cached here. The element buffer object itself is in the\n * RenderResourceCache and subject to the restrictions and behavior of that cache.\n */\n protected val elementBufferKeys = mutableMapOf()\n\n private val scratchPosition = Position()\n private val scratchPoint = Vec3()\n\n protected fun assembleElements(intervals: Int): ShortBufferObject {\n // Create temporary storage for elements\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n val elements = mutableListOf()\n\n // Generate the top element buffer with spine\n var idx = intervals.toShort()\n val offset = computeIndexOffset(intervals)\n\n // Add the anchor leg\n elements.add(0.toShort())\n elements.add(1.toShort())\n // Tessellate the interior\n for (i in 2 until intervals) {\n // Add the corresponding interior spine point if this isn't the vertex following the last vertex for the\n // negative major axis\n if (i != intervals / 2 + 1) if (i > intervals / 2) elements.add(--idx) else elements.add(idx++)\n // Add the degenerate triangle at the negative major axis in order to flip the triangle strip back towards\n // the positive axis\n if (i == intervals / 2) elements.add(i.toShort())\n // Add the exterior vertex\n elements.add(i.toShort())\n }\n // Complete the strip\n elements.add(--idx)\n elements.add(0.toShort())\n val topRange = Range(0, elements.size)\n\n // Generate the outline element buffer\n for (i in 0 until intervals) elements.add(i.toShort())\n val outlineRange = Range(topRange.upper, elements.size)\n\n // Generate the side element buffer\n for (i in 0 until intervals) {\n elements.add(i.toShort())\n elements.add(i.plus(offset).toShort())\n }\n elements.add(0.toShort())\n elements.add(offset.toShort())\n val sideRange = Range(outlineRange.upper, elements.size)\n\n // Generate a buffer for the element\n val elementBuffer = ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements.toShortArray())\n elementBuffer.ranges[TOP_RANGE] = topRange\n elementBuffer.ranges[OUTLINE_RANGE] = outlineRange\n elementBuffer.ranges[SIDE_RANGE] = sideRange\n return elementBuffer\n }\n\n protected fun computeNumberSpinePoints(intervals: Int) = intervals / 2 - 1 // intervals should be even\n\n protected fun computeIndexOffset(intervals: Int) = intervals + computeNumberSpinePoints(intervals)\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (majorRadius == 0.0 && minorRadius == 0.0) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = Any()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n drawable.sector.copy(boundingSector)\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = boundingBox.distanceTo(rc.cameraPoint)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Get the attributes of the element buffer\n val elementBufferKey = elementBufferKeys[activeIntervals] ?: Any().also { elementBufferKeys[activeIntervals] = it }\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) { assembleElements(activeIntervals) }\n if (isSurfaceShape) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n val top = drawState.elementBuffer!!.ranges[TOP_RANGE]!!\n drawState.drawElements(GL_TRIANGLE_STRIP, top.length, GL_UNSIGNED_SHORT, top.lower * 2 /*offset*/)\n if (isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLE_STRIP, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n val outline = drawState.elementBuffer!!.ranges[OUTLINE_RANGE]!!\n drawState.drawElements(GL_LINE_LOOP, outline.length, GL_UNSIGNED_SHORT, outline.lower * 2 /*offset*/)\n if (activeAttributes.isDrawVerticals && isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(GL_LINES, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext): Boolean {\n val calculatedIntervals = computeIntervals(rc)\n val sanitizedIntervals = sanitizeIntervals(calculatedIntervals)\n if (vertexArray.isEmpty() || sanitizedIntervals != activeIntervals) {\n activeIntervals = sanitizedIntervals\n return true\n }\n return false\n }\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as goegraphic geometry.\n isSurfaceShape = altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n\n // Use the ellipse's center position as the local origin for vertex positions.\n if (isSurfaceShape) {\n vertexOrigin.set(center.longitude.inDegrees, center.latitude.inDegrees, center.altitude)\n } else {\n rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n vertexOrigin.set(scratchPoint.x, scratchPoint.y, scratchPoint.z)\n }\n\n // Determine the number of spine points\n val spineCount = computeNumberSpinePoints(activeIntervals) // activeIntervals must be even\n\n // Clear the shape's vertex array. The array will accumulate values as the shapes's geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals * 2 + spineCount) * VERTEX_STRIDE)\n else FloatArray((activeIntervals + spineCount) * VERTEX_STRIDE)\n\n // Check if minor radius is less than major in which case we need to flip the definitions and change the phase\n val isStandardAxisOrientation = majorRadius > minorRadius\n val headingAdjustment = if (isStandardAxisOrientation) 90.0 else 0.0\n\n // Vertex generation begins on the positive major axis and works ccs around the ellipse. The spine points are\n // then appended from positive major axis to negative major axis.\n val deltaRadians = 2 * PI / activeIntervals\n val majorArcRadians: Double\n val minorArcRadians: Double\n val globeRadius = max(rc.globe.equatorialRadius, rc.globe.polarRadius)\n if (isStandardAxisOrientation) {\n majorArcRadians = majorRadius / globeRadius\n minorArcRadians = minorRadius / globeRadius\n } else {\n majorArcRadians = minorRadius / globeRadius\n minorArcRadians = majorRadius / globeRadius\n }\n\n // Determine the offset from the top and extruded vertices\n val arrayOffset = computeIndexOffset(activeIntervals) * VERTEX_STRIDE\n // Setup spine radius values\n var spineIdx = 0\n val spineRadius = DoubleArray(spineCount)\n\n // Iterate around the ellipse to add vertices\n for (i in 0 until activeIntervals) {\n val radians = deltaRadians * i\n val x = cos(radians) * majorArcRadians\n val y = sin(radians) * minorArcRadians\n val azimuthDegrees = toDegrees(-atan2(y, x))\n val arcRadius = sqrt(x * x + y * y)\n // Calculate the great circle location given this activeIntervals step (azimuthDegrees) a correction value to\n // start from an east-west aligned major axis (90.0) and the user specified user heading value\n val azimuth = heading.plusDegrees(azimuthDegrees + headingAdjustment)\n val loc = center.greatCircleLocation(azimuth, arcRadius, scratchPosition)\n addVertex(rc, loc.latitude, loc.longitude, center.altitude, arrayOffset, isExtrude)\n // Add the major arc radius for the spine points. Spine points are vertically coincident with exterior\n // points. The first and middle most point do not have corresponding spine points.\n if (i > 0 && i < activeIntervals / 2) spineRadius[spineIdx++] = x\n }\n\n // Add the interior spine point vertices\n for (i in 0 until spineCount) {\n center.greatCircleLocation(heading.plusDegrees(headingAdjustment), spineRadius[i], scratchPosition)\n addVertex(rc, scratchPosition.latitude, scratchPosition.longitude, center.altitude, arrayOffset, false)\n }\n\n // Compute the shape's bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty()\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset: Int, isExtrudedSkirt: Boolean\n ) {\n var offsetVertexIndex = vertexIndex + offset\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (vertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n // reserved for future texture coordinate use\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrudedSkirt) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n vertexArray[offsetVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[offsetVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[offsetVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex] = 0f //unused\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n val point = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n rc.globe.cartesianToLocalTransform(point.x, point.y, point.z, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n /**\n * Calculate the number of times to split the edges of the shape for geometry assembly.\n *\n * @param rc current RenderContext\n *\n * @return an even number of intervals\n */\n protected open fun computeIntervals(rc: RenderContext): Int {\n var intervals = MIN_INTERVALS\n if (intervals >= maximumIntervals) return intervals // use at least the minimum number of intervals\n val centerPoint = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n val maxRadius = max(majorRadius, minorRadius)\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint) - maxRadius\n if (cameraDistance <= 0) return maximumIntervals // use the maximum number of intervals when the camera is very close\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n val circumferencePixels = computeCircumference() / metersPerPixel\n val circumferenceIntervals = circumferencePixels / maximumPixelsPerInterval\n val subdivisions = ln(circumferenceIntervals / intervals) / ln(2.0)\n val subdivisionCount = ceil(subdivisions).toInt().coerceAtLeast(0)\n intervals = intervals shl subdivisionCount // subdivide the base intervals to achieve the desired number of intervals\n return intervals.coerceAtMost(maximumIntervals) // don't exceed the maximum number of intervals\n }\n\n protected open fun sanitizeIntervals(intervals: Int) = if (intervals % 2 == 0) intervals else intervals - 1\n\n open fun computeCircumference(): Double {\n val a = majorRadius\n val b = minorRadius\n return PI * (3 * (a + b) - sqrt((3 * a + b) * (a + 3 * b)))\n }\n\n override fun reset() { vertexArray = FloatArray(0) }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Represents a label at a geographic position. Labels display a single line of text according to specified [TextAttributes].\n */\nopen class Label @JvmOverloads constructor(\n /**\n * The label's geographic position.\n */\n position: Position,\n /**\n * Indicates the text displayed by this label. The returned string may be null, indicating that this label displays\n * nothing.\n */\n var text: String? = null,\n /**\n * Indicates this label's \"normal\" attributes, that is the attributes used when the label's highlighted flag is\n * false. If null and this label is not highlighted, this label displays nothing.\n */\n var attributes: TextAttributes = TextAttributes()\n) : AbstractRenderable(), Highlightable, Movable {\n /**\n * The label's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The label's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Indicates the rotation applied to this label. The rotation represents clockwise clockwise degrees relative to\n * this label's labelRotationMode.\n */\n var rotation = ZERO\n /**\n * Indicates the orientation mode used to interpret this label's rotation. Label rotation may be either relative to\n * the screen or relative to the globe, as indicated by the following allowable values:\n * `OrientationMode.RELATIVE_TO_SCREEN` - The label's orientation is fixed relative to the screen. Rotation indicates\n * clockwise degrees relative to the screen's vertical axis. This is the default mode.\n * `OrientationMode.RELATIVE_TO_GLOBE` - The label's orientation is fixed relative to the globe. Rotation indicates\n * clockwise degrees relative to North.\n */\n var rotationMode = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The attributes used when this label's highlighted flag is true. If null and the highlighted flag is true,\n * this label's normal attributes are used. If they, too, are null, this label displays nothing.\n */\n var highlightAttributes: TextAttributes? = null\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: TextAttributes\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Label, this is\n * simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n\n companion object {\n /**\n * The default amount of screen depth offset applied to the label's text during rendering. Values less than zero\n * bias depth values toward the viewer.\n */\n protected const val DEFAULT_DEPTH_OFFSET = -0.1\n\n /**\n * The label's properties associated with the current render pass.\n */\n private val renderData = RenderData()\n }\n\n /**\n * Moves the shape over the globe's surface. For a Label, this simply change its position.\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n if (text?.isEmpty() != false) return // no text to render\n\n // Compute the label's Cartesian model point.\n rc.geographicToCartesian(position, altitudeMode, renderData.placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the label drawable and\n // determining the amount of depth offset to apply.\n renderData.cameraDistance = if (isAlwaysOnTop) 0.0 else rc.cameraPoint.distanceTo(renderData.placePoint)\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n if (renderData.cameraDistance < rc.horizonDistance) depthOffset = DEFAULT_DEPTH_OFFSET\n\n // Project the label's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(renderData.placePoint, depthOffset, renderData.screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this label has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n renderData.pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(\n renderData.pickedObjectId, renderData.pickColor\n )\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the label's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(renderData.pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n val texture = rc.getText(text, activeAttributes, rc.frustum.containsPoint(renderData.placePoint)) ?: return\n\n // Initialize the unit square transform to the identity matrix.\n renderData.unitSquareTransform.setToIdentity()\n\n // Apply the label's translation according to its text size and text offset. The text offset is defined with its\n // origin at the text's bottom-left corner and axes that extend up and to the right from the origin point.\n val w = texture.width.toDouble()\n val h = texture.height.toDouble()\n val s = activeAttributes.scale\n activeAttributes.textOffset.offsetForSize(w, h, renderData.offset)\n renderData.unitSquareTransform.setTranslation(\n renderData.screenPlacePoint.x - renderData.offset.x * s,\n renderData.screenPlacePoint.y - renderData.offset.y * s,\n renderData.screenPlacePoint.z\n )\n\n // Apply the label's rotation according to its rotation value and orientation mode. The rotation is applied\n // such that the text rotates around the text offset point.\n val actualRotation = if (rotationMode == OrientationMode.RELATIVE_TO_GLOBE)\n rc.camera.heading - rotation else -rotation\n if (actualRotation != ZERO) {\n renderData.unitSquareTransform.multiplyByTranslation(\n renderData.offset.x, renderData.offset.y, 0.0\n )\n renderData.unitSquareTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n renderData.unitSquareTransform.multiplyByTranslation(\n -renderData.offset.x, -renderData.offset.y, 0.0\n )\n }\n\n // Apply the label's translation and scale according to its text size.\n renderData.unitSquareTransform.multiplyByScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(renderData.unitSquareTransform, renderData.screenBounds)\n if (!rc.frustum.intersectsViewport(renderData.screenBounds)) return // the text is outside the viewport\n\n // Obtain a pooled drawable and configure it to draw the label's text.\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n drawable.opacity = rc.currentLayer.opacity\n\n // Use the basic GLSL program to draw the text.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the text's unit square transform matrix.\n drawable.unitSquareTransform.copy(renderData.unitSquareTransform)\n\n // Configure the drawable according to the active attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(renderData.pickColor)\n else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = rc.currentLayer.opacity\n drawable.texture = texture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerShapeDrawable(drawable, renderData.cameraDistance)\n }\n\n /**\n * Properties associated with the label during a render pass.\n */\n protected open class RenderData {\n /**\n * The model coordinate point corresponding to the label's position.\n */\n val placePoint = Vec3()\n /**\n * The screen coordinate point corresponding to the label's position.\n */\n val screenPlacePoint = Vec3()\n /**\n * The screen coordinate offset corresponding to the active attributes.\n */\n val offset = Vec2()\n /**\n * The screen coordinate transform to apply to the drawable unit square.\n */\n val unitSquareTransform = Matrix4()\n /**\n * The screen viewport indicating the label's screen bounds.\n */\n val screenBounds = Viewport()\n /**\n * Unique identifier associated with the label during picking.\n */\n var pickedObjectId = 0\n /**\n * Unique color used to display the label during picking.\n */\n val pickColor = Color()\n /**\n * The distance from the camera position to the label position, in meters.\n */\n var cameraDistance = 0.0\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSightline\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.BoundingSphere\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays an omnidirectional sightline's visibility within the WorldWind scene. The sightline's placement and area of\n * potential visibility are represented by a Cartesian sphere with a center position and a range. Terrain features\n * within the sphere are considered visible if there is a direct line-of-sight between the center position and a given\n * terrain point.\n *
\n * OmnidirectionalSightline displays an overlay on the WorldWind terrain indicating which terrain features are visible,\n * and which are occluded. Visible terrain features, those having a direct line-of-sight to the center position, appear\n * in the sightline's normal attributes or its highlight attributes, depending on the highlight state. Occluded terrain\n * features appear in the sightline's occlude attributes, regardless of highlight state. Terrain features outside the\n * sightline's range are excluded from the overlay.\n *
\n *

Limitations and Planned Improvements

* OmnidirectionalSightline is currently limited to terrain-based\n * occlusion, and does not incorporate other 3D scene elements during visibility determination. Subsequent iterations\n * will support occlusion of both terrain and 3D polygons. * The visibility overlay is drawn in ShapeAttributes'\n * interior color only. Subsequent iterations will add an outline where the sightline's range intersects the scene, and\n * will display the sightline's geometry as an outline. * OmnidirectionalSightline requires OpenGL ES 2.0\n * extension [GL_OES_depth_texture](https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt).\n * Subsequent iterations may relax this requirement.\n */\nopen class OmnidirectionalSightline @JvmOverloads constructor(\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n position: Position,\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n */\n range: Double,\n /**\n * Indicates this sightline's \"normal\" attributes. These attributes are used for the sightline's overlay when the\n * highlighted flag is false, and there is a direct line-of-sight from the sightline's center position to a terrain\n * feature. If null and this sightline is not highlighted, visible terrain features are excluded from\n * the overlay.\n */\n override var attributes: ShapeAttributes = ShapeAttributes()\n) : AbstractRenderable(), Attributable, Highlightable, Movable {\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n *\n * @throws IllegalArgumentException If the range is negative\n */\n var range = range\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"setRange\", \"invalidRange\")\n }\n field = value\n }\n /**\n * The sightline's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Determines whether the normal or highlighted attributes should be used for visible features.\n */\n override var isHighlighted = false\n /**\n * The attributes to use for visible features, when the sightline is highlighted.\n */\n override var highlightAttributes: ShapeAttributes? = null\n /**\n * The attributes to use for occluded features.\n */\n var occludeAttributes = ShapeAttributes().apply { interiorColor.copy(Color(1f, 0f, 0f, 1f)) }\n /**\n * A position associated with the object that indicates its aggregate geographic position. For an\n * OmnidirectionalSightline, this is simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * The attributes to use for visible features during the current render pass.\n */\n protected lateinit var activeAttributes: ShapeAttributes\n\n private val centerPoint = Vec3()\n private var pickedObjectId = 0\n private val pickColor = Color()\n private val boundingSphere = BoundingSphere()\n\n init {\n require(range >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"constructor\", \"invalidRange\")\n }\n }\n\n /**\n * Moves the sightline over the globe's surface.\n *\n * @param globe not used.\n * @param position the new position of the sightline's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n // Compute this sightline's center point in Cartesian coordinates.\n if (!determineCenterPoint(rc)) return\n\n // Don't render anything if the sightline's coverage area is not visible.\n if (!isVisible(rc)) return\n\n // Select the currently active attributes.\n determineActiveAttributes(rc)\n\n // Configure the pick color when rendering in pick mode.\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the sightline's drawables with its picked object ID.\n if (rc.isPickMode) rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n\n protected open fun determineCenterPoint(rc: RenderContext): Boolean {\n rc.geographicToCartesian(position, altitudeMode, centerPoint)\n return centerPoint.x != 0.0 && centerPoint.y != 0.0 && centerPoint.z != 0.0\n }\n\n protected open fun isVisible(rc: RenderContext): Boolean {\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint)\n val pixelSizeMeters = rc.pixelSizeAtDistance(cameraDistance)\n return if (range < pixelSizeMeters) false // The range is zero, or is less than one screen pixel\n else boundingSphere.set(centerPoint, range).intersectsFrustum(rc.frustum)\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Obtain a pooled drawable and configure it to draw the sightline's coverage.\n val pool = rc.getDrawablePool()\n val drawable = DrawableSightline.obtain(pool)\n\n // Compute the transform from sightline local coordinates to world coordinates.\n rc.globe.cartesianToLocalTransform(\n centerPoint.x, centerPoint.y, centerPoint.z, drawable.centerTransform\n )\n\n // Clamp range to max float value as OpenGL drawable operates with float range\n drawable.range = range.coerceIn(0.0, Float.MAX_VALUE.toDouble()).toFloat()\n\n // Configure the drawable colors according to the current attributes. When picking use a unique color associated\n // with the picked object ID. Null attributes indicate that nothing is drawn.\n drawable.visibleColor.copy(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawable.occludedColor.copy(if (rc.isPickMode) pickColor else occludeAttributes.interiorColor)\n\n // Use the sightline GLSL program to draw the coverage.\n drawable.program = rc.getShaderProgram { SightlineProgram() }\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n}","package earth.worldwind.shape\n\n/**\n * Orientation mode indicates how WorldWind interprets a renderable's orientation value, e.g., tilt and rotate\n * values. Accepted values are [RELATIVE_TO_GLOBE], and [RELATIVE_TO_SCREEN].\n */\nenum class OrientationMode {\n /**\n * Indicating that the related value is specified relative to the globe.\n */\n RELATIVE_TO_GLOBE,\n /**\n * Indicating that the related value is specified relative to the plane of the screen.\n */\n RELATIVE_TO_SCREEN;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Path @JvmOverloads constructor(\n positions: List, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n var positions = positions\n set(value) {\n field = value\n reset()\n }\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val interiorElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected lateinit var vertexBufferKey: Any\n protected lateinit var elementBufferKey: Any\n protected val vertexOrigin = Vec3()\n protected var isSurfaceShape = false\n protected var texCoord1d = 0.0\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoordMatrix = Matrix3()\n private val intermediateLocation = Location()\n\n companion object {\n protected const val VERTEX_STRIDE = 4\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n wrapMode = WrapMode.REPEAT\n }\n\n protected fun nextCacheKey() = Any()\n }\n\n override fun reset() {\n vertexArray = FloatArray(0)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (positions.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool, and compute distance to the render camera.\n val drawable: Drawable\n val drawState: DrawShapeState\n val cameraDistance: Double\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, (interiorElements + outlineElements + verticalElements).toIntArray())\n }\n\n // Configure the drawable's vertex texture coordinate attribute.\n drawState.texCoordAttrib(1 /*size*/, 12 /*stride in bytes*/)\n\n // Configure the drawable to use the outline texture when drawing the outline.\n if (activeAttributes.isDrawOutline) {\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n }\n }\n\n drawState.opacity(rc.currentLayer.opacity)\n\n // Configure the drawable to display the shape's outline. Increase surface shape line widths by 1/2 pixel. Lines\n // drawn indirectly offscreen framebuffer appear thinner when sampled as a texture.\n if (activeAttributes.isDrawOutline) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.lineWidth(activeAttributes.outlineWidth + if (isSurfaceShape) 0.5f else 0f)\n drawState.drawElements(\n GL_LINE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, interiorElements.size * Int.SIZE_BYTES\n )\n }\n\n // Disable texturing for the remaining drawable primitives.\n drawState.texture(null)\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawOutline && activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (interiorElements.size + outlineElements.size) * Int.SIZE_BYTES\n )\n }\n\n // Configure the drawable to display the shape's extruded interior.\n if (activeAttributes.isDrawInterior && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, interiorElements.size,\n GL_UNSIGNED_INT, 0\n )\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = false\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Determine the number of vertexes\n val vertexCount = if (maximumIntermediatePoints <= 0 || pathType == LINEAR) positions.size\n else if(positions.isNotEmpty()) positions.size + (positions.size - 1) * maximumIntermediatePoints else 0\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else FloatArray(vertexCount * VERTEX_STRIDE)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Add the first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/)\n\n // Add the remaining vertices, inserting vertices along each edge as indicated by the path's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, false /*intermediate*/)\n begin = end\n }\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*latitude*/, vertexOrigin.x /*longitude*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, true /*intermediate*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, intermediate: Boolean\n ): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude)\n else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n interiorElements.add(vertex)\n interiorElements.add(vertex.inc())\n }\n if (isExtrude && !intermediate) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n}","package earth.worldwind.shape\n\n/**\n * Path type indicates how WorldWind create a geographic path between two locations.\n * Accepted values are [GREAT_CIRCLE], [LINEAR] and [RHUMB_LINE].\n */\nenum class PathType {\n /**\n * Indicating a great circle arc between two locations.\n */\n GREAT_CIRCLE,\n /**\n * Indicating simple linear interpolation between two locations.\n */\n LINEAR,\n /**\n * Indicating a line of constant bearing between two locations.\n */\n RHUMB_LINE;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableLines\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.sin\n\n/**\n * Represents a Placemark shape. A placemark displays an image, a label and a leader connecting the placemark's\n * geographic position to the ground. All three of these items are optional. By default, the leader is not pickable. See\n * [Placemark.isLeaderPickingEnabled].\n *
\n * Placemarks may be drawn with either an image or as single-color square with a specified size. When the placemark\n * attributes indicate a valid image, the placemark's image is drawn as a rectangle in the image's original dimensions,\n * scaled by the image scale attribute. Otherwise, the placemark is drawn as a square with width and height equal to the\n * value of the image scale attribute, in pixels, and color equal to the image color attribute.\n */\nopen class Placemark @JvmOverloads constructor(\n /**\n * The placemark's geographic position.\n */\n position: Position,\n /**\n * The placemark's normal attributes.\n */\n var attributes: PlacemarkAttributes = PlacemarkAttributes(),\n /**\n * The placemark's display name.\n */\n name: String? = null\n) : AbstractRenderable(if (name?.isEmpty() != false) \"Placemark\" else name), Highlightable, Movable {\n /**\n * The placemark's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The placemark's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * The attributes to use when the placemark is highlighted.\n */\n var highlightAttributes: PlacemarkAttributes? = null\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The label text to draw near the placemark.\n */\n var label: String? = /*name*/null // Do not use display name as label by default\n /**\n * Sets the optional level-of-detail selector used to inject logic for selecting PlacemarkAttributes based on\n * the camera distance and highlighted attribute. If set to null, the normal and highlight attribute bundles used\n * respectfully for the normal and highlighted states.\n */\n var levelOfDetailSelector: LevelOfDetailSelector? = null\n /**\n * Enables or disables the eye distance scaling feature for this placemark. When enabled, the placemark's size is\n * reduced at higher eye distances. If true, this placemark's size is scaled inversely proportional to the eye\n * distance if the eye distance is greater than the value of the [Placemark.eyeDistanceScalingThreshold]\n * property. When the eye distance is below the threshold, this placemark is scaled only according to the [PlacemarkAttributes.imageScale].\n */\n var isEyeDistanceScaling = false\n /**\n * Sets the eye distance above which to reduce the size of this placemark, in meters.\n * If [isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as the eye\n * distance increases beyond this threshold.\n */\n var eyeDistanceScalingThreshold = DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Sets the eye altitude, in meters, above which this placemark's label is not displayed.\n */\n var eyeDistanceScalingLabelThreshold = 1.5 * DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Indicates whether this placemark's leader, if any, is pickable.\n */\n var isLeaderPickingEnabled = false\n /**\n * Enable additional altitude offset (billboarding) to prevent clipping Placamerk by terrain on tilt.\n */\n var isBillboardingEnabled = false\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * The amount of rotation to apply to the image, measured clockwise and relative to this placemark's\n * [Placemark.imageRotationReference].\n */\n var imageRotation = ZERO\n /**eyeDistanceScaling\n * Sets the type of rotation to apply if the [Placemark.imageRotation] is not zero. This value indicates\n * whether to apply this placemark's image rotation relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is rotated in the plane of the screen and its\n * orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is rotated in a plane tangent to the globe at\n * this placemark's position and retains its orientation relative to the globe.\n */\n var imageRotationReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Sets the amount of tilt to apply to the image, measured away from the eye point and relative to this\n * placemark's [Placemark.imageTiltReference]. While any positive or negative number may be specified,\n * values outside the range [0. 90] cause some or all of the image to be clipped.\n */\n var imageTilt = ZERO\n /**\n * Sets the type tilt to apply when [Placemark.imageTilt] is non-zero. This value indicates whether to\n * apply this placemark's image tilt relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is tilted inwards (for positive tilts) relative\n * to the plane of the screen, and its orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is tilted towards the globe's surface, and retains its\n * orientation relative to the surface.\n */\n var imageTiltReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Placemark, this is\n * simply it's position property.\n *\n * @return [Placemark.position]\n */\n override val referencePosition get() = position\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: PlacemarkAttributes\n /**\n * The picked object ID associated with the placemark during the current render pass.\n */\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n /**\n * The distance from the camera to the placemark in meters.\n */\n protected var cameraDistance = 0.0\n /**\n * Leader line vertex array. Initially sized to store two xyz points.\n */\n protected val vertexArray = FloatArray(6)\n protected var vertexArrayHashCode = 0\n protected lateinit var vertexBufferKey: Any\n\n /**\n * Presents an interfaced for dynamically determining the PlacemarkAttributes based on the distance between the\n * placemark and the camera.\n */\n interface LevelOfDetailSelector {\n /**\n * Gets the active attributes for the current distance to the camera and highlighted state.\n *\n * @param rc The current render context\n * @param placemark The placemark needing a level of detail selection\n * @param cameraDistance The distance from the placemark to the camera (meters)\n *\n * @return if placemark should display or skip its rendering\n */\n fun selectLevelOfDetail(rc: RenderContext, placemark: Placemark, cameraDistance: Double): Boolean\n }\n\n /**\n * Moves the shape over the globe's surface. For a Placemark, this simply set [Placemark.position].\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n /**\n * Performs the rendering; called by the public render method.\n *\n * @param rc the current render context\n */\n override fun doRender(rc: RenderContext) {\n // Compute the placemark's Cartesian model point and corresponding distance to the eye point. If the placemark's\n // position is terrain-dependent but off the terrain, then compute it ABSOLUTE so that we have a point for the\n // placemark and are thus able to draw it. Otherwise, its image and label portion that are potentially over the\n // terrain won't get drawn, and would disappear as soon as there is no terrain at the placemark's position. This\n // can occur at the window edges.\n rc.geographicToCartesian(position, altitudeMode, placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the placemark drawable\n // and determining the amount of depth offset to apply.\n cameraDistance = if (isAlwaysOnTop) 0.0 else rc.cameraPoint.distanceTo(placePoint)\n\n // Allow the placemark to adjust the level of detail based on distance to the camera\n if (levelOfDetailSelector?.selectLevelOfDetail(rc, this, cameraDistance) == false) return // skip rendering\n\n // Determine the attributes to use for the current render pass.\n determineActiveAttributes(rc)\n\n // Perform point based culling for placemarks who's textures haven't been loaded yet.\n // If the texture hasn't been loaded yet, then perform point-based culling to avoid\n // loading textures for placemarks that are 'probably' outside the viewing frustum.\n // There are cases where a placemark's texture would be partially visible if it at the\n // edge of the screen were loaded. In these cases the placemark will \"pop\" into view when\n // the placePoint enters the view frustum.\n val activeTexture = activeAttributes.imageSource?.let {\n rc.getTexture(it, null, rc.frustum.containsPoint(placePoint))\n }\n\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n var visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Apply the icon's translation and scale according to the image size, image offset and image scale. The image\n // offset is defined with its origin at the image's bottom-left corner and axes that extend up and to the right\n // from the origin point. When the placemark has no active texture the image scale defines the image size and no\n // other scaling is applied.\n val offsetX: Double\n val offsetY: Double\n val scaleX: Double\n val scaleY: Double\n if (activeTexture != null) {\n val w = activeTexture.width.toDouble()\n val h = activeTexture.height.toDouble()\n val s = activeAttributes.imageScale * visibilityScale\n activeAttributes.imageOffset.offsetForSize(w, h, offset)\n offsetX = offset.x * s\n offsetY = offset.y * s\n scaleX = w * s\n scaleY = h * s\n } else {\n // This branch serves both non-textured attributes and also textures that haven't been loaded yet.\n // We set the size for non-loaded textures to the typical size of a contemporary \"small\" icon (24px)\n var size = if (activeAttributes.imageSource != null) 24.0 else activeAttributes.imageScale\n size *= visibilityScale\n activeAttributes.imageOffset.offsetForSize(size, size, offset)\n offsetX = offset.x\n offsetY = offset.y\n scaleY = size\n scaleX = scaleY\n }\n\n // Offset along the normal vector to avoid collision with terrain.\n if (isBillboardingEnabled && offsetY != 0.0) {\n rc.globe.geographicToCartesianNormal(position.latitude, position.longitude, scratchVector).also {\n // Use real camera distance in billboarding\n val distance = if (isAlwaysOnTop) rc.cameraPoint.distanceTo(placePoint) else cameraDistance\n val altitude = rc.pixelSizeAtDistance(distance) * sin(rc.camera.tilt.inRadians)\n placePoint.add(scratchVector.multiply(offsetY * altitude))\n }\n }\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n val absTilt = abs(rc.camera.tilt.inDegrees)\n if (cameraDistance < rc.horizonDistance && absTilt <= 90) {\n depthOffset = (1 - absTilt / 90) * DEFAULT_DEPTH_OFFSET\n }\n\n // Project the placemark's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(placePoint, depthOffset, screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Keep track of the drawable count to determine whether this placemark has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Prepare a drawable for the placemark's leader, if requested. Enqueue the leader drawable before the icon\n // drawable in order to give the icon visual priority over the leader.\n if (mustDrawLeader(rc)) {\n // Compute the placemark's Cartesian ground point.\n rc.geographicToCartesian(position, AltitudeMode.CLAMP_TO_GROUND, groundPoint)\n\n // If the leader is visible, enqueue a drawable leader for processing on the OpenGL thread.\n if (rc.frustum.intersectsSegment(groundPoint, placePoint)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableLines.obtain(pool)\n prepareDrawableLeader(rc, drawable)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n // Prepare image transformation matrix\n prepareImageTransform(rc.camera, offsetX, offsetY, scaleX, scaleY)\n\n // If the placemark's icon is visible, enqueue a drawable icon for processing on the OpenGL thread.\n boundingRectForUnitSquare(imageTransform, imageBounds)\n if (rc.frustum.intersectsViewport(imageBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableIcon(rc, drawable, activeTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n // If there's a label, perform these same operations for the label texture.\n if (mustDrawLabel(rc)) {\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingLabelThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n rc.getText(label, activeAttributes.labelAttributes, rc.frustum.containsPoint(placePoint))?.let { labelTexture ->\n val w = labelTexture.width.toDouble()\n val h = labelTexture.height.toDouble()\n val s = activeAttributes.labelAttributes.scale * visibilityScale\n activeAttributes.labelAttributes.textOffset.offsetForSize(w, h, offset)\n labelTransform.setTranslation(\n screenPlacePoint.x - offset.x * s,\n screenPlacePoint.y - offset.y * s,\n screenPlacePoint.z\n )\n labelTransform.setScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(labelTransform, labelBounds)\n if (rc.frustum.intersectsViewport(labelBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableLabel(rc, drawable, labelTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n }\n\n // Enqueue a picked object that associates the placemark's icon and leader with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Determines the placemark attributes to use for the current render pass.\n *\n * @param rc the current render context\n */\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n /**\n * Prepare image transform matrix according to specified parameters\n *\n * @param camera current camera view\n * @param offsetX offset along X axis\n * @param offsetY offset along X axis\n * @param scaleX scaled width\n * @param scaleY scaled height\n */\n protected open fun prepareImageTransform(\n camera: Camera, offsetX: Double, offsetY: Double, scaleX: Double, scaleY: Double\n ) {\n // Initialize the unit square transform to the identity matrix.\n imageTransform.setToIdentity()\n\n // Position image on screen\n imageTransform.multiplyByTranslation(\n screenPlacePoint.x, screenPlacePoint.y, screenPlacePoint.z\n )\n\n // Divide Z by 2^24 to prevent texture clipping when tilting (where 24 is depth buffer bit size).\n // Doing so will limit depth range to (diagonal length)/2^24 and make its value within 0..1 range.\n imageTransform.multiplyByScale(1.0, 1.0, 1.0 / (1 shl 24))\n\n // Perform the tilt so that the image tilts back from its base into the view volume\n val actualTilt = if (imageTiltReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.tilt + imageTilt else imageTilt\n if (actualTilt.inDegrees != 0.0) imageTransform.multiplyByRotation(-1.0, 0.0, 0.0, actualTilt)\n\n // Perform image rotation\n val actualRotation = if (imageRotationReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.heading - imageRotation else -imageRotation\n if (actualRotation.inDegrees != 0.0) imageTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n\n // Apply pivot translation\n imageTransform.multiplyByTranslation(-offsetX, -offsetY, 0.0)\n\n // Apply scale\n imageTransform.multiplyByScale(scaleX, scaleY, 1.0)\n }\n\n /**\n * Prepares this placemark's icon or symbol for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableIcon(rc: RenderContext, drawable: DrawableScreenTexture, activeTexture: Texture?) {\n // Use the basic GLSL program to draw the placemark's icon.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the plaemark's unit square transform matrix.\n drawable.unitSquareTransform.copy(imageTransform)\n\n // Configure the drawable according to the placemark's active attributes. Use a color appropriate for the pick\n // mode. When picking use a unique color associated with the picked object ID. Use the texture associated with\n // the active attributes' image source and its associated tex coord transform. If the texture is not specified\n // or not available, draw a simple colored square.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.imageColor)\n drawable.opacity = rc.currentLayer.opacity\n drawable.texture = activeTexture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n drawable.opacity = rc.currentLayer.opacity\n }\n\n /**\n * Prepares this placemark's label for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLabel(rc: RenderContext, drawable: DrawableScreenTexture, labelTexture: Texture) {\n // Use the basic GLSL program to draw the placemark's label.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the label's unit square transform matrix.\n drawable.unitSquareTransform.copy(labelTransform)\n\n // Configure the drawable according to the active label attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(pickColor) else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.texture = labelTexture\n drawable.enableDepthTest = activeAttributes.labelAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's leader for drawing in a subsequent drawing pass. Implementations must be careful not to\n * leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLeader(rc: RenderContext, drawable: DrawableLines) {\n // Use the basic GLSL program to draw the placemark's leader.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Compute the drawable's vertex points, in Cartesian coordinates relative to the placemark's ground point.\n vertexArray[0] = 0f // groundPoint.x - groundPoint.x\n vertexArray[1] = 0f // groundPoint.y - groundPoint.y\n vertexArray[2] = 0f // groundPoint.z - groundPoint.z\n vertexArray[3] = (placePoint.x - groundPoint.x).toFloat()\n vertexArray[4] = (placePoint.y - groundPoint.y).toFloat()\n vertexArray[5] = (placePoint.z - groundPoint.z).toFloat()\n\n // Regenerate vertex buffer on array change\n val hashCode = vertexArray.contentHashCode()\n if (vertexArrayHashCode != hashCode) {\n vertexArrayHashCode = hashCode\n vertexBufferKey = nextCacheKey()\n }\n drawable.vertexPoints = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Compute the drawable's modelview-projection matrix, relative to the placemark's ground point.\n drawable.mvpMatrix.copy(rc.modelviewProjection)\n drawable.mvpMatrix.multiplyByTranslation(groundPoint.x, groundPoint.y, groundPoint.z)\n\n // Configure the drawable according to the placemark's active leader attributes. Use a color appropriate for the\n // pick mode. When picking use a unique color associated with the picked object ID.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.leaderAttributes.outlineColor)\n drawable.lineWidth = activeAttributes.leaderAttributes.outlineWidth\n drawable.enableDepthTest = activeAttributes.leaderAttributes.isDepthTest\n }\n\n /**\n * Determines if a label should and can be drawn.\n *\n * @return True if there is a valid label and label attributes.\n */\n protected open fun mustDrawLabel(rc: RenderContext) = activeAttributes.isDrawLabel && label?.isNotEmpty() == true\n\n /**\n * Determines if a leader-line should and can be drawn.\n *\n * @return True if leader-line directive is enabled and there are valid leader-line attributes.\n */\n protected open fun mustDrawLeader(rc: RenderContext) =\n activeAttributes.isDrawLeader && (isLeaderPickingEnabled || !rc.isPickMode) && altitudeMode != AltitudeMode.CLAMP_TO_GROUND\n\n companion object {\n /**\n * The default eye distance above which to reduce the size of this placemark, in meters.\n * If [Placemark.isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as\n * the eye distance increases beyond this threshold.\n */\n const val DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD = 4e5\n protected const val DEFAULT_DEPTH_OFFSET = -0.03\n private val placePoint = Vec3()\n private val scratchVector = Vec3()\n private val screenPlacePoint = Vec3()\n private val groundPoint = Vec3()\n private val offset = Vec2()\n private val imageTransform = Matrix4()\n private val labelTransform = Matrix4()\n private val imageBounds = Viewport()\n private val labelBounds = Viewport()\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws a simple square\n * centered on the supplied position with the given size and color.\n *\n * @param position The geographic position where the placemark is drawn.\n * @param color The color of the placemark.\n * @param pixelSize The width and height of the placemark.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithColorAndSize(position: Position, color: Color, pixelSize: Int) =\n Placemark(position, PlacemarkAttributes().apply {\n imageColor = color\n imageScale = pixelSize.toDouble()\n })\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws the given image\n * centered on the supplied position.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithImage(position: Position, imageSource: ImageSource) =\n Placemark(position, PlacemarkAttributes.createWithImage(imageSource))\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle (with TextAttributes) that\n * draws the given image centered on the supplied position with a nearby label.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n * @param label The text that is drawn near the image. This parameter becomes the placemark's displayName\n * property.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle containing TextAttributes.\n */\n @JvmStatic\n fun createWithImageAndLabel(\n position: Position, imageSource: ImageSource, label: String\n ) = Placemark(position, PlacemarkAttributes.createWithImage(imageSource), label)\n\n protected fun nextCacheKey() = Any()\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport kotlin.jvm.JvmStatic\n\n/**\n * Holds attributes applied to [Placemark] shapes.\n * The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\nopen class PlacemarkAttributes(\n /**\n * Returns the source of the placemark's image. If null, the placemark is drawn as a square whose width and height\n * are the value of this attribute object's [imageScale] property.\n */\n var imageSource: ImageSource?,\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n imageColor: Color,\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n imageOffset: Offset,\n /**\n * Returns the amount to scale the placemark's image. When this attribute bundle has a valid image path the scale is\n * applied to the image's dimensions. Otherwise, the scale indicates the dimensions in pixels of a square drawn at\n * the placemark's geographic position. A scale of 0 causes the placemark to disappear; however, the placemark's\n * label, if any, is still drawn.\n */\n var imageScale: Double,\n /**\n * Returns the minimum amount to scale the placemark's image. When a [Placemark.isEyeDistanceScaling] is true,\n * this value controls the minimum size of the rendered placemark. A value of 0 allows the placemark to disappear.\n */\n var minimumImageScale: Double,\n /**\n * Returns whether to draw a placemark's label text.\n */\n var isDrawLabel: Boolean,\n /**\n * Returns whether to draw a line from the placemark's geographic position to the ground.\n */\n var isDrawLeader: Boolean,\n /**\n * Returns whether the placemark should be depth-tested against other objects in the scene. If true, the placemark\n * may be occluded by terrain and other objects in certain viewing situations. If false, the placemark will not be\n * occluded by terrain and other objects. If this value is true, the placemark's label, if any, has an independent\n * depth-test control.\n */\n var isDepthTest: Boolean,\n /**\n * Returns the attributes to apply to the placemark's label\n */\n labelAttributes: TextAttributes,\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n leaderAttributes: ShapeAttributes\n) {\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n var imageColor = imageColor\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n var imageOffset = imageOffset\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the placemark's label\n */\n var labelAttributes = labelAttributes\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n var leaderAttributes = leaderAttributes\n set(value) {\n field.copy(value)\n }\n\n /**\n * Constructs a placemark attributes bundle. The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\n constructor(): this(\n imageSource = null,\n imageColor = Color(1f, 1f, 1f, 1f), // white\n imageOffset = Offset.center(),\n imageScale = 1.0,\n minimumImageScale = 0.0,\n isDrawLabel = true,\n isDrawLeader = false,\n isDepthTest = true,\n labelAttributes = TextAttributes(),\n leaderAttributes = ShapeAttributes()\n )\n\n /**\n * Constructs a placemark attribute bundle from the specified attributes. Performs a deep copy of the color, offset,\n * label attributes and leader-line attributes.\n *\n * @param attributes The attributes to be copied.\n */\n constructor(attributes: PlacemarkAttributes): this(\n attributes.imageSource,\n Color(attributes.imageColor),\n Offset(attributes.imageOffset),\n attributes.imageScale,\n attributes.minimumImageScale,\n attributes.isDrawLabel,\n attributes.isDrawLeader,\n attributes.isDepthTest,\n TextAttributes(attributes.labelAttributes),\n ShapeAttributes(attributes.leaderAttributes)\n )\n\n fun copy(attributes: PlacemarkAttributes) = apply {\n imageSource = attributes.imageSource\n imageColor.copy(attributes.imageColor)\n imageOffset.copy(attributes.imageOffset)\n imageScale = attributes.imageScale\n minimumImageScale = attributes.minimumImageScale\n isDrawLabel = attributes.isDrawLabel\n isDrawLeader = attributes.isDrawLeader\n isDepthTest = attributes.isDepthTest\n labelAttributes.copy(attributes.labelAttributes)\n leaderAttributes.copy(attributes.leaderAttributes)\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is PlacemarkAttributes) return false\n if (imageSource != other.imageSource) return false\n if (imageColor != other.imageColor) return false\n if (imageOffset != other.imageOffset) return false\n if (imageScale != other.imageScale) return false\n if (minimumImageScale != other.minimumImageScale) return false\n if (isDrawLabel != other.isDrawLabel) return false\n if (isDrawLeader != other.isDrawLeader) return false\n if (isDepthTest != other.isDepthTest) return false\n if (labelAttributes != other.labelAttributes) return false\n if (leaderAttributes != other.leaderAttributes) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = imageSource?.hashCode() ?: 0\n result = 31 * result + imageColor.hashCode()\n result = 31 * result + imageOffset.hashCode()\n result = 31 * result + imageScale.hashCode()\n result = 31 * result + minimumImageScale.hashCode()\n result = 31 * result + isDrawLabel.hashCode()\n result = 31 * result + isDrawLeader.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + labelAttributes.hashCode()\n result = 31 * result + leaderAttributes.hashCode()\n return result\n }\n\n companion object {\n @JvmStatic\n fun createWithImage(imageSource: ImageSource) = PlacemarkAttributes().apply { this.imageSource = imageSource }\n\n @JvmStatic\n fun createWithImageAndLeader(imageSource: ImageSource) = PlacemarkAttributes().apply {\n this.imageSource = imageSource\n isDrawLeader = true\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Polygon @JvmOverloads constructor(\n positions: List = listOf(), attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n protected val boundaries = mutableListOf(positions)\n val boundaryCount get() = boundaries.size\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val topElements = mutableListOf()\n protected val sideElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected var vertexBufferKey = nextCacheKey()\n protected var elementBufferKey = nextCacheKey()\n protected val vertexOrigin = Vec3()\n protected var isSurfaceShape = false\n protected var cameraDistance = 0.0\n protected var texCoord1d = 0.0\n protected val tessCallback = object : GLUtessellatorCallbackAdapter() {\n override fun combineData(\n coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any\n ) = tessCombine(polygonData as RenderContext, coords, data, weight, outData)\n\n override fun vertexData(vertexData: Any, polygonData: Any) = tessVertex(polygonData as RenderContext, vertexData)\n\n override fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) = tessEdgeFlag(polygonData as RenderContext, boundaryEdge)\n\n override fun errorData(errnum: Int, polygonData: Any) = tessError(polygonData as RenderContext, errnum)\n }\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoord2d = Vec3()\n private val texCoordMatrix = Matrix3()\n private val modelToTexCoord = Matrix4()\n private val intermediateLocation = Location()\n private val tessCoords = DoubleArray(3)\n private val tessVertices = IntArray(3)\n private val tessEdgeFlags = BooleanArray(3)\n private var tessEdgeFlag = true\n private var tessVertexCount = 0\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n protected const val VERTEX_ORIGINAL = 0\n protected const val VERTEX_INTERMEDIATE = 1\n protected const val VERTEX_COMBINED = 2\n protected fun nextCacheKey() = Any()\n }\n\n fun getBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"getBoundary\", \"invalidIndex\")\n }\n return boundaries[index]\n }\n\n fun setBoundary(index: Int, positions: List): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"setBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.set(index, positions)\n }\n\n fun addBoundary(positions: List): Boolean {\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.add(positions)\n }\n\n fun addBoundary(index: Int, positions: List) {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"addBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n boundaries.add(index, positions)\n }\n\n fun removeBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"removeBoundary\", \"invalidIndex\")\n }\n reset()\n return boundaries.removeAt(index)\n }\n\n fun clearBoundaries() {\n boundaries.clear()\n reset()\n }\n\n override fun reset() {\n vertexArray = FloatArray(0)\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (boundaries.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(\n GL_ELEMENT_ARRAY_BUFFER, (topElements + sideElements + outlineElements + verticalElements).toIntArray()\n )\n }\n if (isSurfaceShape || activeAttributes.interiorColor.alpha >= 1.0) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes. Disable triangle backface culling when we're\n // displaying a polygon without extruded sides, so we want to draw the top and the bottom.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior top.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n drawState.drawElements(GL_TRIANGLES, topElements.size, GL_UNSIGNED_INT, 0 /*offset*/)\n\n // Configure the drawable to display the shape's interior sides.\n if (isExtrude) {\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLES, sideElements.size, GL_UNSIGNED_INT, topElements.size * Int.SIZE_BYTES /*offset*/)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n drawState.drawElements(\n GL_LINES, outlineElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size) * Int.SIZE_BYTES /*offset*/\n )\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size + outlineElements.size) * Int.SIZE_BYTES /*offset*/\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Determine the number of vertexes\n val noIntermediatePoints = maximumIntermediatePoints <= 0 || pathType == LINEAR\n val vertexCount = boundaries.sumOf { p ->\n if (noIntermediatePoints) p.size\n else if (p.isNotEmpty() && p[0] == p[p.size - 1]) p.size + (p.size - 1) * maximumIntermediatePoints\n else p.size + p.size * maximumIntermediatePoints\n }\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else if (!isSurfaceShape) FloatArray(vertexCount * VERTEX_STRIDE)\n else FloatArray((vertexCount + boundaries.size) * VERTEX_STRIDE) // Reserve boundaries.size for combined vertexes\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n val tess = rc.tessellator\n GLU.gluTessNormal(tess, 0.0, 0.0, 1.0)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, tessCallback)\n GLU.gluTessBeginPolygon(tess, rc)\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions to assemble\n GLU.gluTessBeginContour(tess)\n\n // Add the boundary's first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, VERTEX_ORIGINAL /*type*/)\n\n // Add the remaining boundary vertices, tessellating each edge as indicated by the polygon's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, VERTEX_ORIGINAL /*type*/)\n begin = end\n }\n\n // Tessellate the implicit closing edge if the boundary is not already closed.\n if (begin != positions[0]) addIntermediateVertices(rc, begin, positions[0])\n GLU.gluTessEndContour(tess)\n }\n GLU.gluTessEndPolygon(tess)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, null)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, VERTEX_INTERMEDIATE /*type*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, type: Int): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (type != VERTEX_COMBINED) {\n tessCoords[0] = longitude.inDegrees\n tessCoords[1] = latitude.inDegrees\n tessCoords[2] = altitude\n GLU.gluTessVertex(rc.tessellator, tessCoords, 0 /*coords_offset*/, vertex)\n }\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude) else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n }\n if (isExtrude && type == VERTEX_ORIGINAL) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var numPoints = 0.0\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions\n for (j in positions.indices) {\n val point = rc.geographicToCartesian(positions[j], AltitudeMode.ABSOLUTE, point)\n mx += point.x\n my += point.y\n mz += point.z\n numPoints++\n }\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n rc.globe.cartesianToLocalTransform(mx, my, mz, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n protected open fun tessCombine(rc: RenderContext, coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {\n ensureVertexArrayCapacity() // Increment array size to fit combined vertexes\n outData[0] = addVertex(rc, coords[1].degrees /*lat*/, coords[0].degrees /*lon*/, coords[2] /*alt*/, VERTEX_COMBINED /*type*/)\n }\n\n protected open fun tessVertex(rc: RenderContext, vertexData: Any) {\n tessVertices[tessVertexCount] = vertexData as Int\n tessEdgeFlags[tessVertexCount] = tessEdgeFlag\n if (tessVertexCount < 2) {\n tessVertexCount++ // increment the vertex count and wait for more vertices\n return\n } else {\n tessVertexCount = 0 // reset the vertex count and process one triangle\n }\n val v0 = tessVertices[0]\n val v1 = tessVertices[1]\n val v2 = tessVertices[2]\n topElements.add(v0)\n topElements.add(v1)\n topElements.add(v2)\n if (tessEdgeFlags[0] && isExtrude && !isSurfaceShape) {\n sideElements.add(v0)\n sideElements.add(v0.inc())\n sideElements.add(v1)\n sideElements.add(v1)\n sideElements.add(v0.inc())\n sideElements.add(v1.inc())\n }\n if (tessEdgeFlags[1] && isExtrude && !isSurfaceShape) {\n sideElements.add(v1)\n sideElements.add(v1.inc())\n sideElements.add(v2)\n sideElements.add(v2)\n sideElements.add(v1.inc())\n sideElements.add(v2.inc())\n }\n if (tessEdgeFlags[2] && isExtrude && !isSurfaceShape) {\n sideElements.add(v2)\n sideElements.add(v2.inc())\n sideElements.add(v0)\n sideElements.add(v0)\n sideElements.add(v2.inc())\n sideElements.add(v0.inc())\n }\n if (tessEdgeFlags[0]) {\n outlineElements.add(v0)\n outlineElements.add(v1)\n }\n if (tessEdgeFlags[1]) {\n outlineElements.add(v1)\n outlineElements.add(v2)\n }\n if (tessEdgeFlags[2]) {\n outlineElements.add(v2)\n outlineElements.add(v0)\n }\n }\n\n protected open fun tessEdgeFlag(rc: RenderContext, boundaryEdge: Boolean) { tessEdgeFlag = boundaryEdge }\n\n protected open fun tessError(rc: RenderContext, errNum: Int) {\n val errStr = GLU.gluErrorString(errNum)\n logMessage(\n WARN, \"Polygon\", \"assembleGeometry\", \"Error attempting to tessellate polygon '$errStr'\"\n )\n }\n\n protected open fun ensureVertexArrayCapacity() {\n val size = vertexArray.size\n if (size == vertexIndex) {\n val increment = (size shr 1).coerceAtLeast(12)\n val newArray = FloatArray(size + increment)\n vertexArray.copyInto(newArray)\n vertexArray = newArray\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\n\n/**\n * Holds attributes applied to geographic shapes.\n */\nopen class ShapeAttributes(\n /**\n * Indicates whether shape interiors are enabled.\n */\n var isDrawInterior: Boolean,\n /**\n * Indicates whether shape outlines are enabled.\n */\n var isDrawOutline: Boolean,\n /**\n * Indicates whether shape vertical outlines are enabled. Not all shapes display vertical outlines. Those that do\n * not ignore this property. When enabled, those that do display vertical lines extending from the shape's specified\n * positions to the ground.\n */\n var isDrawVerticals: Boolean,\n /**\n * Indicates whether shape depth-testing is enabled. When true, shapes may be occluded by terrain and other shapes\n * in certain viewing situations. When false, shapes will not be occluded by terrain and other shapes.\n */\n var isDepthTest: Boolean,\n /**\n * Indicates whether depth write enabled.\n */\n var isDepthWrite: Boolean,\n /**\n * Sets whether shape lighting is enabled. When true, the appearance of a shape's color and image source may be\n * modified by shading applied from a global light source.\n */\n var isLightingEnabled: Boolean,\n /**\n * Indicates the color and opacity of shape interiors.\n */\n interiorColor: Color,\n /**\n * Indicates the color and opacity of shape outlines.\n */\n outlineColor: Color,\n /**\n * Indicates the width of shape outlines.\n */\n var outlineWidth: Float,\n /**\n * Indicates the image source applied to shape interiors. When null, shape interiors are displayed in the interior\n * color. When non-null, image pixels appear in shape interiors, with each image pixel multiplied by the interior\n * RGBA color. Use a white interior color to display unmodified image pixels.\n *
\n * By default, interior image sources are displayed as a repeating pattern across shape interiors. The pattern\n * matches image pixels to screen pixels, such that the image appears to repeat in screen coordinates.\n */\n var interiorImageSource: ImageSource?,\n /**\n * Indicates the image source applied to shape outlines.\n */\n var outlineImageSource: ImageSource?\n) {\n /**\n * Indicates the color and opacity of shape interiors.\n */\n var interiorColor = interiorColor\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates the color and opacity of shape outlines.\n */\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n isDrawInterior = true,\n isDrawOutline = true,\n isDrawVerticals = false,\n isDepthTest = true,\n isDepthWrite = true,\n isLightingEnabled = false,\n interiorColor = Color(1f, 1f, 1f, 1f), // white\n outlineColor = Color(1f, 0f, 0f, 1f), // red\n outlineWidth = 1.0f,\n interiorImageSource = null,\n outlineImageSource = null\n )\n\n constructor(attributes: ShapeAttributes): this(\n attributes.isDrawInterior,\n attributes.isDrawOutline,\n attributes.isDrawVerticals,\n attributes.isDepthTest,\n attributes.isDepthWrite,\n attributes.isLightingEnabled,\n Color(attributes.interiorColor),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.interiorImageSource,\n attributes.outlineImageSource\n )\n\n fun copy(attributes: ShapeAttributes) = apply {\n isDrawInterior = attributes.isDrawInterior\n isDrawOutline = attributes.isDrawOutline\n isDrawVerticals = attributes.isDrawVerticals\n isDepthTest = attributes.isDepthTest\n isDepthWrite = attributes.isDepthWrite\n isLightingEnabled = attributes.isLightingEnabled\n interiorColor.copy(attributes.interiorColor)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n interiorImageSource = attributes.interiorImageSource\n outlineImageSource = attributes.outlineImageSource\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is ShapeAttributes) return false\n if (isDrawInterior != other.isDrawInterior) return false\n if (isDrawOutline != other.isDrawOutline) return false\n if (isDrawVerticals != other.isDrawVerticals) return false\n if (isDepthTest != other.isDepthTest) return false\n if (isDepthWrite != other.isDepthWrite) return false\n if (isLightingEnabled != other.isLightingEnabled) return false\n if (interiorColor != other.interiorColor) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (interiorImageSource != other.interiorImageSource) return false\n if (outlineImageSource != other.outlineImageSource) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = isDrawInterior.hashCode()\n result = 31 * result + isDrawOutline.hashCode()\n result = 31 * result + isDrawVerticals.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + isDepthWrite.hashCode()\n result = 31 * result + isLightingEnabled.hashCode()\n result = 31 * result + interiorColor.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + (interiorImageSource?.hashCode() ?: 0)\n result = 31 * result + (outlineImageSource?.hashCode() ?: 0)\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractSurfaceRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.SurfaceTextureProgram\n\nopen class SurfaceImage(sector: Sector, var imageSource: ImageSource): AbstractSurfaceRenderable(sector, \"Surface Image\") {\n var imageOptions: ImageOptions? = null\n\n override fun doRender(rc: RenderContext) {\n if (sector.isEmpty || !rc.terrain.sector.intersects(sector) || !getExtent(rc).intersectsFrustum(rc.frustum)) return\n val texture = rc.getTexture(imageSource, imageOptions) ?: return // no texture to draw\n\n // Enqueue a drawable surface texture for processing on the OpenGL thread.\n val program = getShaderProgram(rc)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(program, sector, texture, texture.coordTransform)\n drawable.opacity = rc.currentLayer.opacity\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n\n // Enqueue a picked object that associates the drawable surface texture with this surface image.\n if (rc.isPickMode) {\n val pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, drawable.color)\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun getShaderProgram(rc: RenderContext) = rc.getShaderProgram { SurfaceTextureProgram() }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\n/**\n * Holds attributes applied to text shapes and [Placemark] labels.\n */\nopen class TextAttributes protected constructor(\n font: Font,\n textColor: Color,\n textOffset: Offset,\n outlineColor: Color,\n var outlineWidth: Float,\n var isOutlineEnabled: Boolean,\n var isDepthTest: Boolean,\n var scale: Double\n) {\n var font = font\n set(value) {\n field.copy(value)\n }\n var textColor = textColor\n set(value) {\n field.copy(value)\n }\n var textOffset = textOffset\n set(value) {\n field.copy(value)\n }\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n font = Font(),\n textColor = Color(1f, 1f, 1f, 1f),\n textOffset = Offset.bottomCenter(),\n outlineColor = Color(0f, 0f, 0f, 1f),\n outlineWidth = 3f,\n isOutlineEnabled = true,\n isDepthTest = true,\n scale = 1.0\n )\n\n constructor(attributes: TextAttributes): this(\n attributes.font,\n Color(attributes.textColor),\n Offset(attributes.textOffset),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.isOutlineEnabled,\n attributes.isDepthTest,\n attributes.scale\n )\n\n fun copy(attributes: TextAttributes) = apply {\n font.copy(attributes.font)\n textColor.copy(attributes.textColor)\n textOffset.copy(attributes.textOffset)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n isOutlineEnabled = attributes.isOutlineEnabled\n isDepthTest = attributes.isDepthTest\n scale = attributes.scale\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is TextAttributes) return false\n if (font != other.font) return false\n if (textColor != other.textColor) return false\n if (textOffset != other.textOffset) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (isOutlineEnabled != other.isOutlineEnabled) return false\n if (isDepthTest != other.isDepthTest) return false\n if (scale != other.scale) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = font.hashCode()\n result = 31 * result + textColor.hashCode()\n result = 31 * result + textOffset.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + isOutlineEnabled.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + scale.hashCode()\n return result\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.CENTER\nimport org.w3c.dom.CanvasTextAlign\n\n/**\n * Holds attributes controlling the style, size and other attributes of [earth.worldwind.shape.Label] shapes and\n * the textual features of [earth.worldwind.shape.Placemark] and other shapes. The values used for these attributes are those\n * defined by the CSS Font property.\n */\nactual open class Font(\n /**\n * The font size.\n */\n var size: Int,\n /**\n * The font family.\n * @see CSS font-family for defined values.\n */\n var family: String = \"sans-serif\",\n /**\n * The font weight.\n * @see CSS font-weight for defined values.\n */\n var weight: String = \"normal\",\n /**\n * The font style.\n * @see CSS font-style for defined values.\n */\n var style: String = \"normal\",\n /**\n * The font variant.\n * @see CSS font-variant for defined values.\n */\n var variant: String = \"normal\",\n /**\n * The horizontal alignment of the font.\n * Recognized values are \"left\", \"center\" and \"right\".\n */\n var horizontalAlignment: CanvasTextAlign = CanvasTextAlign.CENTER\n) {\n actual constructor(): this(14)\n actual constructor(family: String, weight: FontWeight, size: Int): this(\n size, family,\n if(weight == FontWeight.BOLD) \"bold\" else \"normal\",\n if(weight == FontWeight.ITALIC) \"italic\" else \"normal\",\n )\n\n init {\n require(size > 0) {\n logMessage(ERROR, \"Font\", \"constructor\", \"invalidSize\");\n }\n }\n\n actual fun copy(font: Font) {\n size = font.size\n style = font.style\n variant = font.variant\n weight = font.weight\n family = font.family\n horizontalAlignment = font.horizontalAlignment\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Font) return false\n if (size != other.size) return false\n if (style != other.style) return false\n if (variant != other.variant) return false\n if (weight != other.weight) return false\n if (family != other.family) return false\n if (horizontalAlignment != other.horizontalAlignment) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = size\n result = 31 * result + style.hashCode()\n result = 31 * result + variant.hashCode()\n result = 31 * result + weight.hashCode()\n result = 31 * result + family.hashCode()\n result = 31 * result + horizontalAlignment.hashCode()\n return result\n }\n\n /**\n * A string representing this font's style, weight, size and family properties, suitable for\n * passing directly to a 2D canvas context.\n */\n override fun toString() = \"$style $variant $weight ${size}px $family\"\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\n\nopen class TiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet): AbstractRenderable(\"Tiled Surface Image\") {\n /**\n * Tile factory implementation.\n */\n var tileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Tile pyramid representation.\n */\n var levelSet = levelSet\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Additional image texture options.\n */\n var imageOptions: ImageOptions? = null\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Define imagery level of details. It controls tile pixel density on the screen.\n */\n var detailControl = 1.0\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset = 0\n /**\n * Define cache tiles factory implementation.\n */\n var cacheTileFactory: TileFactory? = null\n /**\n * Configures tiled surface image to work only with cache source.\n */\n var useCacheOnly = false\n protected val topLevelTiles = mutableListOf()\n\n companion object {\n // Retrieve top level tiles to avoid black holes when navigating and zooming out camera\n private const val RETRIEVE_TOP_LEVEL_TILES = true\n }\n\n /**\n * Memory cache for this layer's subdivision tiles. Each entry contains an array of four image tiles corresponding\n * to the subdivision of the group's common parent tile. The cache is configured to hold 1200 groups, a number\n * empirically determined to be sufficient for storing the tiles needed to navigate a small region.\n */\n protected var tileCache = LruMemoryCache>(1200)\n protected var activeProgram: SurfaceTextureProgram? = null\n protected var ancestorTile: ImageTile? = null\n protected var ancestorTexture: Texture? = null\n protected val ancestorTexCoordMatrix = Matrix3()\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n determineActiveProgram(rc)\n assembleTiles(rc)\n activeProgram = null // clear the active program to avoid leaking render resources\n ancestorTile = null // clear the ancestor tile and texture\n ancestorTexture = null\n }\n\n /**\n * Determine list of tiles which fit specified sector and maximum resolution.\n *\n * @param sector the bounding sector.\n * @param resolution the desired resolution in angular value of latitude per pixel.\n * @return List of tiles which fit specified sector and maximum resolution.\n */\n open fun assembleTilesList(sector: Sector, resolution: Angle): List {\n val result = mutableListOf()\n val lastLevelNumber = levelSet.levelForResolution(resolution).levelNumber\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n topLevelTiles.forEach { addAndSubdivideTile(it as ImageTile, sector, lastLevelNumber, result) }\n return result\n }\n\n protected open fun addAndSubdivideTile(tile: ImageTile, sector: Sector, lastLevelNumber: Int, result: MutableList) {\n if (!tile.intersectsSector(sector)) return // Ignore tiles and its descendants outside the specified sector\n // Skip tiles with level less than specified offset from the result list\n if (tile.level.levelNumber >= levelOffset) result.add(tile)\n // Do not subdivide if specified level or last available level reached\n if (tile.level.levelNumber < lastLevelNumber && !tile.level.isLastLevel) {\n tile.subdivide(tileFactory).forEach {\n addAndSubdivideTile(it as ImageTile, sector, lastLevelNumber, result)\n }\n }\n }\n\n protected open fun determineActiveProgram(rc: RenderContext) {\n activeProgram = rc.getShaderProgram { SurfaceTextureProgram() }\n }\n\n protected open fun assembleTiles(rc: RenderContext) {\n // TODO\n // The need to create Tiles with a defined image source couples the need to determine a tile's visibility with\n // he need to know its image source. Decoupling the two would mean we only need to know the image source when\n // the texture is actually requested Could the tile-based operations done here be implicit on level/row/column,\n // or use transient pooled tile objects not tied to an image source?\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as ImageTile)\n }\n\n protected open fun createTopLevelTiles() {\n levelSet.firstLevel?.let { Tile.assembleTilesForLevel(it, tileFactory, topLevelTiles) }\n }\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: ImageTile) {\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsSector(rc.terrain.sector) || !tile.intersectsFrustum(rc)) return\n val retrieveCurrentLevel = tile.level.levelNumber >= levelOffset\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n if (retrieveCurrentLevel) addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val currentAncestorTile = ancestorTile\n val currentAncestorTexture = ancestorTexture\n getTexture(rc, tile, RETRIEVE_TOP_LEVEL_TILES && retrieveCurrentLevel)?.let { tileTexture ->\n // tile has a texture; use it as a fallback tile for descendants\n ancestorTile = tile\n ancestorTexture = tileTexture\n }\n // each tile has a cached size of 1, recursively process the tile's children\n val children = tile.subdivideToCache(tileFactory, tileCache, 4)\n for (i in children.indices) addTileOrDescendants(rc, children[i] as ImageTile)\n ancestorTile = currentAncestorTile // restore the last fallback tile, even if it was null\n ancestorTexture = currentAncestorTexture\n }\n\n protected open fun addTile(rc: RenderContext, tile: ImageTile) {\n val texture = getTexture(rc, tile)\n val ancestorTile = ancestorTile\n val ancestorTexture = ancestorTexture\n if (texture != null) { // use the tile's own texture\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(activeProgram, tile.sector, texture, texture.coordTransform)\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n } else if (ancestorTile != null && ancestorTexture != null) { // use the ancestor tile's texture, transformed to fill the tile sector\n ancestorTexCoordMatrix.copy(ancestorTexture.coordTransform)\n ancestorTexCoordMatrix.multiplyByTileTransform(tile.sector, ancestorTile.sector)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(activeProgram, tile.sector, ancestorTexture, ancestorTexCoordMatrix)\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n }\n\n // TODO If cache source retrieved but it is outdated, than try to retrieve original image source anyway to refresh cache\n protected open fun getTexture(rc: RenderContext, tile: ImageTile, retrieve: Boolean = true): Texture? {\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: return null\n // If cache tile factory is specified, then create cache source and store it in tile\n val cacheSource = tile.cacheSource ?: cacheTileFactory?.run {\n (createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile).imageSource?.also { tile.cacheSource = it }\n }\n // If cache source is not absent, then retrieve it instead of original image source\n val isCacheAbsent = cacheSource == null || rc.renderResourceCache.absentResourceList.isResourceAbsent(cacheSource.hashCode())\n return rc.getTexture(\n if (isCacheAbsent) imageSource else cacheSource!!, imageOptions, retrieve && (!useCacheOnly || !isCacheAbsent)\n )\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n tileCache.clear()\n }\n}","package earth.worldwind.util\n\nimport kotlinx.datetime.Clock\nimport kotlin.time.Duration\nimport kotlin.time.Duration.Companion.seconds\n\n/**\n * Provides a collection to keep track of resources whose retrieval failed and when retrieval may be tried again.\n */\nopen class AbsentResourceList(\n /**\n * The number of attempts to make before the resource is marked as absent.\n */\n private val maxTrys: Int,\n /**\n * The amount of time to wait between attempts, in milliseconds.\n */\n private val minCheckInterval: Duration\n) {\n /**\n * The amount of time, in milliseconds, beyond which retrieval attempts should again be allowed.\n * When this time has elapsed from the most recent failed attempt the number of try's attempted is\n * reset to 0. This prevents the resource from being permanently blocked.\n */\n var tryAgainInterval = 60.seconds\n\n private val possiblyAbsent = mutableMapOf()\n\n fun clear() { possiblyAbsent.clear() }\n\n /**\n * Indicates whether a specified resource is marked as absent.\n * @param resourceId The resource identifier.\n * @returns true if the resource is marked as absent, otherwise false.\n */\n fun isResourceAbsent(resourceId: T): Boolean {\n val entry = possiblyAbsent[resourceId] ?: return false\n if (entry.permanent) return true\n\n val timeSinceLastMark = Clock.System.now() - entry.timeOfLastMark\n\n if (timeSinceLastMark > tryAgainInterval) {\n possiblyAbsent.remove(resourceId)\n return false\n }\n\n return timeSinceLastMark < minCheckInterval || entry.numTrys > maxTrys\n }\n\n /**\n * Marks a resource attempt as having failed. This increments the number-of-tries counter and sets the time\n * of the last attempt. When this method has been called [AbsentResourceList.maxTrys] times the resource is marked\n * as absent until this absent resource list's [AbsentResourceList.tryAgainInterval] is reached.\n *\n * @param resourceId The resource identifier.\n * @param permanent Marks a resource attempt as having failed permanently. No attempt will ever again be made to retrieve the resource.\n */\n fun markResourceAbsent(resourceId: T, permanent: Boolean = false) {\n (possiblyAbsent[resourceId] ?: AbsentResourceEntry().also { possiblyAbsent[resourceId] = it }).makeTry(permanent)\n }\n\n /**\n * Removes the specified resource from this absent resource list. Call this method when retrieval attempt succeeded.\n * @param resourceId The resource identifier.\n */\n fun unmarkResourceAbsent(resourceId: T) { possiblyAbsent.remove(resourceId) }\n\n private inner class AbsentResourceEntry {\n var timeOfLastMark = Clock.System.now()\n private set\n var numTrys = 0\n private set\n var permanent = false\n private set\n\n fun makeTry(permanent: Boolean = false) {\n numTrys++\n timeOfLastMark = Clock.System.now()\n this.permanent = permanent\n }\n }\n}","package earth.worldwind.util\n\n/**\n * AbstractSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded resources.\n */\nabstract class AbstractSource protected constructor(protected val source: Any) {\n /**\n * Resource post-processing routine.\n */\n var postprocessor: ResourcePostprocessor<*>? = null\n\n /**\n * @return generic image source as unrecognized object.\n */\n fun asUnrecognized() = source\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is AbstractSource) return false\n if (source != other.source) return false\n return true\n }\n\n override fun hashCode() = source.hashCode()\n\n override fun toString() = source.toString()\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.min\n\nabstract class AbstractTile(\n /**\n * The sector spanned by this tile.\n */\n val sector: Sector\n) {\n /**\n * The nearest point on the tile to the camera. Altitude value is based on the minimum height for the tile.\n */\n protected val nearestPoint = Vec3()\n /**\n * The tile's Cartesian bounding box.\n */\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n\n /**\n * Indicates whether this tile's Cartesian extent intersects a frustum.\n *\n * @param rc the current render context\n *\n * @return true if the frustum intersects this tile's extent, otherwise false\n */\n fun intersectsFrustum(rc: RenderContext) = getExtent(rc).intersectsFrustum(rc.frustum)\n\n /**\n * Indicates whether this tile intersects a specified sector.\n *\n * @param sector the sector of interest\n *\n * @return true if the specified sector intersects this tile's sector, otherwise false\n */\n fun intersectsSector(sector: Sector) = this.sector.intersects(sector)\n\n /**\n * Calculates the distance from this tile to the camera point which ensures front to back sorting.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the L1 distance in degrees\n */\n protected open fun drawSortOrder(rc: RenderContext): Double {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val latAbsDifference = abs(cameraPosition.latitude.inDegrees - sector.centroidLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonAbsDifference = abs(cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees)\n val lonAbsDifferenceCorrected = min(lonAbsDifference, 360.0 - lonAbsDifference)\n\n return latAbsDifference + lonAbsDifferenceCorrected // L1 distance on cylinder\n }\n\n /**\n * Calculates nearest point of this tile to the camera position associated with the specified render context.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the nearest point\n */\n protected open fun nearestPoint(rc: RenderContext): Vec3 {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val nearestLat = cameraPosition.latitude.inDegrees.coerceIn(sector.minLatitude.inDegrees, sector.maxLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonDifference = cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees\n val nearestLon = when {\n lonDifference < -180.0 -> sector.maxLongitude.inDegrees\n lonDifference > 180.0 -> sector.minLongitude.inDegrees\n else -> cameraPosition.longitude.inDegrees.coerceIn(sector.minLongitude.inDegrees, sector.maxLongitude.inDegrees)\n }\n val minHeight = heightLimits[0] * rc.verticalExaggeration\n return rc.globe.geographicToCartesian(nearestLat.degrees, nearestLon.degrees, minHeight, nearestPoint)\n }\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val heightLimits = heightLimits\n val extent = extent\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n val ve = rc.verticalExaggeration.toFloat()\n if (ve != extentExaggeration || timestamp != heightLimitsTimestamp) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n return extent\n }\n}","package earth.worldwind.util\n\nimport kotlin.math.max\n\n@Suppress(\"UNCHECKED_CAST\")\nopen class BasicPool: Pool {\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n protected var size = 0\n protected var entries = arrayOfNulls(size)\n\n override fun acquire(): T? {\n if (size > 0) {\n val last = --size\n val instance = entries[last]\n entries[last] = null\n return instance as T?\n }\n return null\n }\n\n override fun release(instance: T?) {\n // TODO reduce the pool size when excess entries may not be needed\n // TODO use a keep alive time to indicate how long to keep stale instances\n if (instance != null) {\n val capacity = entries.size\n if (capacity == size) {\n // increase the pool size by the larger of 50% or the minimum increment\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries, 0, 0, capacity)\n entries = newEntries\n }\n entries[size++] = instance\n }\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Represents a level of a specific resolution in a [LevelSet].\n */\nopen class Level internal constructor(\n /**\n * The LevelSet that this level is a member of.\n */\n val parent: LevelSet,\n /**\n * The level's ordinal in its parent level set.\n */\n val levelNumber: Int,\n /**\n * The geographic width and height of tiles within this level.\n */\n val tileDelta: Location\n) {\n /**\n * The width in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the longitudinal direction of this level set.\n */\n val levelWidth: Int\n /**\n * The height in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the latitudinal direction of this level set.\n */\n val levelHeight: Int\n /**\n * The parent LevelSet's tileWidth.\n */\n val tileWidth: Int\n /**\n * The parent LevelSet's tileHeight.\n */\n val tileHeight: Int\n /**\n * Indicates whether this level is the lowest resolution level (level 0) within the parent level set.\n */\n val isFirstLevel get() = levelNumber == 0\n /**\n * Indicates whether this level is the highest resolution level within the parent level set.\n */\n val isLastLevel get() = levelNumber == parent.numLevels - 1\n /**\n * Returns the level whose ordinal occurs immediately before this level's ordinal in the parent level set, or null\n * if this is the fist level.\n */\n val previousLevel get() = parent.level(levelNumber - 1)\n /**\n * Returns the level whose ordinal occurs immediately after this level's ordinal in the parent level set, or null if\n * this is the last level.\n */\n val nextLevel get() = parent.level(levelNumber + 1)\n\n /**\n * Constructs a Level within a LevelSet. Applications typically do not interact with this class.\n */\n init {\n require(tileDelta.latitude.inDegrees > 0.0 && tileDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"Level\", \"constructor\", \"The tile delta is zero\")\n }\n levelWidth = (parent.tileWidth * parent.sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).roundToInt()\n levelHeight = (parent.tileHeight * parent.sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).roundToInt()\n tileWidth = parent.tileWidth\n tileHeight = parent.tileHeight\n }\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.ln\n\n/**\n * Configuration values for a multi-resolution, hierarchical collection of tiles organized into levels of increasing\n * resolution.\n */\nopen class LevelSetConfig {\n /**\n * The sector spanned by the level set.\n */\n val sector = Sector().setFullSphere()\n /**\n * Tile origin for level set\n */\n val tileOrigin = Location(NEG90, NEG180)\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of the level set.\n */\n var firstLevelDelta = Location(POS90, POS90)\n /**\n * The number of levels in the level set.\n */\n var numLevels = 1\n /**\n * The width in pixels of images associated with tiles in the level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with the level set.\n */\n var tileWidth = 256\n /**\n * The height in pixels of images associated with tiles in the level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with the level set.\n */\n var tileHeight = 256\n\n /**\n * Returns the number of levels necessary to achieve the specified resolution. The result is correct for this\n * configuration's current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = ceil(level).toInt() // ceiling captures the resolution\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n\n /**\n * Returns the number of levels closest to the specified resolution, but does not exceed it. May be used to\n * configure level sets where a not to exceed resolution is mandated. The result is correct for this configuration's\n * current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired not to exceed resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForMinResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForMinResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = floor(level).toInt() // floor prevents exceeding the min scale\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class LruMemoryCache @JvmOverloads constructor(\n val capacity: Long, protected val lowWater: Long = (capacity * 0.75).toLong()\n) {\n var usedCapacity = 0L\n protected set\n val entryCount get() = entries.size\n // sorts entries from least recently used to most recently used\n protected open val lruComparator = Comparator> { lhs, rhs -> lhs.lastUsed.compareTo(rhs.lastUsed) }\n protected val entries = mutableMapOf>()\n protected open var age = 0L\n get() = ++field // Auto increment cache age on each access to its entries\n\n protected open class Entry(val key: K, val value: V, val size: Int) { var lastUsed = 0L }\n\n init {\n require(capacity >= 1) {\n logMessage(ERROR, \"LruMemoryCache\", \"constructor\", \"invalidCapacity\")\n }\n require(lowWater in 0 until capacity) {\n logMessage(\n ERROR, \"LruMemoryCache\", \"constructor\",\n \"The specified low-water value is greater than or equal to the capacity, or less than 1\"\n )\n }\n }\n\n open operator fun get(key: K) = entries[key]?.run{\n lastUsed = age\n value\n }\n\n open fun put(key: K, value: V, size: Int): V? {\n if (usedCapacity + size > capacity) makeSpace(size)\n val newEntry = Entry(key, value, size)\n newEntry.lastUsed = age\n usedCapacity += newEntry.size\n val oldEntry = entries.put(key, newEntry)\n if (oldEntry != null) {\n usedCapacity -= oldEntry.size\n if (newEntry.value !== oldEntry.value) {\n entryRemoved(oldEntry.key, oldEntry.value, newEntry.value, false)\n return oldEntry.value\n }\n }\n return null\n }\n\n open fun remove(key: K) = entries.remove(key)?.run {\n usedCapacity -= size\n entryRemoved(key, value, null, false)\n value\n }\n\n open fun trimToAge(maxAge: Long): Int {\n var trimmedCapacity = 0\n\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the entry's age is within the specified maximum age.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (entry.lastUsed < maxAge) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n trimmedCapacity += entry.size\n entryRemoved(entry.key, entry.value, null, false)\n } else break\n }\n return trimmedCapacity\n }\n\n open fun containsKey(key: K) = entries.containsKey(key)\n\n open fun clear() {\n // NOTE Entities cleared without entryRemoved call\n // for (entry in entries.values) entryRemoved(entry.key, entry.value, null, false)\n entries.clear()\n usedCapacity = 0\n }\n\n protected open fun makeSpace(spaceRequired: Int) {\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the cache capacity reaches the low water and the cache has\n // enough free capacity for the required space.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (usedCapacity > lowWater || capacity - usedCapacity < spaceRequired) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n entryRemoved(entry.key, entry.value, null, true)\n } else break\n }\n }\n\n /*\n * Sort the entries from least recently used to most recently used.\n */\n protected open fun assembleSortedEntries() = entries.values.sortedWith(lruComparator)\n\n protected open fun entryRemoved(key: K, oldValue: V, newValue: V?, evicted: Boolean) {}\n}","package earth.worldwind.util\n\nval messageTable = mapOf(\n \"errorReadingProgramSource\" to \"Error reading program sources\",\n \"exceptionParsingText\" to \"Exception parsing text\",\n \"invalidBitmap\" to \"The bitmap is recycled\",\n \"invalidCapacity\" to \"The capacity is less than 1\",\n \"invalidCount\" to \"The count is invalid\",\n \"invalidClipDistance\" to \"The clip distance is invalid\",\n \"invalidFieldOfView\" to \"The field of view is invalid\",\n \"invalidHeight\" to \"The height is invalid\",\n \"invalidIndex\" to \"The index is invalid\",\n \"invalidNumIntervals\" to \"The number of intervals is invalid\",\n \"invalidNumLevels\" to \"The number of levels is invalid\",\n \"invalidRadius\" to \"The radius is invalid\",\n \"invalidRange\" to \"The range is invalid\",\n \"invalidResolution\" to \"The resolution is invalid\",\n \"invalidStride\" to \"The stride is invalid\",\n \"invalidTileDelta\" to \"The tile delta is invalid\",\n \"invalidWidth\" to \"The width is invalid\",\n \"invalidWidthOrHeight\" to \"The width or the height is invalid\",\n \"missingArray\" to \"The array insufficient length\",\n \"missingLayerNames\" to \"The layer names are empty\",\n \"singularMatrix\" to \"The matrix cannot be inverted\"\n)","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport kotlinx.datetime.Instant\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.toLocalDateTime\nimport kotlin.math.*\n\n/**\n * Provides utilities for determining the Sun geographic and celestial location.\n */\nobject SunPosition {\n class CelestialLocation(val declination: Angle, val rightAscension: Angle)\n\n /**\n * Computes the geographic location of the sun for a given date\n * @param instant Input instant\n * @return the geographic location\n */\n fun getAsGeographicLocation(instant: Instant) = celestialToGeographic(getAsCelestialLocation(instant), instant)\n\n /**\n * Computes the celestial location of the sun for a given julianDate\n * @param instant Input instant\n * @return the celestial location\n */\n fun getAsCelestialLocation(instant: Instant): CelestialLocation {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n val meanLongitude = Angle.normalizeAngle360(280.460 + 0.9856474 * numDays)\n val meanAnomaly = Angle.toRadians(Angle.normalizeAngle360(357.528 + 0.9856003 * numDays))\n val eclipticLongitude = meanLongitude + 1.915 * sin(meanAnomaly) + 0.02 * sin(2 * meanAnomaly)\n val eclipticLongitudeRad = Angle.toRadians(eclipticLongitude)\n val obliquityOfTheEcliptic = Angle.toRadians(23.439 - 0.0000004 * numDays)\n val declination = asin(sin(obliquityOfTheEcliptic) * sin(eclipticLongitudeRad)).radians\n var rightAscension = atan(cos(obliquityOfTheEcliptic) * tan(eclipticLongitudeRad)).radians\n if (eclipticLongitude >= 90 && eclipticLongitude < 270) rightAscension += Angle.POS180\n return CelestialLocation(declination, rightAscension.normalize360())\n }\n\n /**\n * Converts from celestial coordinates (declination and right ascension) to geographic coordinates\n * (latitude, longitude) for a given julian date\n * @param celestialLocation Celestial location\n * @param instant Input instant\n * @return the geographic location\n */\n fun celestialToGeographic(celestialLocation: CelestialLocation, instant: Instant): Location {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n\n //Greenwich Mean Sidereal Time\n val GMST = Angle.normalizeAngle360(280.46061837 + 360.98564736629 * numDays)\n\n //Greenwich Hour Angle\n val GHA = Angle.normalizeAngle360(GMST - celestialLocation.rightAscension.inDegrees)\n\n val longitude = (-GHA).degrees.normalizeLongitude()\n\n return Location(celestialLocation.declination, longitude)\n }\n\n /**\n * Computes the julian date from a javascript date object\n * @param instant Input instant\n * @return the julian date\n */\n fun computeJulianDate(instant: Instant): Double {\n val date = instant.toLocalDateTime(TimeZone.UTC)\n var year = date.year\n var month = date.monthNumber + 1\n val day = date.dayOfMonth\n val hour = date.hour\n val minute = date.minute\n val second = date.second\n val dayFraction = (hour + minute / 60.0 + second / 3600.0) / 24.0\n if (month <= 2) {\n year -= 1\n month += 12\n }\n val a = floor(year / 100.0)\n val b = 2 - a + floor(a / 4.0)\n val JD0h = floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524.5\n return JD0h + dayFraction\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographically rectangular tile within a [LevelSet], typically representing terrain or imagery. Provides a base\n * class for tiles used by tiled image layers and elevation models. Applications typically do not interact with this\n * class.\n */\nopen class Tile protected constructor(\n /**\n * The sector spanned by this tile.\n */\n sector: Sector,\n /**\n * The level at which this tile lies within a [LevelSet].\n */\n val level: Level,\n /**\n * The tile's row within its level.\n */\n val row: Int,\n /**\n * The tile's column within its level.\n */\n val column: Int\n) : AbstractTile(sector) {\n /**\n * A key that uniquely identifies this tile within a level set. Tile keys are not unique to a specific level set.\n */\n val tileKey = level.levelNumber.toString() + '.' + row + '.' + column\n /**\n * A factor expressing the size of a pixel or elevation cell at the center of this tile, in radians per pixel (or\n * cell).\n *
\n * Texel size in meters is computed as `(tileDelta / tileWidth) * cos(lat) * R`, where lat is the\n * centroid latitude and R is the globe's equatorial radius. This is derived by considering that texels are laid out\n * continuously on the arc of constant latitude connecting the tile's east and west edges and passing through its\n * centroid. The radii for the corresponding circle of constant latitude is `cos(lat) * R`, and the arc\n * length is therefore `tileDelta * cos(lat) * R`. The size of a texel along this arc is then found by\n * dividing by the number of texels along that arc, defined by the property Level.tileWidth.\n *
\n * This property stores the constant part of the texel size computation, `(tileDelta / tileWidth) *\n * cos(lat)`, leaving the globe-dependant variable `R` to be incorporated by the globe attached to\n * the RenderContext.\n */\n protected val texelSizeFactor = level.tileDelta.longitude.inRadians / level.tileWidth * cos(sector.centroidLatitude.inRadians)\n private val scratchVector = Vec3()\n\n /**\n * Indicates whether this tile should be subdivided based on the current navigation state and a specified detail\n * factor.\n *\n * @param rc the current render context\n * @param detailFactor the detail factor to consider\n *\n * @return true if the tile should be subdivided, otherwise false\n */\n open fun mustSubdivide(rc: RenderContext, detailFactor: Double): Boolean {\n val nearestPoint = nearestPoint(rc)\n val distanceToCamera = nearestPoint.distanceTo(rc.cameraPoint)\n // Accelerate the degradation of tile details depending on the viewing angle to tile normal\n val cos = if (rc.camera.position.altitude < rc.globe.equatorialRadius / 10.0) {\n val viewingVector = nearestPoint.subtract(rc.cameraPoint)\n val normalVector =\n rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n abs(dot / (viewingVector.magnitude * normalVector.magnitude))\n } else 1.0\n val texelSize = texelSizeFactor * rc.globe.equatorialRadius * cos\n val pixelSize = rc.pixelSizeAtDistance(distanceToCamera)\n\n // Adjust the subdivision factory when the display density is low.\n return texelSize > pixelSize * detailFactor * rc.densityFactor\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its [LevelSet].\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n\n val latMin = sector.minLatitude\n val lonMin = sector.minLongitude\n val latMid = sector.centroidLatitude\n val lonMid = sector.centroidLongitude\n val latMax = sector.maxLatitude\n val lonMax = sector.maxLongitude\n\n var childRow = 2 * row\n var childCol = 2 * column\n var childSector = Sector(latMin, latMid, lonMin, lonMid)\n val child0 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southwest\n\n childRow = 2 * row\n childCol = 2 * column + 1\n childSector = Sector(latMin, latMid, lonMid, lonMax)\n val child1 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southeast\n\n childRow = 2 * row + 1\n childCol = 2 * column\n childSector = Sector(latMid, latMax, lonMin, lonMid)\n val child2 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northwest\n\n childRow = 2 * row + 1\n childCol = 2 * column + 1\n childSector = Sector(latMid, latMax, lonMid, lonMax)\n val child3 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northeast\n\n return arrayOf(child0, child1, child2, child3)\n }\n\n /**\n * Returns the four children formed by subdividing this tile, drawing those children from a specified cache. The\n * cache is checked for a child collection prior to subdividing. If one exists in the cache it is returned rather\n * than creating a new collection of children. If a new collection is created in the same manner as [subdivide] and added to the cache.\n *\n * @param tileFactory the tile factory to use to create the children\n * @param cache a memory cache that may contain pre-existing child tiles.\n * @param cacheSize the cached size of the four child tiles\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivideToCache(\n tileFactory: TileFactory, cache: LruMemoryCache>, cacheSize: Int\n ) = cache[tileKey] ?: subdivide(tileFactory).also { cache.put(tileKey, it, cacheSize) }\n\n companion object {\n /**\n * Computes a row number for a tile within a level given the tile's latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's minimum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeRow(tileDelta: Angle, latitude: Angle, origin: Angle): Int {\n var row = floor((latitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if latitude is at the end of the grid, subtract 1 from the computed row to return the last row\n if (latitude.inDegrees - origin.inDegrees == 180.0) row -= 1\n return row\n }\n\n /**\n * Computes a column number for a tile within a level given the tile's longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's minimum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeColumn(tileDelta: Angle, longitude: Angle, origin: Angle): Int {\n var col = floor((longitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if longitude is at the end of the grid, subtract 1 from the computed column to return the last column\n if (longitude.inDegrees - origin.inDegrees == 360.0) col -= 1\n return col\n }\n\n /**\n * Computes the last row number for a tile within a level given the tile's maximum latitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLatitude the tile's maximum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeLastRow(tileDelta: Angle, maxLatitude: Angle, origin: Angle): Int {\n var row = ceil((maxLatitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max latitude is in the first row, set the max row to 0\n if (maxLatitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) row = 0\n return row\n }\n\n /**\n * Computes the last column number for a tile within a level given the tile's maximum longitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLongitude the tile's maximum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeLastColumn(tileDelta: Angle, maxLongitude: Angle, origin: Angle): Int {\n var col = ceil((maxLongitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max longitude is in the first column, set the max column to 0\n if (maxLongitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) col = 0\n return col\n }\n\n /**\n * Creates all tiles for a specified level within a [LevelSet].\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result an pre-allocated Collection in which to store the results\n *\n * @return the result argument populated with the tiles for the specified level\n */\n @JvmStatic\n fun assembleTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): MutableList {\n val sector = level.parent.sector\n val tileOrigin = level.parent.tileOrigin\n val tileDelta = level.tileDelta\n val firstRow = computeRow(tileDelta.latitude, sector.minLatitude, tileOrigin.latitude)\n val lastRow = computeLastRow(tileDelta.latitude, sector.maxLatitude, tileOrigin.latitude)\n val firstCol = computeColumn(tileDelta.longitude, sector.minLongitude, tileOrigin.longitude)\n val lastCol = computeLastColumn(tileDelta.longitude, sector.maxLongitude, tileOrigin.longitude)\n val firstRowLat = tileOrigin.latitude.plusDegrees(firstRow * tileDelta.latitude.inDegrees)\n val firstColLon = tileOrigin.longitude.plusDegrees(firstCol * tileDelta.longitude.inDegrees)\n var minLat = firstRowLat\n for (row in firstRow..lastRow) {\n val maxLat = minLat + tileDelta.latitude\n var minLon = firstColLon\n for (col in firstCol..lastCol) {\n val maxLon = minLon + tileDelta.longitude\n val tileSector = Sector(minLat, maxLat, minLon, maxLon)\n result.add(tileFactory.createTile(tileSector, level, row, col))\n minLon = maxLon\n }\n minLat = maxLat\n }\n return result\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlin.math.*\n\nclass ExponentFormatter(val value: Double) {\n var mantissa: Double\n private set\n var exponent: Int = 0\n private set(value) {\n field = value\n strExponent = \"e$exponent\"\n }\n\n private val mstr: String\n private var strExponent: String\n\n init {\n val x = abs(value)\n exponent = log10(x).toInt()\n if (exponent < 0) exponent--\n mantissa = x / 10.0.pow(exponent)\n if (value < 0) mantissa = -mantissa\n mstr = mantissa.toString()\n strExponent = \"e$exponent\"\n }\n\n fun scientific(width: Int, fractionWidth: Int = -1): String {\n val minLength = if (mantissa < 0) 2 else 1\n\n // Get the desired part of mantissa with proper bounding and rounding\n // it works only for \"normalized\" mantissa that is always has d[.ddddd] form, e.g. integer\n // part is always 1 digit long\n //\n // ERROR: this rounding does not work with trailint (***9)8 - like variants\n //\n fun mpart(length: Int): String {\n var l = length\n if (l > mstr.length) l = mstr.length\n val result = StringBuilder(mstr.slice(0 until l))\n // exact value, no rounding:\n if (result.length == mstr.length) return result.toString()\n\n // next significant digit\n var nextDigit = mstr[result.length]\n if (nextDigit == '.') {\n if (result.length + 1 >= mstr.length) return result.toString()\n nextDigit = mstr[result.length + 1]\n }\n if (nextDigit in \"56789\") {\n val (m, ovf) = roundUp(result)\n if( !ovf ) return m\n // overflow: exponent should grow\n exponent++\n // and the point position should be fixed\n val pointPos = m.indexOf('.')\n val mb = StringBuilder(m)\n if( pointPos == -1 )\n return m // it was the last letter and was therefore removed by roundUp\n return mb.deleteAt(pointPos).insert(pointPos - 1, '.').toString()\n }\n return result.toString()\n }\n\n if (width == 0) return mstr + strExponent\n\n if (fractionWidth < 0 && width > 0) {\n var l = width - strExponent.length\n if (l < minLength) l = minLength\n return mpart(l) + strExponent\n }\n\n if (fractionWidth < 0 && width < 0) return mstr + strExponent\n\n // fractionWidth >= 0\n if (fractionWidth == 0) return \"${mstr[0]}$strExponent\"\n\n // fractionWidth > 0, +1 for decimal dot\n return mpart(minLength + 1 + fractionWidth) + strExponent\n }\n\n\n override fun toString() = \"${mantissa}e${exponent}\"\n}\n\ninternal fun scientificFormat(value: Double, width: Int, fractionPartLength: Int = -1) =\n ExponentFormatter(value).scientific(width, fractionPartLength)\n\ninternal fun fractionalFormat(_value: Double, width: Int, fractionPartLength: Int = -1): String {\n var value = _value\n val result = StringBuilder()\n\n if (abs(value) >= 1) {\n val i = if (fractionPartLength == 0) value.roundToLong() else value.toLong()\n result.append(i)\n value -= i\n } else result.append((if (value < 0) \"-0\" else \"0\"))\n\n var fl = if (fractionPartLength < 0) {\n if (width < 0) 6\n else width - result.length - 1\n } else fractionPartLength\n\n if (fl != 0) result.append('.')\n\n var rest = value * 10\n while (fl-- > 0) {\n val d = rest.toInt()\n result.append(abs(d))\n rest = (rest - d) * 10\n }\n // now we might need to round it up:\n return if( rest.toInt().absoluteValue < 5 ) result.toString() else roundUp(result, keepWidth = false).first\n}\n\n/**\n * Round up the mantissa part (call it with default arguments to start).\n * @return rounded mantissa and overflow flag (set when 9,99 -> 10,00 and like)\n */\nprivate fun roundUp(\n result: StringBuilder,\n length: Int = result.length,\n pos: Int = result.length - 1,\n keepWidth: Boolean = true\n): Pair {\n if (pos < 0) {\n // if we get there, it means the number of digits should grow, like \"9.99\" -> \"10.00\"\n // but we need to keep the length so \"10.0\":\n result.insert(0, '1')\n if (keepWidth) result.deleteAt(length)\n return result.toString() to true\n }\n // not the first digit: perform rounding:\n val d = result[pos]\n // it could be a decimal point we ignore and continue with rounding\n if (d == '.') return roundUp(result, length, pos - 1, keepWidth)\n\n // Small number add one \"0.19\" -> \"0.2\"\n // Simple case: alter only the current digit\n if (d != '9') {\n result[pos] = d + 1\n return result.toString() to false\n }\n // Complex case: 9->0 and propagate changes up.\n result[pos] = '0'\n return roundUp(result, length, pos - 1, keepWidth)\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal enum class Positioning { LEFT, RIGHT, CENTER; }\n\ninternal class Specification(val parent: StringFormat, var index: Int) {\n enum class Stage { FLAGS, LENGTH, FRACTION; }\n\n private var stage = Stage.FLAGS\n private var size: Int = -1\n private var fractionalPartSize: Int = -1\n private var positioninig = Positioning.RIGHT\n private var fillChar = ' '\n private var currentPart = StringBuilder()\n // private var pos = 0\n private var explicitPlus = false\n private var done = false\n private var indexIsOverride = false\n private val isScanningFlags: Boolean\n get() = stage == Stage.FLAGS\n\n internal fun scan() {\n while (!done) {\n when (val ch = parent.nextChar()) {\n '-', '^' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n positioninig = if (ch == '-') Positioning.LEFT else Positioning.CENTER\n }\n '+' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n explicitPlus = true\n }\n in \"*#_=\" -> {\n if (!isScanningFlags) invalidFormat(\"bad fill char $ch position\")\n fillChar = ch\n }\n '0' -> {\n if (isScanningFlags) fillChar = '0'\n else currentPart.append(ch)\n }\n in \"123456789\" -> {\n if (stage == Stage.FLAGS) stage = Stage.LENGTH\n currentPart.append(ch)\n }\n '$', '!' -> {\n if (stage != Stage.LENGTH) invalidFormat(\"unexpected $ch position\")\n if (indexIsOverride) invalidFormat(\"argument number '$ch' should occur only once\")\n indexIsOverride = true\n index = currentPart.toString().toInt() - 1\n parent.pushbackArgumentIndex()\n currentPart.clear()\n }\n 's' -> createStringField()\n 'd', 'i' -> createIntegerField()\n 'o' -> createOctalField()\n 'x' -> createHexField(false)\n 'X' -> createHexField(true)\n 'f', 'F' -> createFloat()\n 'E' -> createScientific(true)\n 'e' -> createScientific(false)\n 'g' -> createAutoFloat(true)\n 'G' -> createAutoFloat(false)\n 'c', 'C' -> createCharacter()\n 't' -> createTimeField(false)\n 'T' -> createTimeField(true)\n '.' -> {\n stage = when (stage) {\n Stage.FLAGS -> Stage.FRACTION\n Stage.LENGTH -> {\n endStage(false)\n Stage.FRACTION\n }\n else -> invalidFormat(\"can't parse specification: unexpected '.'\")\n }\n }\n else -> invalidFormat(\"unexpected character '$ch'\")\n }\n }\n }\n\n private fun invalidFormat(message: String): Nothing { parent.invalidFormat(message) }\n\n private val time get() = parent.getLocalDateTime(index)\n\n private fun createTimeField(upperCase: Boolean) {\n val ch = parent.nextChar()\n endStage()\n val result: String = when (ch) {\n 'H' -> \"%02d\".format(time.hour)\n 'k' -> \"%d\".format(time.hour)\n 'I', 'l' -> {\n var t = time.hour\n if (t > 12) t -= 12\n if (ch == 'I') \"%02d\".format(t)\n else t.toString()\n }\n 'M' -> \"%02d\".format(time.minute)\n 'S' -> \"%02d\".format(time.second)\n 'L' -> \"%03d\".format(time.nanosecond / 1_000_000)\n 'N' -> \"%09d\".format(time.nanosecond)\n 'p' -> {\n if (upperCase) if (time.hour > 12) \"PM\" else \"AM\"\n else if (time.hour > 12) \"pm\" else \"am\"\n }\n 'z' -> {\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString().replace(\":\", \"\")\n }\n 'Z' -> {\n // There us yet no abbreviations like 'CET', so we put there string representation like +01:00\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString()\n }\n 's' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).epochSeconds.toString()\n }\n 'Q' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).toEpochMilliseconds().toString()\n }\n // Date fields\n 'B' -> getMonthName(time.month.number)\n 'b', 'h' -> getAbbreviatedMonthName(time.month.number)\n 'e' -> time.dayOfMonth.toString()\n 'd' -> \"%02s\".format(time.dayOfMonth)\n 'm' -> \"%02s\".format(time.month.number)\n 'A' -> getWeekDayName(time.dayOfWeek)\n 'a' -> getAbbreviatedWeekDayName(time.dayOfWeek)\n 'y' -> time.year.toString().takeLast(2)\n 'Y' -> \"%04d\".format(time.year)\n 'j' -> \"%03d\".format(time.dayOfYear)\n // shortcuts\n 'R' -> \"%1!tH:%1!tM\".format(time)\n 'r' ->\n if (upperCase) \"%1!tI:%1!tM:%1!tS %1!Tp\".format(time)\n else \"%1!tI:%1!tM:%1!tS %1!tp\".format(time)\n 'T' -> \"%tH:%1!tM:%1!tS\".format(time)\n 'D' -> \"%tm/%1!td/%1!ty\".format(time)\n 'F' -> \"%tY-%1!tm-%1!td\".format(time)\n 'c' -> \"%ta %1!tb %1!td %1!tT %1!tZ %1!tY\".format(time)\n 'O' -> {\n val tz = TimeZone.currentSystemDefault()\n val offset = tz.offsetAt(time.toInstant(tz)).toString()\n \"%tFT%1!tT%s\".format(time, offset)\n }\n '#' -> \"%tY%1!tm%1!td%1!tH%1!tM%1!tS\".format(time.toInstant(TimeZone.UTC))\n else -> invalidFormat(\"unknown time field specificator: 't$ch'\")\n }\n insertField(result)\n }\n\n private fun createStringField() {\n endStage()\n insertField(parent.getText(index))\n }\n\n private fun createIntegerField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus && fillChar == '0' && number > 0) insertField(number.toString(), \"+\")\n else insertField(if (explicitPlus) \"+$number\" else \"$number\")\n }\n\n private fun createHexField(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with hex format\")\n val text = number.toString(16)\n insertField(if (upperCase) text.uppercase() else text.lowercase())\n }\n\n private fun createOctalField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with oct format\")\n insertField(number.toString(8))\n }\n\n private fun createCharacter() {\n endStage()\n insertField(parent.getCharacter(index).toString())\n }\n\n private fun endStage(setDone: Boolean = true) {\n if (setDone) done = true\n if (currentPart.isNotEmpty()) {\n when (stage) {\n Stage.LENGTH -> size = currentPart.toString().toInt()\n Stage.FRACTION -> fractionalPartSize = currentPart.toString().toInt()\n Stage.FLAGS -> invalidFormat(\"can't parse format specifier (error 7)\")\n }\n currentPart.clear()\n }\n }\n\n private fun insertField(text: String, prefix: String = \"\") {\n val l = text.length + prefix.length\n if (size < 0 || size < l) parent.specificationDone(prefix + text)\n else {\n var padStart = 0\n var padEnd = 0\n when (positioninig) {\n Positioning.LEFT -> padEnd = size - l\n Positioning.RIGHT -> padStart = size - l\n Positioning.CENTER -> {\n padStart = (size - l) / 2\n padEnd = size - padStart - l\n }\n }\n val result = StringBuilder(prefix)\n while (padStart-- > 0) result.append(fillChar)\n result.append(text)\n while (padEnd-- > 0) result.append(fillChar)\n parent.specificationDone(result.toString())\n }\n }\n\n private fun createFloat() {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = fractionalFormat(number, size, fractionalPartSize)\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createScientific(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = scientificFormat(number, size, fractionalPartSize).let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createAutoFloat(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index)\n val t = number.toString().let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number.toDouble() > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n companion object {\n private val englishMonthNames: List by lazy {\n \"January February March April May June July August September October November December\".split(' ')\n }\n private val englishWeekDayNames: List by lazy {\n \"Monday Tuesday Wednesday Thursday Friday Saturday Sunday\".split(' ')\n }\n\n fun getAbbreviatedMonthName(monthNumber: Int) = getMonthName(monthNumber).take(3)\n\n fun getMonthName(monthNumber: Int) = englishMonthNames[monthNumber - 1]\n\n fun getWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1]\n }\n\n fun getAbbreviatedWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1].take(3)\n }\n }\n}",null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal class StringFormat(val format: String, val args: Array) {\n\n private var pos = 0\n private var specStart = -1\n private val result = StringBuilder()\n private var currentIndex = 0\n\n fun process(): StringFormat {\n while (pos < format.length) {\n val ch = format[pos++]\n if (ch == '%') {\n specStart = when {\n specStart == pos - 1 -> {\n result.append(ch)\n -1\n }\n specStart < 0 -> pos\n else -> invalidFormat(\"unexpected %\")\n }\n } else {\n if (specStart >= 0) {\n pos--\n Specification(this, currentIndex++).scan()\n } else result.append(ch)\n }\n }\n return this\n }\n\n internal fun nextChar(): Char {\n if (pos >= format.length) invalidFormat(\"unexpected end of string inside format specification\")\n return format[pos++]\n }\n\n internal fun invalidFormat(reason: String): Nothing {\n throw IllegalArgumentException(\"bad format: $reason at ofset ${pos - 1} of \\\"$format\\\"\")\n }\n\n override fun toString() = result.toString()\n\n internal fun getNumber(index: Int): Number = notNullArg(index)\n\n internal fun getText(index: Int) = args[index]!!.toString()\n\n internal fun getCharacter(index: Int): Char = notNullArg(index)\n\n internal fun specificationDone(text: String) {\n result.append(text)\n specStart = -1\n }\n\n fun getLocalDateTime(index: Int): LocalDateTime {\n val t = notNullArg(index)\n return when(t) {\n is Instant -> t.toLocalDateTime(TimeZone.currentSystemDefault())\n is LocalDateTime -> t\n is LocalDate -> t.atTime(0,0,0)\n else -> convertToInstant(t).toLocalDateTime(TimeZone.currentSystemDefault())\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun notNullArg(index: Int) = args[index]!! as T\n\n fun pushbackArgumentIndex() { currentIndex-- }\n}\n\nfun String.format(vararg args: Any?): String = StringFormat(this, args).process().toString()\n\nexpect fun convertToInstant(t: Any): Instant","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\nimport earth.worldwind.util.glu.error.Error\nimport earth.worldwind.util.glu.tessellator.GLUtessellatorImpl\n\n/**\n * Provides access to the OpenGL Utility Library (GLU). This library\n * provides standard methods for setting up view volumes, building\n * mipmaps and performing other common operations. The GLU NURBS\n * routines are not currently exposed.\n *

\n * Notes from the Reference Implementation for this class:\n * Thanks to the contributions of many individuals, this class is a\n * pure Java port of SGI's original C sources. All of the projection,\n * mipmap, scaling, and tessellation routines that are exposed are\n * compatible with the GLU 1.3 specification. The GLU NURBS routines\n * are not currently exposed.\n */\nobject GLU {\n fun gluErrorString(errorCode: Int) = Error.gluErrorString(errorCode)\n /**\n * **gluNewTess** creates and returns a new tessellation object. This\n * object must be referred to when calling tesselation methods. A return\n * value of null means that there was not enough memeory to allocate the\n * object.\n *\n * @return A new tessellation object.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluDeleteTess gluDeleteTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluNewTess() = GLUtessellatorImpl.gluNewTess()\n\n /**\n * **gluDeleteTess** destroys the indicated tessellation object (which was\n * created with [gluNewTess][.gluNewTess]).\n *\n * @param tessellator\n * Specifies the tessellation object to destroy.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluDeleteTess(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluDeleteTess()\n }\n\n /**\n * **gluTessProperty** is used to control properites stored in a\n * tessellation object. These properties affect the way that the polygons are\n * interpreted and rendered. The legal value for *which* are as\n * follows:\n *
    \n *
  • **GLU_TESS_WINDING_RULE**\n *

    \n * Determines which parts of the polygon are on the \"interior\".\n * *value* may be set to one of\n *

    **GLU_TESS_WINDING_ODD**,\n *

    **GLU_TESS_WINDING_NONZERO**,\n *

    **GLU_TESS_WINDING_POSITIVE**, or\n *

    **GLU_TESS_WINDING_NEGATIVE**, or\n *

    **GLU_TESS_WINDING_ABS_GEQ_TWO**.\n *

    \n * To understand how the winding rule works, consider that the input\n * contours partition the plane into regions. The winding rule determines\n * which of these regions are inside the polygon.\n *

    \n * For a single contour C, the winding number of a point x is simply the\n * signed number of revolutions we make around x as we travel once around C\n * (where CCW is positive). When there are several contours, the individual\n * winding numbers are summed. This procedure associates a signed integer\n * value with each point x in the plane. Note that the winding number is\n * the same for all points in a single region.\n *

    \n * The winding rule classifies a region as \"inside\" if its winding number\n * belongs to the chosen category (odd, nonzero, positive, negative, or\n * absolute value of at least two). The previous GLU tessellator (prior to\n * GLU 1.2) used the \"odd\" rule. The \"nonzero\" rule is another common way\n * to define the interior. The other three rules are useful for polygon CSG\n * operations.\n
  • *\n *
  • **GLU_TESS_BOUNDARY_ONLY**\n *

    \n * Is a boolean value (\"value\" should be set to GL_TRUE or GL_FALSE). When\n * set to GL_TRUE, a set of closed contours separating the polygon interior\n * and exterior are returned instead of a tessellation. Exterior contours\n * are oriented CCW with respect to the normal; interior contours are\n * oriented CW. The **GLU_TESS_BEGIN** and **GLU_TESS_BEGIN_DATA**\n * callbacks use the type GL_LINE_LOOP for each contour.\n
  • *\n *
  • **GLU_TESS_TOLERANCE**\n *

    \n * Specifies a tolerance for merging features to reduce the size of the\n * output. For example, two vertices that are very close to each other\n * might be replaced by a single vertex. The tolerance is multiplied by the\n * largest coordinate magnitude of any input vertex; this specifies the\n * maximum distance that any feature can move as the result of a single\n * merge operation. If a single feature takes part in several merge\n * operations, the toal distance moved could be larger.\n *

    \n * Feature merging is completely optional; the tolerance is only a hint.\n * The implementation is free to merge in some cases and not in others, or\n * to never merge features at all. The initial tolerance is 0.\n *

    \n * The current implementation merges vertices only if they are exactly\n * coincident, regardless of the current tolerance. A vertex is spliced\n * into an edge only if the implementation is unable to distinguish which\n * side of the edge the vertex lies on. Two edges are merged only when both\n * endpoints are identical.\n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object created with\n * [gluNewTess][.gluNewTess]\n * @param which\n * Specifies the property to be set. Valid values are\n * **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARDY_ONLY**,\n * **GLU_TESS_TOLERANCE**.\n * @param value\n * Specifices the value of the indicated property.\n *\n * @see .gluGetTessProperty gluGetTessProperty\n *\n * @see .gluNewTess gluNewTess\n */\n fun gluTessProperty(tessellator: GLUtessellator, which: Int, value: Double) {\n (tessellator as GLUtessellatorImpl).gluTessProperty(which, value)\n }\n\n /**\n * **gluGetTessProperty** retrieves properties stored in a tessellation\n * object. These properties affect the way that tessellation objects are\n * interpreted and rendered. See the\n * [gluTessProperty][.gluTessProperty] reference\n * page for information about the properties and what they do.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the property whose value is to be fetched. Valid values\n * are **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARY_ONLY**,\n * and **GLU_TESS_TOLERANCES**.\n * @param value\n * Specifices an array into which the value of the named property is\n * written.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessProperty gluTessProperty\n */\n fun gluGetTessProperty(\n tessellator: GLUtessellator, which: Int, value: DoubleArray, value_offset: Int\n ) {\n (tessellator as GLUtessellatorImpl).gluGetTessProperty(which, value, value_offset)\n }\n\n /**\n * **gluTessNormal** describes a normal for a polygon that the program is\n * defining. All input data will be projected onto a plane perpendicular to\n * the one of the three coordinate axes before tessellation and all output\n * triangles will be oriented CCW with repsect to the normal (CW orientation\n * can be obtained by reversing the sign of the supplied normal). For\n * example, if you know that all polygons lie in the x-y plane, call\n * **gluTessNormal**(tess, 0.0, 0.0, 0.0) before rendering any polygons.\n *

\n * If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal\n * is determined as follows. The direction of the normal, up to its sign, is\n * found by fitting a plane to the vertices, without regard to how the\n * vertices are connected. It is expected that the input data lies\n * approximately in the plane; otherwise, projection perpendicular to one of\n * the three coordinate axes may substantially change the geometry. The sign\n * of the normal is chosen so that the sum of the signed areas of all input\n * contours is nonnegative (where a CCW contour has positive area).\n *

\n * The supplied normal persists until it is changed by another call to\n * **gluTessNormal**.\n *\n * @param tessellator\n * Specifies the tessellation object (created by\n * [gluNewTess][.gluNewTess]).\n * @param x\n * Specifies the first component of the normal.\n * @param y\n * Specifies the second component of the normal.\n * @param z\n * Specifies the third component of the normal.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessNormal(tessellator: GLUtessellator, x: Double, y: Double, z: Double) {\n (tessellator as GLUtessellatorImpl).gluTessNormal(x, y, z)\n }\n\n /**\n * **gluTessCallback** is used to indicate a callback to be used by a\n * tessellation object. If the specified callback is already defined, then it\n * is replaced. If *aCallback* is null, then the existing callback\n * becomes undefined.\n *

\n * These callbacks are used by the tessellation object to describe how a\n * polygon specified by the user is broken into triangles. Note that there are\n * two versions of each callback: one with user-specified polygon data and one\n * without. If both versions of a particular callback are specified, then the\n * callback with user-specified polygon data will be used. Note that the\n * polygonData parameter used by some of the methods is a copy of the\n * reference that was specified when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The legal callbacks are as follows:\n *
    \n *
  • **GLU_TESS_BEGIN**\n *

    \n * The begin callback is invoked like\n * glBegin to indicate the start of a (triangle) primitive. The method\n * takes a single argument of type int. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_FALSE**, then\n * the argument is set to either **GL_TRIANGLE_FAN**,\n * **GL_TRIANGLE_STRIP**, or **GL_TRIANGLES**. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_TRUE**, then the\n * argument will be set to **GL_LINE_LOOP**. The method prototype for\n * this callback is:\n *
    void begin(int type);
    \n
  • *\n *
  • **GLU_TESS_BEGIN_DATA**\n *

    \n * The same as the **GLU_TESS_BEGIN** callback except\n * that it takes an additional reference argument. This reference is\n * identical to the opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void beginData(int type, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG**\n *

    \n * The edge flag callback is similar to\n * glEdgeFlag. The method takes\n * a single boolean boundaryEdge that indicates which edges lie on the\n * polygon boundary. If the boundaryEdge is **GL_TRUE**, then each vertex\n * that follows begins an edge that lies on the polygon boundary, that is,\n * an edge that separates an interior region from an exterior one. If the\n * boundaryEdge is **GL_FALSE**, then each vertex that follows begins an\n * edge that lies in the polygon interior. The edge flag callback (if\n * defined) is invoked before the first vertex callback.\n *

    \n * Since triangle fans and triangle strips do not support edge flags, the\n * begin callback is not called with **GL_TRIANGLE_FAN** or\n * **GL_TRIANGLE_STRIP** if a non-null edge flag callback is provided.\n * (If the callback is initialized to null, there is no impact on\n * performance). Instead, the fans and strips are converted to independent\n * triangles. The method prototype for this callback is:\n *
    void edgeFlag(boolean boundaryEdge);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG_DATA**\n *

    \n * The same as the **GLU_TESS_EDGE_FLAG** callback except that it takes\n * an additional reference argument. This reference is identical to the\n * opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void edgeFlagData(boolean boundaryEdge, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX**\n *

    \n * The vertex callback is invoked between the begin and end callbacks. It is\n * similar to glVertex3f, and it\n * defines the vertices of the triangles created by the tessellation\n * process. The method takes a reference as its only argument. This\n * reference is identical to the opaque reference provided by the user when\n * the vertex was described (see\n * [gluTessVertex][.gluTessVertex]). The method\n * prototype for this callback is:\n *
    void vertex(Object vertexData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX_DATA**\n *

    \n * The same as the **GLU_TESS_VERTEX** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void vertexData(Object vertexData, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_END**\n *

    \n * The end callback serves the same purpose as\n * glEnd. It indicates the end of a\n * primitive and it takes no arguments. The method prototype for this\n * callback is:\n *
    void end();
    \n
  • *\n *
  • **GLU_TESS_END_DATA**\n *

    \n * The same as the **GLU_TESS_END** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void endData(Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_COMBINE**\n *

    \n * The combine callback is called to create a new vertex when the\n * tessellation detects an intersection, or wishes to merge features. The\n * method takes four arguments: an array of three elements each of type\n * double, an array of four references, an array of four elements each of\n * type float, and a reference to a reference. The prototype is:\n *
    void combine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData);
    \n * The vertex is defined as a linear combination of up to four existing\n * vertices, stored in *data*. The coefficients of the linear\n * combination are given by *weight*; these weights always add up to 1.\n * All vertex pointers are valid even when some of the weights are 0.\n * *coords* gives the location of the new vertex.\n *

    \n * The user must allocate another vertex, interpolate parameters using\n * *data* and *weight*, and return the new vertex pointer\n * in *outData*. This handle is supplied during rendering callbacks.\n * The user is responsible for freeing the memory some time after\n * [gluTessEndPolygon][.gluTessEndPolygon] is\n * called.\n *

    \n * For example, if the polygon lies in an arbitrary plane in 3-space, and a\n * color is associated with each vertex, the **GLU_TESS_COMBINE**\n * callback might look like this:\n *
    \n     * void myCombine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData)\n     * {\n     * MyVertex newVertex = new MyVertex();\n     *\n     * newVertex.x = coords[0];\n     * newVertex.y = coords[1];\n     * newVertex.z = coords[2];\n     * newVertex.r = weight[0]*data[0].r +\n     * weight[1]*data[1].r +\n     * weight[2]*data[2].r +\n     * weight[3]*data[3].r;\n     * newVertex.g = weight[0]*data[0].g +\n     * weight[1]*data[1].g +\n     * weight[2]*data[2].g +\n     * weight[3]*data[3].g;\n     * newVertex.b = weight[0]*data[0].b +\n     * weight[1]*data[1].b +\n     * weight[2]*data[2].b +\n     * weight[3]*data[3].b;\n     * newVertex.a = weight[0]*data[0].a +\n     * weight[1]*data[1].a +\n     * weight[2]*data[2].a +\n     * weight[3]*data[3].a;\n     * outData = newVertex;\n     * }
    \n * If the tessellation detects an intersection, then the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback (see\n * below) must be defined, and it must write a non-null reference into\n * *outData*. Otherwise the **GLU_TESS_NEED_COMBINE_CALLBACK** error\n * occurs, and no output is generated.\n
  • *\n *
  • **GLU_TESS_COMBINE_DATA**\n *

    \n * The same as the **GLU_TESS_COMBINE** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void combineData(double[] coords, Object[] data,\n     * float[] weight, Object[] outData,\n     * Object polygonData);
    \n *\n
  • *\n *
  • **GLU_TESS_ERROR**\n *

    \n * The error callback is called when an error is encountered. The one\n * argument is of type int; it indicates the specific error that occurred\n * and will be set to one of **GLU_TESS_MISSING_BEGIN_POLYGON**,\n * **GLU_TESS_MISSING_END_POLYGON**,\n * **GLU_TESS_MISSING_BEGIN_CONTOUR**,\n * **GLU_TESS_MISSING_END_CONTOUR**, **GLU_TESS_COORD_TOO_LARGE**,\n * **GLU_TESS_NEED_COMBINE_CALLBACK** or **GLU_OUT_OF_MEMORY**.\n * Character strings describing these errors can be retrieved with the\n * [gluErrorString][.gluErrorString] call. The\n * method prototype for this callback is:\n *
    \n     * void error(int errnum);
    \n * The GLU library will recover from the first four errors by inserting the\n * missing call(s). **GLU_TESS_COORD_TOO_LARGE** indicates that some\n * vertex coordinate exceeded the predefined constant\n * **GLU_TESS_MAX_COORD** in absolute value, and that the value has been\n * clamped. (Coordinate values must be small enough so that two can be\n * multiplied together without overflow.)\n * **GLU_TESS_NEED_COMBINE_CALLBACK** indicates that the tessellation\n * detected an intersection between two edges in the input data, and the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback was not\n * provided. No output is generated. **GLU_OUT_OF_MEMORY** indicates that\n * there is not enough memory so no output is generated.\n
  • *\n *
  • **GLU_TESS_ERROR_DATA**\n *

    \n * The same as the GLU_TESS_ERROR callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void errorData(int errnum, Object polygonData);
    \n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the callback being defined. The following values are\n * valid: **GLU_TESS_BEGIN**, **GLU_TESS_BEGIN_DATA**,\n * **GLU_TESS_EDGE_FLAG**, **GLU_TESS_EDGE_FLAG_DATA**,\n * **GLU_TESS_VERTEX**, **GLU_TESS_VERTEX_DATA**,\n * **GLU_TESS_END**, **GLU_TESS_END_DATA**,\n * **GLU_TESS_COMBINE**, **GLU_TESS_COMBINE_DATA**,\n * **GLU_TESS_ERROR**, and **GLU_TESS_ERROR_DATA**.\n * @param aCallback\n * Specifies the callback object to be called.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluErrorString gluErrorString\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n */\n fun gluTessCallback(\n tessellator: GLUtessellator, which: Int, aCallback: GLUtessellatorCallback?\n ) {\n (tessellator as GLUtessellatorImpl).gluTessCallback(which, aCallback)\n }\n\n /**\n * **gluTessVertex** describes a vertex on a polygon that the program\n * defines. Successive **gluTessVertex** calls describe a closed contour.\n * For example, to describe a quadrilateral **gluTessVertex** should be\n * called four times. **gluTessVertex** can only be called between\n * [gluTessBeginContour][.gluTessBeginContour] and\n * [gluTessEndContour][.gluTessBeginContour].\n *

\n * **data** normally references to a structure containing the vertex\n * location, as well as other per-vertex attributes such as color and normal.\n * This reference is passed back to the user through the\n * **GLU_TESS_VERTEX** or **GLU_TESS_VERTEX_DATA** callback after\n * tessellation (see the [ gluTessCallback][.gluTessCallback] reference page).\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param coords\n * Specifies the coordinates of the vertex.\n * @param data\n * Specifies an opaque reference passed back to the program with the\n * vertex callback (as specified by\n * [gluTessCallback][.gluTessCallback]).\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessVertex(\n tessellator: GLUtessellator, coords: DoubleArray, coords_offset: Int, data: Any\n ) {\n (tessellator as GLUtessellatorImpl).gluTessVertex(coords, coords_offset, data)\n }\n\n /**\n * **gluTessBeginPolygon** and\n * [gluTessEndPolygon][.gluTessEndPolygon] delimit\n * the definition of a convex, concave or self-intersecting polygon. Within\n * each **gluTessBeginPolygon**\n * [gluTessEndPolygon][.gluTessEndPolygon] pair,\n * there must be one or more calls to\n * [gluTessBeginContour][.gluTessBeginContour]/\n * [gluTessEndContour][.gluTessEndContour]. Within\n * each contour, there are zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex], [ gluTessBeginContour][.gluTessBeginContour], and [ gluTessEndContour][.gluTessEndContour] reference pages for more details.\n *

\n * **data ** is a reference to a user-defined data structure. If the\n * appropriate callback(s) are specified (see\n * [gluTessCallback][.gluTessCallback]), then this\n * reference is returned to the callback method(s). Thus, it is a convenient\n * way to store per-polygon information.\n *

\n * Once [gluTessEndPolygon][.gluTessEndPolygon] is\n * called, the polygon is tessellated, and the resulting triangles are\n * described through callbacks. See\n * [gluTessCallback][.gluTessCallback] for\n * descriptions of the callback methods.\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n * @param data\n * Specifies a reference to user polygon data .\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginContour gluTessBeginContour\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginPolygon(tessellator: GLUtessellator, data: Any) {\n (tessellator as GLUtessellatorImpl).gluTessBeginPolygon(data)\n }\n\n /**\n * **gluTessBeginContour** and\n * [gluTessEndContour][.gluTessEndContour] delimit\n * the definition of a polygon contour. Within each\n * **gluTessBeginContour**\n * [gluTessEndContour][.gluTessEndContour] pair,\n * there can be zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex] reference page for more details. **gluTessBeginContour**\n * can only be called between\n * [gluTessBeginPolygon][.gluTessBeginPolygon] and\n * [gluTessEndPolygon][.gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessBeginContour()\n }\n\n /**\n * **gluTessEndContour** and\n * [gluTessBeginContour][gluTessBeginContour]\n * delimit the definition of a polygon contour. Within each\n * [gluTessBeginContour][gluTessBeginContour]/\n * **gluTessEndContour** pair, there can be zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex] reference page for more details.\n * [gluTessBeginContour][gluTessBeginContour] can\n * only be called between [ gluTessBeginPolygon][gluTessBeginPolygon] and\n * [gluTessEndPolygon][gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessEndContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndContour()\n }\n\n /**\n * **gluTessEndPolygon** and\n * [gluTessBeginPolygon][gluTessBeginPolygon]\n * delimit the definition of a convex, concave or self-intersecting polygon.\n * Within each [ gluTessBeginPolygon][gluTessBeginPolygon]/ **gluTessEndPolygon** pair, there must be one or\n * more calls to [ gluTessBeginContour][gluTessBeginContour]/[ gluTessEndContour][gluTessEndContour]. Within each contour, there are zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex], [ gluTessBeginContour][gluTessBeginContour] and [ gluTessEndContour][gluTessEndContour] reference pages for more details.\n *

\n * Once **gluTessEndPolygon** is called, the polygon is tessellated, and\n * the resulting triangles are described through callbacks. See\n * [gluTessCallback][gluTessCallback] for\n * descriptions of the callback functions.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n */\n fun gluTessEndPolygon(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndPolygon()\n }\n\n //----------------------------------------------------------------------\n // GLU constants\n // Boolean\n const val GLU_FALSE = 0\n const val GLU_TRUE = 1\n\n // String Name\n const val GLU_VERSION = 100800\n const val GLU_EXTENSIONS = 100801\n\n // Extensions\n const val versionString = \"1.3\"\n const val extensionString = \"GLU_EXT_object_space_tess \"\n\n // ErrorCode\n const val GLU_INVALID_ENUM = 100900\n const val GLU_INVALID_VALUE = 100901\n const val GLU_OUT_OF_MEMORY = 100902\n const val GLU_INVALID_OPERATION = 100904\n\n // TessCallback\n const val GLU_TESS_BEGIN = 100100\n const val GLU_TESS_VERTEX = 100101\n const val GLU_TESS_END = 100102\n const val GLU_TESS_ERROR = 100103\n const val GLU_TESS_EDGE_FLAG = 100104\n const val GLU_TESS_COMBINE = 100105\n const val GLU_TESS_BEGIN_DATA = 100106\n const val GLU_TESS_VERTEX_DATA = 100107\n const val GLU_TESS_END_DATA = 100108\n const val GLU_TESS_ERROR_DATA = 100109\n const val GLU_TESS_EDGE_FLAG_DATA = 100110\n const val GLU_TESS_COMBINE_DATA = 100111\n\n // TessContour\n const val GLU_CW = 100120\n const val GLU_CCW = 100121\n const val GLU_INTERIOR = 100122\n const val GLU_EXTERIOR = 100123\n const val GLU_UNKNOWN = 100124\n\n // TessProperty\n const val GLU_TESS_WINDING_RULE = 100140\n const val GLU_TESS_BOUNDARY_ONLY = 100141\n const val GLU_TESS_TOLERANCE = 100142\n\n // TessError\n const val GLU_TESS_ERROR1 = 100151\n const val GLU_TESS_ERROR2 = 100152\n const val GLU_TESS_ERROR3 = 100153\n const val GLU_TESS_ERROR4 = 100154\n const val GLU_TESS_ERROR5 = 100155\n const val GLU_TESS_ERROR6 = 100156\n const val GLU_TESS_ERROR7 = 100157\n const val GLU_TESS_ERROR8 = 100158\n const val GLU_TESS_MISSING_BEGIN_POLYGON = 100151\n const val GLU_TESS_MISSING_BEGIN_CONTOUR = 100152\n const val GLU_TESS_MISSING_END_POLYGON = 100153\n const val GLU_TESS_MISSING_END_CONTOUR = 100154\n const val GLU_TESS_COORD_TOO_LARGE = 100155\n const val GLU_TESS_NEED_COMBINE_CALLBACK = 100156\n\n // TessWinding\n const val GLU_TESS_WINDING_ODD = 100130\n const val GLU_TESS_WINDING_NONZERO = 100131\n const val GLU_TESS_WINDING_POSITIVE = 100132\n const val GLU_TESS_WINDING_NEGATIVE = 100133\n const val GLU_TESS_WINDING_ABS_GEQ_TWO = 100134\n const val GLU_TESS_MAX_COORD = 1.0e150\n}\n","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\n/**\n * The **GLUtessellatorCallbackAdapter** provides a default implementation of\n * [GLUtessellatorCallback]\n * with empty callback methods. This class can be extended to provide user\n * defined callback methods.\n *\n * @author Eric Veach, July 1994\n * @author Java Port: Pepijn Van Eechhoudt, July 2003\n * @author Java Port: Nathan Parker Burg, August 2003\n * @author Kotlin Port: Eugene Maksymenko, April 2022\n */\nopen class GLUtessellatorCallbackAdapter : GLUtessellatorCallback {\n\toverride fun begin(type: Int) {}\n\toverride fun edgeFlag(boundaryEdge: Boolean) {}\n\toverride fun vertex(vertexData: Any) {}\n\toverride fun end() {}\n\toverride fun error(errnum: Int) {}\n\toverride fun combine(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {}\n\n\toverride fun beginData(type: Int, polygonData: Any) {}\n\toverride fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) {}\n\n\toverride fun vertexData(vertexData: Any, polygonData: Any) {}\n\toverride fun endData(polygonData: Any) {}\n\toverride fun errorData(errnum: Int, polygonData: Any) {}\n\toverride fun combineData(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any) {}\n}","/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n * \n * http://oss.sgi.com/projects/FreeB\n * \n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n * \n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n * \n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n */\npackage earth.worldwind.util.glu.error\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.jvm.JvmStatic\n\nobject Error {\n\tprivate val gluErrorStrings = arrayOf(\n\t\t\"invalid enumerant\",\n\t\t\"invalid value\",\n\t\t\"out of memory\",\n\t\t\"\",\n\t\t\"invalid operation\"\n\t)\n\n\t@JvmStatic\n\tfun gluErrorString(errorCode: Int): String? {\n\t\tif (errorCode == 0) return \"no error\"\n\t\tif (errorCode >= GLU.GLU_INVALID_ENUM && errorCode <= GLU.GLU_INVALID_OPERATION)\n\t\t\treturn gluErrorStrings[errorCode - GLU.GLU_INVALID_ENUM]\n\t\treturn if (errorCode >= GLU.GLU_TESS_ERROR1 && errorCode <= GLU.GLU_TESS_ERROR8)\n\t\t\tgluErrorStrings[errorCode - (GLU.GLU_TESS_ERROR1 - 1)] else null\n\t}\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal class ActiveRegion(\n /**\n * upper edge, directed right to left\n */\n var eUp: GLUhalfEdge\n) {\n /**\n * dictionary node corresponding to eUp\n */\n var nodeUp: DictNode? = null\n /**\n * used to determine which regions are inside the polygon\n */\n var windingNumber = 0\n /**\n * is this region inside the polygon?\n */\n var inside = false\n /**\n * marks fake edges at t = +/-infinity\n */\n var sentinel = false\n /**\n * marks regions where the upper or lower\n * edge has changed, but we haven't checked\n * whether they intersect yet\n */\n var dirty = false\n /**\n * marks temporary edges introduced when\n * we process a \"right vertex\" (one without\n * any edges leaving to the right)\n */\n var fixUpperEdge = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass CachedVertex {\n val coords = DoubleArray(3)\n var data: Any? = null\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass Dict private constructor(\n var head: DictNode,\n var frame: Any,\n var leq: DictLeq\n) {\n\n interface DictLeq {\n fun leq(frame: Any, key1: Any?, key2: Any?): Boolean\n }\n\n companion object {\n fun dictNewDict(frame: Any, leq: DictLeq): Dict {\n return Dict(DictNode(), frame, leq)\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun dictDeleteDict(dict: Dict) {\n// Memory will clear automatically\n// dict.head = null\n// dict.frame = null\n// dict.leq = null\n }\n\n fun dictInsert(dict: Dict, key: Any?): DictNode {\n return dictInsertBefore(dict, dict.head, key)\n }\n\n fun dictInsertBefore(dict: Dict, node: DictNode, key: Any?): DictNode {\n var n = node\n do {\n n = n.prev\n } while (n.key != null && !dict.leq.leq(dict.frame, n.key, key))\n val newNode = DictNode(key).apply {\n prev = n\n next = n.next\n }\n n.next.prev = newNode\n n.next = newNode\n return newNode\n }\n\n fun dictKey(aNode: DictNode) = aNode.key\n\n fun dictSucc(aNode: DictNode) = aNode.next\n\n fun dictPred(aNode: DictNode) = aNode.prev\n\n fun dictMin(aDict: Dict) = aDict.head.next\n\n fun dictMax(aDict: Dict) = aDict.head.prev\n\n fun dictDelete(node: DictNode) {\n node.next.prev = node.prev\n node.prev.next = node.next\n }\n\n fun dictSearch(dict: Dict, key: Any?): DictNode {\n var node = dict.head\n do {\n node = node.next\n } while (node.key != null && !dict.leq.leq(dict.frame, key, node.key))\n return node\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass DictNode(\n var key: Any? = null,\n) {\n var next = this\n var prev = this\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUface {\n /**\n * next face (never NULL)\n */\n var next: GLUface? = null\n /**\n * previous face (never NULL)\n */\n var prev: GLUface? = null\n /**\n * a half edge with this left face\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * room for client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * \"stack\" for conversion to strips\n */\n var trail: GLUface? = null\n /**\n * flag for conversion to strips\n */\n var marked = false\n /**\n * this face is in the polygon interior\n */\n var inside = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUhalfEdge(val first: Boolean) {\n /**\n * doubly-linked list (prev==Sym->next)\n */\n var next: GLUhalfEdge? = null\n /**\n * same edge, opposite direction\n */\n var sym: GLUhalfEdge? = null\n /**\n * next edge CCW around origin\n */\n var oNext: GLUhalfEdge? = null\n /**\n * next edge CCW around left face\n */\n var lNext: GLUhalfEdge? = null\n /**\n * origin vertex (Overtex too long)\n */\n var org: GLUvertex? = null\n /**\n * left face\n */\n var lFace: GLUface? = null\n\n /* Internal data (keep hidden) */\n /**\n * a region with this upper edge (sweep.c)\n */\n internal var activeRegion: ActiveRegion? = null\n /**\n * change in winding number when crossing\n */\n var winding = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUmesh {\n /**\n * dummy header for vertex list\n */\n val vHead = GLUvertex()\n /**\n * dummy header for face list\n */\n val fHead = GLUface()\n /**\n * dummy header for edge list\n */\n internal val eHead = GLUhalfEdge(true)\n /**\n * and its symmetric counterpart\n */\n internal val eHeadSym = GLUhalfEdge(false)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport earth.worldwind.util.glu.GLUtessellatorCallback\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\n\nclass GLUtessellatorImpl private constructor() : GLUtessellator {\n /**\n * what begin/end calls have we seen?\n */\n private var state = TessState.T_DORMANT\n /**\n * lastEdge->Org is the most recent vertex\n */\n private var lastEdge: GLUhalfEdge? = null\n /**\n * stores the input contours, and eventually the tessellation itself\n */\n var mesh: GLUmesh? = null\n\n /*** state needed for projecting onto the sweep plane */\n /**\n * user-specified normal (if provided)\n */\n val normal = DoubleArray(3)\n /**\n * unit vector in s-direction (debugging)\n */\n val sUnit = DoubleArray(3)\n /**\n * unit vector in t-direction (debugging)\n */\n val tUnit = DoubleArray(3)\n\n /*** state needed for the line sweep */\n /**\n * tolerance for merging features\n */\n private var relTolerance = GLU_TESS_DEFAULT_TOLERANCE\n /**\n * rule for determining polygon interior\n */\n var windingRule = GLU.GLU_TESS_WINDING_ODD\n /**\n * fatal error: needed combine callback\n */\n var fatalError = false\n /**\n * edge dictionary for sweep line\n */\n var dict: Dict? = null\n /**\n * priority queue of vertex events\n */\n var pq: PriorityQ? = null\n /**\n * current sweep event being processed\n */\n var event: GLUvertex? = null\n\n /*** state needed for rendering callbacks (see render.c) */\n /**\n * mark boundary edges (use EdgeFlag)\n */\n var flagBoundary = false\n /**\n * Extract contours, not triangles\n */\n var boundaryOnly = false\n /**\n * list of triangles which could not be rendered as strips or fans\n */\n var lonelyTriList: GLUface? = null\n /*** state needed to cache single-contour polygons for renderCache() */\n /**\n * empty cache on next vertex() call\n */\n private var flushCacheOnNextVertex = false\n /**\n * number of cached vertices\n */\n var cacheCount = 0\n /**\n * the vertex data\n */\n val cache = Array(TESS_MAX_CACHE) { CachedVertex() }\n\n /*** rendering callbacks that also pass polygon data */\n /**\n * client data for current polygon\n */\n private var polygonData: Any? = null\n private var callBegin: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlag: GLUtessellatorCallback = NULL_CB\n private var callVertex: GLUtessellatorCallback = NULL_CB\n private var callEnd: GLUtessellatorCallback = NULL_CB\n\n //private var callMesh: GLUtessellatorCallback = NULL_CB\n private var callError: GLUtessellatorCallback = NULL_CB\n private var callCombine: GLUtessellatorCallback = NULL_CB\n private var callBeginData: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlagData: GLUtessellatorCallback = NULL_CB\n private var callVertexData: GLUtessellatorCallback = NULL_CB\n private var callEndData: GLUtessellatorCallback = NULL_CB\n\n //private GLUtessellatorCallback callMeshData;\n private var callErrorData: GLUtessellatorCallback = NULL_CB\n private var callCombineData: GLUtessellatorCallback = NULL_CB\n\n private fun makeDormant() {\n /**\n * Return the tessellator to its original dormant state.\n */\n mesh?.let { Mesh.glMeshDeleteMesh(it) }\n state = TessState.T_DORMANT\n lastEdge = null\n mesh = null\n }\n\n private fun requireState(newState: Int) {\n if (state != newState) gotoState(newState)\n }\n\n private fun gotoState(newState: Int) {\n while (state != newState) {\n /**\n * We change the current state one level at a time, to get to the desired state.\n */\n if (state < newState) {\n if (state == TessState.T_DORMANT) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_POLYGON)\n gluTessBeginPolygon(null)\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_CONTOUR)\n gluTessBeginContour()\n }\n } else {\n if (state == TessState.T_IN_CONTOUR) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_CONTOUR)\n gluTessEndContour()\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_POLYGON)\n /* gluTessEndPolygon( tess ) is too much work! */\n makeDormant()\n }\n }\n }\n }\n\n fun gluDeleteTess() {\n requireState(TessState.T_DORMANT)\n }\n\n fun gluTessProperty(which: Int, value: Double) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> {\n if (value < 0.0 || value > 1.0) callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n else relTolerance = value\n }\n GLU.GLU_TESS_WINDING_RULE -> {\n val windingRule = value.toInt()\n if (windingRule.toDouble() != value) {\n /* not an integer */\n callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n } else {\n when (windingRule) {\n GLU.GLU_TESS_WINDING_ODD,\n GLU.GLU_TESS_WINDING_NONZERO,\n GLU.GLU_TESS_WINDING_POSITIVE,\n GLU.GLU_TESS_WINDING_NEGATIVE,\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> this.windingRule = windingRule\n else -> callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n }\n }\n }\n GLU.GLU_TESS_BOUNDARY_ONLY -> boundaryOnly = value != 0.0\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n /**\n * Returns tessellator property\n */\n fun gluGetTessProperty(which: Int, value: DoubleArray, value_offset: Int) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> value[value_offset] = relTolerance\n GLU.GLU_TESS_WINDING_RULE -> value[value_offset] = windingRule.toDouble()\n GLU.GLU_TESS_BOUNDARY_ONLY -> value[value_offset] = if (boundaryOnly) 1.0 else 0.0\n else -> {\n value[value_offset] = 0.0\n callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n }\n\n fun gluTessNormal(x: Double, y: Double, z: Double) {\n normal[0] = x\n normal[1] = y\n normal[2] = z\n }\n\n fun gluTessCallback(which: Int, aCallback: GLUtessellatorCallback?) {\n when (which) {\n GLU.GLU_TESS_BEGIN -> callBegin = aCallback ?: NULL_CB\n GLU.GLU_TESS_BEGIN_DATA -> callBeginData = aCallback ?: NULL_CB\n GLU.GLU_TESS_EDGE_FLAG -> {\n callEdgeFlag = aCallback ?: NULL_CB\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_EDGE_FLAG_DATA -> {\n run {\n callBegin = aCallback ?: NULL_CB\n callEdgeFlagData = callBegin\n }\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_VERTEX -> callVertex = aCallback ?: NULL_CB\n GLU.GLU_TESS_VERTEX_DATA -> callVertexData = aCallback ?: NULL_CB\n GLU.GLU_TESS_END -> callEnd = aCallback ?: NULL_CB\n GLU.GLU_TESS_END_DATA -> callEndData = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR -> callError = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR_DATA -> callErrorData = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE -> callCombine = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE_DATA -> callCombineData = aCallback ?: NULL_CB\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n private fun addVertex(coords: DoubleArray, vertexData: Any?): Boolean {\n var e = lastEdge\n if (e == null) {\n /* Make a self-loop (one vertex, one edge). */\n e = Mesh.glMeshMakeEdge(mesh!!)\n if (!Mesh.glMeshSplice(e, e.sym!!)) return false\n } else {\n /**\n * Create a new vertex and edge which immediately follow e\n * in the ordering around the left face.\n */\n Mesh.glMeshSplitEdge(e)\n e = e.lNext!!\n }\n\n /* The new vertex is now e.Org. */\n e.org?.data = vertexData\n e.org!!.coords[0] = coords[0]\n e.org!!.coords[1] = coords[1]\n e.org!!.coords[2] = coords[2]\n\n /**\n * The winding of an edge says how the winding number changes as we\n * cross from the edge''s right face to its left face. We add the\n * vertices in such an order that a CCW contour will add +1 to\n * the winding number of the region inside the contour.\n */\n e.winding = 1\n e.sym?.winding = -1\n lastEdge = e\n return true\n }\n\n private fun cacheVertex(coords: DoubleArray, vertexData: Any?) {\n val v = cache[cacheCount]\n v.data = vertexData\n v.coords[0] = coords[0]\n v.coords[1] = coords[1]\n v.coords[2] = coords[2]\n ++cacheCount\n }\n\n private fun flushCache(): Boolean {\n mesh = Mesh.glMeshNewMesh()\n for (i in 0 until cacheCount) {\n val vertex = cache[i]\n if (!addVertex(vertex.coords, vertex.data)) return false\n }\n cacheCount = 0\n flushCacheOnNextVertex = false\n return true\n }\n\n fun gluTessVertex(coords: DoubleArray, coords_offset: Int, vertexData: Any?) {\n var tooLarge = false\n val clamped = DoubleArray(3)\n requireState(TessState.T_IN_CONTOUR)\n if (flushCacheOnNextVertex) {\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n lastEdge = null\n }\n var i = 0\n while (i < 3) {\n var x = coords[i + coords_offset]\n if (x < -GLU.GLU_TESS_MAX_COORD) {\n x = -GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n if (x > GLU.GLU_TESS_MAX_COORD) {\n x = GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n clamped[i] = x\n ++i\n }\n if (tooLarge) {\n callErrorOrErrorData(GLU.GLU_TESS_COORD_TOO_LARGE)\n }\n if (mesh == null) {\n if (cacheCount < TESS_MAX_CACHE) {\n cacheVertex(clamped, vertexData)\n return\n }\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n }\n if (!addVertex(clamped, vertexData)) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun gluTessBeginPolygon(data: Any?) {\n requireState(TessState.T_DORMANT)\n state = TessState.T_IN_POLYGON\n cacheCount = 0\n flushCacheOnNextVertex = false\n mesh = null\n polygonData = data\n }\n\n fun gluTessBeginContour() {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_IN_CONTOUR\n lastEdge = null\n if (cacheCount > 0) {\n /**\n * Just set a flag so we don't get confused by empty contours\n * -- these can be generated accidentally with the obsolete\n * NextContour() interface.\n */\n flushCacheOnNextVertex = true\n }\n }\n\n fun gluTessEndContour() {\n requireState(TessState.T_IN_CONTOUR)\n state = TessState.T_IN_POLYGON\n }\n\n fun gluTessEndPolygon() {\n try {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_DORMANT\n if (this.mesh == null) {\n if (!flagBoundary /*&& callMesh == NULL_CB*/) {\n /**\n * Try some special code to make the easy cases go quickly\n * (eg. convex polygons). This code does NOT handle multiple contours,\n * intersections, edge flags, and of course it does not generate\n * an explicit mesh either.\n */\n if (Render.glRenderCache(this)) {\n polygonData = null\n return\n }\n }\n if (!flushCache()) throw RuntimeException() /* could've used a label*/\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n Normal.glProjectPolygon(this)\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by windingRule.\n * Each interior region is guaranteed be monotone.\n */\n if (!Sweep.glComputeInterior(this)) {\n throw RuntimeException() /* could've used a label */\n }\n val mesh = this.mesh!!\n if (!fatalError) {\n /**\n * If the user wants only the boundary contours, we throw away all edges\n * except those which separate the interior from the exterior.\n * Otherwise we tessellate all the regions marked \"inside\".\n */\n val rc = if (boundaryOnly) {\n TessMono.glMeshSetWindingNumber(mesh, 1, true)\n } else {\n TessMono.glMeshTessellateInterior(mesh)\n }\n if (!rc) throw RuntimeException() /* could've used a label */\n Mesh.glMeshCheckMesh(mesh)\n if (callBegin !== NULL_CB || callEnd !== NULL_CB || callVertex !== NULL_CB || callEdgeFlag !== NULL_CB || callBeginData !== NULL_CB || callEndData !== NULL_CB || callVertexData !== NULL_CB || callEdgeFlagData !== NULL_CB) {\n if (boundaryOnly) {\n Render.glRenderBoundary(this, mesh) /* output boundary contours */\n } else {\n Render.glRenderMesh(this, mesh) /* output strips and fans */\n }\n }\n // if (callMesh != NULL_CB) {\n// /**\n// * Throw away the exterior faces, so that all faces are interior.\n// * This way the user doesn't have to check the \"inside\" flag,\n// * and we don't need to even reveal its existence. It also leaves\n// * the freedom for an implementation to not generate the exterior\n// * faces in the first place.\n// */\n// TessMono.__gl_meshDiscardExterior(mesh);\n// callMesh.mesh(mesh);\t\t/* user wants the mesh itself */\n// mesh = null;\n// polygonData = null;\n// return;\n// }\n }\n Mesh.glMeshDeleteMesh(mesh)\n polygonData = null\n } catch (e: Exception) {\n e.printStackTrace()\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun callBeginOrBeginData(a: Int) {\n if (callBeginData !== NULL_CB) callBeginData.beginData(a, polygonData!!) else callBegin.begin(a)\n }\n\n fun callVertexOrVertexData(a: Any) {\n if (callVertexData !== NULL_CB) callVertexData.vertexData(a, polygonData!!) else callVertex.vertex(a)\n }\n\n fun callEdgeFlagOrEdgeFlagData(a: Boolean) {\n if (callEdgeFlagData !== NULL_CB) callEdgeFlagData.edgeFlagData(a, polygonData!!) else callEdgeFlag.edgeFlag(a)\n }\n\n fun callEndOrEndData() {\n if (callEndData !== NULL_CB) callEndData.endData(polygonData!!) else callEnd.end()\n }\n\n fun callCombineOrCombineData(\n coords: DoubleArray,\n vertexData: Array,\n weights: FloatArray,\n outData: Array\n ) {\n if (callCombineData !== NULL_CB) callCombineData.combineData(coords, vertexData, weights, outData, polygonData!!)\n else callCombine.combine(coords, vertexData, weights, outData)\n }\n\n fun callErrorOrErrorData(a: Int) {\n if (callErrorData !== NULL_CB) callErrorData.errorData(a, polygonData!!) else callError.error(a)\n }\n\n companion object {\n const val TESS_MAX_CACHE = 100\n private const val GLU_TESS_DEFAULT_TOLERANCE = 0.0\n\n //private static final int GLU_TESS_MESH = 100112;\t/* void (*)(GLUmesh *mesh)\t */\n private val NULL_CB = GLUtessellatorCallbackAdapter()\n\n fun gluNewTess(): GLUtessellator = GLUtessellatorImpl()\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUvertex {\n /**\n * next vertex (never NULL)\n */\n var next: GLUvertex? = null\n /**\n * previous vertex (never NULL)\n */\n var prev: GLUvertex? = null\n /**\n * a half-edge with this origin\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * vertex location in 3D\n */\n val coords = DoubleArray(3)\n var s = 0.0\n /**\n * projection onto the sweep plane\n */\n var t = 0.0\n /**\n * to allow deletion from priority queue\n */\n var pqHandle = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Geom {\n /* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->t = 0 and\n * let r be the negated result (this evaluates (uw)(v->s)), then\n * r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n */\n fun edgeEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.t - u.t + (u.t - w.t) * (gapL / (gapL + gapR))\n else v.t - w.t + (w.t - u.t) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n fun edgeSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) (v.t - w.t) * gapL + (v.t - u.t) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * Define versions of EdgeSign, EdgeEval with s and t transposed.\n */\n fun transEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n /* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->s = 0 and\n * let r be the negated result (this evaluates (uw)(v->t)), then\n * r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n */\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.s - u.s + (u.s - w.s) * (gapL / (gapL + gapR))\n else v.s - w.s + (w.s - u.s) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n /**\n * Returns a number whose sign matches TransEval(u,v,w) but which\n * is cheaper to evaluate. Returns > 0, == 0 , or < 0\n * as v is above, on, or below the edge uw.\n */\n fun transSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) (v.s - w.s) * gapL + (v.s - u.s) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * For almost-degenerate situations, the results are not reliable.\n * Unless the floating-point arithmetic can be performed without\n * rounding errors, *any* implementation will give incorrect results\n * on some degenerate inputs, so the client must have some way to\n * handle this situation.\n */\n fun vertCCW(u: GLUvertex, v: GLUvertex, w: GLUvertex) =\n u.s * (v.t - w.t) + v.s * (w.t - u.t) + w.s * (u.t - v.t) >= 0\n\n /**\n * Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n * or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n * this in the rare case that one argument is slightly negative.\n * The implementation is extremely stable numerically.\n * In particular it guarantees that the result r satisfies\n * MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n * even when a and b differ greatly in magnitude.\n */\n fun interpolate(a: Double, x: Double, b: Double, y: Double): Double {\n val a = if (a < 0) 0.0 else a\n val b = if (b < 0) 0.0 else b\n return if (a <= b) {\n if (b == 0.0) (x + y) / 2.0\n else x + (y - x) * (a / (a + b))\n } else y + (x - y) * (b / (a + b))\n }\n\n /**\n * Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n * The computed point is guaranteed to lie in the intersection of the\n * bounding rectangles defined by each edge.\n */\n fun edgeIntersect(\n o1: GLUvertex, d1: GLUvertex, o2: GLUvertex, d2: GLUvertex, v: GLUvertex\n ) {\n var o1 = o1\n var d1 = d1\n var o2 = o2\n var d2 = d2\n\n /**\n * This is certainly not the most efficient way to find the intersection\n * of two line segments, but it is very numerically stable.\n *\n * Strategy: find the two middle vertices in the VertLeq ordering,\n * and interpolate the intersection s-value from these. Then repeat\n * using the TransLeq ordering to find the intersection t-value.\n */\n if (!vertLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!vertLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!vertLeq(o1, o2)) {\n var temp = o1\n o1 = o2\n o2 = temp\n temp = d1\n d1 = d2\n d2 = temp\n }\n if (!vertLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.s = (o2.s + d1.s) / 2.0\n } else if (vertLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = edgeEval(o1, o2, d1)\n var z2 = edgeEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d1.s)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = edgeSign(o1, o2, d1)\n var z2 = -edgeSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d2.s)\n }\n\n /* Now repeat the process for t */\n if (!transLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!transLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!transLeq(o1, o2)) {\n var temp = o2\n o2 = o1\n o1 = temp\n temp = d2\n d2 = d1\n d1 = temp\n }\n if (!transLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.t = (o2.t + d1.t) / 2.0\n } else if (transLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = transEval(o1, o2, d1)\n var z2 = transEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d1.t)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = transSign(o1, o2, d1)\n var z2 = -transSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d2.t)\n }\n }\n\n fun vertEq(u: GLUvertex, v: GLUvertex) = u.s == v.s && u.t == v.t\n\n fun vertLeq(u: GLUvertex, v: GLUvertex) = u.s < v.s || u.s == v.s && u.t <= v.t\n\n /* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n fun transLeq(u: GLUvertex, v: GLUvertex) = u.t < v.t || u.t == v.t && u.s <= v.s\n\n fun edgeGoesLeft(e: GLUhalfEdge) = vertLeq(e.sym?.org!!, e.org!!)\n\n fun edgeGoesRight(e: GLUhalfEdge) = vertLeq(e.org!!, e.sym?.org!!)\n\n fun vertL1dist(u: GLUvertex, v: GLUvertex) = abs(u.s - v.s) + abs(u.t - v.t)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object Mesh {\n /************************ Utility Routines */\n /**\n * MakeEdge creates a new pair of half-edges which form their own loop.\n * No vertex or face structures are allocated, but these must be assigned\n * before the current edge operation is completed.\n */\n fun makeEdge(eNext: GLUhalfEdge): GLUhalfEdge {\n var next = eNext\n val e = GLUhalfEdge(true)\n val eSym = GLUhalfEdge(false)\n\n /* Make sure eNext points to the first edge of the edge pair */\n if (!next.first) {\n next = next.sym!!\n }\n\n /**\n * Insert in circular doubly-linked list before eNext.\n * Note that the prev pointer is stored in Sym->next.\n */\n val ePrev = next.sym?.next!!\n eSym.next = ePrev\n ePrev.sym?.next = e\n e.next = next\n next.sym?.next = eSym\n e.sym = eSym\n e.oNext = e\n e.lNext = eSym\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.sym = e\n eSym.oNext = eSym\n eSym.lNext = e\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return e\n }\n\n /**\n * Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n * CS348a notes (see mesh.h). Basically it modifies the mesh so that\n * a->Onext and b->Onext are exchanged. This can have various effects\n * depending on whether a and b belong to different face or vertex rings.\n * For more explanation see __gl_meshSplice() below.\n */\n fun splice(a: GLUhalfEdge, b: GLUhalfEdge) {\n val aONext = a.oNext!!\n val bONext = b.oNext!!\n aONext.sym?.lNext = b\n bONext.sym?.lNext = a\n a.oNext = bONext\n b.oNext = aONext\n }\n\n /**\n * MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n * origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n * a place to insert the new vertex in the global vertex list. We insert\n * the new vertex *before* vNext so that algorithms which walk the vertex\n * list will not see the newly created vertices.\n */\n fun makeVertex(newVertex: GLUvertex, eOrig: GLUhalfEdge, vNext: GLUvertex) {\n /* insert in circular doubly-linked list before vNext */\n val vPrev = vNext.prev!!\n newVertex.prev = vPrev\n vPrev.next = newVertex\n newVertex.next = vNext\n vNext.prev = newVertex\n newVertex.anEdge = eOrig\n newVertex.data = null\n /* leave coords, s, t undefined */\n\n /* fix other edges on this vertex loop */\n var e = eOrig\n do {\n e.org = newVertex\n e = e.oNext!!\n } while (e !== eOrig)\n }\n\n /**\n * MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n * face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n * a place to insert the new face in the global face list. We insert\n * the new face *before* fNext so that algorithms which walk the face\n * list will not see the newly created faces.\n */\n fun makeFace(newFace: GLUface, eOrig: GLUhalfEdge, fNext: GLUface) {\n /* insert in circular doubly-linked list before fNext */\n val fPrev = fNext.prev!!\n newFace.prev = fPrev\n fPrev.next = newFace\n newFace.next = fNext\n fNext.prev = newFace\n newFace.anEdge = eOrig\n newFace.data = null\n newFace.trail = null\n newFace.marked = false\n\n /**\n * The new face is marked \"inside\" if the old one was. This is a\n * convenience for the common case where a face has been split in two.\n */\n newFace.inside = fNext.inside\n\n /* fix other edges on this face loop */\n var e = eOrig\n do {\n e.lFace = newFace\n e = e.lNext!!\n } while (e !== eOrig)\n }\n\n /**\n * KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n * and removes from the global edge list.\n */\n fun killEdge(eDel: GLUhalfEdge) {\n var del = eDel\n\n /* Half-edges are allocated in pairs, see EdgePair above */\n if (!del.first) {\n del = del.sym!!\n }\n\n /* delete from circular doubly-linked list */\n val eNext = del.next!!\n val ePrev = del.sym?.next!!\n eNext.sym?.next = ePrev\n ePrev.sym?.next = eNext\n }\n\n /**\n * KillVertex( vDel ) destroys a vertex and removes it from the global\n * vertex list. It updates the vertex loop to point to a given new vertex.\n */\n fun killVertex(vDel: GLUvertex, newOrg: GLUvertex?) {\n val eStart = vDel.anEdge!!\n\n /* change the origin of all affected edges */\n var e = eStart\n do {\n e.org = newOrg\n e = e.oNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val vPrev = vDel.prev!!\n val vNext = vDel.next!!\n vNext.prev = vPrev\n vPrev.next = vNext\n }\n\n /**\n * KillFace( fDel ) destroys a face and removes it from the global face\n * list. It updates the face loop to point to a given new face.\n */\n fun killFace(fDel: GLUface, newLface: GLUface?) {\n val eStart = fDel.anEdge!!\n\n /* change the left face of all affected edges */\n var e = eStart\n do {\n e.lFace = newLface\n e = e.lNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fDel.prev!!\n val fNext = fDel.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /****************** Basic Edge Operations */\n /**\n * __gl_meshMakeEdge creates one edge, two vertices, and a loop (face).\n * The loop consists of the two new half-edges.\n */\n fun glMeshMakeEdge(mesh: GLUmesh): GLUhalfEdge {\n val newVertex1 = GLUvertex()\n val newVertex2 = GLUvertex()\n val newFace = GLUface()\n val e = makeEdge(mesh.eHead)\n makeVertex(newVertex1, e, mesh.vHead)\n makeVertex(newVertex2, e.sym!!, mesh.vHead)\n makeFace(newFace, e, mesh.fHead)\n return e\n }\n\n /**\n * __gl_meshSplice( eOrg, eDst ) is the basic operation for changing the\n * mesh connectivity and topology. It changes the mesh so that\n *\teOrg->Onext <- OLD( eDst->Onext )\n *\teDst->Onext <- OLD( eOrg->Onext )\n * where OLD(...) means the value before the meshSplice operation.\n *\n * This can have two effects on the vertex structure:\n * - if eOrg->Org != eDst->Org, the two vertices are merged together\n * - if eOrg->Org == eDst->Org, the origin is split into two vertices\n * In both cases, eDst->Org is changed and eOrg->Org is untouched.\n *\n * Similarly (and independently) for the face structure,\n * - if eOrg->Lface == eDst->Lface, one loop is split into two\n * - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n * In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n *\n * Some special cases:\n * If eDst == eOrg, the operation has no effect.\n * If eDst == eOrg->Lnext, the new face will have a single edge.\n * If eDst == eOrg->Lprev, the old face will have a single edge.\n * If eDst == eOrg->Onext, the new vertex will have a single edge.\n * If eDst == eOrg->Oprev, the old vertex will have a single edge.\n */\n fun glMeshSplice(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): Boolean {\n var joiningLoops = false\n var joiningVertices = false\n if (eOrg === eDst) return true\n if (eDst.org !== eOrg.org) {\n /* We are merging two disjoint vertices -- destroy eDst->Org */\n joiningVertices = true\n killVertex(eDst.org!!, eOrg.org)\n }\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Change the edge structure */\n splice(eDst, eOrg)\n if (!joiningVertices) {\n val newVertex = GLUvertex()\n\n /**\n * We split one vertex into two -- the new vertex is eDst.Org.\n * Make sure the old vertex points to a valid half-edge.\n */\n makeVertex(newVertex, eDst, eOrg.org!!)\n eOrg.org?.anEdge = eOrg\n }\n if (!joiningLoops) {\n val newFace = GLUface()\n\n /**\n * We split one loop into two -- the new loop is eDst.Lface.\n * Make sure the old face points to a valid half-edge.\n */\n makeFace(newFace, eDst, eOrg.lFace!!)\n eOrg.lFace?.anEdge = eOrg\n }\n return true\n }\n\n /**\n * __gl_meshDelete( eDel ) removes the edge eDel. There are several cases:\n * if (eDel.Lface != eDel.Rface), we join two loops into one; the loop\n * eDel.Lface is deleted. Otherwise, we are splitting one loop into two;\n * the newly created loop will contain eDel.Dst. If the deletion of eDel\n * would create isolated vertices, those are deleted as well.\n *\n * This function could be implemented as two calls to __gl_meshSplice\n * plus a few calls to memFree, but this would allocate and delete\n * unnecessary vertices and faces.\n */\n fun glMeshDelete(eDel: GLUhalfEdge): Boolean {\n val eDelSym = eDel.sym!!\n var joiningLoops = false\n\n /** First step: disconnect the origin vertex eDel.Org. We make all\n * changes to get a consistent mesh in this \"intermediate\" state.\n */\n if (eDel.lFace !== eDel.sym?.lFace) {\n /* We are joining two loops into one -- remove the left face */\n joiningLoops = true\n killFace(eDel.lFace!!, eDel.sym?.lFace)\n }\n if (eDel.oNext === eDel) {\n killVertex(eDel.org!!, null)\n } else {\n /* Make sure that eDel.Org and eDel.Sym.Lface point to valid half-edges */\n eDel.sym?.lFace?.anEdge = eDel.sym?.lNext\n eDel.org?.anEdge = eDel.oNext\n splice(eDel, eDel.sym?.lNext!!)\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We are splitting one loop into two -- create a new loop for eDel. */\n makeFace(newFace, eDel, eDel.lFace!!)\n }\n }\n\n /**\n * Claim: the mesh is now in a consistent state, except that eDel.Org\n * may have been deleted. Now we disconnect eDel.Dst.\n */\n if (eDelSym.oNext === eDelSym) {\n killVertex(eDelSym.org!!, null)\n killFace(eDelSym.lFace!!, null)\n } else {\n /* Make sure that eDel.Dst and eDel.Lface point to valid half-edges */\n eDel.lFace?.anEdge = eDelSym.sym?.lNext\n eDelSym.org?.anEdge = eDelSym.oNext\n splice(eDelSym, eDelSym.sym?.lNext!!)\n }\n\n /* Any isolated vertices or faces have already been freed. */\n killEdge(eDel)\n return true\n }\n\n /******************** Other Edge Operations */\n /**\n * All these routines can be implemented with the basic edge\n * operations above. They are provided for convenience and efficiency.\n */\n /**\n * __gl_meshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n * eNew == eOrg.Lnext, and eNew.Dst is a newly created vertex.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshAddEdgeVertex(eOrg: GLUhalfEdge): GLUhalfEdge {\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n run {\n val newVertex = GLUvertex()\n makeVertex(newVertex, eNewSym, eNew.org!!)\n }\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n return eNew\n }\n\n /**\n * __gl_meshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n * such that eNew == eOrg.Lnext. The new vertex is eOrg.Sym.Org == eNew.Org.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshSplitEdge(eOrg: GLUhalfEdge): GLUhalfEdge {\n val tempHalfEdge = glMeshAddEdgeVertex(eOrg)\n val eNew = tempHalfEdge.sym!!\n\n /* Disconnect eOrg from eOrg.Sym.Org and connect it to eNew.Org */\n splice(eOrg.sym!!, eOrg.sym?.sym?.lNext!!)\n splice(eOrg.sym!!, eNew)\n\n /* Set the vertex and face information */\n eOrg.sym?.org = eNew.org\n eNew.sym?.org?.anEdge = eNew.sym /* may have pointed to eOrg.Sym */\n eNew.sym?.lFace = eOrg.sym?.lFace\n eNew.winding = eOrg.winding /* copy old winding information */\n eNew.sym?.winding = eOrg.sym!!.winding\n return eNew\n }\n\n /**\n * __gl_meshConnect( eOrg, eDst ) creates a new edge from eOrg.Sym.Org\n * to eDst.Org, and returns the corresponding half-edge eNew.\n * If eOrg.Lface == eDst.Lface, this splits one loop into two,\n * and the newly created loop is eNew.Lface. Otherwise, two disjoint\n * loops are merged into one, and the loop eDst.Lface is destroyed.\n *\n * If (eOrg == eDst), the new face will have only two edges.\n * If (eOrg.Lnext == eDst), the old face is reduced to a single edge.\n * If (eOrg.Lnext.Lnext == eDst), the old face is reduced to two edges.\n */\n fun glMeshConnect(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): GLUhalfEdge {\n var joiningLoops = false\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n splice(eNewSym, eDst)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n eNewSym.org = eDst.org\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n\n /* Make sure the old face points to a valid half-edge */\n eOrg.lFace?.anEdge = eNewSym\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We split one loop into two -- the new loop is eNew.Lface */\n makeFace(newFace, eNew, eOrg.lFace!!)\n }\n return eNew\n }\n\n /******************** Other Operations */\n /**\n * __gl_meshZapFace( fZap ) destroys a face and removes it from the\n * global face list. All edges of fZap will have a null pointer as their\n * left face. Any edges which also have a null pointer as their right face\n * are deleted entirely (along with any isolated vertices this produces).\n * An entire mesh can be deleted by zapping its faces, one at a time,\n * in any order. Zapped faces cannot be used in further mesh operations!\n */\n fun glMeshZapFace(fZap: GLUface) {\n val eStart = fZap.anEdge!!\n\n /* walk around face, deleting edges whose right face is also null */\n var eNext = eStart.lNext!!\n do {\n val e = eNext\n eNext = e.lNext!!\n e.lFace = null\n if (e.sym?.lFace == null) {\n /* delete the edge -- see __gl_MeshDelete above */\n if (e.oNext === e) {\n killVertex(e.org!!, null)\n } else {\n /* Make sure that e.Org points to a valid half-edge */\n e.org?.anEdge = e.oNext\n splice(e, e.sym?.lNext!!)\n }\n val eSym = e.sym!!\n if (eSym.oNext === eSym) {\n killVertex(eSym.org!!, null)\n } else {\n /* Make sure that eSym.Org points to a valid half-edge */\n eSym.org?.anEdge = eSym.oNext\n splice(eSym, eSym.sym?.lNext!!)\n }\n killEdge(e)\n }\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fZap.prev!!\n val fNext = fZap.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /**\n * __gl_meshNewMesh() creates a new mesh with no edges, no vertices,\n * and no loops (what we usually call a \"face\").\n */\n fun glMeshNewMesh(): GLUmesh {\n val mesh = GLUmesh()\n val v = mesh.vHead\n val f = mesh.fHead\n val e = mesh.eHead\n val eSym = mesh.eHeadSym\n v.prev = v\n v.next = v.prev\n v.anEdge = null\n v.data = null\n f.prev = f\n f.next = f.prev\n f.anEdge = null\n f.data = null\n f.trail = null\n f.marked = false\n f.inside = false\n e.next = e\n e.sym = eSym\n e.oNext = null\n e.lNext = null\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.next = eSym\n eSym.sym = e\n eSym.oNext = null\n eSym.lNext = null\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return mesh\n }\n\n /**\n * glMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n * both meshes, and returns the new mesh (the old meshes are destroyed).\n */\n fun glMeshUnion(mesh1: GLUmesh, mesh2: GLUmesh): GLUmesh {\n val f1 = mesh1.fHead\n val v1 = mesh1.vHead\n val e1 = mesh1.eHead\n val f2 = mesh2.fHead\n val v2 = mesh2.vHead\n val e2 = mesh2.eHead\n\n /* Add the faces, vertices, and edges of mesh2 to those of mesh1 */\n if (f2.next !== f2) {\n f1.prev?.next = f2.next\n f2.next?.prev = f1.prev\n f2.prev?.next = f1\n f1.prev = f2.prev\n }\n if (v2.next !== v2) {\n v1.prev?.next = v2.next\n v2.next?.prev = v1.prev\n v2.prev?.next = v1\n v1.prev = v2.prev\n }\n if (e2.next !== e2) {\n e1.sym?.next?.sym?.next = e2.next\n e2.next?.sym?.next = e1.sym?.next\n e2.sym?.next?.sym?.next = e1\n e1.sym?.next = e2.sym?.next\n }\n return mesh1\n }\n\n /**\n * glMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMeshZap(mesh: GLUmesh) {\n val fHead = mesh.fHead\n while (fHead.next !== fHead) {\n glMeshZapFace(fHead.next!!)\n }\n }\n\n /**\n * __gl_meshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMesh(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n f = fNext\n }\n var v = mesh.vHead.next!!\n while (v !== mesh.vHead) {\n val vNext = v.next!!\n v = vNext\n }\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n /* One call frees both e and e.Sym (see EdgePair above) */\n val eNext = e.next!!\n e = eNext\n }\n }\n\n /**\n * __gl_meshCheckMesh( mesh ) checks a mesh for self-consistency.\n */\n fun glMeshCheckMesh(mesh: GLUmesh) {\n val fHead = mesh.fHead\n val vHead = mesh.vHead\n val eHead = mesh.eHead\n var fPrev = fHead\n while (true) {\n val f = fPrev.next!!\n if (f === fHead) break\n var e = f.anEdge!!\n do e = e.lNext!! while (e !== f.anEdge)\n fPrev = f\n }\n var vPrev = vHead\n while (true) {\n val v = vPrev.next!!\n if (v === vHead) break\n var e = v.anEdge!!\n do {\n e = e.oNext!!\n } while (e !== v.anEdge)\n vPrev = v\n }\n var ePrev = eHead\n while (true) {\n val e = ePrev.next!!\n if (e === eHead) break\n ePrev = e\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\ninternal object Normal {\n private const val SLANTED_SWEEP = false\n private var S_UNIT_X = 0.0 /* Pre-normalized */\n private var S_UNIT_Y = 0.0\n private const val TRUE_PROJECT = false\n\n init {\n if (SLANTED_SWEEP) {\n /**\n * The \"feature merging\" is not intended to be complete. There are\n * special cases where edges are nearly parallel to the sweep line\n * which are not implemented. The algorithm should still behave\n * robustly (ie. produce a reasonable tesselation) in the presence\n * of such edges, however it may miss features which could have been\n * merged. We could minimize this effect by choosing the sweep line\n * direction to be something unusual (ie. not parallel to one of the\n * coordinate axes).\n */\n S_UNIT_X = 0.5094153956495538 /* Pre-normalized */\n S_UNIT_Y = 0.8605207462201063\n } else {\n S_UNIT_X = 1.0\n S_UNIT_Y = 0.0\n }\n }\n\n private fun dot(u: DoubleArray, v: DoubleArray): Double {\n return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]\n }\n\n fun normalize(v: DoubleArray) {\n var len = v[0] * v[0] + v[1] * v[1] + v[2] * v[2]\n len = sqrt(len)\n v[0] /= len\n v[1] /= len\n v[2] /= len\n }\n\n fun longAxis(v: DoubleArray): Int {\n var i = 0\n if (abs(v[1]) > abs(v[0])) {\n i = 1\n }\n if (abs(v[2]) > abs(v[i])) {\n i = 2\n }\n return i\n }\n\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray) {\n val vHead = tess.mesh?.vHead!!\n val maxVal = DoubleArray(3)\n val minVal = DoubleArray(3)\n val minVert = arrayOfNulls(3)\n val maxVert = arrayOfNulls(3)\n val d1 = DoubleArray(3)\n val d2 = DoubleArray(3)\n val tNorm = DoubleArray(3)\n maxVal[2] = -2 * GLU.GLU_TESS_MAX_COORD\n maxVal[1] = maxVal[2]\n maxVal[0] = maxVal[1]\n minVal[2] = 2 * GLU.GLU_TESS_MAX_COORD\n minVal[1] = minVal[2]\n minVal[0] = minVal[1]\n var v = vHead.next!!\n while (v !== vHead) {\n var i = 0\n while (i < 3) {\n val c = v.coords[i]\n if (c < minVal[i]) {\n minVal[i] = c\n minVert[i] = v\n }\n if (c > maxVal[i]) {\n maxVal[i] = c\n maxVert[i] = v\n }\n ++i\n }\n v = v.next!!\n }\n\n /**\n * Find two vertices separated by at least 1/sqrt(3) of the maximum\n * distance between any two vertices\n */\n var i = 0\n if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {\n i = 1\n }\n if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {\n i = 2\n }\n if (minVal[i] >= maxVal[i]) {\n /* All vertices are the same -- normal doesn't matter */\n norm[0] = 0.0\n norm[1] = 0.0\n norm[2] = 1.0\n return\n }\n\n /**\n * Look for a third vertex which forms the triangle with maximum area\n * (Length of normal == twice the triangle area)\n */\n var maxLen2 = 0.0\n val v1 = minVert[i]!!\n val v2 = maxVert[i]!!\n d1[0] = v1.coords[0] - v2.coords[0]\n d1[1] = v1.coords[1] - v2.coords[1]\n d1[2] = v1.coords[2] - v2.coords[2]\n v = vHead.next!!\n while (v !== vHead) {\n d2[0] = v.coords[0] - v2.coords[0]\n d2[1] = v.coords[1] - v2.coords[1]\n d2[2] = v.coords[2] - v2.coords[2]\n tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1]\n tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2]\n tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0]\n val tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2]\n if (tLen2 > maxLen2) {\n maxLen2 = tLen2\n norm[0] = tNorm[0]\n norm[1] = tNorm[1]\n norm[2] = tNorm[2]\n }\n v = v.next!!\n }\n if (maxLen2 <= 0) {\n /* All points lie on a single line -- any decent normal will do */\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n norm[longAxis(d1)] = 1.0\n }\n }\n\n fun checkOrientation(tess: GLUtessellatorImpl) {\n val fHead = tess.mesh?.fHead!!\n val vHead = tess.mesh?.vHead!!\n\n /**\n * When we compute the normal automatically, we choose the orientation\n * so that the the sum of the signed areas of all contours is non-negative.\n */\n var area = 0.0\n var f = fHead.next!!\n while (f !== fHead) {\n var e = f.anEdge!!\n if (e.winding <= 0) {\n f = f.next!!\n continue\n }\n do {\n area += (e.org!!.s - e.sym!!.org!!.s) * (e.org!!.t + e.sym!!.org!!.t)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.next!!\n }\n if (area < 0) {\n /* Reverse the orientation by flipping all the t-coordinates */\n var v = vHead.next!!\n while (v !== vHead) {\n v.t = -v.t\n v = v.next!!\n }\n tess.tUnit[0] = -tess.tUnit[0]\n tess.tUnit[1] = -tess.tUnit[1]\n tess.tUnit[2] = -tess.tUnit[2]\n }\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n fun glProjectPolygon(tess: GLUtessellatorImpl) {\n val vHead = tess.mesh?.vHead!!\n val norm = DoubleArray(3)\n var computedNormal = false\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm)\n computedNormal = true\n }\n val sUnit = tess.sUnit\n val tUnit = tess.tUnit\n val i = longAxis(norm)\n if (TRUE_PROJECT) {\n /**\n * Choose the initial sUnit vector to be approximately perpendicular\n * to the normal.\n */\n normalize(norm)\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n\n /* Now make it exactly perpendicular */\n val w = dot(sUnit, norm)\n sUnit[0] -= w * norm[0]\n sUnit[1] -= w * norm[1]\n sUnit[2] -= w * norm[2]\n normalize(sUnit)\n\n /* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */\n tUnit[0] = norm[1] * sUnit[2] - norm[2] * sUnit[1]\n tUnit[1] = norm[2] * sUnit[0] - norm[0] * sUnit[2]\n tUnit[2] = norm[0] * sUnit[1] - norm[1] * sUnit[0]\n normalize(tUnit)\n } else {\n /* Project perpendicular to a coordinate axis -- better numerically */\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n tUnit[i] = 0.0\n tUnit[(i + 1) % 3] = if (norm[i] > 0) -S_UNIT_Y else S_UNIT_Y\n tUnit[(i + 2) % 3] = if (norm[i] > 0) S_UNIT_X else -S_UNIT_X\n }\n\n /* Project the vertices onto the sweep plane */\n var v = vHead.next!!\n while (v !== vHead) {\n v.s = dot(v.coords, sUnit)\n v.t = dot(v.coords, tUnit)\n v = v.next!!\n }\n if (computedNormal) {\n checkOrientation(tess)\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nabstract class PriorityQ {\n class PQnode {\n var handle = 0\n }\n\n class PQhandleElem {\n var key: Any? = null\n var node = 0\n }\n\n interface Leq {\n fun leq(key1: Any?, key2: Any?): Boolean\n }\n\n abstract fun pqDeletePriorityQ()\n abstract fun pqInit(): Boolean\n abstract fun pqInsert(keyNew: Any?): Int\n abstract fun pqExtractMin(): Any?\n abstract fun pqDelete(hCurr: Int)\n abstract fun pqMinimum(): Any?\n abstract fun pqIsEmpty(): Boolean // #endif\n\n companion object {\n const val INIT_SIZE = 32\n\n fun leq(x: Any, y: Any) = Geom.vertLeq(x as GLUvertex, y as GLUvertex)\n\n fun pqNewPriorityQ(): PriorityQ = PriorityQSort()\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal class PriorityQHeap : PriorityQ() {\n var nodes = Array(INIT_SIZE + 1) { PQnode() }\n var handles = Array(INIT_SIZE + 1) { PQhandleElem() }\n var size = 0\n var max = INIT_SIZE\n var freeList = 0\n var initialized = false\n\n init {\n nodes[1].handle = 1\n handles[1].key = null\n }\n\n /* really __gl_pqHeapDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n handles = emptyArray()\n nodes = emptyArray()\n }\n\n fun floatDown(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n var child = c shl 1\n if (child < size && leq(h[n[child + 1].handle].key!!, h[n[child].handle].key!!)) {\n ++child\n }\n val hChild = n[child].handle\n if (child > size || leq(h[hCurr].key!!, h[hChild].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hChild\n h[hChild].node = c\n c = child\n }\n }\n\n fun floatUp(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n val parent = c shr 1\n val hParent = n[parent].handle\n if (parent == 0 || leq(h[hParent].key!!, h[hCurr].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hParent\n h[hParent].node = c\n c = parent\n }\n }\n\n /* really __gl_pqHeapInit */\n override fun pqInit(): Boolean {\n /* This method of building a heap is O(n), rather than O(n lg n). */\n var i = size\n while (i >= 1) {\n floatDown(i)\n --i\n }\n initialized = true\n return true\n }\n\n /* really __gl_pqHeapInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n val free: Int\n val curr = ++size\n if (curr * 2 > max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n nodes = Array(max + 1) { if (it < nodes.size) nodes[it] else PQnode() }\n handles = Array(max + 1) { if (it < handles.size) handles[it] else PQhandleElem() }\n }\n if (freeList == 0) {\n free = curr\n } else {\n free = freeList\n freeList = handles[free].node\n }\n nodes[curr].handle = free\n handles[free].node = curr\n handles[free].key = keyNew\n if (initialized) {\n floatUp(curr)\n }\n return free\n }\n\n /* really __gl_pqHeapExtractMin */\n override fun pqExtractMin(): Any? {\n val n = nodes\n val h = handles\n val hMin = n[1].handle\n val min = h[hMin].key\n if (size > 0) {\n n[1].handle = n[size].handle\n h[n[1].handle].node = 1\n h[hMin].key = null\n h[hMin].node = freeList\n freeList = hMin\n if (--size > 0) {\n floatDown(1)\n }\n }\n return min\n }\n\n /* really __gl_pqHeapDelete */\n override fun pqDelete(hCurr: Int) {\n val n = nodes\n val h = handles\n val curr = h[hCurr].node\n n[curr].handle = n[size].handle\n h[n[curr].handle].node = curr\n if (curr <= --size) {\n if (curr <= 1 || leq(h[n[curr shr 1].handle].key!!, h[n[curr].handle].key!!)) {\n floatDown(curr)\n } else {\n floatUp(curr)\n }\n }\n h[hCurr].key = null\n h[hCurr].node = freeList\n freeList = hCurr\n }\n\n override fun pqMinimum(): Any? {\n return handles[nodes[1].handle].key\n }\n\n override fun pqIsEmpty(): Boolean {\n return size == 0\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\ninternal class PriorityQSort: PriorityQ() {\n val heap = PriorityQHeap()\n var keys: Array? = arrayOfNulls(INIT_SIZE)\n\n // JAVA: 'order' contains indices into the keys array.\n // This simulates the indirect pointers used in the original C code\n // (from Frank Suykens, Luciad.com).\n var order: IntArray? = null\n var size = 0\n var max = INIT_SIZE\n var initialized = false\n\n /* really __gl_pqSortDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n heap.pqDeletePriorityQ()\n order = null\n keys = null\n }\n\n private class Stack {\n var p = 0\n var r = 0\n }\n\n /* really __gl_pqSortInit */\n override fun pqInit(): Boolean {\n val stack = arrayOfNulls(50)\n for (k in stack.indices) {\n stack[k] = Stack()\n }\n var top = 0\n var seed = 2016473283\n\n /**\n * Create an array of indirect pointers to the keys, so that we\n * the handles we have returned are still valid.\n */\n order = IntArray(size + 1)\n /* the previous line is a patch to compensate for the fact that IBM */\n /* machines return a null on a malloc of zero bytes (unlike SGI), */\n /* so we have to put in this defense to guard against a memory */\n /* fault four lines down. from fossum@austin.ibm.com. */\n var p = 0\n var r = size - 1\n var piv = 0\n var i = p\n while (i <= r) {\n // indirect pointers: keep an index into the keys array, not a direct pointer to its contents\n order!![i] = piv\n ++piv\n ++i\n }\n\n /**\n * Sort the indirect pointers in descending order,\n * using randomized Quicksort\n */\n stack[top]?.p = p\n stack[top]?.r = r\n ++top\n while (--top >= 0) {\n p = stack[top]!!.p\n r = stack[top]!!.r\n while (r > p + 10) {\n seed = abs(seed * 1539415821 + 1)\n i = p + seed % (r - p + 1)\n piv = order!![i]\n order!![i] = order!![p]\n order!![p] = piv\n i = p - 1\n var j = r + 1\n do {\n do {\n ++i\n } while (gt(keys!![order!![i]]!!, keys!![piv]!!))\n do {\n --j\n } while (lt(keys!![order!![j]]!!, keys!![piv]!!))\n swap(order!!, i, j)\n } while (i < j)\n swap(order!!, i, j) /* Undo last swap */\n if (i - p < r - j) {\n stack[top]?.p = j + 1\n stack[top]?.r = r\n ++top\n r = i - 1\n } else {\n stack[top]?.p = p\n stack[top]?.r = i - 1\n ++top\n p = j + 1\n }\n }\n /* Insertion sort small lists */\n i = p + 1\n while (i <= r) {\n piv = order!![i]\n var j = i\n while (j > p && lt(keys!![order!![j - 1]]!!, keys!![piv]!!)) {\n order!![j] = order!![j - 1]\n --j\n }\n order!![j] = piv\n ++i\n }\n }\n max = size\n initialized = true\n heap.pqInit() /* always succeeds */\n\n/* #ifndef NDEBUG\n p = order;\n r = p + size - 1;\n for (i = p; i < r; ++i) {\n Assertion.doAssert(LEQ( * * (i + 1), **i ));\n }\n #endif*/\n return true\n }\n\n /* really __gl_pqSortInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n if (initialized) {\n return heap.pqInsert(keyNew)\n }\n val curr = size\n if (++size >= max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n // pq->keys = (PQHeapKey *)memRealloc( pq->keys,(size_t)(pq->max * sizeof( pq->keys[0] )));\n val pqKeys = arrayOfNulls(max)\n keys?.copyInto(pqKeys)\n keys = pqKeys\n }\n keys!![curr] = keyNew\n\n /* Negative handles index the sorted array. */\n return -(curr + 1)\n }\n\n /* really __gl_pqSortExtractMin */\n override fun pqExtractMin(): Any? {\n if (size == 0) {\n return heap.pqExtractMin()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heap.pqExtractMin()\n }\n }\n do {\n --size\n } while (size > 0 && keys!![order!![size - 1]] == null)\n return sortMin\n }\n\n /* really __gl_pqSortMinimum */\n override fun pqMinimum(): Any? {\n if (size == 0) {\n return heap.pqMinimum()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heapMin\n }\n }\n return sortMin\n }\n\n /* really __gl_pqSortIsEmpty */\n override fun pqIsEmpty(): Boolean {\n return size == 0 && heap.pqIsEmpty()\n }\n\n /* really __gl_pqSortDelete */\n override fun pqDelete(hCurr: Int) {\n var curr = hCurr\n if (curr >= 0) {\n heap.pqDelete(curr)\n return\n }\n curr = -(curr + 1)\n keys!![curr] = null\n while (size > 0 && keys!![order!![size - 1]] == null) {\n --size\n }\n }\n\n companion object {\n private fun lt(x: Any, y: Any): Boolean {\n return !leq(y, x)\n }\n\n private fun gt(x: Any, y: Any): Boolean {\n return !leq(x, y)\n }\n\n private fun swap(array: IntArray, a: Int, b: Int) {\n val tmp = array[a]\n array[a] = array[b]\n array[b] = tmp\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.kgl.GL_LINE_LOOP\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_FAN\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Render {\n private const val USE_OPTIMIZED_CODE_PATH = false\n private val renderFan = RenderFan()\n private val renderStrip = RenderStrip()\n private val renderTriangle = RenderTriangle()\n\n /************************ Strips and Fans decomposition */\n /**\n * __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle\n * fans, strips, and separate triangles. A substantial effort is made\n * to use as few rendering primitives as possible (ie. to make the fans\n * and strips as large as possible).\n *\n * The rendering output is provided as callbacks (see the api).\n */\n fun glRenderMesh(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n /* Make a list of separate triangles so we can render them all at once */\n tess.lonelyTriList = null\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n f.marked = false\n f = f.next!!\n }\n f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /**\n * We examine all faces in an arbitrary order. Whenever we find\n * an unprocessed face F, we output a group of faces including F\n * whose size is maximum.\n */\n if (f.inside && !f.marked) {\n renderMaximumFaceGroup(tess, f)\n }\n f = f.next!!\n }\n if (tess.lonelyTriList != null) {\n renderLonelyTriangles(tess, tess.lonelyTriList)\n tess.lonelyTriList = null\n }\n }\n\n /**\n * We want to find the largest triangle fan or strip of unmarked faces\n * which includes the given face fOrig. There are 3 possible fans\n * passing through fOrig (one centered at each vertex), and 3 possible\n * strips (one for each CCW permutation of the vertices). Our strategy\n * is to try all of these, and take the primitive which uses the most\n * triangles (a greedy approach).\n */\n fun renderMaximumFaceGroup(tess: GLUtessellatorImpl, fOrig: GLUface) {\n val e = fOrig.anEdge!!\n var max = FaceCount()\n max.size = 1\n max.eStart = e\n max.render = renderTriangle\n if (!tess.flagBoundary) {\n var newFace = maximumFan(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n }\n max.render?.render(tess, max.eStart!!, max.size)\n }\n\n /* Macros which keep track of faces we have marked temporarily, and allow\n * us to backtrack when necessary. With triangle fans, this is not\n * really necessary, since the only awkward case is a loop of triangles\n * around a single origin vertex. However with strips the situation is\n * more complicated, and we need a general tracking method like the\n * one here.\n */\n private fun marked(f: GLUface): Boolean {\n return !f.inside || f.marked\n }\n\n private fun addToTrail(f: GLUface, t: GLUface?): GLUface {\n f.trail = t\n f.marked = true\n return f\n }\n\n private fun freeTrail(t: GLUface?) {\n var t = t\n while (t != null) {\n t.marked = false\n t = t.trail\n }\n }\n\n /**\n * eOrig.Lface is the face we want to render. We want to find the size\n * of a maximal fan around eOrig.Org. To do this we just walk around\n * the origin vertex as far as possible in both directions.\n */\n fun maximumFan(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderFan)\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++newFace.size\n e = e.oNext!!\n }\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++newFace.size\n e = e.sym?.lNext!!\n }\n newFace.eStart = e\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n private fun isEven(n: Long): Boolean {\n return n and 0x1L == 0L\n }\n\n /**\n * Here we are looking for a maximal strip that contains the vertices\n * eOrig.Org, eOrig.Dst, eOrig.Lnext.Dst (in that order or the\n * reverse, such that all triangles are oriented CCW).\n *\n * Again we walk forward and backward as far as possible. However for\n * strips there is a twist: to get CCW orientations, there must be\n * an *even* number of triangles in the strip on one side of eOrig.\n * We walk the strip starting on a side with an even number of triangles;\n * if both side have an odd number, we are forced to shorten one side.\n */\n fun maximumStrip(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderStrip)\n var headSize = 0L\n var tailSize = 0L\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.lNext?.sym!!\n if (marked(e.lFace!!)) break\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.oNext!!\n }\n val eTail = e\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.lNext!!\n if (marked(e.sym?.lFace!!)) break\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.oNext?.sym!!\n }\n val eHead = e\n newFace.size = tailSize + headSize\n when {\n isEven(tailSize) -> {\n newFace.eStart = eTail.sym\n }\n isEven(headSize) -> {\n newFace.eStart = eHead\n }\n else -> {\n /**\n * Both sides have odd length, we must shorten one of them. In fact,\n * we must start from eHead to guarantee inclusion of eOrig.Lface.\n */\n --newFace.size\n newFace.eStart = eHead.oNext\n }\n }\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n /**\n * Now we render all the separate triangles which could not be\n * grouped into a triangle fan or strip.\n */\n fun renderLonelyTriangles(tess: GLUtessellatorImpl, f: GLUface?) {\n var f = f\n var edgeState = -1 /* force edge state output for first vertex */\n tess.callBeginOrBeginData(GL_TRIANGLES)\n while (f != null) {\n /* Loop once for each edge (there will always be 3 edges) */\n var e = f.anEdge!!\n do {\n if (tess.flagBoundary) {\n /**\n * Set the \"edge state\" to true just before we output the\n * first vertex of each edge on the polygon boundary.\n */\n val newState = if (!e.sym!!.lFace!!.inside) 1 else 0\n if (edgeState != newState) {\n edgeState = newState\n tess.callEdgeFlagOrEdgeFlagData(edgeState != 0)\n }\n }\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.trail\n }\n tess.callEndOrEndData()\n }\n\n /************************ Boundary contour decomposition */\n /**\n * __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one\n * contour for each face marked \"inside\". The rendering output is\n * provided as callbacks (see the api).\n */\n fun glRenderBoundary(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n if (f.inside) {\n tess.callBeginOrBeginData(GL_LINE_LOOP)\n var e = f.anEdge!!\n do {\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n tess.callEndOrEndData()\n }\n f = f.next!!\n }\n }\n\n /************************ Quick-and-dirty decomposition */\n private const val SIGN_INCONSISTENT = 2\n /**\n * If check==false, we compute the polygon normal and place it in norm[].\n * If check==true, we check that each triangle in the fan from v0 has a\n * consistent orientation with respect to norm[]. If triangles are\n * consistently oriented CCW, return 1; if CW, return -1; if all triangles\n * are degenerate return 0; otherwise (no consistent orientation) return\n * SIGN_INCONSISTENT.\n */\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray, check: Boolean): Int {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val n = DoubleArray(3)\n var sign = 0\n\n /**\n * Find the polygon normal. It is important to get a reasonable\n * normal even when the polygon is self-intersecting (eg. a bowtie).\n * Otherwise, the computed normal could be very tiny, but perpendicular\n * to the true plane of the polygon due to numerical noise. Then all\n * the triangles would appear to be degenerate and we would incorrectly\n * decompose the polygon as a fan (or simply not render it at all).\n *\n * We use a sum-of-triangles normal algorithm rather than the more\n * efficient sum-of-trapezoids method (used in CheckOrientation()\n * in normal.c). This lets us explicitly reverse the signed area\n * of some triangles to get a reasonable normal in the self-intersecting\n * case.\n */\n if (!check) {\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n }\n var vc = 1\n var xc = v[vc].coords[0] - v[0].coords[0]\n var yc = v[vc].coords[1] - v[0].coords[1]\n var zc = v[vc].coords[2] - v[0].coords[2]\n while (++vc < vn) {\n val xp = xc\n val yp = yc\n val zp = zc\n xc = v[vc].coords[0] - v[0].coords[0]\n yc = v[vc].coords[1] - v[0].coords[1]\n zc = v[vc].coords[2] - v[0].coords[2]\n\n /* Compute (vp - v0) cross (vc - v0) */\n n[0] = yp * zc - zp * yc\n n[1] = zp * xc - xp * zc\n n[2] = xp * yc - yp * xc\n val dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2]\n if (!check) {\n /**\n * Reverse the contribution of back-facing triangles to get\n * a reasonable normal for self-intersecting polygons (see above)\n */\n if (dot >= 0) {\n norm[0] += n[0]\n norm[1] += n[1]\n norm[2] += n[2]\n } else {\n norm[0] -= n[0]\n norm[1] -= n[1]\n norm[2] -= n[2]\n }\n } else if (dot != 0.0) {\n /* Check the new orientation for consistency with previous triangles */\n sign = if (dot > 0) {\n if (sign < 0) return SIGN_INCONSISTENT\n 1\n } else {\n if (sign > 0) return SIGN_INCONSISTENT\n -1\n }\n }\n }\n return sign\n }\n\n /**\n * __gl_renderCache( tess ) takes a single contour and tries to render it\n * as a triangle fan. This handles convex polygons, as well as some\n * non-convex polygons if we get lucky.\n *\n * Returns true if the polygon was successfully rendered. The rendering\n * output is provided as callbacks (see the api).\n */\n fun glRenderCache(tess: GLUtessellatorImpl): Boolean {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val norm = DoubleArray(3)\n if (tess.cacheCount < 3) {\n /* Degenerate contour -- no output */\n return true\n }\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm, false)\n }\n val sign = computeNormal(tess, norm, true)\n if (sign == SIGN_INCONSISTENT) {\n /* Fan triangles did not have a consistent orientation */\n return false\n }\n if (sign == 0) {\n /* All triangles were degenerate */\n return true\n }\n return if (!USE_OPTIMIZED_CODE_PATH) {\n false\n } else {\n /* Make sure we do the right thing for each winding rule */\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD, GLU.GLU_TESS_WINDING_NONZERO -> {}\n GLU.GLU_TESS_WINDING_POSITIVE -> if (sign < 0) return true\n GLU.GLU_TESS_WINDING_NEGATIVE -> if (sign > 0) return true\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return true\n }\n tess.callBeginOrBeginData(if (tess.boundaryOnly) GL_LINE_LOOP else if (tess.cacheCount > 3) GL_TRIANGLE_FAN else GL_TRIANGLES)\n tess.callVertexOrVertexData(v[0].data!!)\n if (sign > 0) {\n var vc = 1\n while (vc < vn) {\n tess.callVertexOrVertexData(v[vc].data!!)\n ++vc\n }\n } else {\n var vc = vn - 1\n while (vc > 0) {\n tess.callVertexOrVertexData(v[vc].data!!)\n --vc\n }\n }\n tess.callEndOrEndData()\n true\n }\n }\n\n /**\n * This structure remembers the information we need about a primitive\n * to be able to render it later, once we have determined which\n * primitive is able to use the most triangles.\n */\n internal class FaceCount {\n constructor()\n constructor(size: Long, eStart: GLUhalfEdge?, render: RenderCallBack?) {\n this.size = size\n this.eStart = eStart\n this.render = render\n }\n\n /**\n * number of triangles used\n */\n var size = 0L\n /**\n * edge where this primitive starts\n */\n var eStart: GLUhalfEdge? = null\n var render: RenderCallBack? = null\n }\n\n internal interface RenderCallBack {\n fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long)\n }\n\n private class RenderTriangle : RenderCallBack {\n /**\n * Just add the triangle to a triangle list, so we can render all\n * the separate triangles at once.\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n tess.lonelyTriList = addToTrail(e.lFace!!, tess.lonelyTriList)\n }\n }\n\n private class RenderFan : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a fan starting from\n * edge \"e\". The fan *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_FAN)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n\n private class RenderStrip : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a strip starting from\n * edge \"e\". The strip *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_STRIP)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.lNext?.sym!!\n tess.callVertexOrVertexData(e.org?.data!!)\n if (marked(e.lFace!!)) break\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.tessellator.Dict.DictLeq\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Sweep {\n // #ifdef FOR_TRITE_TEST_PROGRAM\n // extern void DebugEvent( GLUtessellator *tess );\n // #else\n @Suppress(\"UNUSED_PARAMETER\")\n private fun debugEvent(tess: GLUtessellatorImpl) {}\n\n // #endif\n /*\n * Invariants for the Edge Dictionary.\n * - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n * at any valid location of the sweep event\n * - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n * share a common endpoint\n * - for each e, e.Dst has been processed, but not e.Org\n * - each edge e satisfies VertLeq(e.Dst,event) && VertLeq(event,e.Org)\n * where \"event\" is the current sweep line event.\n * - no edge e has zero length\n *\n * Invariants for the Mesh (the processed portion).\n * - the portion of the mesh left of the sweep line is a planar graph,\n * ie. there is *some* way to embed it in the plane\n * - no processed edge has zero length\n * - no two processed vertices have identical coordinates\n * - each \"inside\" region is monotone, ie. can be broken into two chains\n * of monotonically increasing vertices according to VertLeq(v1,v2)\n * - a non-invariant: these chains may intersect (very slightly)\n *\n * Invariants for the Sweep.\n * - if none of the edges incident to the event vertex have an activeRegion\n * (ie. none of these edges are in the edge dictionary), then the vertex\n * has only right-going edges.\n * - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n * by ConnectRightVertex), then it is the only right-going edge from\n * its associated vertex. (This says that these edges exist only\n * when it is necessary.)\n */\n /**\n * When we merge two edges into one, we need to compute the combined\n * winding of the new edge.\n */\n private fun addWinding(eDst: GLUhalfEdge, eSrc: GLUhalfEdge) {\n eDst.winding += eSrc.winding\n eDst.sym!!.winding += eSrc.sym!!.winding\n }\n\n private fun regionBelow(r: ActiveRegion): ActiveRegion {\n return Dict.dictKey(Dict.dictPred(r.nodeUp!!)) as ActiveRegion\n }\n\n private fun regionAbove(r: ActiveRegion): ActiveRegion? {\n return Dict.dictKey(Dict.dictSucc(r.nodeUp!!)) as ActiveRegion?\n }\n\n /**\n * Both edges must be directed from right to left (this is the canonical\n * direction for the upper edge of each region).\n *\n * The strategy is to evaluate a \"t\" value for each edge at the\n * current sweep line position, given by tess.event. The calculations\n * are designed to be very stable, but of course they are not perfect.\n *\n * Special case: if both edge destinations are at the sweep event,\n * we sort the edges by slope (they would otherwise compare equally).\n */\n fun edgeLeq(tess: GLUtessellatorImpl, reg1: ActiveRegion, reg2: ActiveRegion): Boolean {\n val event = tess.event!!\n val e1 = reg1.eUp\n val e2 = reg2.eUp\n if (e1.sym?.org === event) {\n return if (e2.sym?.org === event) {\n /**\n * Two edges right of the sweep line which meet at the sweep event.\n * Sort them by slope.\n */\n if (Geom.vertLeq(e1.org!!, e2.org!!)) {\n Geom.edgeSign(e2.sym?.org!!, e1.org!!, e2.org!!) <= 0\n } else Geom.edgeSign(e1.sym?.org!!, e2.org!!, e1.org!!) >= 0\n } else Geom.edgeSign(e2.sym?.org!!, event, e2.org!!) <= 0\n }\n if (e2.sym?.org === event) {\n return Geom.edgeSign(e1.sym?.org!!, event, e1.org!!) >= 0\n }\n\n /* General case - compute signed distance *from* e1, e2 to event */\n val t1 = Geom.edgeEval(e1.sym?.org!!, event, e1.org!!)\n val t2 = Geom.edgeEval(e2.sym?.org!!, event, e2.org!!)\n return t1 >= t2\n }\n\n fun deleteRegion(reg: ActiveRegion) {\n reg.eUp.activeRegion = null\n Dict.dictDelete(reg.nodeUp!!) /* __gl_dictListDelete */\n }\n\n /**\n * Replace an upper edge which needs fixing (see ConnectRightVertex).\n */\n fun fixUpperEdge(reg: ActiveRegion, newEdge: GLUhalfEdge): Boolean {\n if (!Mesh.glMeshDelete(reg.eUp)) return false\n reg.fixUpperEdge = false\n reg.eUp = newEdge\n newEdge.activeRegion = reg\n return true\n }\n\n fun topLeftRegion(reg: ActiveRegion): ActiveRegion? {\n var reg = reg\n val org = reg.eUp.org\n\n /* Find the region above the uppermost edge with the same origin */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.org === org)\n\n /**\n * If the edge above was a temporary edge introduced by ConnectRightVertex,\n * now is the time to fix it.\n */\n if (reg.fixUpperEdge) {\n val e = Mesh.glMeshConnect(regionBelow(reg).eUp.sym!!, reg.eUp.lNext!!)\n if (!fixUpperEdge(reg, e)) return null\n reg = regionAbove(reg)!!\n }\n return reg\n }\n\n fun topRightRegion(reg: ActiveRegion): ActiveRegion {\n var reg = reg\n val dst = reg.eUp.sym?.org\n\n /* Find the region above the uppermost edge with the same destination */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.sym?.org === dst)\n return reg\n }\n\n /**\n * Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n * (according to where the new edge belongs in the sweep-line dictionary).\n * The upper edge of the new region will be \"eNewUp\".\n * Winding number and \"inside\" flag are not updated.\n */\n fun addRegionBelow(\n tess: GLUtessellatorImpl,\n regAbove: ActiveRegion,\n eNewUp: GLUhalfEdge\n ): ActiveRegion {\n val regNew = ActiveRegion(eNewUp)\n /* __gl_dictListInsertBefore */\n regNew.nodeUp = Dict.dictInsertBefore(tess.dict!!, regAbove.nodeUp!!, regNew)\n regNew.fixUpperEdge = false\n regNew.sentinel = false\n regNew.dirty = false\n eNewUp.activeRegion = regNew\n return regNew\n }\n\n fun isWindingInside(tess: GLUtessellatorImpl, n: Int): Boolean {\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD -> return n and 1 != 0\n GLU.GLU_TESS_WINDING_NONZERO -> return n != 0\n GLU.GLU_TESS_WINDING_POSITIVE -> return n > 0\n GLU.GLU_TESS_WINDING_NEGATIVE -> return n < 0\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return n >= 2 || n <= -2\n }\n throw RuntimeException()\n /*NOTREACHED*/\n }\n\n fun computeWinding(tess: GLUtessellatorImpl, reg: ActiveRegion) {\n reg.windingNumber = regionAbove(reg)!!.windingNumber + reg.eUp.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n }\n\n /**\n * Delete a region from the sweep line. This happens when the upper\n * and lower chains of a region meet (at a vertex on the sweep line).\n * The \"inside\" flag is copied to the appropriate mesh face (we could\n * not do this before -- since the structure of the mesh is always\n * changing, this face may not have even existed until now).\n */\n fun finishRegion(reg: ActiveRegion) {\n val e = reg.eUp\n val f = e.lFace!!\n f.inside = reg.inside\n f.anEdge = e /* optimization for __gl_meshTessellateMonoRegion() */\n deleteRegion(reg)\n }\n\n /**\n * We are given a vertex with one or more left-going edges. All affected\n * edges should be in the edge dictionary. Starting at regFirst.eUp,\n * we walk down deleting all regions where both edges have the same\n * origin vOrg. At the same time we copy the \"inside\" flag from the\n * active region to the face, since at this point each face will belong\n * to at most one region (this was not necessarily true until this point\n * in the sweep). The walk stops at the region above regLast; if regLast\n * is null we walk as far as possible. At the same time we relink the\n * mesh if necessary, so that the ordering of edges around vOrg is the\n * same as in the dictionary.\n */\n fun finishLeftRegions(regFirst: ActiveRegion, regLast: ActiveRegion?): GLUhalfEdge {\n var regPrev = regFirst\n var ePrev = regFirst.eUp\n while (regPrev !== regLast) {\n regPrev.fixUpperEdge = false /* placement was OK */\n val reg = regionBelow(regPrev)\n var e = reg.eUp\n if (e.org !== ePrev.org) {\n if (!reg.fixUpperEdge) {\n /**\n * Remove the last left-going edge. Even though there are no further\n * edges in the dictionary with this origin, there may be further\n * such edges in the mesh (if we are adding left edges to a vertex\n * that has already been processed). Thus it is important to call\n * FinishRegion rather than just DeleteRegion.\n */\n finishRegion(regPrev)\n break\n }\n /**\n * If the edge below was a temporary edge introduced by\n * ConnectRightVertex, now is the time to fix it.\n */\n e = Mesh.glMeshConnect(ePrev.oNext?.sym!!, e.sym!!)\n if (!fixUpperEdge(reg, e)) throw RuntimeException()\n }\n\n /* Relink edges so that ePrev.Onext == e */\n if (ePrev.oNext !== e) {\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev, e)) throw RuntimeException()\n }\n finishRegion(regPrev) /* may change reg.eUp */\n ePrev = reg.eUp\n regPrev = reg\n }\n return ePrev\n }\n\n /**\n * Purpose: insert right-going edges into the edge dictionary, and update\n * winding numbers and mesh connectivity appropriately. All right-going\n * edges share a common origin vOrg. Edges are inserted CCW starting at\n * eFirst; the last edge inserted is eLast.Sym.Lnext. If vOrg has any\n * left-going edges already processed, then eTopLeft must be the edge\n * such that an imaginary upward vertical segment from vOrg would be\n * contained between eTopLeft.Sym.Lnext and eTopLeft; otherwise eTopLeft\n * should be null.\n */\n fun addRightEdges(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eFirst: GLUhalfEdge, eLast: GLUhalfEdge?, eTopLeft: GLUhalfEdge?,\n cleanUp: Boolean\n ) {\n var eTopLeft = eTopLeft\n var firstTime = true\n\n /* Insert the new right-going edges in the dictionary */\n var e = eFirst\n do {\n addRegionBelow(tess, regUp, e.sym!!)\n e = e.oNext!!\n } while (e !== eLast)\n\n /**\n * Walk *all* right-going edges from e.Org, in the dictionary order,\n * updating the winding numbers of each region, and re-linking the mesh\n * edges to match the dictionary ordering (if necessary).\n */\n if (eTopLeft == null) {\n eTopLeft = regionBelow(regUp).eUp.sym?.oNext\n }\n var regPrev = regUp\n var ePrev = eTopLeft!!\n var reg: ActiveRegion\n while (true) {\n reg = regionBelow(regPrev)\n e = reg.eUp.sym!!\n if (e.org !== ePrev.org) break\n if (e.oNext !== ePrev) {\n /* Unlink e from its current position, and relink below ePrev */\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev.sym?.lNext!!, e)) throw RuntimeException()\n }\n /* Compute the winding number and \"inside\" flag for the new regions */\n reg.windingNumber = regPrev.windingNumber - e.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n\n /**\n * Check for two outgoing edges with same slope -- process these\n * before any intersection tests (see example in __gl_computeInterior).\n */\n regPrev.dirty = true\n if (!firstTime && checkForRightSplice(tess, regPrev)) {\n addWinding(e, ePrev)\n deleteRegion(regPrev)\n if (!Mesh.glMeshDelete(ePrev)) throw RuntimeException()\n }\n firstTime = false\n regPrev = reg\n ePrev = e\n }\n regPrev.dirty = true\n if (cleanUp) {\n /* Check for intersections between newly adjacent edges. */\n walkDirtyRegions(tess, regPrev)\n }\n }\n\n fun callCombine(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n data: Array, weights: FloatArray, needed: Boolean\n ) {\n val coords = DoubleArray(3)\n\n /* Copy coord data in case the callback changes it. */\n coords[0] = isect.coords[0]\n coords[1] = isect.coords[1]\n coords[2] = isect.coords[2]\n val outData = arrayOfNulls(1)\n tess.callCombineOrCombineData(coords, data, weights, outData)\n isect.data = outData[0]\n if (isect.data == null) {\n if (!needed) {\n isect.data = data[0]\n } else if (!tess.fatalError) {\n /**\n * The only way fatal error is when two edges are found to intersect,\n * but the user has not provided the callback necessary to handle\n * generated intersection points.\n */\n tess.callErrorOrErrorData(GLU.GLU_TESS_NEED_COMBINE_CALLBACK)\n tess.fatalError = true\n }\n }\n }\n\n /**\n * Two vertices with idential coordinates are combined into one.\n * e1.Org is kept, while e2.Org is discarded.\n */\n fun spliceMergeVertices(tess: GLUtessellatorImpl, e1: GLUhalfEdge, e2: GLUhalfEdge) {\n val data = arrayOfNulls(4)\n val weights = floatArrayOf(0.5f, 0.5f, 0.0f, 0.0f)\n data[0] = e1.org?.data\n data[1] = e2.org?.data\n callCombine(tess, e1.org!!, data, weights, false)\n if (!Mesh.glMeshSplice(e1, e2)) throw RuntimeException()\n }\n\n /**\n * Find some weights which describe how the intersection vertex is\n * a linear combination of \"org\" and \"dest\". Each of the two edges\n * which generated \"isect\" is allocated 50% of the weight; each edge\n * splits the weight between its org and dst according to the\n * relative distance to \"isect\".\n */\n fun vertexWeights(\n isect: GLUvertex, org: GLUvertex, dst: GLUvertex,\n weights: FloatArray\n ) {\n val t1 = Geom.vertL1dist(org, isect)\n val t2 = Geom.vertL1dist(dst, isect)\n weights[0] = (0.5 * t2 / (t1 + t2)).toFloat()\n weights[1] = (0.5 * t1 / (t1 + t2)).toFloat()\n isect.coords[0] += weights[0] * org.coords[0] + weights[1] * dst.coords[0]\n isect.coords[1] += weights[0] * org.coords[1] + weights[1] * dst.coords[1]\n isect.coords[2] += weights[0] * org.coords[2] + weights[1] * dst.coords[2]\n }\n\n /**\n * We've computed a new intersection point, now we need a \"data\" pointer\n * from the user so that we can refer to this new vertex in the\n * rendering callbacks.\n */\n fun getIntersectData(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n orgUp: GLUvertex, dstUp: GLUvertex,\n orgLo: GLUvertex, dstLo: GLUvertex\n ) {\n val data = arrayOfNulls(4)\n val weights = FloatArray(4)\n val weights1 = FloatArray(2)\n val weights2 = FloatArray(2)\n data[0] = orgUp.data\n data[1] = dstUp.data\n data[2] = orgLo.data\n data[3] = dstLo.data\n isect.coords[2] = 0.0\n isect.coords[1] = isect.coords[2]\n isect.coords[0] = isect.coords[1]\n vertexWeights(isect, orgUp, dstUp, weights1)\n vertexWeights(isect, orgLo, dstLo, weights2)\n weights1.copyInto(weights, 0)\n weights2.copyInto(weights, 2)\n callCombine(tess, isect, data, weights, true)\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Org is above eLo, or eLo.Org is below eUp (depending on which\n * origin is leftmost).\n *\n * The main purpose is to splice right-going edges with the same\n * dest vertex and nearly identical slopes (ie. we can't distinguish\n * the slopes numerically). However the splicing can also help us\n * to recover from numerical errors. For example, suppose at one\n * point we checked eUp and eLo, and decided that eUp.Org is barely\n * above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * our test so that now eUp.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants.\n *\n * One possibility is to check these edges for intersection again\n * (ie. CheckForIntersect). This is what we do if possible. However\n * CheckForIntersect requires that tess.event lies between eUp and eLo,\n * so that it has something to fall back on when the intersection\n * calculation gives us an unusable answer. So, for those cases where\n * we can't check for intersection, this routine fixes the problem\n * by just splicing the offending vertex into the other edge.\n * This is a guaranteed solution, no matter how degenerate things get.\n * Basically this is a combinatorial solution to a numerical problem.\n */\n fun checkForRightSplice(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.org!!, eLo.org!!)) {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Org appears to be below eLo */\n if (!Geom.vertEq(eUp.org!!, eLo.org!!)) {\n /* Splice eUp.Org into eLo */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n } else if (eUp.org !== eLo.org) {\n /* merge the two vertices, discarding eUp.Org */\n tess.pq?.pqDelete(eUp.org?.pqHandle!!) /* __gl_pqSortDelete */\n spliceMergeVertices(tess, eLo.sym?.lNext!!, eUp)\n }\n } else {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Org appears to be above eUp, so splice eLo.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n }\n return true\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Sym.Org is above eLo, or eLo.Sym.Org is below eUp (depending on which\n * destination is rightmost).\n *\n * Theoretically, this should always be true. However, splitting an edge\n * into two pieces can change the results of previous tests. For example,\n * suppose at one point we checked eUp and eLo, and decided that eUp.Sym.Org\n * is barely above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * the test so that now eUp.Sym.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants\n * (otherwise new edges might get inserted in the wrong place in the\n * dictionary, and bad stuff will happen).\n *\n * We fix the problem by just splicing the offending vertex into the\n * other edge.\n */\n fun checkForLeftSplice(regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.sym?.org!!, eLo.sym?.org!!)) {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.sym?.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Sym.Org is above eUp, so splice eLo.Sym.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n val e = Mesh.glMeshSplitEdge(eUp)\n if (!Mesh.glMeshSplice(eLo.sym!!, e)) throw RuntimeException()\n e.lFace?.inside = regUp.inside\n } else {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.sym?.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Sym.Org is below eLo, so splice eUp.Sym.Org into eLo */\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n val e = Mesh.glMeshSplitEdge(eLo)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym!!)) throw RuntimeException()\n e.sym?.lFace?.inside = regUp.inside\n }\n return true\n }\n\n /**\n * Check the upper and lower edges of the given region to see if\n * they intersect. If so, create the intersection and add it\n * to the data structures.\n *\n * Returns true if adding the new intersection resulted in a recursive\n * call to AddRightEdges(); in this case all \"dirty\" regions have been\n * checked for intersections, and possibly regUp has been deleted.\n */\n fun checkForIntersect(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n val orgUp = eUp.org!!\n val orgLo = eLo.org!!\n val dstUp = eUp.sym?.org!!\n val dstLo = eLo.sym?.org!!\n val isect = GLUvertex()\n if (orgUp === orgLo) return false /* right endpoints are the same */\n val tMinUp = orgUp.t.coerceAtMost(dstUp.t)\n val tMaxLo = orgLo.t.coerceAtLeast(dstLo.t)\n if (tMinUp > tMaxLo) return false /* t ranges do not overlap */\n if (Geom.vertLeq(orgUp, orgLo)) {\n if (Geom.edgeSign(dstLo, orgUp, orgLo) > 0) return false\n } else {\n if (Geom.edgeSign(dstUp, orgLo, orgUp) < 0) return false\n }\n\n /* At this point the edges intersect, at least marginally */\n debugEvent(tess)\n Geom.edgeIntersect(dstUp, orgUp, dstLo, orgLo, isect)\n if (Geom.vertLeq(isect, tess.event!!)) {\n /**\n * The intersection point lies slightly to the left of the sweep line,\n * so move it until it''s slightly to the right of the sweep line.\n * (If we had perfect numerical precision, this would never happen\n * in the first place). The easiest and safest thing to do is\n * replace the intersection by tess.event.\n */\n isect.s = tess.event!!.s\n isect.t = tess.event!!.t\n }\n /**\n * Similarly, if the computed intersection lies to the right of the\n * rightmost origin (which should rarely happen), it can cause\n * unbelievable inefficiency on sufficiently degenerate inputs.\n * (If you have the test program, try running test54.d with the\n * \"X zoom\" option turned on).\n */\n val orgMin = if (Geom.vertLeq(orgUp, orgLo)) orgUp else orgLo\n if (Geom.vertLeq(orgMin, isect)) {\n isect.s = orgMin.s\n isect.t = orgMin.t\n }\n if (Geom.vertEq(isect, orgUp) || Geom.vertEq(isect, orgLo)) {\n /* Easy case -- intersection at one of the right endpoints */\n checkForRightSplice(tess, regUp)\n return false\n }\n if ((!Geom.vertEq(dstUp, tess.event!!)\n && Geom.edgeSign(dstUp, tess.event!!, isect) >= 0)\n || (!Geom.vertEq(dstLo, tess.event!!)\n && Geom.edgeSign(dstLo, tess.event!!, isect) <= 0)\n ) {\n /**\n * Very unusual -- the new upper or lower edge would pass on the\n * wrong side of the sweep event, or through it. This can happen\n * due to very small numerical errors in the intersection calculation.\n */\n if (dstLo === tess.event) {\n /* Splice dstLo into eUp, and process the new region(s) */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eUp = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n addRightEdges(tess, regUp, eUp.sym?.lNext!!, eUp, eUp, true)\n return true\n }\n if (dstUp === tess.event) {\n /* Splice dstUp into eLo, and process the new region(s) */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo = regUp\n regUp = topRightRegion(regUp)\n val e = regionBelow(regUp).eUp.sym?.oNext\n regLo.eUp = eLo.sym?.lNext!!\n eLo = finishLeftRegions(regLo, null)\n addRightEdges(tess, regUp, eLo.oNext!!, eUp.sym?.oNext, e, true)\n return true\n }\n /**\n * Special case: called from ConnectRightVertex. If either\n * edge passes on the wrong side of tess.event, split it\n * (and wait for ConnectRightVertex to splice it appropriately).\n */\n if (Geom.edgeSign(dstUp, tess.event!!, isect) >= 0) {\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n eUp.org?.s = tess.event!!.s\n eUp.org?.t = tess.event!!.t\n }\n if (Geom.edgeSign(dstLo, tess.event!!, isect) <= 0) {\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n Mesh.glMeshSplitEdge(eLo.sym!!)\n eLo.org?.s = tess.event!!.s\n eLo.org?.t = tess.event!!.t\n }\n /* leave the rest for ConnectRightVertex */\n return false\n }\n\n /**\n * General case -- split both edges, splice into new vertex.\n * When we do the splice operation, the order of the arguments is\n * arbitrary as far as correctness goes. However, when the operation\n * creates a new face, the work done is proportional to the size of\n * the new face. We expect the faces in the processed part of\n * the mesh (ie. eUp.Lface) to be smaller than the faces in the\n * unprocessed original contours (which will be eLo.Sym.Lnext.Lface).\n */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n eUp.org?.s = isect.s\n eUp.org?.t = isect.t\n eUp.org?.pqHandle = tess.pq!!.pqInsert(eUp.org) /* __gl_pqSortInsert */\n getIntersectData(tess, eUp.org!!, orgUp, dstUp, orgLo, dstLo)\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n regionAbove(regUp)?.dirty = regUp.dirty\n return false\n }\n\n /**\n * When the upper or lower edge of any region changes, the region is\n * marked \"dirty\". This routine walks through all the dirty regions\n * and makes sure that the dictionary invariants are satisfied\n * (see the comments at the beginning of this file). Of course\n * new dirty regions can be created as we make changes to restore\n * the invariants.\n */\n fun walkDirtyRegions(tess: GLUtessellatorImpl, regUp: ActiveRegion) {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n while (true) {\n\n /* Find the lowest dirty region (we walk from the bottom up). */\n while (regLo.dirty) {\n regUp = regLo\n regLo = regionBelow(regLo)\n }\n if (!regUp.dirty) {\n regLo = regUp\n regUp = regionAbove(regUp) ?: return\n if (!regUp.dirty) return /* We've walked all the dirty regions */\n }\n regUp.dirty = false\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n if (eUp.sym?.org !== eLo.sym?.org) {\n /* Check that the edge ordering is obeyed at the Dst vertices. */\n if (checkForLeftSplice(regUp)) {\n\n /**\n * If the upper or lower edge was marked fixUpperEdge, then\n * we no longer need it (since these edges are needed only for\n * vertices which otherwise have no right-going edges).\n */\n if (regLo.fixUpperEdge) {\n deleteRegion(regLo)\n if (!Mesh.glMeshDelete(eLo)) throw RuntimeException()\n regLo = regionBelow(regUp)\n eLo = regLo.eUp\n } else if (regUp.fixUpperEdge) {\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n eUp = regUp.eUp\n }\n }\n }\n if (eUp.org !== eLo.org) {\n if (eUp.sym?.org !== eLo.sym?.org && !regUp.fixUpperEdge && !regLo.fixUpperEdge\n && (eUp.sym?.org === tess.event || eLo.sym?.org === tess.event)\n ) {\n /**\n * When all else fails in CheckForIntersect(), it uses tess.event\n * as the intersection location. To make this possible, it requires\n * that tess.event lie between the upper and lower edges, and also\n * that neither of these is marked fixUpperEdge (since in the worst\n * case it might splice one of these edges into tess.event, and\n * violate the invariant that fixable edges are the only right-going\n * edge from their associated vertex).\n */\n if (checkForIntersect(tess, regUp)) {\n /* WalkDirtyRegions() was called recursively; we're done */\n return\n }\n } else {\n /**\n * Even though we can't use CheckForIntersect(), the Org vertices\n * may violate the dictionary edge ordering. Check and correct this.\n */\n checkForRightSplice(tess, regUp)\n }\n }\n if (eUp.org === eLo.org && eUp.sym?.org === eLo.sym?.org) {\n /* A degenerate loop consisting of only two edges -- delete it. */\n addWinding(eLo, eUp)\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n }\n }\n }\n\n /**\n * Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n * to the unprocessed portion of the mesh. Since there are no right-going\n * edges, two regions (one above vEvent and one below) are being merged\n * into one. \"regUp\" is the upper of these two regions.\n *\n * There are two reasons for doing this (adding a right-going edge):\n * - if the two regions being merged are \"inside\", we must add an edge\n * to keep them separated (the combined region would not be monotone).\n * - in any case, we must leave some record of vEvent in the dictionary,\n * so that we can merge vEvent with features that we have not seen yet.\n * For example, maybe there is a vertical edge which passes just to\n * the right of vEvent; we would like to splice vEvent into this edge.\n *\n * However, we don't want to connect vEvent to just any vertex. We don''t\n * want the new edge to cross any other edges; otherwise we will create\n * intersection vertices even when the input data had no self-intersections.\n * (This is a bad thing; if the user's input data has no intersections,\n * we don't want to generate any false intersections ourselves.)\n *\n * Our eventual goal is to connect vEvent to the leftmost unprocessed\n * vertex of the combined region (the union of regUp and regLo).\n * But because of unseen vertices with all right-going edges, and also\n * new vertices which may be created by edge intersections, we don''t\n * know where that leftmost unprocessed vertex is. In the meantime, we\n * connect vEvent to the closest vertex of either chain, and mark the region\n * as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n * to the next processed vertex on the boundary of the combined region.\n * Quite possibly the vertex we connected to will turn out to be the\n * closest one, in which case we won''t need to make any changes.\n */\n fun connectRightVertex(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eBottomLeft: GLUhalfEdge\n ) {\n var regUp = regUp\n var eBottomLeft = eBottomLeft\n var eTopLeft = eBottomLeft.oNext!!\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n var degenerate = false\n if (eUp.sym?.org !== eLo.sym?.org) {\n checkForIntersect(tess, regUp)\n }\n\n /**\n * Possible new degeneracies: upper or lower edge of regUp may pass\n * through vEvent, or may coincide with new intersection vertex\n */\n if (Geom.vertEq(eUp.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eTopLeft.sym?.lNext!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eTopLeft = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n degenerate = true\n }\n if (Geom.vertEq(eLo.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eBottomLeft, eLo.sym?.lNext!!)) throw RuntimeException()\n eBottomLeft = finishLeftRegions(regLo, null)\n degenerate = true\n }\n if (degenerate) {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n return\n }\n\n /**\n * Non-degenerate situation -- need to add a temporary, fixable edge.\n * Connect to the closer of eLo.Org, eUp.Org.\n */\n var eNew = if (Geom.vertLeq(eLo.org!!, eUp.org!!)) eLo.sym?.lNext!! else eUp\n eNew = Mesh.glMeshConnect(eBottomLeft.oNext?.sym!!, eNew)\n\n /**\n * Prevent cleanup, otherwise eNew might disappear before we've even\n * had a chance to mark it as a temporary edge.\n */\n addRightEdges(tess, regUp, eNew, eNew.oNext, eNew.oNext, false)\n eNew.sym?.activeRegion?.fixUpperEdge = true\n walkDirtyRegions(tess, regUp)\n }\n\n /**\n * Because vertices at exactly the same location are merged together\n * before we process the sweep event, some degenerate cases can't occur.\n * However if someone eventually makes the modifications required to\n * merge features which are close together, the cases below marked\n * TOLERANCE_NONZERO will be useful. They were debugged before the\n * code to merge identical vertices in the main loop was added.\n */\n private const val TOLERANCE_NONZERO = false\n /**\n * The event vertex lies exacty on an already-processed edge or vertex.\n * Adding the new vertex involves splicing it into the already-processed\n * part of the mesh.\n */\n fun connectLeftDegenerate(\n tess: GLUtessellatorImpl,\n regUp: ActiveRegion, vEvent: GLUvertex\n ) {\n var regUp = regUp\n val e = regUp.eUp\n if (Geom.vertEq(e.org!!, vEvent)) {\n /**\n * e.Org is an unprocessed vertex - just combine them, and wait\n * for e.Org to be pulled from the queue\n */\n spliceMergeVertices(tess, e, vEvent.anEdge!!)\n return\n }\n if (!Geom.vertEq(e.sym?.org!!, vEvent)) {\n /* General case -- splice vEvent into edge e which passes through it */\n Mesh.glMeshSplitEdge(e.sym!!)\n if (regUp.fixUpperEdge) {\n /* This edge was fixable -- delete unused portion of original edge */\n if (!Mesh.glMeshDelete(e.oNext!!)) throw RuntimeException()\n regUp.fixUpperEdge = false\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, e)) throw RuntimeException()\n sweepEvent(tess, vEvent) /* recurse */\n return\n }\n regUp = topRightRegion(regUp)\n val reg = regionBelow(regUp)\n var eTopRight = reg.eUp.sym!!\n val eLast = eTopRight.oNext\n var eTopLeft = eLast\n if (reg.fixUpperEdge) {\n /**\n * Here e.Sym.Org has only a single fixable edge going right.\n * We can delete it since now we have some real right-going edges.\n */\n deleteRegion(reg)\n if (!Mesh.glMeshDelete(eTopRight)) throw RuntimeException()\n eTopRight = eTopLeft?.sym?.lNext!!\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, eTopRight)) throw RuntimeException()\n if (!Geom.edgeGoesLeft(eTopLeft!!)) {\n /* e.Sym.Org had no left-going edges -- indicate this to AddRightEdges() */\n eTopLeft = null\n }\n addRightEdges(tess, regUp, eTopRight.oNext!!, eLast, eTopLeft, true)\n }\n\n /**\n * Purpose: connect a \"left\" vertex (one where both edges go right)\n * to the processed portion of the mesh. Let R be the active region\n * containing vEvent, and let U and L be the upper and lower edge\n * chains of R. There are two possibilities:\n *\n * - the normal case: split R into two regions, by connecting vEvent to\n * the rightmost vertex of U or L lying to the left of the sweep line\n *\n * - the degenerate case: if vEvent is close enough to U or L, we\n * merge vEvent into that edge chain. The subcases are:\n *\t- merging with the rightmost vertex of U or L\n *\t- merging with the active edge of U or L\n *\t- merging with an already-processed portion of U or L\n */\n fun connectLeftVertex(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n /* Get a pointer to the active region containing vEvent */\n val tmp = ActiveRegion(vEvent.anEdge?.sym!!)\n val regUp = Dict.dictKey(Dict.dictSearch(tess.dict!!, tmp)) as ActiveRegion\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n\n /* Try merging with U or L first */\n if (Geom.edgeSign(eUp.sym?.org!!, vEvent, eUp.org!!) == 0.0) {\n connectLeftDegenerate(tess, regUp, vEvent)\n return\n }\n\n /**\n * Connect vEvent to rightmost processed vertex of either chain.\n * e.Sym.Org is the vertex that we will connect to vEvent.\n */\n val reg = if (Geom.vertLeq(eLo.sym?.org!!, eUp.sym?.org!!)) regUp else regLo\n if (regUp.inside || reg.fixUpperEdge) {\n val eNew = if (reg === regUp) {\n Mesh.glMeshConnect(vEvent.anEdge?.sym!!, eUp.lNext!!)\n } else {\n val tempHalfEdge = Mesh.glMeshConnect(eLo.sym?.oNext?.sym!!, vEvent.anEdge!!)\n tempHalfEdge.sym!!\n }\n if (reg.fixUpperEdge) {\n if (!fixUpperEdge(reg, eNew)) throw RuntimeException()\n } else {\n computeWinding(tess, addRegionBelow(tess, regUp, eNew))\n }\n sweepEvent(tess, vEvent)\n } else {\n /**\n * The new vertex is in a region which does not belong to the polygon.\n * We don''t need to connect this vertex to the rest of the mesh.\n */\n addRightEdges(tess, regUp, vEvent.anEdge!!, vEvent.anEdge, null, true)\n }\n }\n\n /**\n * Does everything necessary when the sweep line crosses a vertex.\n * Updates the mesh and the edge dictionary.\n */\n fun sweepEvent(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n tess.event = vEvent /* for access in EdgeLeq() */\n debugEvent(tess)\n\n /**\n * Check if this vertex is the right endpoint of an edge that is\n * already in the dictionary. In this case we don't need to waste\n * time searching for the location to insert new edges.\n */\n var e = vEvent.anEdge!!\n while (e.activeRegion == null) {\n e = e.oNext!!\n if (e === vEvent.anEdge) {\n /* All edges go right -- not incident to any processed edges */\n connectLeftVertex(tess, vEvent)\n return\n }\n }\n\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n val regUp = topLeftRegion(e.activeRegion!!)!!\n val reg = regionBelow(regUp)\n val eTopLeft = reg.eUp\n val eBottomLeft = finishLeftRegions(reg, null)\n\n /**\n * Next we process all the right-going edges from vEvent. This\n * involves adding the edges to the dictionary, and creating the\n * associated \"active regions\" which record information about the\n * regions between adjacent dictionary edges.\n */\n if (eBottomLeft.oNext === eTopLeft) {\n /* No right-going edges -- add a temporary \"fixable\" edge */\n connectRightVertex(tess, regUp, eBottomLeft)\n } else {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n }\n }\n\n /**\n * Make the sentinel coordinates big enough that they will never be\n * merged with real input features. (Even with the largest possible\n * input contour and the maximum tolerance of 1.0, no merging will be\n * done with coordinates larger than 3 * GLU_TESS_MAX_COORD).\n */\n private const val SENTINEL_COORD = 4.0 * GLU.GLU_TESS_MAX_COORD\n /**\n * We add two sentinel edges above and below all other edges,\n * to avoid special cases at the top and bottom.\n */\n fun addSentinel(tess: GLUtessellatorImpl, t: Double) {\n val e = Mesh.glMeshMakeEdge(tess.mesh!!)\n e.org?.s = SENTINEL_COORD\n e.org?.t = t\n e.sym?.org?.s = -SENTINEL_COORD\n e.sym?.org?.t = t\n tess.event = e.sym?.org /* initialize it */\n val reg = ActiveRegion(e)\n reg.windingNumber = 0\n reg.inside = false\n reg.fixUpperEdge = false\n reg.sentinel = true\n reg.dirty = false\n reg.nodeUp = Dict.dictInsert(tess.dict!!, reg) /* __gl_dictListInsertBefore */\n }\n\n /**\n * We maintain an ordering of edge intersections with the sweep line.\n * This order is maintained in a dynamic dictionary.\n */\n fun initEdgeDict(tess: GLUtessellatorImpl) {\n /* __gl_dictListNewDict */\n tess.dict = Dict.dictNewDict(\n tess,\n object : DictLeq {\n override fun leq(frame: Any, key1: Any?, key2: Any?): Boolean {\n return edgeLeq(\n tess,\n key1 as ActiveRegion,\n key2 as ActiveRegion\n )\n }\n }\n )\n addSentinel(tess, -SENTINEL_COORD)\n addSentinel(tess, SENTINEL_COORD)\n }\n\n fun doneEdgeDict(tess: GLUtessellatorImpl) {\n while (true) {\n val reg = Dict.dictKey(Dict.dictMin(tess.dict!!)) as ActiveRegion? ?: break\n /**\n * At the end of all processing, the dictionary should contain\n * only the two sentinel edges, plus at most one \"fixable\" edge\n * created by ConnectRightVertex().\n */\n deleteRegion(reg)\n /* __gl_meshDelete( reg.eUp )*/\n }\n Dict.dictDeleteDict(tess.dict!!) /* __gl_dictListDeleteDict */\n }\n\n /**\n * Remove zero-length edges, and contours with fewer than 3 vertices.\n */\n fun removeDegenerateEdges(tess: GLUtessellatorImpl) {\n val eHead = tess.mesh?.eHead!!\n\n /*LINTED*/\n var e = eHead.next!!\n while (e !== eHead) {\n var eNext = e.next!!\n var eLnext = e.lNext!!\n if (Geom.vertEq(e.org!!, e.sym?.org!!) && e.lNext?.lNext !== e) {\n /* Zero-length edge, contour has at least 3 edges */\n spliceMergeVertices(tess, eLnext, e) /* deletes e.Org */\n if (!Mesh.glMeshDelete(e)) throw RuntimeException() /* e is a self-loop */\n e = eLnext\n eLnext = e.lNext!!\n }\n if (eLnext.lNext === e) {\n /* Degenerate contour (one or two edges) */\n if (eLnext !== e) {\n if (eLnext === eNext || eLnext === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(eLnext)) throw RuntimeException()\n }\n if (e === eNext || e === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(e)) throw RuntimeException()\n }\n e = eNext\n }\n }\n\n /**\n * Insert all vertices into the priority queue which determines the\n * order in which vertices cross the sweep line.\n */\n fun initPriorityQ(tess: GLUtessellatorImpl): Boolean {\n /* __gl_pqSortNewPriorityQ */\n tess.pq =\n PriorityQ.pqNewPriorityQ()\n val pq = tess.pq!!\n val vHead = tess.mesh?.vHead!!\n var v = vHead.next!!\n while (v !== vHead) {\n v.pqHandle = pq.pqInsert(v) /* __gl_pqSortInsert */\n v = v.next!!\n }\n if (!pq.pqInit()) { /* __gl_pqSortInit */\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n tess.pq = null\n return false\n }\n return true\n }\n\n fun donePriorityQ(tess: GLUtessellatorImpl) {\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n }\n\n /**\n * Delete any degenerate faces with only two edges. WalkDirtyRegions()\n * will catch almost all of these, but it won't catch degenerate faces\n * produced by splice operations on already-processed edges.\n * The two places this can happen are in FinishLeftRegions(), when\n * we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n * and in CheckForLeftSplice(), where we splice already-processed\n * edges to ensure that our dictionary invariants are not violated\n * by numerical errors.\n *\n * In both these cases it is *very* dangerous to delete the offending\n * edge at the time, since one of the routines further up the stack\n * will sometimes be keeping a pointer to that edge.\n */\n fun removeDegenerateFaces(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n val e = f.anEdge!!\n if (e.lNext?.lNext === e) {\n /* A face with only two edges */\n addWinding(e.oNext!!, e)\n if (!Mesh.glMeshDelete(e)) return false\n }\n f = fNext\n }\n return true\n }\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by tess.windingRule.\n * Each interior region is guaranteed be monotone.\n */\n fun glComputeInterior(tess: GLUtessellatorImpl): Boolean {\n tess.fatalError = false\n\n /**\n * Each vertex defines an event for our sweep line. Start by inserting\n * all the vertices in a priority queue. Events are processed in\n * lexicographic order, ie.\n *\n *\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n */\n removeDegenerateEdges(tess)\n if (!initPriorityQ(tess)) return false /* if error */\n initEdgeDict(tess)\n\n /* __gl_pqSortExtractMin */\n while (true) {\n val v = tess.pq?.pqExtractMin() as GLUvertex? ?: break\n while (true) {\n var vNext = tess.pq?.pqMinimum() as GLUvertex? /* __gl_pqSortMinimum */\n if (vNext == null || !Geom.vertEq(vNext, v)) break\n\n /**\n * Merge together all vertices at exactly the same location.\n * This is more efficient than processing them one at a time,\n * simplifies the code (see ConnectLeftDegenerate), and is also\n * important for correct handling of certain degenerate cases.\n * For example, suppose there are two identical edges A and B\n * that belong to different contours (so without this code they would\n * be processed by separate sweep events). Suppose another edge C\n * crosses A and B from above. When A is processed, we split it\n * at its intersection point with C. However this also splits C,\n * so when we insert B we may compute a slightly different\n * intersection point. This might leave two edges with a small\n * gap between them. This kind of error is especially obvious\n * when using boundary extraction (GLU_TESS_BOUNDARY_ONLY).\n */\n vNext = tess.pq?.pqExtractMin() as GLUvertex /* __gl_pqSortExtractMin*/\n spliceMergeVertices(tess, v.anEdge!!, vNext.anEdge!!)\n }\n sweepEvent(tess, v)\n }\n\n /* Set tess.event for debugging purposes */\n /* __GL_DICTLISTKEY */\n /* __GL_DICTLISTMIN */\n tess.event = (Dict.dictKey(\n Dict.dictMin(\n tess.dict!!\n )\n ) as ActiveRegion).eUp.org\n debugEvent(tess)\n doneEdgeDict(tess)\n donePriorityQ(tess)\n if (!removeDegenerateFaces(tess.mesh!!)) return false\n Mesh.glMeshCheckMesh(tess.mesh!!)\n return true\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessMono {\n /**\n * __gl_meshTessellateMonoRegion( face ) tessellates a monotone region\n * (what else would it do??) The region must consist of a single\n * loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n * case means that any vertical line intersects the interior of the\n * region in a single interval.\n *\n * Tessellation consists of adding interior edges (actually pairs of\n * half-edges), to split the region into non-overlapping triangles.\n *\n * The basic idea is explained in Preparata and Shamos (which I don''t\n * have handy right now), although their implementation is more\n * complicated than this one. The are two edge chains, an upper chain\n * and a lower chain. We process all vertices from both chains in order,\n * from right to left.\n *\n * The algorithm ensures that the following invariant holds after each\n * vertex is processed: the untessellated region consists of two\n * chains, where one chain (say the upper) is a single edge, and\n * the other chain is concave. The left vertex of the single edge\n * is always to the left of all vertices in the concave chain.\n *\n * Each step consists of adding the rightmost unprocessed vertex to one\n * of the two chains, and forming a fan of triangles from the rightmost\n * of two chain endpoints. Determining whether we can add each triangle\n * to the fan is a simple orientation test. By making the fan as large\n * as possible, we restore the invariant (check it yourself).\n */\n fun glMeshTessellateMonoRegion(face: GLUface) {\n /**\n * All edges are oriented CCW around the boundary of the region.\n * First, find the half-edge whose origin vertex is rightmost.\n * Since the sweep goes from left to right, face->anEdge should\n * be close to the edge we want.\n */\n var up = face.anEdge!!\n while (Geom.vertLeq(up.sym?.org!!, up.org!!)) {\n up = up.oNext?.sym!!\n }\n while (Geom.vertLeq(up.org!!, up.sym?.org!!)) {\n up = up.lNext!!\n }\n var lo = up.oNext?.sym!!\n while (up.lNext !== lo) {\n if (Geom.vertLeq(up.sym?.org!!, lo.org!!)) {\n /**\n * up.Sym.Org is on the left. It is safe to form triangles from lo.Org.\n * The EdgeGoesLeft test guarantees progress even when some triangles\n * are CW, given that the upper and lower chains are truly monotone.\n */\n while (lo.lNext !== up && (Geom.edgeGoesLeft(lo.lNext!!)\n || Geom.edgeSign(lo.org!!, lo.sym?.org!!, lo.lNext?.sym?.org!!) <= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n lo = lo.oNext?.sym!!\n } else {\n /* lo.Org is on the left. We can make CCW triangles from up.Sym.Org. */\n while (lo.lNext !== up && (Geom.edgeGoesRight(up.oNext?.sym!!)\n || Geom.edgeSign(up.sym?.org!!, up.org!!, up.oNext?.sym?.org!!) >= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(up, up.oNext?.sym!!)\n up = tempHalfEdge.sym!!\n }\n up = up.lNext!!\n }\n }\n while (lo.lNext?.lNext !== up) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n }\n\n /**\n * __gl_meshTessellateInterior( mesh ) tessellates each region of\n * the mesh which is marked \"inside\" the polygon. Each such region\n * must be monotone.\n */\n fun glMeshTessellateInterior(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Make sure we don''t try to tessellate the new triangles. */\n val next = f.next!!\n if (f.inside) {\n glMeshTessellateMonoRegion(f)\n }\n f = next\n }\n return true\n }\n\n /**\n * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n * which are not marked \"inside\" the polygon. Since further mesh operations\n * on NULL faces are not allowed, the main purpose is to clean up the\n * mesh so that exterior loops are not represented in the data structure.\n */\n fun glMeshDiscardExterior(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Since f will be destroyed, save its next pointer. */\n val next = f.next!!\n if (!f.inside) {\n Mesh.glMeshZapFace(f)\n }\n f = next\n }\n }\n\n /**\n * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n * winding numbers on all edges so that regions marked \"inside\" the\n * polygon have a winding number of \"value\", and regions outside\n * have a winding number of 0.\n *\n * If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n * separate an interior region from an exterior one.\n */\n fun glMeshSetWindingNumber(mesh: GLUmesh, value: Int, keepOnlyBoundary: Boolean): Boolean {\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n val eNext = e.next!!\n if (e.sym?.lFace?.inside != e.lFace?.inside) {\n\n /* This is a boundary edge (one side is interior, one is exterior). */\n e.winding = if (e.lFace!!.inside) value else -value\n } else {\n\n /* Both regions are interior, or both are exterior. */\n if (!keepOnlyBoundary) {\n e.winding = 0\n } else {\n if (!Mesh.glMeshDelete(e)) return false\n }\n }\n e = eNext\n }\n return true\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessState {\n const val T_DORMANT = 0\n const val T_IN_POLYGON = 1\n const val T_IN_CONTOUR = 2\n}","package earth.worldwind.util.http\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.*\n\n/**\n * Returns new platform-dependent HTTP client instance configured by default.\n * In case some special configuration will be required on each platform, then make this function \"expected\".\n */\n@Suppress(\"FunctionName\")\nfun DefaultHttpClient(\n connectTimeout: Long = 3000L,\n requestTimeout: Long = 30000L,\n config: HttpClientConfig<*>.() -> Unit = {}\n) = HttpClient {\n config(this)\n\n install(HttpTimeout) {\n connectTimeoutMillis = connectTimeout\n requestTimeoutMillis = requestTimeout\n }\n}\n","package earth.worldwind.util.kgl\n\nexpect class KglShader {\n companion object{ val NONE: KglShader }\n fun isValid(): Boolean\n}\nexpect class KglProgram {\n companion object{ val NONE: KglProgram }\n fun isValid(): Boolean\n}\nexpect class KglUniformLocation {\n companion object{ val NONE: KglUniformLocation }\n fun isValid(): Boolean\n}\nexpect class KglBuffer {\n companion object{ val NONE: KglBuffer }\n fun isValid(): Boolean\n}\nexpect class KglTexture {\n companion object{ val NONE: KglTexture }\n fun isValid(): Boolean\n}\nexpect class KglFramebuffer {\n companion object{ val NONE: KglFramebuffer }\n fun isValid(): Boolean\n}\n\nconst val GL_ACTIVE_TEXTURE = 0x84E0\nconst val GL_DEPTH_BUFFER_BIT = 0x00000100\nconst val GL_STENCIL_BUFFER_BIT = 0x00000400\nconst val GL_COLOR_BUFFER_BIT = 0x00004000\nconst val GL_FALSE = 0\nconst val GL_TRUE = 1\nconst val GL_POINTS = 0x0000\nconst val GL_LINES = 0x0001\nconst val GL_LINE_LOOP = 0x0002\nconst val GL_LINE_STRIP = 0x0003\nconst val GL_TRIANGLES = 0x0004\nconst val GL_TRIANGLE_STRIP = 0x0005\nconst val GL_TRIANGLE_FAN = 0x0006\nconst val GL_ZERO = 0\nconst val GL_ONE = 1\nconst val GL_SRC_COLOR = 0x0300\nconst val GL_ONE_MINUS_SRC_COLOR = 0x0301\nconst val GL_SRC_ALPHA = 0x0302\nconst val GL_ONE_MINUS_SRC_ALPHA = 0x0303\nconst val GL_DST_ALPHA = 0x0304\nconst val GL_ONE_MINUS_DST_ALPHA = 0x0305\nconst val GL_DST_COLOR = 0x0306\nconst val GL_ONE_MINUS_DST_COLOR = 0x0307\nconst val GL_SRC_ALPHA_SATURATE = 0x0308\nconst val GL_FUNC_ADD = 0x8006\nconst val GL_BLEND_EQUATION = 0x8009\nconst val GL_BLEND_EQUATION_RGB = 0x8009\nconst val GL_BLEND_EQUATION_ALPHA = 0x883D\nconst val GL_FUNC_SUBTRACT = 0x800A\nconst val GL_FUNC_REVERSE_SUBTRACT = 0x800B\nconst val GL_BLEND_DST_RGB = 0x80C8\nconst val GL_BLEND_SRC_RGB = 0x80C9\nconst val GL_BLEND_DST_ALPHA = 0x80CA\nconst val GL_BLEND_SRC_ALPHA = 0x80CB\nconst val GL_CONSTANT_COLOR = 0x8001\nconst val GL_ONE_MINUS_CONSTANT_COLOR = 0x8002\nconst val GL_CONSTANT_ALPHA = 0x8003\nconst val GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004\nconst val GL_BLEND_COLOR = 0x8005\nconst val GL_ARRAY_BUFFER = 0x8892\nconst val GL_ELEMENT_ARRAY_BUFFER = 0x8893\nconst val GL_ARRAY_BUFFER_BINDING = 0x8894\nconst val GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895\nconst val GL_STREAM_DRAW = 0x88E0\nconst val GL_STATIC_DRAW = 0x88E4\nconst val GL_DYNAMIC_DRAW = 0x88E8\nconst val GL_BUFFER_SIZE = 0x8764\nconst val GL_BUFFER_USAGE = 0x8765\nconst val GL_CURRENT_VERTEX_ATTRIB = 0x8626\nconst val GL_FRONT = 0x0404\nconst val GL_BACK = 0x0405\nconst val GL_FRONT_AND_BACK = 0x0408\nconst val GL_TEXTURE_2D = 0x0DE1\nconst val GL_CULL_FACE = 0x0B44\nconst val GL_BLEND = 0x0BE2\nconst val GL_DITHER = 0x0BD0\nconst val GL_STENCIL_TEST = 0x0B90\nconst val GL_DEPTH_TEST = 0x0B71\nconst val GL_SCISSOR_TEST = 0x0C11\nconst val GL_POLYGON_OFFSET_FILL = 0x8037\nconst val GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nconst val GL_SAMPLE_COVERAGE = 0x80A0\nconst val GL_NO_ERROR = 0\nconst val GL_INVALID_ENUM = 0x0500\nconst val GL_INVALID_VALUE = 0x0501\nconst val GL_INVALID_OPERATION = 0x0502\nconst val GL_OUT_OF_MEMORY = 0x0505\nconst val GL_INVALID_FRAMEBUFFER_OPERATION = 0x506\nconst val GL_CW = 0x0900\nconst val GL_CCW = 0x0901\nconst val GL_LINE_WIDTH = 0x0B21\nconst val GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nconst val GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\nconst val GL_CULL_FACE_MODE = 0x0B45\nconst val GL_FRONT_FACE = 0x0B46\nconst val GL_DEPTH_RANGE = 0x0B70\nconst val GL_DEPTH_WRITEMASK = 0x0B72\nconst val GL_DEPTH_CLEAR_VALUE = 0x0B73\nconst val GL_DEPTH_FUNC = 0x0B74\nconst val GL_STENCIL_CLEAR_VALUE = 0x0B91\nconst val GL_STENCIL_FUNC = 0x0B92\nconst val GL_STENCIL_FAIL = 0x0B94\nconst val GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95\nconst val GL_STENCIL_PASS_DEPTH_PASS = 0x0B96\nconst val GL_STENCIL_REF = 0x0B97\nconst val GL_STENCIL_VALUE_MASK = 0x0B93\nconst val GL_STENCIL_WRITEMASK = 0x0B98\nconst val GL_STENCIL_BACK_FUNC = 0x8800\nconst val GL_STENCIL_BACK_FAIL = 0x8801\nconst val GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802\nconst val GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803\nconst val GL_STENCIL_BACK_REF = 0x8CA3\nconst val GL_STENCIL_BACK_VALUE_MASK = 0x8CA4\nconst val GL_STENCIL_BACK_WRITEMASK = 0x8CA5\nconst val GL_VIEWPORT = 0x0BA2\nconst val GL_SCISSOR_BOX = 0x0C10\nconst val GL_COLOR_CLEAR_VALUE = 0x0C22\nconst val GL_COLOR_WRITEMASK = 0x0C23\nconst val GL_UNPACK_ALIGNMENT = 0x0CF5\nconst val GL_PACK_ALIGNMENT = 0x0D05\nconst val GL_MAX_TEXTURE_SIZE = 0x0D33\nconst val GL_MAX_VIEWPORT_DIMS = 0x0D3A\nconst val GL_SUBPIXEL_BITS = 0x0D50\nconst val GL_RED_BITS = 0x0D52\nconst val GL_GREEN_BITS = 0x0D53\nconst val GL_BLUE_BITS = 0x0D54\nconst val GL_ALPHA_BITS = 0x0D55\nconst val GL_DEPTH_BITS = 0x0D56\nconst val GL_STENCIL_BITS = 0x0D57\nconst val GL_POLYGON_OFFSET_UNITS = 0x2A00\nconst val GL_POLYGON_OFFSET_FACTOR = 0x8038\nconst val GL_TEXTURE_BINDING_2D = 0x8069\nconst val GL_SAMPLE_BUFFERS = 0x80A8\nconst val GL_SAMPLES = 0x80A9\nconst val GL_SAMPLE_COVERAGE_VALUE = 0x80AA\nconst val GL_SAMPLE_COVERAGE_INVERT = 0x80AB\nconst val GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2\nconst val GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\nconst val GL_DONT_CARE = 0x1100\nconst val GL_FASTEST = 0x1101\nconst val GL_NICEST = 0x1102\nconst val GL_GENERATE_MIPMAP_HINT = 0x8192\nconst val GL_BYTE = 0x1400\nconst val GL_UNSIGNED_BYTE = 0x1401\nconst val GL_SHORT = 0x1402\nconst val GL_UNSIGNED_SHORT = 0x1403\nconst val GL_INT = 0x1404\nconst val GL_UNSIGNED_INT = 0x1405\nconst val GL_FLOAT = 0x1406\nconst val GL_FIXED = 0x140C\nconst val GL_STENCIL_INDEX = 0x1901\nconst val GL_DEPTH_COMPONENT = 0x1902\nconst val GL_RED = 0x1903\nconst val GL_GREEN = 0x1904\nconst val GL_BLUE = 0x1905\nconst val GL_ALPHA = 0x1906\nconst val GL_RGB = 0x1907\nconst val GL_RGBA = 0x1908\nconst val GL_LUMINANCE = 0x1909\nconst val GL_LUMINANCE_ALPHA = 0x190A\nconst val GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nconst val GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nconst val GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nconst val GL_FRAGMENT_SHADER = 0x8B30\nconst val GL_VERTEX_SHADER = 0x8B31\nconst val GL_MAX_VERTEX_ATTRIBS = 0x8869\nconst val GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nconst val GL_MAX_VARYING_VECTORS = 0x8DFC\nconst val GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nconst val GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nconst val GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nconst val GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nconst val GL_SHADER_TYPE = 0x8B4F\nconst val GL_DELETE_STATUS = 0x8B80\nconst val GL_LINK_STATUS = 0x8B82\nconst val GL_VALIDATE_STATUS = 0x8B83\nconst val GL_ATTACHED_SHADERS = 0x8B85\nconst val GL_ACTIVE_UNIFORMS = 0x8B86\nconst val GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87\nconst val GL_ACTIVE_ATTRIBUTES = 0x8B89\nconst val GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A\nconst val GL_SHADING_LANGUAGE_VERSION = 0x8B8C\nconst val GL_CURRENT_PROGRAM = 0x8B8D\nconst val GL_NEVER = 0x0200\nconst val GL_LESS = 0x0201\nconst val GL_EQUAL = 0x0202\nconst val GL_LEQUAL = 0x0203\nconst val GL_GREATER = 0x0204\nconst val GL_NOTEQUAL = 0x0205\nconst val GL_GEQUAL = 0x0206\nconst val GL_ALWAYS = 0x0207\nconst val GL_KEEP = 0x1E00\nconst val GL_REPLACE = 0x1E01\nconst val GL_INCR = 0x1E02\nconst val GL_DECR = 0x1E03\nconst val GL_INVERT = 0x150A\nconst val GL_INCR_WRAP = 0x8507\nconst val GL_DECR_WRAP = 0x8508\nconst val GL_VENDOR = 0x1F00\nconst val GL_RENDERER = 0x1F01\nconst val GL_VERSION = 0x1F02\nconst val GL_EXTENSIONS = 0x1F03\nconst val GL_NEAREST = 0x2600\nconst val GL_LINEAR = 0x2601\nconst val GL_NEAREST_MIPMAP_NEAREST = 0x2700\nconst val GL_LINEAR_MIPMAP_NEAREST = 0x2701\nconst val GL_NEAREST_MIPMAP_LINEAR = 0x2702\nconst val GL_LINEAR_MIPMAP_LINEAR = 0x2703\nconst val GL_TEXTURE_MAG_FILTER = 0x2800\nconst val GL_TEXTURE_MIN_FILTER = 0x2801\nconst val GL_TEXTURE_WRAP_S = 0x2802\nconst val GL_TEXTURE_WRAP_T = 0x2803\nconst val GL_TEXTURE = 0x1702\nconst val GL_TEXTURE_CUBE_MAP = 0x8513\nconst val GL_TEXTURE_BINDING_CUBE_MAP = 0x8514\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A\nconst val GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nconst val GL_TEXTURE0 = 0x84C0\nconst val GL_TEXTURE1 = 0x84C1\nconst val GL_TEXTURE2 = 0x84C2\nconst val GL_TEXTURE3 = 0x84C3\nconst val GL_TEXTURE4 = 0x84C4\nconst val GL_TEXTURE5 = 0x84C5\nconst val GL_TEXTURE6 = 0x84C6\nconst val GL_TEXTURE7 = 0x84C7\nconst val GL_TEXTURE8 = 0x84C8\nconst val GL_TEXTURE9 = 0x84C9\nconst val GL_TEXTURE10 = 0x84CA\nconst val GL_TEXTURE11 = 0x84CB\nconst val GL_TEXTURE12 = 0x84CC\nconst val GL_TEXTURE13 = 0x84CD\nconst val GL_TEXTURE14 = 0x84CE\nconst val GL_TEXTURE15 = 0x84CF\nconst val GL_TEXTURE16 = 0x84D0\nconst val GL_TEXTURE17 = 0x84D1\nconst val GL_TEXTURE18 = 0x84D2\nconst val GL_TEXTURE19 = 0x84D3\nconst val GL_TEXTURE20 = 0x84D4\nconst val GL_TEXTURE21 = 0x84D5\nconst val GL_TEXTURE22 = 0x84D6\nconst val GL_TEXTURE23 = 0x84D7\nconst val GL_TEXTURE24 = 0x84D8\nconst val GL_TEXTURE25 = 0x84D9\nconst val GL_TEXTURE26 = 0x84DA\nconst val GL_TEXTURE27 = 0x84DB\nconst val GL_TEXTURE28 = 0x84DC\nconst val GL_TEXTURE29 = 0x84DD\nconst val GL_TEXTURE30 = 0x84DE\nconst val GL_TEXTURE31 = 0x84DF\nconst val GL_REPEAT = 0x2901\nconst val GL_CLAMP_TO_EDGE = 0x812F\nconst val GL_MIRRORED_REPEAT = 0x8370\nconst val GL_FLOAT_VEC2 = 0x8B50\nconst val GL_FLOAT_VEC3 = 0x8B51\nconst val GL_FLOAT_VEC4 = 0x8B52\nconst val GL_INT_VEC2 = 0x8B53\nconst val GL_INT_VEC3 = 0x8B54\nconst val GL_INT_VEC4 = 0x8B55\nconst val GL_BOOL = 0x8B56\nconst val GL_BOOL_VEC2 = 0x8B57\nconst val GL_BOOL_VEC3 = 0x8B58\nconst val GL_BOOL_VEC4 = 0x8B59\nconst val GL_FLOAT_MAT2 = 0x8B5A\nconst val GL_FLOAT_MAT3 = 0x8B5B\nconst val GL_FLOAT_MAT4 = 0x8B5C\nconst val GL_SAMPLER_2D = 0x8B5E\nconst val GL_SAMPLER_CUBE = 0x8B60\nconst val GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622\nconst val GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623\nconst val GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624\nconst val GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625\nconst val GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A\nconst val GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645\nconst val GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F\nconst val GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A\nconst val GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B\nconst val GL_COMPILE_STATUS = 0x8B81\nconst val GL_INFO_LOG_LENGTH = 0x8B84\nconst val GL_SHADER_SOURCE_LENGTH = 0x8B88\nconst val GL_SHADER_COMPILER = 0x8DFA\nconst val GL_SHADER_BINARY_FORMATS = 0x8DF8\nconst val GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9\nconst val GL_LOW_FLOAT = 0x8DF0\nconst val GL_MEDIUM_FLOAT = 0x8DF1\nconst val GL_HIGH_FLOAT = 0x8DF2\nconst val GL_LOW_INT = 0x8DF3\nconst val GL_MEDIUM_INT = 0x8DF4\nconst val GL_HIGH_INT = 0x8DF5\nconst val GL_FRAMEBUFFER = 0x8D40\nconst val GL_RENDERBUFFER = 0x8D41\nconst val GL_RGBA4 = 0x8056\nconst val GL_RGBA8 = 0x8058\nconst val GL_BGR = 0x80e0\nconst val GL_BGRA = 0x80e1\nconst val GL_RGB5_A1 = 0x8057\nconst val GL_RGB565 = 0x8D62\nconst val GL_DEPTH_COMPONENT16 = 0x81A5\nconst val GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nconst val GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nconst val GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nconst val GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB\nconst val GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC\nconst val GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\nconst val GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56\nconst val GL_FRAMEBUFFER_UNDEFINED = 0x8219\nconst val GL_COLOR_ATTACHMENT0 = 0x8CE0\nconst val GL_COLOR_ATTACHMENT1 = 0x8CE1\nconst val GL_COLOR_ATTACHMENT2 = 0x8CE2\nconst val GL_COLOR_ATTACHMENT3 = 0x8CE3\nconst val GL_COLOR_ATTACHMENT4 = 0x8CE4\nconst val GL_COLOR_ATTACHMENT5 = 0x8CE5\nconst val GL_COLOR_ATTACHMENT6 = 0x8CE6\nconst val GL_COLOR_ATTACHMENT7 = 0x8CE7\nconst val GL_COLOR_ATTACHMENT8 = 0x8CE8\nconst val GL_COLOR_ATTACHMENT9 = 0x8CE9\nconst val GL_COLOR_ATTACHMENT10 = 0x8CEA\nconst val GL_COLOR_ATTACHMENT11 = 0x8CEB\nconst val GL_COLOR_ATTACHMENT12 = 0x8CEC\nconst val GL_COLOR_ATTACHMENT13 = 0x8CED\nconst val GL_COLOR_ATTACHMENT14 = 0x8CEE\nconst val GL_COLOR_ATTACHMENT15 = 0x8CEF\nconst val GL_COLOR_ATTACHMENT16 = 0x8CF0\nconst val GL_COLOR_ATTACHMENT17 = 0x8CF1\nconst val GL_COLOR_ATTACHMENT18 = 0x8CF2\nconst val GL_COLOR_ATTACHMENT19 = 0x8CF3\nconst val GL_COLOR_ATTACHMENT20 = 0x8CF4\nconst val GL_COLOR_ATTACHMENT21 = 0x8CF5\nconst val GL_COLOR_ATTACHMENT22 = 0x8CF6\nconst val GL_COLOR_ATTACHMENT23 = 0x8CF7\nconst val GL_COLOR_ATTACHMENT24 = 0x8CF8\nconst val GL_COLOR_ATTACHMENT25 = 0x8CF9\nconst val GL_COLOR_ATTACHMENT26 = 0x8CFA\nconst val GL_COLOR_ATTACHMENT27 = 0x8CFB\nconst val GL_COLOR_ATTACHMENT28 = 0x8CFC\nconst val GL_COLOR_ATTACHMENT29 = 0x8CFD\nconst val GL_COLOR_ATTACHMENT30 = 0x8CFE\nconst val GL_COLOR_ATTACHMENT31 = 0x8CFF\nconst val GL_DEPTH_ATTACHMENT = 0x8D00\nconst val GL_STENCIL_ATTACHMENT = 0x8D20\nconst val GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\nconst val GL_R8 = 0x8229\nconst val GL_R16 = 0x822A\nconst val GL_RG8 = 0x822B\nconst val GL_RG16 = 0x822C\nconst val GL_R16F = 0x822D\nconst val GL_R32F = 0x822E\nconst val GL_RG16F = 0x822F\nconst val GL_RG32F = 0x8230\nconst val GL_R8I = 0x8231\nconst val GL_R8UI = 0x8232\nconst val GL_R16I = 0x8233\nconst val GL_R16UI = 0x8234\nconst val GL_R32I = 0x8235\nconst val GL_R32UI = 0x8236\nconst val GL_RG8I = 0x8237\nconst val GL_RG8UI = 0x8238\nconst val GL_RG16I = 0x8239\nconst val GL_RG16UI = 0x823A\nconst val GL_RG32I = 0x823B\nconst val GL_RG32UI = 0x823C\nconst val GL_RG = 0x8227\nconst val GL_COMPRESSED_RED = 0x8225\nconst val GL_COMPRESSED_RG = 0x8226\n\ninterface Kgl {\n abstract val hasMaliOOMBug: Boolean\n \n fun createShader(type: Int): KglShader\n fun shaderSource(shader: KglShader, source: String)\n fun compileShader(shader: KglShader)\n fun deleteShader(shader: KglShader)\n\n fun getShaderParameteri(shader: KglShader, pname: Int): Int\n\n fun getProgramInfoLog(program: KglProgram) : String\n fun getShaderInfoLog(shader: KglShader) : String\n\n fun createProgram(): KglProgram\n fun attachShader(program: KglProgram, shader: KglShader)\n fun linkProgram(program: KglProgram)\n fun useProgram(program: KglProgram)\n fun deleteProgram(program: KglProgram)\n\n fun getProgramParameteri(program: KglProgram, pname: Int): Int\n\n fun getUniformLocation(program: KglProgram, name: String): KglUniformLocation\n fun bindAttribLocation(program: KglProgram, index: Int, name: String)\n\n fun enable(cap: Int)\n fun disable(cap: Int)\n\n fun enableVertexAttribArray(location: Int)\n fun disableVertexAttribArray(location: Int)\n\n fun getParameteri(pname: Int): Int\n fun getParameterf(pname: Int): Float\n fun getParameteriv(pname: Int): IntArray\n fun getParameterfv(pname: Int): FloatArray\n\n fun createBuffer(): KglBuffer\n fun bindBuffer(target: Int, buffer: KglBuffer)\n fun bufferData(target: Int, size: Int, sourceData: ShortArray, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: IntArray, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: FloatArray, usage: Int, offset: Int = 0)\n fun deleteBuffer(buffer: KglBuffer)\n\n fun vertexAttribPointer(location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n\n fun uniform1f(location: KglUniformLocation, f: Float)\n fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform1i(location: KglUniformLocation, i: Int)\n\n fun uniform2f(location: KglUniformLocation, x: Float, y: Float)\n fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform2i(location: KglUniformLocation, x: Int, y: Int)\n\n fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float)\n fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int)\n\n fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int)\n\n fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n\n fun cullFace(mode: Int)\n fun frontFace (mode: Int)\n\n fun polygonOffset(factor: Float, units: Float)\n\n fun depthFunc(func: Int)\n fun depthMask(mask: Boolean)\n\n fun blendFunc(sFactor: Int, dFactor: Int)\n\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n fun clearColor(r: Float, g: Float, b: Float, a: Float)\n fun clear(mask: Int)\n\n fun createTexture(): KglTexture\n fun deleteTexture(texture: KglTexture)\n fun texImage2D(target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?)\n fun activeTexture(texture: Int)\n fun bindTexture(target: Int, texture: KglTexture)\n fun generateMipmap(target: Int)\n fun texParameteri(target: Int, pname: Int, value: Int)\n\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n\n fun getError(): Int\n fun finish()\n\n fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer)\n fun createFramebuffer(): KglFramebuffer\n fun deleteFramebuffer(framebuffer: KglFramebuffer)\n fun checkFramebufferStatus(target: Int): Int\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int)\n\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray)\n fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean)\n fun lineWidth(width: Float)\n fun pixelStorei(pname: Int, param: Int)\n}\n","package earth.worldwind.util.math\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Viewport\nimport kotlin.math.*\n\n/**\n * Restricts a value to the range [min, max] degrees, clamping values outside the range. Values less than min are\n * returned as min, and values greater than max are returned as max. Values within the range are returned\n * unmodified.\n *
\n * The result of this method is undefined if min is greater than max.\n *\n * @param value the values to clamp\n * @param min the minimum value\n * @param max the maximum value\n *\n * @return the specified values clamped to the range [min, max] degrees\n */\nfun clamp(value: Double, min: Double, max: Double) = value.coerceIn(min, max)\n\n/**\n * Returns the fractional part of a specified number\n *\n * @param value the number whose fractional part to compute\n *\n * @return The fractional part of the specified number: value - floor(value)\n */\nfun fract(value: Double) = value - floor(value)\n\n/**\n * Computes the linear interpolation of two values according to a specified fractional amount. The fractional amount\n * is interpreted as a relative proportion of the two values, where 0.0 indicates the first value, 0.5 indicates a\n * 50/50 mix of the two values, and 1.0 indicates the second value.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two values in the range [0, 1]\n * @param value1 the first value\n * @param value2 the second value\n *\n * @return the interpolated value\n */\nfun interpolate(amount: Double, value1: Double, value2: Double) = (1 - amount) * value1 + amount * value2\n\n/**\n * Returns the integer modulus of a specified number. This differs from the % operator in that the result is\n * always positive when the modulus is positive. For example -1 % 10 = -1, whereas mod(-1, 10) = 1.\n *\n * @param value the integer number whose modulus to compute\n * @param modulus the modulus\n *\n * @return the remainder after dividing the number by the modulus\n */\nfun mod(value: Int, modulus: Int) = (value % modulus + modulus) % modulus\n\n/**\n * Computes the bounding rectangle for a unit square after applying a transformation matrix to the square's four\n * corners.\n *\n * @param unitSquareTransform the matrix to apply to the unit square\n * @param result a pre-allocated Viewport in which to return the computed bounding rectangle\n *\n * @return the result argument set to the computed bounding rectangle\n */\nfun boundingRectForUnitSquare(unitSquareTransform: Matrix4, result: Viewport): Viewport {\n val m = unitSquareTransform.m\n\n // transform of (0, 0)\n val x1 = m[3]\n val y1 = m[7]\n\n // transform of (1, 0)\n val x2 = m[0] + m[3]\n val y2 = m[4] + m[7]\n\n // transform of (0, 1)\n val x3 = m[1] + m[3]\n val y3 = m[5] + m[7]\n\n // transform of (1, 1)\n val x4 = m[0] + m[1] + m[3]\n val y4 = m[4] + m[5] + m[7]\n val minX = min(min(x1, x2), min(x3, x4)).toInt()\n val maxX = max(max(x1, x2), max(x3, x4)).toInt()\n val minY = min(min(y1, y2), min(y3, y4)).toInt()\n val maxY = max(max(y1, y2), max(y3, y4)).toInt()\n return result.set(minX, minY, maxX - minX, maxY - minY)\n}\n\n/**\n * Indicates whether a specified value is a power of two.\n *\n * @param value the value to test\n *\n * @return true if the specified value is a power of two, false othwerwise\n */\nfun isPowerOfTwo(value: Int) = value != 0 && value and value - 1 == 0\n\n/**\n * Returns the value that is the nearest power of 2 greater than or equal to the given value.\n *\n * @param value the reference value. The power of 2 returned is greater than or equal to this value.\n *\n * @return the value that is the nearest power of 2 greater than or equal to the reference value\n */\nfun powerOfTwoCeiling(value: Int): Int {\n val pow = ceil(ln(value.toDouble()) / ln(2.0)).toInt()\n return 1 shl pow\n}","package earth.worldwind\n\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.*\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.WheelEvent\nimport kotlin.math.cos\nimport kotlin.math.max\nimport kotlin.math.sin\n\n/**\n * This class provides the default window controller for WorldWind for controlling the globe via user interaction.\n */\nopen class BasicWorldWindowController(wwd: WorldWindow): WorldWindowController(wwd) {\n val primaryDragRecognizer = DragRecognizer(wwd.canvas).also { it.addListener(this) }\n val secondaryDragRecognizer = DragRecognizer(wwd.canvas).also {\n it.addListener(this)\n it.button = 2 // secondary mouse button\n }\n val panRecognizer = PanRecognizer(wwd.canvas).also { it.addListener(this) }\n val pinchRecognizer = PinchRecognizer(wwd.canvas).also { it.addListener(this) }\n val rotationRecognizer = RotationRecognizer(wwd.canvas).also { it.addListener(this) }\n val tiltRecognizer = TiltRecognizer(wwd.canvas).also { it.addListener(this) }\n// val tapRecognizer = TapRecognizer(wwd.canvas).also { it.addListener(this) }\n// val clickRecognizer = ClickRecognizer(wwd.canvas).also { it.addListener(this) }\n /**\n * A copy of the viewing parameters at the start of a gesture as a look at view.\n */\n protected val beginLookAt = LookAt()\n /**\n * The current state of the viewing parameters during a gesture as a look at view.\n */\n protected val lookAt = LookAt()\n protected val beginPoint = Vec2()\n protected val lastPoint = Vec2()\n protected var lastRotation = 0.0\n protected var lastWheelEvent = 0\n protected var activeGestures = 0\n\n init {\n // Establish the dependencies between gesture recognizers. The pan, pinch and rotate gesture may recognize\n // simultaneously with each other.\n panRecognizer.recognizeSimultaneouslyWith(pinchRecognizer)\n panRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n pinchRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n\n // Since the tilt gesture is a subset of the pan gesture, pan will typically recognize before tilt,\n // effectively suppressing tilt. Establish a dependency between the other touch gestures and tilt to provide\n // tilt an opportunity to recognize.\n panRecognizer.requireRecognizerToFail(tiltRecognizer)\n pinchRecognizer.requireRecognizerToFail(tiltRecognizer)\n rotationRecognizer.requireRecognizerToFail(tiltRecognizer)\n }\n\n override fun handleEvent(event: Event) {\n super.handleEvent(event)\n if (!event.defaultPrevented) {\n if (event.type == \"wheel\") {\n event.preventDefault()\n handleWheelEvent(event as WheelEvent)\n } else GestureRecognizer.allRecognizers.forEach { r -> if (r.target == wwd.canvas) r.handleEvent(event) }\n }\n }\n\n override fun gestureStateChanged(recognizer: GestureRecognizer) {\n when(recognizer) {\n primaryDragRecognizer, panRecognizer -> handlePanOrDrag(recognizer)\n secondaryDragRecognizer -> handleSecondaryDrag(recognizer)\n pinchRecognizer -> handlePinch(recognizer as PinchRecognizer)\n rotationRecognizer -> handleRotation(recognizer as RotationRecognizer)\n tiltRecognizer -> handleTilt(recognizer)\n// clickRecognizer, tapRecognizer -> handleClickOrTap(recognizer)\n }\n }\n\n// protected open fun handleClickOrTap(recognizer: GestureRecognizer) {\n// if (recognizer.state == RECOGNIZED) {\n// val pickPoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n//\n// // Identify if the top picked object contains a URL for hyperlinking\n// val pickList = wwd.pick(pickPoint)\n// val userObject = pickList.topPickedObject?.userObject\n// // If the url object was appended, open the hyperlink\n// if (userObject is Renderable && userObject.hasUserProperty(\"url\")) {\n// window.open(userObject.getUserProperty(\"url\") as String, \"_blank\")\n// }\n// }\n// }\n\n protected open fun handlePanOrDrag(recognizer: GestureRecognizer) {\n if (wwd.engine.globe.is2D) handlePanOrDrag2D(recognizer) else handlePanOrDrag3D(recognizer)\n }\n\n protected open fun handlePanOrDrag3D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastPoint.set(0.0, 0.0)\n }\n CHANGED -> {\n // Convert the translation from screen coordinates to arc degrees. Use the view's range as a\n // metric for converting screen pixels to meters, and use the globe's radius for converting from meters\n // to arc degrees. Transform viewport pixel size to canvas client pixel size.\n val globe = wwd.engine.globe\n val globeRadius = max(globe.equatorialRadius, globe.polarRadius)\n val distance = max(1.0, lookAt.range)\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(distance) * wwd.engine.densityFactor\n val forwardMeters = (ty - lastPoint.y) * metersPerPixel\n val sideMeters = -(tx - lastPoint.x) * metersPerPixel\n val forwardRadians = forwardMeters / globeRadius\n val sideRadians = sideMeters / globeRadius\n\n // Apply the change in latitude and longitude to the view, relative to the current heading.\n val sinHeading = sin(lookAt.heading.inRadians)\n val cosHeading = cos(lookAt.heading.inRadians)\n lookAt.position.apply {\n latitude = latitude.plusRadians(forwardRadians * cosHeading - sideRadians * sinHeading)\n longitude = longitude.plusRadians(forwardRadians * sinHeading + sideRadians * cosHeading)\n }\n lastPoint.set(tx, ty)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePanOrDrag2D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val x = recognizer.clientX.toDouble()\n val y = recognizer.clientY.toDouble()\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n beginPoint.set(x, y)\n lastPoint.set(x, y)\n }\n CHANGED -> {\n val x1 = lastPoint.x\n val y1 = lastPoint.y\n val x2 = beginPoint.x + tx\n val y2 = beginPoint.y + ty\n lastPoint.set(x2, y2)\n // Transform the original view's modelview matrix to account for the gesture's change.\n wwd.engine.moveLookAt(lookAt, wwd.canvasCoordinates(x1, y1), wwd.canvasCoordinates(x2, y2))\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleSecondaryDrag(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the current translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the gesture translation to a fraction of an angle.\n val headingDegrees = 180.0 * tx / wwd.canvas.clientWidth\n val tiltDegrees = 90.0 * ty / wwd.canvas.clientHeight\n\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.heading = beginLookAt.heading.plusDegrees(headingDegrees)\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePinch(recognizer: PinchRecognizer) {\n val state = recognizer.state\n val scale = recognizer.scaleWithOffset\n\n when(state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> if (scale != 0.0) {\n // Apply the change in pinch scale to this view's range, relative to the range when the gesture began.\n lookAt.range = beginLookAt.range / scale\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleRotation(recognizer: RotationRecognizer) {\n val state = recognizer.state\n val rotation = recognizer.rotationWithOffset\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastRotation = 0.0\n }\n CHANGED -> {\n // Apply the change in gesture rotation to this view's current heading. We apply relative to the\n // current heading rather than the heading when the gesture began in order to work simultaneously with\n // pan operations that also modify the current heading.\n lookAt.heading = lookAt.heading.minusDegrees(rotation - lastRotation)\n lastRotation = rotation\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleTilt(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the gesture translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the translation to a fraction of an angle.\n val tiltDegrees = -90.0 * ty / wwd.canvas.clientHeight\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleWheelEvent(event: WheelEvent) {\n val timeStamp = event.timeStamp.toInt()\n if (timeStamp - lastWheelEvent > 500) {\n wwd.engine.cameraAsLookAt(lookAt)\n lastWheelEvent = timeStamp\n }\n\n // Normalize the wheel delta based on the wheel delta mode. This produces a roughly consistent delta across\n // browsers and input devices.\n val normalizedDelta = when(event.deltaMode) {\n WheelEvent.DOM_DELTA_PIXEL -> event.deltaY\n WheelEvent.DOM_DELTA_LINE -> event.deltaY * 20.0\n WheelEvent.DOM_DELTA_PAGE -> event.deltaY * 200.0\n else -> event.deltaY\n }\n\n // Compute a zoom scale factor by adding a fraction of the normalized delta to 1. When multiplied by the\n // view's range, this has the effect of zooming out or zooming in depending on whether the delta is\n // positive or negative, respectfully.\n val scale = 1.0 + (normalizedDelta / 1000.0)\n\n // Apply the scale to this view's properties.\n lookAt.range *= scale\n applyChanges()\n }\n\n protected open fun applyChanges() {\n // Update camera view\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n protected open fun gestureDidBegin() {\n if (activeGestures++ == 0) {\n wwd.engine.cameraAsLookAt(beginLookAt)\n lookAt.copy(beginLookAt)\n }\n }\n\n protected open fun gestureDidEnd() {\n // this should always be the case, but we check anyway\n if (activeGestures > 0) activeGestures--\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.LookAt\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.KeyboardEvent\n\n/**\n * The KeyboardControls module provides keyboard controls for the globe.\n * Note: the canvas must be focusable this can be accomplished by establishing the \"tabindex\"\n * on the canvas element.\n */\nopen class KeyboardControls(\n /**\n * The WorldWindow associated with these controls.\n */\n protected val wwd: WorldWindow\n) {\n /**\n * Enable/disable keyboard events processing\n */\n var isEnabled = true\n /**\n * The incremental amount to increase or decrease the eye distance (for zoom) each cycle.\n */\n var zoomIncrement = 0.01f\n /**\n * The scale factor governing the pan speed. Increased values cause faster panning.\n */\n var panIncrement = 0.0000000005f\n /**\n * The incremental amount to increase or decrease the tilt (in degrees) each cycle.\n */\n var tiltIncrement = 0.5\n /**\n * The current state of the viewing parameters during an operation as a look at view.\n */\n protected val lookAt = LookAt()\n /**\n * Is key down?\n */\n protected var isKeyDown = false\n /**\n * Controls the globe with the keyboard.\n */\n protected val handleKeyDown = EventListener { event ->\n if (!isEnabled || event !is KeyboardEvent) return@EventListener\n\n isKeyDown = true\n wwd.engine.cameraAsLookAt(lookAt)\n\n // TODO: find a way to make this code portable for different keyboard layouts\n when (event.keyCode) {\n 187, 61 -> { // + key || +/= key\n handleZoom(\"zoomIn\")\n event.preventDefault()\n }\n 189, 173 -> { // - key || _/- key\n handleZoom(\"zoomOut\")\n event.preventDefault()\n }\n 33 -> { // Page Up\n handleTilt(\"tiltUp\")\n event.preventDefault()\n }\n 34 -> { // Page down\n handleTilt(\"tiltDown\")\n event.preventDefault()\n }\n 37 -> { // Left arrow\n handlePan(\"panLeft\")\n event.preventDefault()\n }\n 38 -> { // Up arrow\n handlePan(\"panUp\")\n event.preventDefault()\n }\n 39 -> { // Right arrow\n handlePan(\"panRight\")\n event.preventDefault()\n }\n 40 -> { // Down arrow\n handlePan(\"panDown\")\n event.preventDefault()\n }\n 78 -> { // N key\n resetHeading()\n event.preventDefault()\n }\n 82 -> { // R key\n resetHeadingAndTilt()\n event.preventDefault()\n }\n }\n }\n /**\n * On keyboard event finished.\n */\n protected val handleKeyUp = EventListener { event->\n if (isKeyDown) {\n isKeyDown = false\n event.preventDefault()\n }\n }\n\n init {\n // The tabIndex must be set for the keyboard controls to work\n val tabIndex = wwd.canvas.tabIndex\n if (tabIndex < 0) wwd.canvas.tabIndex = 0\n // Add keyboard listeners\n wwd.addEventListener(\"keydown\", handleKeyDown)\n wwd.addEventListener(\"keyup\", handleKeyUp)\n // Ensure keyboard controls are operational by setting the focus to the canvas\n wwd.addEventListener(\"click\", EventListener { if (isEnabled) wwd.canvas.focus() })\n }\n\n /**\n * Reset the view to North up.\n */\n protected open fun resetHeading() {\n lookAt.heading = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * Reset the view to North up and nadir.\n */\n protected open fun resetHeadingAndTilt() {\n lookAt.heading = Angle.ZERO\n lookAt.tilt = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * This function is called by the timer to perform the Pan operation.\n */\n protected open fun handlePan(operation: String) {\n if (isKeyDown) {\n var heading = lookAt.heading\n val distance = panIncrement * lookAt.range\n when (operation) {\n \"panDown\" -> heading -= Angle.POS180\n \"panLeft\" -> heading -= Angle.POS90\n \"panRight\" -> heading += Angle.POS90\n }\n lookAt.position.greatCircleLocation(heading, distance, lookAt.position)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handlePan, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Range operation.\n */\n protected open fun handleZoom(operation: String) {\n if (isKeyDown) {\n if (operation == \"zoomIn\") lookAt.range *= (1 - zoomIncrement)\n else if (operation == \"zoomOut\") lookAt.range *= (1 + zoomIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleZoom, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Tilt operation.\n */\n protected open fun handleTilt(operation: String) {\n if (isKeyDown) {\n if (operation == \"tiltUp\") lookAt.tilt = lookAt.tilt.minusDegrees(tiltIncrement)\n else if (operation == \"tiltDown\") lookAt.tilt = lookAt.tilt.plusDegrees(tiltIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleTilt, 50, operation)\n }\n }\n}","package earth.worldwind\n\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.gesture.SelectDragDetector\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.WebKgl\nimport kotlinx.browser.window\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.WebGLContextAttributes\nimport org.khronos.webgl.WebGLContextEvent\nimport org.khronos.webgl.WebGLRenderingContext\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.roundToInt\n\n/**\n * Represents a WorldWind window for an HTML canvas.\n */\nopen class WorldWindow(\n /**\n * The HTML canvas associated with this WorldWindow.\n */\n val canvas: HTMLCanvasElement,\n /**\n * Render resource cache capacity in bytes\n */\n cacheCapacity: Long = RenderResourceCache.recommendedCapacity()\n) {\n /**\n * WebGL context associated with the HTML canvas.\n */\n protected val gl = createContext(canvas)\n /**\n * Main WorldWindow scope to execute jobs which should be cancelled on GL context lost\n */\n val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * Main WorldWind engine, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\n open val engine = WorldWind(WebKgl(gl), RenderResourceCache(cacheCapacity))\n /**\n * List of registered event listeners for the specified event type on this WorldWindow's canvas.\n */\n protected val eventListeners = mutableMapOf()\n /**\n * The controller used to manipulate the globe.\n */\n var controller: WorldWindowController = BasicWorldWindowController(this)\n /**\n * The controller used to manipulate the globe with the keyboard.\n */\n open val keyboardControls = KeyboardControls(this)\n /**\n * Renderable selection and drag gestures detector. Assign [SelectDragDetector.callback] to handle events.\n */\n open val selectDragDetector = SelectDragDetector(this)\n /**\n * The list of callbacks to call immediately before and immediately after performing a redrawn. The callbacks\n * have two arguments: this WorldWindow and the redraw stage, e.g., redrawCallback(worldWindow, stage);.\n * The stage will be either WorldWind.BEFORE_REDRAW or WorldWind.AFTER_REDRAW indicating whether the\n * callback has been called either immediately before or immediately after a redrawn, respectively.\n * Applications may add functions to this array or remove them.\n */\n val redrawCallbacks = mutableSetOf<(WorldWindow, RedrawStage)->Unit>()\n protected val frame = Frame()\n protected var redrawRequestId = 0\n protected var isRedrawRequested = false\n\n protected class EventListenerEntry(val callback: (Event) -> Unit) {\n val listeners = mutableListOf()\n }\n\n init {\n // Prevent the browser's default actions in response to mouse and touch events, which interfere with\n // navigation. Register these event listeners before any others to ensure that they're called last.\n val preventDefaultListener = EventListener { e -> e.preventDefault() }\n addEventListener(\"mousedown\", preventDefaultListener)\n addEventListener(\"touchstart\", preventDefaultListener)\n addEventListener(\"contextmenu\", preventDefaultListener)\n addEventListener(\"wheel\", preventDefaultListener)\n\n // Redirect various UI interactions to the appropriate handler.\n val onGestureEvent = EventListener { e -> controller.handleEvent(e) }\n if (window.navigator.maxTouchPoints == 0) {\n // Prevent the browser's default actions in response to pointer events which interfere with navigation.\n // This CSS style property is configured here to ensure that it's set for all applications.\n canvas.style.setProperty(\"touch-action\", \"none\")\n\n addEventListener(\"pointerdown\", onGestureEvent)\n window.addEventListener(\"pointermove\", onGestureEvent, false) // get pointermove events outside event target\n window.addEventListener(\"pointercancel\", onGestureEvent, false) // get pointercancel events outside event target\n window.addEventListener(\"pointerup\", onGestureEvent, false) // get pointerup events outside event target\n } else {\n addEventListener(\"mousedown\", onGestureEvent)\n window.addEventListener(\"mousemove\", onGestureEvent, false) // get mousemove events outside event target\n window.addEventListener(\"mouseup\", onGestureEvent, false) // get mouseup events outside event target\n addEventListener(\"touchstart\", onGestureEvent)\n addEventListener(\"touchmove\", onGestureEvent)\n addEventListener(\"touchend\", onGestureEvent)\n addEventListener(\"touchcancel\", onGestureEvent)\n }\n addEventListener(\"wheel\", onGestureEvent)\n\n // Set up to handle WebGL context events.\n canvas.addEventListener(\"webglcontextlost\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Inform WebGL that we handle context restoration, enabling the context restored event to be delivered.\n event.preventDefault()\n // Notify the draw context that the WebGL rendering context has been lost.\n contextLost()\n }, false)\n canvas.addEventListener(\"webglcontextrestored\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Notify the draw context that the WebGL rendering context has been restored.\n contextRestored()\n }, false)\n\n // Set up WebGL context and start rendering to the WebGL context in an animation frame loop.\n this.contextRestored()\n }\n\n /**\n * Registers an event listener for the specified event type on this WorldWindow's canvas. This function\n * delegates the processing of events to the WorldWindow's canvas. For details on this function and its\n * arguments, see the W3C [org.w3c.dom.events.EventTarget] documentation.\n * @see EventTarget\n *\n * When an event occurs, this calls the registered event listeners in order of reverse registration.\n *\n * @param type The event type to listen for.\n * @param listener The [EventListener] to call when the event occurs.\n */\n fun addEventListener(type: String, listener: EventListener) {\n var entry = eventListeners[type]\n if (entry == null) {\n entry = EventListenerEntry { event ->\n event.asDynamic().worldWindow = this@WorldWindow\n // calls listeners in reverse registration order\n entry?.listeners?.forEach{ l -> l.handleEvent(event) }\n }.also { eventListeners[type] = it }\n }\n\n if (!entry.listeners.contains(listener)) { // suppress duplicate listeners\n entry.listeners.add(0, listener) // insert the listener at the beginning of the list\n // first listener added, add the event listener callback\n if (entry.listeners.size == 1) canvas.addEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Removes an event listener for the specified event type from this WorldWindow's canvas. The listener must be\n * the same object passed to addEventListener. Calling removeEventListener with arguments that do not identify a\n * currently registered listener has no effect.\n *\n * @param type Indicates the event type the listener registered for.\n * @param listener The listener to remove.\n */\n fun removeEventListener(type: String, listener: EventListener) {\n val entry = eventListeners[type] ?: return // no entry for the specified type\n if (entry.listeners.remove(listener) && entry.listeners.isEmpty()) {\n canvas.removeEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Causes this WorldWindow to redraw itself at the next available opportunity. The redrawn occurs on the main\n * thread at a time of the browser's discretion. Applications should call redraw after changing the World\n * Window's state, but should not expect that change to be reflected on screen immediately after this function\n * returns. This is the preferred method for requesting a redrawn of the WorldWindow.\n */\n fun requestRedraw() { isRedrawRequested = true } // redraw during the next animation frame\n\n /**\n * Converts window coordinates to coordinates relative to this WorldWindow's canvas.\n * @param x The X coordinate to convert.\n * @param y The Y coordinate to convert.\n * @returns The converted coordinates.\n */\n fun canvasCoordinates(x: Number, y: Number): Vec2 {\n val bbox = canvas.getBoundingClientRect()\n val xc = x.toDouble() - (bbox.left + canvas.clientLeft) // * canvas.width / bbox.width\n val yc = y.toDouble() - (bbox.top + canvas.clientTop) // * canvas.height / bbox.height\n return Vec2(xc, yc)\n }\n\n /**\n * Requests the WorldWind objects displayed at a specified screen-coordinate point.\n *\n * If the point intersects the terrain, the returned list contains an object identifying the associated geographic\n * position. This returns an empty list when nothing in the WorldWind scene intersects the specified point.\n *\n * @param pickPoint The point to examine in this WorldWindow's screen coordinates.\n * @returns A list of picked WorldWind objects at the specified pick point.\n */\n fun pick(pickPoint: Vec2) = pickShapesInRegion(pickPoint.x, pickPoint.y)\n\n /**\n * Requests the WorldWind objects displayed within a specified screen-coordinate region. This returns all\n * objects that intersect the specified region, regardless of whether an object is actually visible, and\n * marks objects that are visible as on top.\n *\n * @param x the X coordinate relative to this WorldWindow's canvas.\n * @param y the Y coordinate relative to this WorldWindow's canvas.\n * @param width the width in canvas pixels\n * @param height the height in canvas pixels\n * @param pickCenter picks top shape and terrain in rectangle center as priority\n *\n * @returns A list of visible WorldWind objects within the specified region.\n */\n fun pickShapesInRegion(\n x: Double, y: Double, width: Double = 0.0, height: Double = 0.0, pickCenter: Boolean = true\n ): PickedObjectList {\n // Allocate a list in which to collect and return the picked objects.\n val pickedObjects = PickedObjectList()\n\n // Nothing can be picked if viewport is undefined.\n val viewport = engine.viewport\n if (viewport.isEmpty) return pickedObjects\n\n // Determine pick viewport\n val pickViewport = if (width != 0.0 && height != 0.0) Viewport(\n floor(x).toInt(), viewport.height - ceil(y + height).toInt(), ceil(width).toInt(), ceil(height).toInt()\n ) else Viewport(x.roundToInt() - 1, viewport.height - y.roundToInt() - 1, 3, 3)\n if (!pickViewport.intersect(viewport)) return pickedObjects\n\n // Prepare pick frame\n frame.pickedObjects = pickedObjects\n frame.pickViewport = pickViewport\n if (pickCenter) {\n // Compute the pick point in OpenGL screen coordinates, rounding to the nearest whole pixel. Nothing can be picked\n // if pick point is outside the WorldWindow's viewport.\n val px = pickViewport.x + pickViewport.width / 2.0\n val py = pickViewport.y + pickViewport.height / 2.0\n if(viewport.contains(px, py)) {\n val pickRay = Line()\n if (engine.rayThroughScreenPoint(px, viewport.height - py, pickRay)) {\n frame.pickPoint = Vec2(px, py)\n frame.pickRay = pickRay\n }\n }\n }\n frame.isPickMode = true\n redrawFrame()\n\n return pickedObjects\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been lost. This function removes all\n * cached WebGL resources and resets all properties tracking the current WebGL state.\n */\n protected open fun contextLost() {\n // Stop the rendering animation frame loop, resuming only if the WebGL context is restored.\n window.cancelAnimationFrame(redrawRequestId)\n\n // Remove all cached WebGL resources, which are now invalid.\n engine.reset()\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been restored. This function prepares\n * this draw context to resume rendering.\n */\n protected open fun contextRestored() {\n // Remove all cached WebGL resources, which are now invalid.\n engine.renderResourceCache.clear()\n\n // Specify the default WorldWind OpenGL state.\n engine.setupDrawContext()\n\n // Store current screen density factor\n engine.densityFactor = window.devicePixelRatio.toFloat()\n\n // Enable WebGL depth texture extension to be able to use GL_DEPTH_COMPONENT texture format\n gl.getExtension(\"WEBGL_depth_texture\")\n\n // Subscribe on events from WorldWind's global event bus.\n mainScope.launch {\n WorldWind.events.collect {\n when (it) {\n is WorldWind.Event.RequestRedraw -> requestRedraw()\n is WorldWind.Event.UnmarkResourceAbsent -> {\n engine.renderResourceCache.absentResourceList.unmarkResourceAbsent(it.resourceId)\n }\n }\n }\n }\n\n // Request redraw at least once.\n requestRedraw()\n\n // Resume the rendering animation frame loop until the WebGL context is lost.\n animationFrameLoop()\n }\n\n protected open fun animationFrameLoop() {\n // Render to the WebGL context as needed.\n redrawIfNeeded()\n\n // Continue the animation frame loop until the WebGL context is lost.\n redrawRequestId = window.requestAnimationFrame { animationFrameLoop() }\n }\n\n protected open fun redrawIfNeeded() {\n // Check if the drawing buffer needs to resize to match its screen size, which requires a redrawn.\n resize()\n\n // Redraw the WebGL drawing buffer only when necessary.\n if (!isRedrawRequested) return\n isRedrawRequested = false\n redrawFrame()\n }\n\n protected open fun redrawFrame() {\n val isPickMode = frame.isPickMode\n try {\n // Prepare to redraw and notify redraw callbacks that a redrawn is about to occur.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.BEFORE_REDRAW)\n // Render frame. Propagate redraw requests submitted during rendering.\n if (engine.renderFrame(frame) || isPickMode) requestRedraw()\n // Redraw the WebGL drawing buffer.\n engine.drawFrame(frame)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"WorldWindow\", \"drawFrame\", \"Exception occurred during redrawing.\\n$e\"\n )\n } finally {\n // Recycle each frame to be reused\n frame.recycle()\n // Notify redraw callbacks that a redrawn has completed.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.AFTER_REDRAW)\n }\n }\n\n protected open fun resize() {\n // Check if canvas size is changed\n val width = (gl.canvas.clientWidth * engine.densityFactor).roundToInt()\n val height = (gl.canvas.clientHeight * engine.densityFactor).roundToInt()\n\n if (gl.canvas.width != width || gl.canvas.height != height || engine.viewport.isEmpty) {\n // Make the canvas drawing buffer size match its screen size.\n gl.canvas.width = width\n gl.canvas.height = height\n\n // Set the WebGL viewport to match the canvas drawing buffer size.\n engine.setupViewport(gl.drawingBufferWidth, gl.drawingBufferHeight)\n\n // Cause this WorldWindow to redraw with the new size.\n requestRedraw()\n }\n }\n\n protected open fun callRedrawCallbacks(stage: RedrawStage) = redrawCallbacks.forEach {\n try {\n it(this, stage)\n } catch (e: Exception) {\n // Keep going. Execute the rest of the callbacks.\n log(ERROR, \"Exception calling redraw callback.\\n$e\")\n }\n }\n\n companion object {\n /**\n * Create the WebGL context associated with the HTML canvas.\n */\n protected fun createContext(canvas: HTMLCanvasElement): WebGLRenderingContext {\n // Request a WebGL context with antialiasing is disabled. Antialiasing causes gaps to appear at the edges of\n // terrain tiles.\n val glAttrs = WebGLContextAttributes(antialias = false)\n val context = canvas.getContext(\"webgl\", glAttrs)\n ?: canvas.getContext(\"experimental-webgl\", glAttrs)\n require(context is WebGLRenderingContext) {\n logMessage(ERROR, \"WorldWindow\", \"createContext\", \"webglNotSupported\")\n }\n return context\n }\n }\n\n enum class RedrawStage {\n /**\n * Indicates that a redrawn callback has been called immediately after a redrawn.\n */\n AFTER_REDRAW,\n /**\n * Indicates that a redrawn callback has been called immediately before a redrawn.\n */\n BEFORE_REDRAW;\n }\n}","package earth.worldwind\n\nimport earth.worldwind.gesture.GestureListener\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\n\n/**\n * This class provides a base window controller with required properties and methods which subclasses may\n * inherit from to create custom window controllers for controlling the globe via user interaction.\n */\nabstract class WorldWindowController(\n /**\n * The WorldWindow associated with this controller.\n */\n protected val wwd: WorldWindow\n): EventListener, GestureListener {\n protected val gestureEventListeners = mutableListOf()\n\n override fun handleEvent(event: Event) {\n for (i in gestureEventListeners.indices) {\n gestureEventListeners[i].handleEvent(event)\n if (event.defaultPrevented) break\n }\n }\n\n /**\n * Registers a gesture event listener on this controller. Registering event listeners using this function\n * enables applications to prevent the controller's default behavior.\n *\n * When an event occurs, application event listeners are called before WorldWindowController event listeners.\n *\n * @param listener The function to call when the event occurs.\n */\n protected open fun addGestureListener(listener: EventListener) { gestureEventListeners += listener }\n\n /**\n * Removes a gesture event listener from this controller. The listener must be the same object passed to\n * addGestureListener. Calling removeGestureListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addGestureListener.\n */\n protected open fun removeGestureListener(listener: EventListener) { gestureEventListeners -= listener }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple mouse clicks.\n */\nopen class ClickRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfClicks = 1\n var button: Short = 0\n var maxMouseMovement = 5\n var maxClickDuration = 500\n var maxClickInterval = 400\n protected val clicks = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n clicks.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (button != event.button) state = FAILED else {\n clicks.add(Click(clientX, clientY))\n failAfterDelay(maxClickDuration) // fail if the click is down too long\n }\n }\n\n override fun mouseMove(event: MouseEvent) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxMouseMovement * window.devicePixelRatio) state = FAILED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (mouseButtonMask != 0) return // wait until the last button is up\n if (clicks.size == numberOfClicks) {\n clientX = clicks[0].clientX\n clientY = clicks[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxClickInterval) // fail if the interval between clicks is too long\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() { timeout?.let { window.clearTimeout(it) }.also { timeout = null } }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for mouse drag gestures.\n */\nopen class DragRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var button: Short = 0\n var interpretDistance = 5\n\n override fun mouseMove(event: MouseEvent) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) {\n state = if (shouldRecognize()) {\n resetTranslation() // set translation to zero when the drag begins\n BEGAN\n } else {\n FAILED\n }\n }\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (mouseButtonMask == 0) { // last button up\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state == POSSIBLE) state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret mouse movement when the cursor moves far enough\n }\n\n /**\n * @return true when the specified button is the only button down\n */\n protected open fun shouldRecognize() = 1 shl button.toInt() == mouseButtonMask\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.util.Logger\nimport org.w3c.dom.Touch\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport org.w3c.dom.pointerevents.PointerEvent\n\n/**\n * Gesture recognizers translate user input event streams into higher level actions. A gesture\n * recognizer is associated with an event target, which dispatches mouse and keyboard events to the gesture\n * recognizer. When a gesture recognizer has received enough information from the event stream to interpret the\n * action, it calls its callback functions. Callback functions may be specified at construction or added to the\n * [gestureCallbacks] list after construction.\n */\nabstract class GestureRecognizer(\n /**\n * Indicates the document element this gesture recognizer observes for mouse and touch events.\n */\n val target: EventTarget,\n /**\n * An optional function to call when this gesture is recognized. If non-null, the\n * function is called when this gesture is recognized, and is passed a single argument: this gesture recognizer,\n * e.g., gestureCallback(recognizer).\n */\n callback: ((GestureRecognizer)->Unit)?\n): EventListener {\n /**\n * Indicates whether this gesture recognizer is enabled. When false, this gesture recognizer will ignore any events\n * dispatched by its target.\n */\n var isEnabled = true\n /**\n * Indicates this gesture's current state. Possible values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN],\n * [CHANGED], [CANCELLED] and [ENDED].\n */\n var state = POSSIBLE\n set(newState) {\n nextState = null // clear any pending state transition\n when (newState) {\n POSSIBLE -> field = newState\n FAILED -> {\n field = newState\n updateRecognizersWaitingForFailure()\n resetIfEventsEnded()\n }\n RECOGNIZED -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Recognized\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n BEGAN -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Began\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n }\n }\n CHANGED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n }\n CANCELLED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n ENDED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n }\n /**\n * Indicates the X coordinate of this gesture.\n */\n var clientX = 0\n /**\n * Returns the Y coordinate of this gesture.\n */\n var clientY = 0\n /**\n * Indicates this gesture's translation along the X axis since the gesture started.\n */\n var translationX = 0.0\n private set\n /**\n * Indicates this gesture's translation along the Y axis since the gesture started.\n */\n var translationY = 0.0\n private set\n /**\n * Indicates the currently pressed mouse buttons as a bitmask. A value of 0 indicates that no buttons are\n * pressed. A nonzero value indicates that one or more buttons are pressed as follows: bit 1 indicates the\n * primary button, bit 2 indicates the auxiliary button, bit 3 indicates the secondary button.\n */\n var mouseButtonMask = 0\n private set\n /**\n * Indicates the number of active touches.\n */\n val touchCount get() = touches.size\n /**\n * The list of functions to call when this gesture is recognized. The functions have a single argument:\n * this gesture recognizer, e.g., gestureCallback(recognizer). Applications may\n * add functions to this array or remove them.\n */\n val gestureCallbacks = mutableListOf<(GestureRecognizer)->Unit>()\n private var nextState: GestureState? = null\n private var clientStartX = 0\n private var clientStartY = 0\n private var translationWeight = 0.4\n private val touches = mutableListOf()\n private var touchCentroidShiftX = 0\n private var touchCentroidShiftY = 0\n private val canRecognizeWith = mutableSetOf()\n private val requiresFailureOf = mutableSetOf()\n private val requiredToFailBy = mutableSetOf()\n private val listenerList = mutableListOf()\n\n companion object {\n val allRecognizers = mutableListOf()\n }\n\n init {\n // Add the optional gesture callback.\n callback?.let { gestureCallbacks += it }\n\n // Add this recognizer to the list of all recognizers.\n allRecognizers += this\n }\n\n /**\n * Registers a gesture state listener on this GestureRecognizer. Registering state listeners using this function\n * enables applications to receive notifications of gesture recognition.\n *\n * @param listener The function to call when the event occurs.\n */\n fun addListener(listener: GestureListener) { listenerList += listener }\n\n /**\n * Removes a gesture state listener from this GestureRecognizer. The listener must be the same object passed to\n * addListener. Calling removeListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addListener.\n */\n fun removeListener(listener: GestureListener) { listenerList -= listener }\n\n fun touch(index: Int): TouchWrapper {\n require(index in touches.indices) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"touch\", \"indexOutOfRange\")\n }\n return touches[index]\n }\n\n fun recognizeSimultaneouslyWith(recognizer: GestureRecognizer) {\n canRecognizeWith.add(recognizer)\n recognizer.canRecognizeWith.add(this)\n }\n\n fun canRecognizeSimultaneouslyWith(recognizer: GestureRecognizer) = canRecognizeWith.contains(recognizer)\n\n fun requireRecognizerToFail(recognizer: GestureRecognizer) {\n requiresFailureOf.add(recognizer)\n recognizer.requiredToFailBy.add(this)\n }\n\n fun requiresRecognizerToFail(recognizer: GestureRecognizer) = requiresFailureOf.contains(recognizer)\n\n fun requiredToFailByRecognizer(recognizer: GestureRecognizer) = requiredToFailBy.contains(recognizer)\n\n open fun reset() {\n state = POSSIBLE\n nextState = null\n clientX = 0\n clientY = 0\n clientStartX = 0\n clientStartY = 0\n translationX = 0.0\n translationY = 0.0\n mouseButtonMask = 0\n touches.clear()\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun resetTranslation() {\n clientStartX = clientX\n clientStartY = clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun prepareToRecognize() {}\n\n protected open fun mouseDown(event: MouseEvent) {}\n protected open fun mouseMove(event: MouseEvent) {}\n protected open fun mouseUp(event: MouseEvent) {}\n\n protected open fun touchStart(touch: TouchWrapper) {}\n protected open fun touchMove(touch: TouchWrapper) {}\n protected open fun touchCancel(touch: TouchWrapper) {}\n protected open fun touchEnd(touch: TouchWrapper) {}\n \n protected open fun updateRecognizersWaitingForFailure() {\n // Transition gestures that are waiting for this gesture to transition to Failed.\n requiredToFailBy.forEach { r -> r.nextState?.let { r.state = it } }\n }\n\n protected open fun tryToRecognize(newState: GestureState): Boolean {\n // Transition to Failed if another gesture can prevent this gesture from recognizing.\n if (allRecognizers.any { r -> canBePreventedByRecognizer(r) }) {\n state = FAILED\n return false\n }\n\n // Delay the transition to Recognized/Began if this gesture is waiting for a gesture in the Possible state.\n if (allRecognizers.any { r -> isWaitingForRecognizerToFail(r) }) {\n nextState = newState\n return false\n }\n\n // Transition to Failed state all other gestures that can be prevented from recognizing by this gesture.\n allRecognizers.filter { r -> canPreventRecognizer(r) }.forEach { r -> r.state = FAILED }\n return true\n }\n\n protected open fun canPreventRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE &&\n (requiredToFailByRecognizer(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun canBePreventedByRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == RECOGNIZED &&\n (requiresRecognizerToFail(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun isWaitingForRecognizerToFail(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE && requiresRecognizerToFail(that)\n\n protected open fun notifyListeners() = listenerList.forEach { l -> l.gestureStateChanged(this) }\n\n protected open fun callGestureCallbacks() = gestureCallbacks.forEach { c -> c(this) }\n\n override fun handleEvent(event: Event) {\n if (!isEnabled) return\n\n if (event.defaultPrevented && state == POSSIBLE) return // ignore cancelled events while in the Possible state\n\n try {\n when {\n event.type == \"mousedown\" && event is MouseEvent -> handleMouseDown(event)\n event.type == \"mousemove\" && event is MouseEvent -> handleMouseMove(event)\n event.type == \"mouseup\" && event is MouseEvent -> handleMouseUp(event)\n event.type == \"touchstart\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchStart(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchmove\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchMove(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchcancel\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchCancel(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchend\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchEnd(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseDown(event)\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseMove(event)\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"mouse\" -> {\n // Intentionally left blank. The W3C Pointer Events specification is ambiguous on what cancel means\n // for mouse input, and there is no evidence that this event is actually generated (6/19/2015).\n }\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseUp(event)\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchStart(wrapPointer(event))\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchMove(wrapPointer(event))\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchCancel(wrapPointer(event))\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchEnd(wrapPointer(event))\n else -> Logger.logMessage(Logger.INFO, \"GestureRecognizer\", \"handleEvent\",\n \"Unrecognized event type: ${event.type}\")\n }\n } catch (e: Exception) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"handleEvent\", \"Error handling event.\\n$e\")\n }\n }\n\n protected open fun handleMouseDown(event: MouseEvent) {\n if (event.type == \"mousedown\" && touches.size > 0) return // ignore synthesized mouse down events on Android Chrome\n\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask != 0) return // ignore redundant mouse down events\n\n if (mouseButtonMask == 0) { // first button down\n clientX = event.clientX\n clientY = event.clientY\n clientStartX = event.clientX\n clientStartY = event.clientY\n translationX = 0.0\n translationY = 0.0\n }\n\n mouseButtonMask = mouseButtonMask or buttonBit\n mouseDown(event)\n }\n\n protected open fun handleMouseMove(event: MouseEvent) {\n if (mouseButtonMask == 0) return // ignore mouse move events when this recognizer does not consider any button to be down\n\n if (clientX == event.clientX && clientY == event.clientY) return // ignore redundant mouse move events\n\n val dx = event.clientX - clientStartX\n val dy = event.clientY - clientStartY\n val w = translationWeight\n clientX = event.clientX\n clientY = event.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n mouseMove(event)\n }\n\n protected open fun handleMouseUp(event: MouseEvent) {\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask == 0) return // ignore mouse up events for buttons this recognizer does not consider to be down\n\n mouseButtonMask = mouseButtonMask and buttonBit.inv()\n mouseUp(event)\n\n if (mouseButtonMask == 0) resetIfEventsEnded() // last button up\n }\n\n protected open fun handleTouchStart(touch: TouchWrapper) {\n touches.add(touch)\n\n if (touches.size == 1) { // first touch\n clientX = touch.clientX\n clientY = touch.clientY\n clientStartX = touch.clientX\n clientStartY = touch.clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n } else touchesAddedOrRemoved()\n\n touchStart(touch)\n }\n\n protected open fun handleTouchMove(nextTouch: TouchWrapper) {\n val touch = touchById(nextTouch.identifier) ?: return // ignore events for touches that did not start in this recognizer's target\n if (touch.clientX == nextTouch.clientX && touch.clientY == nextTouch.clientY) return // ignore redundant touch move events, which we've encountered on Android Chrome\n\n touch.clientX = nextTouch.clientX\n touch.clientY = nextTouch.clientY\n\n val centroid = touchCentroid()\n val dx = centroid.clientX - clientStartX + touchCentroidShiftX\n val dy = centroid.clientY - clientStartY + touchCentroidShiftY\n val w = translationWeight\n clientX = centroid.clientX\n clientY = centroid.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n\n touchMove(touch)\n }\n\n protected open fun handleTouchCancel(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchCancel(touch)\n resetIfEventsEnded()\n }\n\n protected open fun handleTouchEnd(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchEnd(touch)\n resetIfEventsEnded()\n }\n\n protected open fun resetIfEventsEnded() {\n if (state != POSSIBLE && mouseButtonMask == 0 && touches.size == 0) reset()\n }\n\n protected open fun touchesAddedOrRemoved() {\n touchCentroidShiftX += clientX\n touchCentroidShiftY += clientY\n val centroid = touchCentroid()\n clientX = centroid.clientX\n clientY = centroid.clientY\n touchCentroidShiftX -= clientX\n touchCentroidShiftY -= clientY\n }\n\n protected open fun touchCentroid(): Click {\n var x = 0\n var y = 0\n\n touches.forEach { touch ->\n x += touch.clientX / touches.size\n y += touch.clientY / touches.size\n }\n\n return Click(x, y)\n }\n\n protected open fun indexOfTouchWithId(identifier: Int) = touches.indexOfFirst { t -> t.identifier == identifier }\n\n protected open fun touchById(identifier: Int) = touches.firstOrNull { t -> t.identifier == identifier }\n\n protected open fun wrapTouch(event: Touch) = TouchWrapper(event.identifier, event.clientX, event.clientY)\n\n protected open fun wrapPointer(event: PointerEvent) = TouchWrapper(event.pointerId, event.clientX, event.clientY)\n\n protected class Click(\n /**\n * The X coordinate of the click point's location.\n */\n val clientX: Int,\n /**\n * The Y coordinate of the click point's location.\n */\n val clientY: Int\n )\n}",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for touch panning gestures.\n */\nopen class PanRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var minNumberOfTouches = 1\n var maxNumberOfTouches = Int.MAX_VALUE\n var interpretDistance = 20\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) state = if (shouldRecognize()) BEGAN else FAILED\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch cancelled\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n }\n\n override fun prepareToRecognize() {\n // set translation to zero when the pan begins\n resetTranslation()\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret touches when the touch centroid moves far enough\n }\n\n protected open fun shouldRecognize() = touchCount in minNumberOfTouches..maxNumberOfTouches\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger pinch gestures.\n */\nopen class PinchRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceDistance = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val scaleWithOffset get() = scale * offsetScale\n protected var scale = 1.0\n protected var offsetScale = 1.0\n protected val pinchTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n scale = 1.0\n offsetScale = 1.0\n referenceDistance = 0.0\n pinchTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (pinchTouches.size < 2) {\n pinchTouches.add(touch)\n if (pinchTouches.size == 2) {\n referenceDistance = currentPinchDistance()\n offsetScale *= scale\n scale = 1.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (pinchTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val distance = currentPinchDistance()\n val newScale = abs(distance / referenceDistance)\n val w = weight\n scale = scale * (1 - w) + newScale * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceDistance = currentPinchDistance()\n scale = 1.0\n }\n\n protected open fun shouldRecognize() =\n abs(currentPinchDistance() - referenceDistance) > interpretThreshold * window.devicePixelRatio\n\n protected open fun currentPinchDistance(): Double {\n val touch0 = pinchTouches[0]\n val touch1 = pinchTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return sqrt((dx * dx + dy * dy).toDouble())\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.atan2\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger rotation gestures.\n */\nopen class RotationRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceAngle = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val rotationWithOffset get() = rotation + offsetRotation\n protected var rotation = 0.0\n protected var offsetRotation = 0.0\n protected val rotationTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n rotation = 0.0\n offsetRotation = 0.0\n referenceAngle = 0.0\n rotationTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (rotationTouches.size < 2) {\n rotationTouches.add(touch)\n if (rotationTouches.size == 2) {\n referenceAngle = currentTouchAngle()\n offsetRotation += rotation\n rotation = 0.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (rotationTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val angle = currentTouchAngle()\n val newRotation = Angle.normalizeAngle180(angle - referenceAngle)\n val w = weight\n rotation = rotation * (1 - w) + newRotation * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0)\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceAngle = currentTouchAngle()\n rotation = 0.0\n }\n\n protected open fun shouldRecognize(): Boolean {\n rotation = Angle.normalizeAngle180(currentTouchAngle() - referenceAngle)\n return abs(rotation) > interpretThreshold\n }\n\n protected open fun currentTouchAngle(): Double {\n val touch0 = rotationTouches[0]\n val touch1 = rotationTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return Angle.toDegrees(atan2(dy.toDouble(), dx.toDouble()))\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.BasicWorldWindowController\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Highlightable\nimport earth.worldwind.shape.Movable\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.MouseEvent\n\nopen class SelectDragDetector(protected val wwd: WorldWindow) {\n /**\n * Main interface representing all interaction callbacks\n */\n var callback: SelectDragCallback? = null\n /**\n * Enable/disable mouse events processing.\n * If disabled, highlighting of Renderables and all callbacks will be switched off.\n */\n var isEnabled = true\n /**\n * Enable/disable dragging of flying objects using their terrain projection position\n */\n var isDragTerrainPosition = false\n protected var pickedPosition: Position? = null\n protected var pickedRenderable: Renderable? = null\n protected val oldHighlighted = mutableSetOf()\n protected val newHighlighted = mutableSetOf()\n protected var isDragging = false\n protected var isDraggingArmed = false\n private val dragRefPt = Vec2()\n private val lastTranslation = Vec2()\n\n protected val handlePick = EventListener { event ->\n // Do not pick new items if dragging is in progress or detector is disabled\n if (isDragging || !isEnabled) return@EventListener\n\n // Determine pick point from event\n var clientX = 0\n var clientY = 0\n when (event) {\n is MouseEvent -> {\n clientX = event.clientX\n clientY = event.clientY\n }\n is TouchEvent -> {\n event.changedTouches.item(0)?.let { touch ->\n clientX = touch.clientX\n clientY = touch.clientY\n } ?: return@EventListener\n }\n else -> return@EventListener\n }\n\n // Reset previous pick result\n pickedPosition = null\n pickedRenderable = null\n lastTranslation.set(0.0, 0.0)\n\n // Get pick point in canvas coordinates\n val pickPoint = wwd.canvasCoordinates(clientX, clientY)\n\n // Pick objects in selected point\n val pickList = wwd.pick(pickPoint)\n\n // Get picked position from terrain object, if user pressed inside the globe\n pickedPosition = pickList.terrainPickedObject?.terrainPosition\n\n// // NOTE Region selection use bounding box intersection with specified rectangle. Use highlighter path thickness instead.\n// if (!pickList.hasNonTerrainObjects) {\n// pickList = wwd.pickShapesInRegion(\n// Viewport(pickPoint.x - SLOPE / 2 , pickPoint.y - SLOPE / 2, SLOPE, SLOPE)\n// )\n// }\n\n // Redraw canvas in case we de-highlight old or highlight new renderables\n var redrawRequired = false\n\n // Put picked renderables into new highlighted set\n for (obj in pickList.objects) if (!obj.isTerrain && obj.userObject is Highlightable) newHighlighted.add(obj.userObject)\n\n // De-highlight any previously highlighted renderables which is not selected or picked\n for (highlighted in oldHighlighted)\n if (!newHighlighted.contains(highlighted)\n && highlighted is Renderable && highlighted.getUserProperty(HIGHLIGHT_LOCKED_KEY) != true) {\n highlighted.isHighlighted = false\n oldHighlighted.remove(highlighted)\n redrawRequired = true\n }\n\n // Highlight picked objects which was not highlighted yet\n for (highlighted in newHighlighted) if (!oldHighlighted.contains(highlighted)) {\n highlighted.isHighlighted = true\n oldHighlighted.add(highlighted)\n redrawRequired = true\n }\n\n // Clear new highlighted buffer until next frame\n newHighlighted.clear()\n\n // Update the window if we changed anything\n if (redrawRequired) wwd.requestRedraw()\n\n // Get top picked renderable to use it in listener callbacks\n val topPickedObject = pickList.topPickedObject?.userObject\n if (topPickedObject is Renderable) pickedRenderable = topPickedObject\n\n // Take reference position as a backup, if user pressed outside the globe\n if (topPickedObject is Movable && pickedPosition == null) pickedPosition = topPickedObject.referencePosition\n\n // Determine whether the dragging flag should be \"armed\".\n isDraggingArmed = topPickedObject is Renderable && callback?.canMoveRenderable(topPickedObject) == true\n }\n\n protected val handlePrimaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderablePicked(renderable, position) else callback.onTerrainPicked(position)\n } ?: callback.onNothingPicked()\n wwd.requestRedraw()\n }\n }\n\n protected val handleSecondaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderableContext(renderable, position) else callback.onTerrainContext(position)\n } ?: callback.onNothingContext()\n wwd.requestRedraw()\n }\n }\n\n protected val handleDrag: (GestureRecognizer) -> Unit = { recognizer ->\n when (recognizer.state) {\n BEGAN, CHANGED -> {\n val callback = callback\n val renderable = pickedRenderable\n // Reference position is a priority during movement\n val toPosition = if (renderable is Movable) renderable.referencePosition else pickedPosition\n if (toPosition != null && renderable != null && callback != null) {\n // Signal that dragging is in progress\n isDragging = true\n\n // First we compute the screen coordinates of the position's \"ground\" point. We'll apply the\n // screen X and Y drag distances to this point, from which we'll compute a new position,\n // wherein we restore the original position's altitude.\n val fromPosition = Position(toPosition)\n val clapToGround = isDragTerrainPosition || renderable !is Movable || renderable.altitudeMode == AltitudeMode.CLAMP_TO_GROUND\n val movePoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n if (clapToGround && wwd.engine.pickTerrainPosition(movePoint.x, movePoint.y, toPosition)\n || !clapToGround && wwd.engine.geographicToScreenPoint(fromPosition.latitude, fromPosition.longitude, 0.0, dragRefPt)\n && wwd.engine.screenPointToGroundPosition(\n dragRefPt.x + recognizer.translationX - lastTranslation.x,\n dragRefPt.y + recognizer.translationY - lastTranslation.y,\n toPosition\n )) {\n // Backup last translation\n lastTranslation.set(recognizer.translationX, recognizer.translationY)\n // Restore original altitude\n toPosition.altitude = fromPosition.altitude\n // Update movable position\n if (renderable is Movable) renderable.moveTo(wwd.engine.globe, toPosition)\n // Notify callback\n callback.onRenderableMoved(renderable, fromPosition, toPosition)\n // Reflect the change in position on the globe.\n wwd.requestRedraw()\n } else {\n // Probably clipped by near/far clipping plane or off the globe.\n // The position was not updated. Stop the drag.\n recognizer.state = CANCELLED\n }\n }\n }\n ENDED -> {\n val callback = callback\n val position = pickedPosition\n val renderable = pickedRenderable\n if (renderable != null && position != null && callback != null) {\n callback.onRenderableMovingFinished(renderable, position)\n wwd.requestRedraw()\n }\n cancelDragging()\n }\n CANCELLED -> cancelDragging()\n else -> {}\n }\n }\n\n protected val primaryClickRecognizer = ClickRecognizer(wwd.canvas, handlePrimaryClick)\n protected val tapRecognizer = TapRecognizer(wwd.canvas, handlePrimaryClick)\n protected val secondaryClickRecognizer = ClickRecognizer(wwd.canvas, handleSecondaryClick).apply { button = 2 } // Secondary mouse button\n protected val doubleTapRecognizer = TapRecognizer(wwd.canvas, handleSecondaryClick).apply { numberOfTaps = 2 } // Double tap\n protected val dragRecognizer = object : DragRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n protected val panRecognizer = object : PanRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n\n companion object {\n// const val SLOPE = 16\n const val HIGHLIGHT_LOCKED_KEY = \"highlight_locked\"\n }\n\n init {\n wwd.addEventListener(\"mousedown\", handlePick)\n wwd.addEventListener(\"mousemove\", handlePick)\n wwd.addEventListener(\"touchstart\", handlePick)\n wwd.addEventListener(\"touchmove\", handlePick)\n\n // Resolve conflict between item movement and globe rotation\n val controller = wwd.controller\n if (controller is BasicWorldWindowController) {\n controller.primaryDragRecognizer.requireRecognizerToFail(dragRecognizer)\n controller.panRecognizer.requireRecognizerToFail(panRecognizer)\n }\n }\n\n protected fun cancelDragging() {\n isDragging = false\n isDraggingArmed = false\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple taps.\n */\nopen class TapRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfTaps = 1\n var numberOfTouches = 1\n var maxTouchMovement = 20\n var maxTapDuration = 500\n var maxTapInterval = 400\n protected val taps = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n taps.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n\n if (touchCount > numberOfTouches) {\n state = FAILED\n } else if (touchCount == 1) { // first touch started\n taps.add(TouchWrapper(touchCount, clientX, clientY))\n failAfterDelay(maxTapDuration) // fail if the tap is down too long\n } else {\n val tap = taps[taps.size - 1]\n tap.identifier = touchCount // max number of simultaneous touches\n tap.clientX = clientX // touch centroid\n tap.clientY = clientY\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxTouchMovement * window.devicePixelRatio ) state = FAILED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n if (touchCount != 0) return // wait until the last touch ends\n val tapCount = taps.size\n val tap = taps[tapCount - 1]\n if (tap.identifier != numberOfTouches) {\n state = FAILED // wrong number of touches\n } else if (tapCount == numberOfTaps) {\n clientX = taps[0].clientX\n clientY = taps[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxTapInterval) // fail if the interval between taps is too long\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() = timeout?.let { window.clearTimeout(it) }.also { timeout = null }\n}","package earth.worldwind.gesture\n\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger tilt gestures.\n */\nopen class TiltRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : PanRecognizer(target, callback) {\n var maxTouchDistance = 300\n var maxTouchDivergence = 50\n\n companion object {\n const val LEFT = 1 shl 0\n const val RIGHT = 1 shl 1\n const val UP = 1 shl 2\n const val DOWN = 1 shl 3\n }\n\n override fun shouldInterpret(): Boolean {\n for (i in 0 until touchCount) {\n val touch = touch(i)\n val dx = touch.translationX\n val dy = touch.translationY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > interpretDistance) return true // interpret touches when any touch moves far enough\n }\n return false\n }\n\n override fun shouldRecognize(): Boolean {\n if (touchCount < 2) return false\n val touch0 = touch(0)\n val touch1 = touch(1)\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > maxTouchDistance * window.devicePixelRatio) return false // touches must be close together\n val tx = touch0.translationX - touch1.translationX\n val ty = touch0.translationY - touch1.translationY\n val divergence = sqrt((tx * tx + ty * ty).toDouble())\n if (divergence > maxTouchDivergence * window.devicePixelRatio) return false // touches must be moving in a mostly parallel direction\n\n val verticalMask = UP or DOWN\n val dirMask0 = touchDirection(touch0) and verticalMask\n val dirMask1 = touchDirection(touch1) and verticalMask\n return (dirMask0 and dirMask1) != 0 // touches must move in the same vertical direction\n }\n\n protected open fun touchDirection(touch: TouchWrapper): Int {\n val dx = touch.translationX\n val dy = touch.translationY\n var dirMask = 0\n if (abs(dx) > abs(dy)) {\n dirMask = dirMask or if (dx < 0) LEFT else 0\n dirMask = dirMask or if (dx > 0) RIGHT else 0\n } else {\n dirMask = dirMask or if (dy < 0) UP else 0\n dirMask = dirMask or if (dy > 0) DOWN else 0\n }\n return dirMask\n }\n}","package earth.worldwind.gesture\n\n/**\n * Represents a touch point.\n */\nopen class TouchWrapper(\n /**\n * A number uniquely identifying the touch point\n */\n var identifier: Int,\n /**\n * The X coordinate of the touch point's location.\n */\n var clientX: Int,\n /**\n * The Y coordinate of the touch point's location.\n */\n var clientY: Int\n) {\n /**\n * Indicates this touch point's translation along the X axis since the touch started.\n */\n var translationX: Int\n get() = clientX - clientStartX\n set(value) { clientStartX = clientX - value }\n /**\n * Indicates this touch point's translation along the Y axis since the touch started.\n */\n var translationY: Int\n get() = clientY - clientStartY\n set(value) { clientStartY = clientY - value }\n protected var clientStartX = clientX\n protected var clientStartY = clientY\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport org.khronos.webgl.ArrayBufferView\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying elevations from a variety of sources.\n *
\n * ElevationSource supports following source types:\n * - Uniform Resource Locator [URL]\n *
\n * ElevationSource instances are intended to be used as a key into a cache or other data structure that enables sharing\n * of loaded elevation resources. File paths and URLs with the same string representation considered equals.\n */\nactual open class ElevationSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an elevation source with an [URL].\n *\n * @param url Uniform Resource Locator\n *\n * @return the new elevation source\n */\n fun fromUrl(url: URL) = ElevationSource(url.href)\n\n /**\n * Constructs an elevation source with a URL string.\n *\n * @param urlString complete URL string\n *\n * @return the new elevation source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ElevationSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an elevation source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ElevationSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new elevation source\n */\n actual fun fromUnrecognized(source: Any) = when(source) {\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ElevationSource(source)\n }\n }\n\n /**\n * Buffer post-processing routine.\n */\n @Suppress(\"UNCHECKED_CAST\")\n val bufferPostprocessor get() = postprocessor as ResourcePostprocessor?\n /**\n * Indicates whether this elevation source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when (source) {\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource.Companion.fromUnrecognized\nimport earth.worldwind.globe.elevation.ElevationTileFactory\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport io.ktor.client.fetch.*\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.await\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.*\nimport org.khronos.webgl.ArrayBufferView\nimport org.khronos.webgl.Uint8Array\nimport kotlin.math.roundToInt\n\nactual open class TiledElevationCoverage actual constructor(\n tileMatrixSet: TileMatrixSet, tileFactory: ElevationTileFactory\n) : AbstractTiledElevationCoverage(tileMatrixSet, tileFactory) {\n protected actual val mainScope = MainScope()\n\n /**\n * This is a dummy workaround for asynchronously defined TileFactory\n */\n actual constructor(): this(TileMatrixSet(), object : ElevationTileFactory {\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int) = fromUnrecognized(Any())\n })\n\n override fun invalidateTiles() {\n mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n super.invalidateTiles()\n }\n\n override fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int) {\n val elevationSource = tileFactory.createElevationSource(tileMatrix, row, column)\n if (elevationSource.isUrl) mainScope.launch {\n val url = elevationSource.asUrl()\n try {\n // Ktor JS Client cannot be used here, because it is not able to return ArrayBuffer directly.\n val response = fetch(url).await()\n if (response.ok) {\n val arrayBuffer = response.arrayBuffer().await()\n val contentType = response.headers.get(\"Content-Type\")\n var message: String? = null\n val buffer = when {\n contentType.equals(\"image/bil\", true) ||\n contentType.equals(\"application/bil\", true) ||\n contentType.equals(\"application/bil16\", true) -> Int16Array(arrayBuffer)\n contentType.equals(\"application/bil32\", true) -> Float32Array(arrayBuffer)\n contentType.equals(\"image/tiff\", true) -> TODO(\"Implement Tiff parsing for JS\")\n contentType.equals(\"text/xml\", true) -> {\n message = \"Elevations retrieval failed (${response.statusText}): $url.\\n\"\n +String.asDynamic().fromCharCode.apply(null, Uint8Array(arrayBuffer))\n null\n }\n else -> {\n message = \"Elevations retrieval failed (Unexpected content type $contentType): $url\"\n null\n }\n }?.let { elevationSource.bufferPostprocessor?.process(it) ?: it } // Apply buffer transformations\n decodeBuffer(buffer)?.let {\n retrievalSucceeded(key, it, \"Elevation retrieval succeeded: $url\")\n } ?: retrievalFailed(key, message ?: \"Elevations retrieval failed: $url\")\n } else {\n retrievalFailed(key, \"Elevations retrieval failed (${response.statusText}): $url\")\n }\n } catch (e: Throwable) {\n retrievalFailed(key, \"Elevations retrieval failed (${e.message}): $url\")\n }\n } else retrievalFailed(key, \"Unsupported elevation source type\")\n }\n\n protected open fun decodeBuffer(buffer: ArrayBufferView?) = when (buffer) {\n is Int16Array -> ShortArray(buffer.length) { buffer[it] }\n is Float32Array -> ShortArray(buffer.length) { buffer[it].roundToInt().toShort() }\n else -> null\n }\n\n protected open fun retrievalSucceeded(key: Long, value: ShortArray, message: String) {\n retrievalSucceeded(key, value)\n if (isLoggable(DEBUG)) log(DEBUG, message)\n }\n\n protected open fun retrievalFailed(key: Long, message: String) {\n retrievalFailed(key)\n log(WARN, message)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nactual abstract class AbstractTiledImageLayer actual constructor(name: String): RenderableLayer(name) {\n actual var tiledSurfaceImage: TiledSurfaceImage? = null\n protected set(value) {\n field?.let { removeRenderable(it) }\n value?.let { addRenderable(it) }\n field = value\n }\n override var isPickEnabled = false\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset: Int\n get() = tiledSurfaceImage?.levelOffset ?: 0\n set(value) { tiledSurfaceImage?.levelOffset = value }\n}","package earth.worldwind.layer\n\nactual abstract class TiledImageLayer actual constructor(name: String): AbstractTiledImageLayer(name)","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.util.Level\nimport kotlinx.browser.document\nimport org.khronos.webgl.get\nimport org.khronos.webgl.set\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.math.floor\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nactual open class MercatorImageTile actual constructor(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): AbstractMercatorImageTile(sector, level, row, column) {\n companion object {\n val srcCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val srcCtx = srcCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n val dstCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val dstCtx = dstCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n\n override suspend fun process(resource: Image): Image {\n val width = resource.width\n val height = resource.height\n val widthDouble = resource.width.toDouble()\n val heightDouble = resource.height.toDouble()\n\n // Get source image data\n srcCanvas.width = width\n srcCanvas.height = height\n srcCtx.drawImage(resource, 0.0, 0.0, widthDouble, heightDouble)\n val srcData = srcCtx.getImageData(0.0, 0.0, widthDouble, heightDouble)\n\n // Prepare destination image data\n dstCanvas.width = width\n dstCanvas.height = height\n val dstData = dstCtx.createImageData(widthDouble, heightDouble)\n\n // Re-project mercator tile to equirectangular projection\n val sector = sector as MercatorSector\n val miny = sector.minLatPercent\n val maxy = sector.maxLatPercent\n for (y in 0 until height) {\n val sy = 1.0 - y / (height - 1.0)\n val lat = sy * sector.deltaLatitude.inDegrees + sector.minLatitude.inDegrees\n val dy = (1.0 - (gudermannianInverse(lat.degrees) - miny) / (maxy - miny)).coerceIn(0.0, 1.0)\n val srcRow = floor(dy * (height - 1)).toInt()\n for (x in 0 until width) {\n val src = 4 * (x + srcRow * width)\n val dst = 4 * (x + y * width)\n dstData.data[dst] = srcData.data[src]\n dstData.data[dst + 1] = srcData.data[src + 1]\n dstData.data[dst + 2] = srcData.data[src + 2]\n dstData.data[dst + 3] = srcData.data[src + 3]\n }\n }\n\n // Replace image source with transformed canvas image data\n dstCtx.putImageData(dstData, 0.0, 0.0)\n //resource.src = dstCanvas.toDataURL() // This approach is performance ineffective thus replaced by toBlob()\n dstCanvas.toBlob({\n // Setting new src will call onLoad or onError in RenderResourceCache and continue image retrieval process\n if (it != null) resource.src = URL.createObjectURL(it)\n // Call image.onError in RenderResourceCache to fail retrieval and mark resource as absent\n else resource.onerror?.invoke(\"Error saving canvas to Blob\", \"\", 0, 0, null) as Unit\n })\n return resource // Do not call super.process to prevnt unnecessary onLoad event processing\n }\n}","package earth.worldwind.render\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.image.*\nimport earth.worldwind.util.AbsentResourceList\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.kgl.*\nimport kotlinx.browser.window\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.time.Duration.Companion.seconds\n\nactual open class RenderResourceCache(\n capacity: Long = recommendedCapacity(), lowWater: Long = (capacity * 0.75).toLong()\n) : LruMemoryCache(capacity, lowWater) {\n companion object {\n fun recommendedCapacity(): Long = (window.navigator.asDynamic().deviceMemory as? Number)\n ?.let { it.toLong() * 1024 * 1024 * 1024 / 16 * 3 } ?: (512L * 1024 * 1024) // 512 Mb as backup\n }\n\n override var age = 0L // Manually incrementable cache age\n var urlRetrievalQueueSize = 16\n /**\n * Main render resource retrieval scope\n */\n actual val mainScope = MainScope()\n /**\n * Identifies requested resources that whose retrieval failed.\n */\n actual val absentResourceList = AbsentResourceList(3, 60.seconds)\n /**\n * List of retrievals currently in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n\n override fun clear() {\n super.clear()\n currentRetrievals.clear()\n absentResourceList.clear()\n age = 0\n }\n\n actual fun cancel() = mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n\n actual fun incAge() { ++age }\n\n actual fun releaseEvictedResources(dc: DrawContext) {\n // TODO Implement evicted resources management\n }\n\n actual fun retrieveTexture(imageSource: ImageSource, options: ImageOptions?): Texture? {\n when {\n imageSource.isImage -> {\n // Following type of image sources is already in memory, so a texture may be created and put into the cache immediately.\n return createTexture(options, imageSource.asImage()).also { put(imageSource, it, it.byteCount) }\n }\n imageSource.isImageFactory -> {\n val factory = imageSource.asImageFactory()\n if (factory.isRunBlocking) {\n // Image factory makes easy operations, so a texture may be created and put into the cache immediately.\n return factory.createImage()?.let { bitmap ->\n createTexture(options, bitmap).also { put(imageSource, it, it.byteCount) }\n }\n }\n }\n }\n\n // Ignore retrieval of already requested resources or marked as absent\n if (currentRetrievals.size >= urlRetrievalQueueSize || currentRetrievals.contains(imageSource)\n || absentResourceList.isResourceAbsent(imageSource.hashCode())) return null\n\n // Retrieve remote image source\n when {\n imageSource.isResource -> retrieveRemoteImage(imageSource, options, imageSource.asResource().fileUrl)\n imageSource.isUrl -> retrieveRemoteImage(imageSource, options, imageSource.asUrl())\n imageSource.isImageFactory -> {\n currentRetrievals += imageSource\n mainScope.launch {\n imageSource.asImageFactory().createImage()?.let {\n retrievalSucceeded(imageSource, options, it)\n } ?: retrievalFailed(imageSource)\n }\n }\n }\n\n return null\n }\n\n actual fun retrieveTextFile(fileResource: FileResource, result: (String) -> Unit) {\n mainScope.launch {\n try {\n result(fileResource.getText())\n } catch (e: Throwable) {\n log(ERROR, \"Resource retrieval failed ($fileResource): ${e.message}\")\n }\n }\n }\n\n protected open fun retrieveRemoteImage(imageSource: ImageSource, options: ImageOptions?, src: String) {\n val image = Image()\n var postprocessorExecuted = false\n image.onload = {\n // Check if image postprocessor is assigned and not yet executed.\n // OnLoad event can be called second time by reassigning image.src inside postprocessor.\n val postprocessor = imageSource.imagePostprocessor\n if (postprocessor != null && !postprocessorExecuted) {\n postprocessorExecuted = true // Prevent cyclic processing due to src modification inside postprocessing.\n mainScope.launch { postprocessor.process(image) } // Apply image transformation.\n } else retrievalSucceeded(imageSource, options, image) // Consume original or processed image as retrieved\n if (postprocessor != null) URL.revokeObjectURL(image.src) // Revoke URL possibly created in postprocessor\n }\n image.onerror = { _, _, _, _, _ -> retrievalFailed(imageSource) }\n currentRetrievals += imageSource\n image.crossOrigin = \"anonymous\"\n image.src = src\n }\n\n protected open fun createTexture(options: ImageOptions?, image: Image): Texture {\n // Process initialWidth and initialHeight if specified\n if (image.width == 0 || image.height == 0) {\n // If source image has dimensions, then resize it proportionally to fit initial size restrictions\n val ratioW = if (options != null && options.initialWidth > 0) image.width / options.initialWidth else 0\n val ratioH = if (options != null && options.initialHeight > 0) image.height / options.initialHeight else 0\n val ratio = if (ratioH > ratioW) ratioH else ratioW\n if (ratio > 0) {\n image.width = image.width / ratio\n image.height = image.height / ratio\n }\n } else if (options != null && options.initialWidth > 0 && options.initialHeight > 0) {\n // If source image has no dimensions (e.g. SVG image), then set initial size of image\n image.width = options.initialWidth\n image.height = options.initialHeight\n }\n\n // Create image texture and apply texture parameters\n val texture = ImageTexture(image)\n if (options?.resamplingMode == ResamplingMode.NEAREST_NEIGHBOR) {\n texture.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n texture.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n }\n if (options?.wrapMode == WrapMode.REPEAT) {\n texture.setTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT)\n texture.setTexParameter(GL_TEXTURE_WRAP_T, GL_REPEAT)\n }\n return texture\n }\n\n protected open fun retrievalSucceeded(source: ImageSource, options: ImageOptions?, image: Image) {\n // Create texture and put it into cache.\n val texture = createTexture(options, image)\n put(source, texture, texture.byteCount)\n currentRetrievals -= source\n absentResourceList.unmarkResourceAbsent(source.hashCode())\n WorldWind.requestRedraw()\n if (isLoggable(DEBUG)) log(DEBUG, \"Image retrieval succeeded: $source\")\n }\n\n protected open fun retrievalFailed(source: ImageSource) {\n currentRetrievals -= source\n absentResourceList.markResourceAbsent(source.hashCode())\n log(WARN, \"Image retrieval failed: $source\")\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.render.image.CanvasTexture\nimport earth.worldwind.shape.TextAttributes\nimport kotlinx.browser.document\nimport org.w3c.dom.*\nimport kotlin.math.ceil\n\nactual open class TextRenderer actual constructor(protected val rc: RenderContext) {\n private val lineSpacing = 0.15 // fraction of font size\n\n /**\n * Creates a texture for a specified text string and specified text attributes.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A texture for the specified text string.\n */\n actual fun renderText(text: String?, attributes: TextAttributes): Texture? =\n if (text?.isNotEmpty() == true) CanvasTexture(drawText(text, attributes)) else null\n\n /**\n * Creates a 2D Canvas for a specified text string while considering current TextRenderer state regarding outline\n * usage and color, text color, typeface, and outline width.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A 2D Canvas for the specified text string.\n */\n protected open fun drawText(text: String, attributes: TextAttributes): HTMLCanvasElement {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n\n val textSize = textSize(ctx2D, text, attributes)\n val lines = text.split(\"\\n\")\n val strokeOffset = if (attributes.isOutlineEnabled) attributes.outlineWidth / 2.0 else 0.0\n\n canvas.width = ceil(textSize.x * rc.densityFactor).toInt()\n canvas.height = ceil(textSize.y * rc.densityFactor).toInt()\n\n ctx2D.scale(rc.densityFactor.toDouble(), rc.densityFactor.toDouble())\n ctx2D.font = attributes.font.toString()\n ctx2D.textBaseline = CanvasTextBaseline.BOTTOM\n ctx2D.textAlign = attributes.font.horizontalAlignment\n ctx2D.fillStyle = attributes.textColor.toCssColorString()\n ctx2D.strokeStyle = attributes.outlineColor.toCssColorString()\n ctx2D.lineWidth = attributes.outlineWidth.toDouble()\n ctx2D.lineCap = CanvasLineCap.ROUND\n ctx2D.lineJoin = CanvasLineJoin.ROUND\n\n when (attributes.font.horizontalAlignment) {\n CanvasTextAlign.LEFT -> ctx2D.translate(strokeOffset, 0.0)\n CanvasTextAlign.RIGHT -> ctx2D.translate(textSize.x - strokeOffset, 0.0)\n else -> ctx2D.translate(textSize.x / 2.0, 0.0)\n }\n\n for (i in lines.indices) {\n val line = lines[i]\n ctx2D.translate(0.0, attributes.font.size * (1.0 + lineSpacing) + strokeOffset)\n if (attributes.isOutlineEnabled) ctx2D.strokeText(line, 0.0, 0.0)\n ctx2D.fillText(line, 0.0, 0.0)\n }\n\n return canvas\n }\n\n /**\n * Returns the width and height of a specified text string considering the current typeFace and outline usage.\n * @param ctx2D Canvas rendering context\n * @param text The text string.\n * @param textAttributes Text font, size, color etc.\n * @returns A vector indicating the text's width and height, respectively, in pixels.\n */\n protected open fun textSize(ctx2D: CanvasRenderingContext2D, text: String, textAttributes: TextAttributes): Vec2 {\n if (text.isEmpty()) Vec2()\n\n ctx2D.font = textAttributes.font.toString()\n\n val lines = text.split(\"\\n\")\n var height = lines.size * (textAttributes.font.size * (1.0 + lineSpacing))\n var maxWidth = 0.0\n for (i in lines.indices) maxWidth = maxWidth.coerceAtLeast(ctx2D.measureText(lines[i]).width)\n\n if (textAttributes.isOutlineEnabled) {\n maxWidth += textAttributes.outlineWidth\n height += textAttributes.outlineWidth\n }\n\n return Vec2(maxWidth, height)\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.HTMLCanvasElement\n\nopen class CanvasTexture(image: HTMLCanvasElement) : Texture(image.width, image.height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: HTMLCanvasElement? = image\n override val hasMipMap = isPowerOfTwo(image.width) && isPowerOfTwo(image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}\n","package earth.worldwind.render.image\n\nimport dev.icerock.moko.resources.ImageResource\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.ResourcePostprocessor\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying images from a variety of sources. ImageSource retains the image source on behalf\n * of the caller, making this information available to WorldWind components that load images on the caller's behalf.\n *
\n * ImageSource supports following source types:\n * - Uniform Resource Locator [URL]\n * - [Image] object\n * - WorldWind [ImageSource.ImageFactory]\n * - Multi-platform resource identifier\n *
\n * ImageSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded images. Images are compared by reference. URLs with the same string representation considered equals.\n */\nactual open class ImageSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an image source with a multi-platform resource identifier.\n *\n * @param imageResource the multi-platform resource identifier\n *\n * @return the new image source\n */\n actual fun fromResource(imageResource: ImageResource) = ImageSource(imageResource)\n\n /**\n * Constructs an image source with an [Image]. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param image the [Image] to use as an image source\n *\n * @return the new image source\n */\n fun fromImage(image: Image) = ImageSource(image)\n\n /**\n * Constructs an image source with a [ImageFactory]. WorldWind shapes configured with an image factory image source\n * construct their images lazily, typically when the shape becomes visible on screen.\n *\n * @param factory the [ImageFactory] to use as an image source\n *\n * @return the new image source\n */\n fun fromImageFactory(factory: ImageFactory) = ImageSource(factory)\n\n /**\n * Constructs an image source with an [URL]. The image's dimensions should be no greater than 2048 x 2048.\n *\n * @param url Uniform Resource Locator\n *\n * @return the new image source\n */\n fun fromUrl(url: URL) = ImageSource(url.href)\n\n /**\n * Constructs an image source with a URL string. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param urlString complete URL string\n *\n * @return the new image source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ImageSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an image source with a line stipple pattern. The result is a one-dimensional image with pixels\n * representing the specified stipple factor and stipple pattern. Line stipple images can be used for displaying\n * dashed shape outlines. See [earth.worldwind.shape.ShapeAttributes.outlineImageSource].\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n *\n * @return the new image source\n */\n actual fun fromLineStipple(factor: Int, pattern: Short): ImageSource {\n TODO(\"Not yet implemented\")\n }\n\n /**\n * Constructs an image source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ImageSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new image source\n */\n actual fun fromUnrecognized(source: Any) = when (source) {\n is ImageResource -> fromResource(source)\n is Image -> fromImage(source)\n is ImageFactory -> fromImageFactory(source)\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ImageSource(source)\n }\n }\n\n /**\n * Image post-processing routine.\n */\n @Suppress(\"UNCHECKED_CAST\")\n val imagePostprocessor get() = postprocessor as ResourcePostprocessor?\n /**\n * Indicates whether this image source is a multi-platform resource.\n */\n val isResource get() = source is ImageResource\n /**\n * Indicates whether this image source is a [Image].\n */\n val isImage get() = source is Image\n /**\n * Indicates whether this image source is an image factory.\n */\n val isImageFactory get() = source is ImageFactory\n /**\n * Indicates whether this image source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source multi-platform resource identifier. Call isResource to determine whether the source is a\n * Multi-platform resource.\n */\n fun asResource() = source as ImageResource\n\n /**\n * @return the source [Image]. Call [isImage] to determine whether the source is a [Image].\n */\n fun asImage() = source as Image\n\n /**\n * @return the source [ImageFactory]. Call isImageFactory to determine whether the source is an image\n * factory.\n */\n fun asImageFactory() = source as ImageFactory\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when(source) {\n is ImageResource -> \"Resource: $source\"\n is Image -> \"Image: $source\"\n is ImageFactory -> \"ImageFactory: $source\"\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n\n /**\n * Factory for delegating construction of images. WorldWind shapes configured with a ImageFactory construct\n * their images lazily, typically when the shape becomes visible on screen.\n */\n interface ImageFactory {\n /**\n * Image factory runs asynchronously by default, but this behavior can be changed by overriding current attribute.\n */\n val isRunBlocking: Boolean get() = false\n\n /**\n * Returns the image associated with this factory. This method may be called more than once and may be called\n * from a non-UI thread. Each invocation must return an image with equivalent content, dimensions and\n * configuration. Any side effects applied to the WorldWind scene by the factory must be executed on the main\n * thread.\n *\n * @return the image associated with this factory\n */\n fun createImage(): Image?\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.Image\n\nopen class ImageTexture(image: Image) : Texture(image.width, image.height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: Image? = image\n override val hasMipMap = isPowerOfTwo(image.width) && isPowerOfTwo(image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.Tile\nimport org.w3c.dom.Image\nimport org.w3c.dom.events.Event\n\nactual open class ImageTile actual constructor(\n sector: Sector, level: Level, row: Int, column: Int\n): Tile(sector, level, row, column), ResourcePostprocessor {\n actual var imageSource: ImageSource? = null\n actual var cacheSource: ImageSource? = null\n\n /**\n * Repeat image.onLoad event defined in RenderResourceCache to continue retrieval of original unprocessed image\n */\n override suspend fun process(resource: Image) = resource.also { resource.onload?.invoke(Event(\"load\")) as Unit }\n}","package earth.worldwind.util\n\n/**\n * Logs selected message types to the console.\n */\nactual object Logger {\n actual val ERROR = 1\n actual val WARN = 2\n actual val INFO = 3\n actual val DEBUG = 4\n\n /**\n * Indicates the current logging level [ERROR], [WARN], [INFO] or [DEBUG].\n */\n var loggingLevel = ERROR\n\n actual fun isLoggable(priority: Int) = priority in ERROR until loggingLevel\n\n actual fun log(priority: Int, message: String, tr: Throwable?) {\n if (isLoggable(priority)) {\n val messageWithTrace = tr?.run { message + '\\n' + stackTraceToString() } ?: message\n when (priority) {\n ERROR -> console.error(messageWithTrace)\n WARN -> console.warn(messageWithTrace)\n INFO -> console.info(messageWithTrace)\n else -> console.log(messageWithTrace)\n }\n }\n }\n\n actual fun logMessage(level: Int, className: String, methodName: String, message: String, tr: Throwable?) =\n makeMessage(className, methodName, message).also { log(level, it, tr) }\n\n actual fun makeMessage(className: String, methodName: String, message: String) =\n \"$className.$methodName: ${messageTable[message] ?: message}\"\n}","package earth.worldwind.util\n\n/**\n * JS use BasicPool instead of SynchronizedPool\n */\nactual class SynchronizedPool: BasicPool()","package earth.worldwind.util.kgl\n\nimport org.khronos.webgl.*\n\nactual data class KglShader(val obj: WebGLShader? = null) {\n actual companion object{ actual val NONE = KglShader() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglProgram(val obj: WebGLProgram? = null) {\n actual companion object{ actual val NONE = KglProgram() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglUniformLocation(val obj: WebGLUniformLocation? = null) {\n actual companion object{ actual val NONE = KglUniformLocation() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglBuffer(val obj: WebGLBuffer? = null) {\n actual companion object{ actual val NONE = KglBuffer() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglTexture(val obj: WebGLTexture? = null) {\n actual companion object{ actual val NONE = KglTexture() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglFramebuffer(val obj: WebGLFramebuffer? = null) {\n actual companion object{ actual val NONE = KglFramebuffer() }\n actual fun isValid() = obj != null\n}\n\nclass WebKgl(val gl: WebGLRenderingContext) : Kgl {\n\n override val hasMaliOOMBug = false\n\n override fun getParameteri(pname: Int): Int = gl.getParameter(pname) as Int\n\n override fun getParameterf(pname: Int): Float = gl.getParameter(pname) as Float\n\n override fun getParameteriv(pname: Int): IntArray = gl.getParameter(pname) as IntArray\n\n override fun getParameterfv(pname: Int): FloatArray = gl.getParameter(pname) as FloatArray\n\n override fun createShader(type: Int) = KglShader(gl.createShader(type))\n\n override fun shaderSource(shader: KglShader, source: String) = gl.shaderSource(shader.obj, source)\n\n override fun compileShader(shader: KglShader) = gl.compileShader(shader.obj)\n\n override fun deleteShader(shader: KglShader) = gl.deleteShader(shader.obj)\n\n override fun getShaderParameteri(shader: KglShader, pname: Int): Int {\n val value = gl.getShaderParameter(shader.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getProgramInfoLog(program: KglProgram): String = gl.getProgramInfoLog(program.obj) ?: \"\"\n\n override fun getShaderInfoLog(shader: KglShader): String = gl.getShaderInfoLog(shader.obj) ?: \"\"\n\n override fun createProgram() = KglProgram(gl.createProgram())\n\n override fun deleteProgram(program: KglProgram) = gl.deleteProgram(program.obj)\n\n override fun attachShader(program: KglProgram, shader: KglShader) = gl.attachShader(program.obj, shader.obj)\n\n override fun linkProgram(program: KglProgram) = gl.linkProgram(program.obj)\n\n override fun useProgram(program: KglProgram) = gl.useProgram(program.obj)\n\n override fun getProgramParameteri(program: KglProgram, pname: Int): Int {\n val value = gl.getProgramParameter(program.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getUniformLocation(program: KglProgram, name: String) =\n KglUniformLocation(gl.getUniformLocation(program.obj, name))\n\n override fun bindAttribLocation(program: KglProgram, index: Int, name: String) =\n gl.bindAttribLocation(program.obj, index, name)\n\n override fun createBuffer() = KglBuffer(gl.createBuffer())\n\n override fun bindBuffer(target: Int, buffer: KglBuffer) = gl.bindBuffer(target, buffer.obj)\n\n override fun bufferData(target: Int, size: Int, sourceData: ShortArray, usage: Int, offset: Int) {\n val arr = sourceData.unsafeCast()\n val len = size / 2\n gl.bufferData(target, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len), usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: IntArray, usage: Int, offset: Int) {\n val arr = sourceData.unsafeCast()\n val len = size / 4\n gl.bufferData(target, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len), usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: FloatArray, usage: Int, offset: Int) {\n val arr = sourceData.unsafeCast()\n val len = size / 4\n gl.bufferData(target, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len), usage)\n }\n\n override fun deleteBuffer(buffer: KglBuffer) = gl.deleteBuffer(buffer.obj)\n\n override fun vertexAttribPointer(\n location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int\n ) = gl.vertexAttribPointer(location, size, type, normalized, stride, offset)\n\n override fun enableVertexAttribArray(location: Int) = gl.enableVertexAttribArray(location)\n\n override fun disableVertexAttribArray(location: Int) = gl.disableVertexAttribArray(location)\n\n override fun enable(cap: Int) = gl.enable(cap)\n\n override fun disable(cap: Int) = gl.disable(cap)\n\n override fun uniform1f(location: KglUniformLocation, f: Float) =\n gl.uniform1f(location.obj, f)\n\n override fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 1\n gl.uniform1fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform1i(location: KglUniformLocation, i: Int) =\n gl.uniform1i(location.obj, i)\n\n override fun uniform2f(location: KglUniformLocation, x: Float, y: Float) =\n gl.uniform2f(location.obj, x, y)\n\n override fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 2\n gl.uniform2fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform2i(location: KglUniformLocation, x: Int, y: Int) =\n gl.uniform2i(location.obj, x, y)\n\n override fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float) =\n gl.uniform3f(location.obj, x, y, z)\n\n override fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 3\n gl.uniform3fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int) =\n gl.uniform3i(location.obj, x, y, z)\n\n override fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float) =\n gl.uniform4f(location.obj, x, y, z, w)\n\n override fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 4\n gl.uniform4fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int) = gl.uniform4i(location.obj, x, y, z, w)\n\n override fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 9\n gl.uniformMatrix3fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 16\n gl.uniformMatrix4fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun lineWidth(width: Float) = gl.lineWidth(width)\n\n override fun polygonOffset(factor: Float, units: Float) = gl.polygonOffset(factor, units)\n\n override fun cullFace(mode: Int) = gl.cullFace(mode)\n\n override fun frontFace(mode: Int) = gl.frontFace(mode)\n\n override fun depthFunc(func: Int) = gl.depthFunc(func)\n\n override fun depthMask(mask: Boolean) = gl.depthMask(mask)\n\n override fun blendFunc(sFactor: Int, dFactor: Int) = gl.blendFunc(sFactor, dFactor)\n\n override fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean) = gl.colorMask(r, g, b, a)\n\n override fun viewport(x: Int, y: Int, width: Int, height: Int) = gl.viewport(x, y, width, height)\n\n override fun clear(mask: Int) = gl.clear(mask)\n\n override fun clearColor(r: Float, g: Float, b: Float, a: Float) = gl.clearColor(r, g, b, a)\n\n override fun createTexture() = KglTexture(gl.createTexture())\n\n override fun deleteTexture(texture: KglTexture) = gl.deleteTexture(texture.obj)\n\n override fun texImage2D(\n target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?\n ) = gl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer?.unsafeCast())\n\n override fun activeTexture(texture: Int) = gl.activeTexture(texture)\n\n override fun bindTexture(target: Int, texture: KglTexture) = gl.bindTexture(target, texture.obj)\n\n override fun generateMipmap(target: Int) = gl.generateMipmap(target)\n\n override fun texParameteri(target: Int, pname: Int, value: Int) = gl.texParameteri(target, pname, value)\n\n override fun drawArrays(mode: Int, first: Int, count: Int) = gl.drawArrays(mode, first, count)\n\n override fun drawElements(mode: Int, count: Int, type: Int, offset: Int) = gl.drawElements(mode, count, type, offset)\n\n override fun getError() = gl.getError()\n\n override fun finish() = gl.finish()\n\n override fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer) = gl.bindFramebuffer(target, framebuffer.obj)\n\n override fun createFramebuffer() = KglFramebuffer(gl.createFramebuffer())\n\n override fun deleteFramebuffer(framebuffer: KglFramebuffer) = gl.deleteFramebuffer(framebuffer.obj)\n\n override fun checkFramebufferStatus(target: Int) = gl.checkFramebufferStatus(target)\n\n override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int) =\n gl.framebufferTexture2D(target, attachment, textarget, texture.obj, level)\n\n override fun readPixels(\n x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray\n ) = gl.readPixels(x, y, width, height, format, type, Uint8Array(buffer.unsafeCast().buffer))\n\n override fun pixelStorei(pname: Int, param: Int) = gl.pixelStorei(pname, param)\n}\n","package earth.worldwind.util.locale\n\nimport kotlinx.browser.window\n\nactual val language = window.navigator.language.split('-')[0]\nactual val country = window.navigator.language.split('-')[1]",null,null,null,null,null,null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.Instant\n\nactual fun convertToInstant(t: Any) = when(t) {\n is kotlin.js.Date -> Instant.fromEpochMilliseconds(t.getTime().toLong())\n else -> throw IllegalArgumentException(\"Can't convert to LocalDateTime: $t\")\n}\n",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.render.Renderable\n\n/**\n * Interface for processing user input to interact with renderables.\n */\ninterface SelectDragCallback {\n /**\n * Nothing was picked due to picking point is outside the terrain.\n */\n fun onNothingPicked() {}\n\n /**\n * Nothing context was requested due to selected point is outside the terrain.\n */\n fun onNothingContext() {}\n\n /**\n * Terrain position was picked.\n *\n * @param position picked terrain position\n */\n fun onTerrainPicked(position: Position) {}\n\n /**\n * Terrain context at some position was requested.\n *\n * @param position picked terrain position\n */\n fun onTerrainContext(position: Position) {}\n\n /**\n * Check if renderable is pick-able.\n *\n * @param renderable some renderable intended to be picked\n * @return renderable is pick-able\n */\n fun canPickRenderable(renderable: Renderable) = false\n\n /**\n * Some renderable was picked.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderablePicked(renderable: Renderable, position: Position) {}\n\n /**\n * Some renderables context was requested.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderableContext(renderable: Renderable, position: Position) {}\n\n /**\n * Check if picked renderable is movable.\n *\n * @param renderable picked renderable\n * @return picked renderable is movable\n */\n fun canMoveRenderable(renderable: Renderable) = false\n\n /**\n * Renderable was moved from ane position to another.\n *\n * @param renderable picked renderable which is moving\n * @param fromPosition previous position\n * @param toPosition current position\n */\n fun onRenderableMoved(renderable: Renderable, fromPosition: Position, toPosition: Position) {}\n\n /**\n * Renderable movement was finished\n *\n * @param renderable renderable which was moved\n * @param position last position during movement\n */\n fun onRenderableMovingFinished(renderable: Renderable, position: Position) {}\n\n /**\n * Renderable was double-tapped or double-clicked\n *\n * @param renderable renderable which was double-tapped or double-clicked\n * @param position picked terrain or renderable center position\n */\n fun onRenderableDoubleTap(renderable: Renderable, position: Position) {}\n}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(960);\n"],"names":["root","factory","exports","module","define","amd","this","createErrorType","name","init","superErrorClass","JsJodaException","message","Error","captureStackTrace","constructor","stack","apply","arguments","toString","prototype","Object","create","DateTimeException","cause","msg","DateTimeParseException","text","index","parsedString","errorIndex","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","_inheritsLoose","subClass","superClass","__proto__","_assertThisInitialized","self","ReferenceError","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","assert$1","freeze","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","matches","RegExp","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","nanoString","rval","slice","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","prop","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","MONTHS","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","valueOf","dayOfWeek","style","locale","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","p1","p2","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","date","time","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","_ch","ap","hap","nod","cod","lod","sod","mod","los","cos","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","year","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","PARSER","PARSER$1","PARSER$2","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","UTC","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","MAX_WIDTH$1","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","_zeroSecs","_hi","_lo","_ldt","div","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","day","hour","secVal","nanoVal","sec","toEpochSecond","StringBuilder","_str","end","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","MonthDay","dayOfMonth","_month","_day","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","MAX_VALUE","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","f","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","withOffsetSameLocal","compare","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN_VALUE","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","used","jsJodaExports","use","fn","event","event1","event2","event3","event4","","expect","update","oldValue","delta","initial","trace","isoDayNumber","","","ofZone","zoneOffset","decoder","epochMilliseconds","isoString","fixOffsetRepresentation","epochSeconds","nanosecondAdjustment","q","sum","offsetString","nanosecond","monthNumber","timeZone","ImageResource","engine","AbstractTutorial","Color","Ellipse","MGRSGraticuleLayer","Path","listOf","Polygon","ShowTessellationLayer","SurfaceImage","scope","window","it","$currentTutorial","$tutorials","$actionsContainer","$wwd","document","getElementById","wwd","WorldWindow","select","actionsContainer","tutorials","mapOf","BasicTutorial","CameraViewTutorial","LookAtViewTutorial","PlacemarksTutorial","PathsTutorial","PolygonsTutorial","EllipsesTutorial","LabelsTutorial","SightlineTutorial","SurfaceImageTutorial","ShowTessellationTutorial","MGRSGraticuleTutorial","WmsLayerTutorial","WmtsLayerTutorial","currentTutorial","BackgroundLayer","GoogleLayer","StarFieldLayer","AtmosphereLayer","BasicElevationCoverage","element","innerHTML","onchange","target","actionName","$actionName","onclick","tutorial","setCameraAction","aircraft","airport","heading","distanceMeters","tilt","setLookAtAction","altitude","LookAt","Position","$this$launch","$completion","launch","renderable","FileResource","identifier","userObject","layer","terrainPosition","po","MutableSharedFlow","asSharedFlow","gl","renderResourceCache","globe","tessellator","frameController","frameMetrics","Globe","Wgs84Projection","BasicTessellator","BasicFrameController","LayerList","Camera","GoToAnimator","RenderContext","DrawContext","initLocation","initAltitude","VertexAttrib","DrawElements","lambda","lhs","rhs","DrawShapeState","bindTexture","dc","DrawableQueue","inDegrees","angle","degrees","radians","coerceIn","adjustExtremes","rExtremes","s","sExtremes","t","tExtremes","p","pdr","pds","pdt","swapAxes","aExtremes","bExtremes","tmp","intersectsAt","plane","effectiveRadius","dq1","bq1","bq2","z","Vec3","Ellipsoid","semiMajorAxis","inverseFlattening","Frustum_init_$Init$","Viewport","Line_init_$Init$","Location_init_$Init$","latitude","longitude","LookAt_init_$Init$","altitudeMode","roll","Matrix3_init_$Init$","Matrix4_init_$Init$","xUnits","yUnits","distance","Position_init_$Init$","Location","Range_init_$Init$","lower","upper","Sector_init_$Init$","sector","minLatitude","maxLatitude","minLongitude","maxLongitude","matrixWidth","matrixHeight","tileWidth","tileHeight","entries","Vec2_init_$Init$","Vec3_init_$Init$","Vec2","Viewport_init_$Init$","height","MGRSString","convertUTMToMGRS","easting","northing","gridEasting","gridNorthing","east","north","letters","roundMGRS","getGridValues","setNumber","aaPattern","errorCode","getLatitudeLetter","latDeg","makeMGRSString","intValue","j","iEast","sEast","iNorth","sNorth","hemisphere","PolarCoordConverter","ellipsoid","projection","ElevationModel","LruMemoryCache","tileMatrixSet","tileFactory","AbstractElevationCoverage","AbsentResourceList","WmsElevationCoverage","BasicTerrain","level","row","column","$level","Tile","lazy","imageSource","imageOptions","ImageOptions","RenderableLayer","surfaceImage","AbstractLayer","asInt","AbstractShaderProgram","AbstractAtmosphereProgram","greatCircleIntersectionAtLongitude","deltaLon","getDeltaLongitude","midPoint","greatCircleMidPoint","greatCircleIntersectionAtLatitude","azimuth","calculateLookAtProperties","rc","pixelSizeMeters","pixelSizeDegrees","GraticuleSupport","AbstractTile","scaleModulo","maxResolution","AbstractGraticuleLayer","applyRenderingParams","params","opacity","o","color","applyOpacity","compArray","colorValue","path","getLineShapeAttributes","createLineShapeAttributes","attrs","lineWidth","selectMGRSRenderables","getVisibleZones","zoneList","vs","gridRectangle","getGridRectangleForSector","rectangle","minLat","coerceAtLeast","maxLat","coerceAtMost","gridSector","x1","getGridColumn","x2","y1","getGridRow","y2","col","MGRSGridZone","getGridSector","minLon","maxLon","AbstractUTMGraticuleLayer","MGRSOverview","setSquareNames","setSquareName","sz","tenMeterDegree","mgrs","AbstractGraticuleTile","utm","isPointInRange","point","altitudeAboveGround","UTMZone","UTMZoneSector","SWEasting","SWNorthing","UTMSquareSector","","adjustDateLineCrossingPoints","corners","locationsCrossDateLine","locations","posNext","lonSign","corner","boundingSector","lat","lon","Sector","isNorthNeighborInView","isEastNeighborInView","ImageTile","minLatPercent","maxLatPercent","numLevels","tileSize","transparent","TiledImageLayer","MercatorSector","tileOrigin","firstLevelDelta","levelSet","TiledSurfaceImage","layerName","lyrs","overlay","MercatorTiledImageLayer","seen1","datatype","arraysize","ucd","serializationConstructorMarker","metadata","data","starDataSource","$wmsTileFactory","serviceAddress","coverage","imageFormat","resolution","TiledElevationCoverage","buildTileMatrixSet","buildTileFactory","layerNames","lc","createWmsSurfaceImage","wmsLayers","layerLimit","wmsLayerConfig","levelSetConfig","config","$this$$receiver","$wmsLayers","joinToString","$tmp1_let","$this$withContext","l","wmsVersion","styleNames","createWmtsSurfaceImage","wmtsLayer","compatibleTileMatrixSets","determineCoordSysCompatibleTileMatrixSets","determineCompatibleTileMatrixSet","capabilities","tileMatrixSetIds","compatibleSet","CompatibleTileMatrixSet","tileMatrixSetId","previousHeight","tileMatrix","topLeftCornerValue","topLeftCorner","compatibleTileMatrixSet","createWmtsTileFactory","resourceUrl","WmtsTileFactory","baseUrl","determineKvpUrl","dcp","getMethods","constraints","styleIdentifier","buildWmtsKvpTemplate","kvpServiceAddress","createWmtsLevelSet","boundingBox","imageSize","$wmtsLayer","$layerIdentifier","layerIdentifier","template","tileMatrixIdentifiers","title","onlineResource","logoURL","CRS","minx","maxx","miny","maxy","resx","resy","version","updateSequence","service","capability","request","layers","exception","emptyList","WmsException","addressType","address","city","stateOrProvince","postCode","country","voiceTelephone","facsimileTelephone","electronicMailAddress","contactAddress","contactPersonPrimary","contactPerson","contactOrganization","post","http","unitSymbol","default","multipleValues","nearestValue","formats","south","west","authority","abstract","keywordList","_styles","_referenceSystems","_geographicBoundingBox","_boundingBoxes","_dimensions","_attribution","_authorityUrls","identifiers","metadataUrls","dataUrls","featureListUrls","_maxScaleDenominator","_minScaleDenominator","isQueryable","_cascaded","isOpaque","isNoSubsets","_fixedWidth","_fixedHeight","url","getCapabilities","getMap","getFeatureInfo","dcpType","fees","accessConstraints","contactInformation","maxHeight","legendUrls","styleSheetUrl","styleUrl","deliveryPoints","administrativeArea","postalCode","electronicMailAddresses","crs","lowerCorner","upperCorner","allowedValues","phone","hoursOfService","contactInstructions","postMethods","dcps","operations","voice","fax","individualName","positionName","contactInfo","role","keywords","serviceType","serviceTypeVersions","providerName","serviceContact","serviceIdentification","serviceProvider","operationsMetadata","contents","themes","serviceMetadataUrls","tileMatrixSets","unitOfMeasure","valueDefault","boundingBoxes","wgs84BoundingBox","styles","infoFormats","tileMatrixSetLinks","resourceUrls","dimensions","resourceType","isDefault","layerRefs","scaleDenominator","tileMatrixIdentifier","minTileRow","maxTileRow","minTileCol","maxTileCol","supportedCrs","wellKnownScaleSet","tileMatrices","tileMatrixSetLimits","BoundingBox","AbstractRenderable","Color_init_$Init$","red","green","blue","alpha","attributes","TextRenderer","TextCacheKey","isRT","byteCount","AbstractBufferObject","imageConfig","center","majorRadius","minorRadius","AbstractShape","RenderData","BoundingSphere","positions","PlacemarkAttributes_init_$Init$","imageColor","imageOffset","imageScale","minimumImageScale","isDrawLabel","isDrawLeader","isDepthTest","labelAttributes","leaderAttributes","GLUtessellatorCallbackAdapter","mutableListOf","ShapeAttributes_init_$Init$","isDrawInterior","isDrawOutline","isDrawVerticals","isDepthWrite","isLightingEnabled","interiorColor","outlineColor","outlineWidth","interiorImageSource","outlineImageSource","AbstractSurfaceRenderable","TextAttributes_init_$Init$","Font_init_$Init$","font","textColor","textOffset","isOutlineEnabled","maxTrys","minCheckInterval","source","levelNumber","tileDelta","roundToInt","Level","capacity","lowWater","declination","rightAscension","keepWidth","roundUp","","this$0","nextDigit","pointPos","mb","","receiver","","split","","invalidFormat","","createTimeField","upperCase","tz","offsetAt","takeLast","createIntegerField","insertField","createHexField","createOctalField","createCharacter","endStage","setDone","toInt","endStage$default","padStart","padEnd","insertField$default","createFloat","fractionPartLength","roundToLong","fl","rest","fractionalFormat","createScientific","ExponentFormatter","createAutoFloat","args","StringFormat","eUp","head","frame","leq","GLUvertex","GLUface","GLUhalfEdge","makeDormant","requireState","newState","gotoState","addVertex","coords","vertexData","flushCache","vertex","CachedVertex","dot","u","v","PriorityQ","PQnode","PQhandleElem","lt","swap","PriorityQHeap","FaceCount_init_$Init$","eStart","render","marked","addToTrail","freeTrail","isEven","RenderFan","RenderStrip","RenderTriangle","addWinding","eDst","eSrc","regionBelow","regionAbove","$tess","connectTimeout","requestTimeout","HttpClient","$config","$connectTimeout","$requestTimeout","$this$HttpClient","$this$install","$this$null","unitSquareTransform","x3","y3","x4","y4","minX","maxX","minY","maxY","modulus","WorldWindowController","EventListener","keyCode","preventDefault","tabIndex","focus","callback","canvas","cacheCapacity","WorldWind","WebKgl","RenderResourceCache","BasicWorldWindowController","KeyboardControls","SelectDragDetector","Frame","preventDefaultListener","onGestureEvent","navigator","maxTouchPoints","setProperty","addEventListener","statusMessage","GestureRecognizer","clientX","clientY","DragRecognizer","PanRecognizer","changedTouches","item","pickPoint","pickList","redrawRequired","highlighted","topPickedObject","recognizer","toPosition","fromPosition","clapToGround","movePoint","ClickRecognizer","TapRecognizer","controller","AbstractSource","$elevationSource","$key","AbstractTiledElevationCoverage","MainScope","AbstractTiledImageLayer","createElement","getContext","AbstractMercatorImageTile","family","weight","variant","horizontalAlignment","$imageSource","$options","$result","$fileResource","$postprocessor","$image","$postprocessorExecuted","postprocessor","URL","revokeObjectURL","src","image","Texture","isPowerOfTwo","BasicPool","KglShader","KglProgram","KglUniformLocation","KglBuffer","KglTexture","KglFramebuffer","language","PickedObject","positionCopy","r8","g8","b8","pickedObject","removeAll","lookAtPosition","cameraPosition","lookAt","fromPoint","toPoint","to","elevation","sinFovY2","radius","pickMode","isRedrawRequested","modelview","eyeAltitude","far","maxDepthValue","near","distanceToSurface","maxNearDistance","pool","instance","BasicDrawableTerrain","attribLocation","bufferBound","colorAttachment","depthAttachment","fill","framebuffer","program","textureUnit","texture","textureUnitIndex","buffer","pixelCount","pixelBuffer","resultSet","idx","matrix","mode","prim","DrawableLines","drawable","groupId","order","depth","newEntries","entry","sortWith","DrawableScreenTexture","that","DrawableShape","DrawableSightline","depthTexture","terrain","terrainOrigin","DrawableSurfaceColor","DrawableSurfaceShape","scratchList","terrainSector","shapeCount","shape","primIdx","DrawableSurfaceTexture","texCoordMatrix","usingTerrainAttrs","textureSector","DrawableTessellation","pickedObjectId","BasicShaderProgram","pickRay","pickedObjects","pickViewport","pickPointOnly","objectFound","topObjectId","topObject","terrainObject","normalizedLat","a1","a2","stride","rMin","rMax","sMin","sMax","tMin","tMax","rLen","sLen","tLen","rSum","sSum","tSum","cx","cy","cz","rx2","ry2","rz2","minHeight","heights","points","centroidLat","centroidLon","minDist2","dist2","frustum","coherentPlane","nr","viewport","w","subViewport","bln","blf","brn","brf","tln","tlf","trn","trf","left","right","bottom","top","mvpInv","va","vb","nl","nb","nt","nn","nf","pointA","pointB","elements","vx","vy","vz","sx","sy","epsilon","vert1x","vert1y","vert1z","vert2x","vert2y","vert2z","vert0x","vert0y","vert0z","edge1x","edge1y","edge1z","edge2x","edge2y","edge2z","px","py","pz","det","invDet","tx","ty","qx","qy","qz","offsetSec","offsetIn","offsetHours","latDegrees","lonDegrees","latitudeDegrees","longitudeDegrees","latitudeRadians","longitudeRadians","location","lat1","lon1","lat2","lon2","azimuthRadians","lat1Radians","lon1Radians","lat2Radians","lon2Radians","c","distanceRadians","latRadians","lonRadians","cosLat","sinLat","cosAzimuth","sinAzimuth","sinDistance","cosDistance","endLatRadians","endLonRadians","dLon","dPhi","dLat","xScale","yScale","dst","srcDeltaLat","srcDeltaLon","dstDeltaLat","dstDeltaLon","xs","ys","xt","yt","ma","ma0","ma1","ma2","contentEquals","contentHashCode","A","vv","big","k","dum","imax","ii","ip","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","zScale","viewportWidth","viewportHeight","vFieldOfView","nearDistance","farDistance","aspect","nearHeight","nearWidth","mx","my","mz","c11","c22","c33","c12","c13","c23","numPoints","dx","dy","dz","ma3","mr1","mr2","mr3","mr4","depthOffset","cr","sr","sh","ct","st","result1","result2","result3","u2","u2p1","i1","i2","i3","itemp","sw","nearResult","farResult","mw","nx","ny","nz","nw","fx","fy","fz","fw","Offset","vector","da","db","line","lDotV","magnitude","minLatDegrees","minLonDegrees","deltaLatDegrees","deltaLonDegrees","maxLatDegrees","maxLonDegrees","empty","deltaLatitudeDegrees","deltaLongitudeDegrees","lOrd","toLong","lRow","lCol","deltaLat","TileMatrix","TileMatrixSet","degreesPerPixel","nearestIdx","nearestDelta2","delta2","converter","MGRSCoordConverter","err","MGRSCoord","ups","convertUPSToMGRS","falseEasting","falseNorthing","ltr2LowValue","invF","es2","sLat","esSin","powEs","cLat","onePlusEs","oneMinusEs","dLam","rho","Easting","Northing","tempPhi","minEasting","maxEasting","minNorthing","maxNorthing","phi","sinPhi","aOrNull","fOrNull","originLatitude","centralMeridian","TMCoordConverter","TMCoord","scaleFactor","cm","tn","tn2","tn3","tn4","tn5","tempLong","tempOrigin","c3","c5","c7","tan2","tan4","tan6","eta","eta2","eta3","eta4","sn","tmd","t1","t2","t3","t4","t5","t6","t7","t8","t9","ftphi","t10","de","t11","t12","t13","t14","t15","t16","t17","UPSCoordConverter","UPSCoord","UTMCoordConverter","UTMCoord","tempZone","tm","ec2","numLat","numLon","verticalExaggeration","origin","rowStride","retrieve","maxTimestamp","timestamp","gridWidth","gridHeight","targetIdx","x0","y0","xf","yf","targetPixelSpan","tileBlock","TileBlock","rasterWidth","rasterHeight","matrixMinLat","matrixMaxLat","matrixMinLon","matrixMaxLon","matrixDeltaLat","matrixDeltaLon","uIdx","i0","fract","col0","col1","vIdx","j0","row0","row1","tileArray","intersection","uMin","uMax","colMin","colMax","vMin","vMax","rowMin","rowMax","rIdx","hIdx","j1","wIdx","i0j0","i1j0","i0j1","i1j1","iMin","iMax","jMin","jMax","rowJMin","rowJMax","colIMin","colIMax","texel","cosLon","sinLon","rpm","eqr2","pol2","ux","uy","uz","ey","ez","eqr","elevIndex","xOffset","yOffset","zOffset","lonIndex","rowIndex","latIndex","colIndex","hgt","resultIndex","skip","h","zpx","zpxSqrt","ra2","e4","evoluteBorderTest","rad1","rad2","rad3","aTan","s2","m2","tile","found","triStripElements","sf","tf","si","ti","tileRowStride","i00","i10","i01","i11","f00","f10","f01","f11","TerrainTile","childs","vertexTexCoords","lineElements","FloatBufferObject","ds","tIdx","sIdx","toShort","ve","borderHeight","","invWavelength","g","kr","km","fragMode","direction","eyePoint","equatorialRadius","atmosphereAltitude","ar","lightLocation","SkyProgram","GroundProgram","altitudes","ShortBufferObject","DrawableGroundAtmosphere","nightTexture","textureBound","DrawableSkyAtmosphere","renderingParams","paramsKey","needsToUpdate","labelOffsetDegrees","getLabelOffset","labelPos","pathType","label","surfacePoint","p1In","p2In","outPoint","inPoint","GraticuleRenderingParams","ge","computePositionFromUTM","computePositionFromUPS","utmZone","utmZoneSector","squares","startEasting","startNorthing","cols","rows","squaresArray","UTMSquareZone","initRenderingParams","gz","neighbor","graticuleType","createSquaresUPS","createSquaresUTM","polyline","lineSector","gt","contains","zoneNumber","toList","latitude1","latitude2","UTMExtremes","levelExtremes","extremes","pixelSize","eastingOffset","labelEasting","labelNorthing","labelHemisphere","northingOffset","viewFrustum","gridStep","gridStepTimesTen","currentHemisphere","sb","drawMetricLabels","createSubGrids","sg","UTMSquareGrid","GridElement","pA","pB","centerPoint","squareGrid","firstRow","lastRow","firstCol","lastCol","dLatPercent","firstRowPercent","firstColLon","d1","d2","childLevel","d0","t0","northRow","southRow","westCol","eastCol","percent","sunTexture","starData","starsPositionsBuffer","julianDate","sunCelestialLocation","sunPositionsBuffer","StarFieldProgram","$program","$julianDate","$starsPositionsBuffer","$sunPositionsBuffer","$sunTexture","DrawableLambda","sunBuffer","indexes","positionIndex","starInfo","pointSize","raIndex","decIndex","magIndex","starMetaInfo","numDays","minMag","maxMag","tileSector","urlString","retrieveWmsCapabilities","wmsCapabilities","DefaultHttpClient","bodyAsText","withContext","matchingCoordinateSystems","wmsLayerCoordinateSystems","toMutableSet","toSet","WmsLayerConfig","imageFormats","layerCapabilities","LevelSetConfig","minScaleDenominator","layerCapability","minRadiansPerPixel","retrieveWmtsCapabilities","flipRow","regex","lowerValues","upperValues","toDouble","heightLimits","extent","hsv","rr","gg","bb","attachment","currentFramebuffer","textureName","tanFov2","modelPoint","ew","zOrder","cameraDistance","sortOrder","hasMipMap","widthPow2","powerOfTwoCeiling","bytesPerRow","heightPow2","param","parameters","currentTexture","currentBuffer","currentProgram","fs","enable","sightline","visibleColor","occludedColor","drawableCount","highlightAttributes","minDistance2","distance2","metersPerPixel","intervals","topRange","Range","outlineRange","sideRange","elementBuffer","toShortArray","drawState","elementBufferKey","side","outline","calculatedIntervals","sanitizedIntervals","spineCount","majorArcRadians","minorArcRadians","isStandardAxisOrientation","headingAdjustment","deltaRadians","globeRadius","arrayOffset","spineIdx","spineRadius","azimuthDegrees","arcRadius","loc","isExtrudedSkirt","offsetVertexIndex","texCoord2d","maxRadius","subdivisions","subdivisionCount","actualRotation","boundingRectForUnitSquare","SightlineProgram","IntBufferObject","toIntArray","vertexCount","begin","numSubsegments","deltaDist","deltaAlt","dist","alt","intermediate","Placemark","offsetX","offsetY","scaleX","scaleY","activeTexture","visibilityScale","absTilt","camera","actualTilt","labelTexture","outData","polygonData","boundaryEdge","errnum","noIntermediatePoints","tess","v0","v1","v2","errNum","errStr","increment","newArray","SurfaceTextureProgram","retrieveCurrentLevel","currentAncestorTile","currentAncestorTexture","children","ancestorTile","ancestorTexture","cacheSource","isCacheAbsent","permanent","resourceId","timeSinceLastMark","latAbsDifference","lonAbsDifference","nearestLat","lonDifference","nearestLon","last","radiansPerPixel","newEntry","oldEntry","spaceRequired","sortedEntries","sortedWith","evicted","meanLongitude","meanAnomaly","eclipticLongitude","eclipticLongitudeRad","obliquityOfTheEcliptic","CelestialLocation","celestialLocation","GMST","dayFraction","firstRowLat","detailFactor","nearestPoint","distanceToCamera","viewingVector","normalVector","latMin","lonMin","latMid","lonMid","latMax","lonMax","childRow","childCol","childSector","child0","child1","child2","cache","cacheSize","fractionWidth","take","createStringField","Specification","reason","convertToInstant","which","aCallback","coords_offset","Dict","DictNode","dict","node","newNode","aNode","aDict","GLUtessellatorImpl","tooLarge","clamped","cacheVertex","mesh","printStackTrace","weights","gapL","gapR","o1","o2","z1","z2","eNext","eSym","ePrev","aONext","bONext","newVertex","eOrig","vNext","vPrev","newFace","fNext","fPrev","eDel","del","vDel","newOrg","fDel","newLface","newVertex1","newVertex2","eOrg","joiningLoops","joiningVertices","eDelSym","eNew","eNewSym","tempHalfEdge","GLUmesh","fHead","vHead","eHead","norm","maxVal","minVal","minVert","maxVert","tNorm","maxLen2","tLen2","area","computedNormal","sUnit","tUnit","PriorityQSort","curr","hCurr","child","hChild","hParent","keyNew","free","hMin","Stack","seed","piv","pqKeys","sortMin","heapMin","fOrig","trail","headSize","tailSize","eTail","edgeState","check","vn","vc","xc","yc","zc","xp","yp","zp","key1","key2","reg1","reg2","e1","reg","newEdge","org","regAbove","eNewUp","regNew","ActiveRegion","regFirst","regLast","regPrev","regUp","eFirst","eLast","eTopLeft","cleanUp","firstTime","isect","needed","orgUp","dstUp","orgLo","dstLo","weights1","weights2","regLo","eLo","orgMin","eBottomLeft","degenerate","vEvent","eTopRight","eLnext","pq","face","up","keepOnlyBoundary","defaultPrevented","state","forwardRadians","sideRadians","sinHeading","cosHeading","headingDegrees","clientWidth","tiltDegrees","clientHeight","rotation","timeStamp","deltaMode","WheelEvent","DOM_DELTA_PIXEL","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","operation","setTimeout","KeyboardControls$handlePan$ref","KeyboardControls$handlePan$ref$lambda","KeyboardControls$handleZoom$ref","KeyboardControls$handleZoom$ref$lambda","KeyboardControls$handleTilt$ref","KeyboardControls$handleTilt$ref$lambda","glAttrs","listener","$entry","handleEvent","bbox","getBoundingClientRect","clientLeft","clientTop","pickCenter","PickedObjectList","cancelAnimationFrame","devicePixelRatio","getExtension","requestAnimationFrame","isPickMode","drawingBufferWidth","drawingBufferHeight","stage","button","Click","touch","delay","pointerType","buttonBit","nextTouch","centroid","touchIdx","TouchWrapper","pointerId","newScale","touch0","touch1","newRotation","tap","tapCount","dirMask","ElevationSource","href","fetch","ok","arrayBuffer","statusText","headers","Int16Array","Float32Array","Uint8Array","cancelChildren","elevationSource","resource","widthDouble","heightDouble","drawImage","srcData","getImageData","$resource","dstData","createImageData","srcRow","putImageData","toBlob","createObjectURL","onerror","deviceMemory","options","fileResource","Image","onload","crossOrigin","ratioW","ratioH","ratio","ImageTexture","CanvasTexture","ctx2D","textSize","lines","strokeOffset","textBaseline","textAlign","fillStyle","strokeStyle","lineCap","lineJoin","translate","strokeText","fillText","textAttributes","measureText","UNPACK_PREMULTIPLY_ALPHA_WEBGL","texImage2D","imageResource","ImageSource","Event","priority","tr","messageWithTrace","stackTraceToString","console","warn","info","log","className","pname","getParameter","createShader","shader","shaderSource","compileShader","deleteShader","getShaderParameter","getProgramInfoLog","getShaderInfoLog","createProgram","deleteProgram","attachShader","linkProgram","useProgram","getProgramParameter","getUniformLocation","bindAttribLocation","createBuffer","bindBuffer","sourceData","usage","arr","bufferData","subarray","deleteBuffer","vertexAttribPointer","enableVertexAttribArray","disableVertexAttribArray","cap","disable","uniform1f","uniform1i","uniform2f","uniform3f","uniform3fv","uniform4f","uniform4fv","transpose","uniformMatrix3fv","uniformMatrix4fv","factor","polygonOffset","frontFace","func","depthFunc","mask","depthMask","sFactor","dFactor","blendFunc","colorMask","createTexture","internalFormat","border","generateMipmap","texParameteri","drawArrays","drawElements","bindFramebuffer","createFramebuffer","textarget","framebufferTexture2D","readPixels","pixelStorei","LN2","O","relativeStart","relativeEnd","finalValue","TypedArray","asUint","taylor_2_bound","taylor_n_bound","searchString","destination","separator","postfix","limit","truncated","transform","iterator","single","uppercase","code","minimumValue","maximumValue","KotlinNothingValueException_init_$Init$","$entryIterator","implFindEntry","ensureCapacity","minCapacity","copyElements","newCapacity","newElements","positiveMod","incremented","decremented","isVarargs","iteratorFactory","pairs","predicate","predicateResultToRemove","exceptionalState","$block","sequence","transformer","ensureItemIterator","nextItemIterator","calcNext","sendWhen","getInitialValue","getNextValue","acc","removed","interceptor","baseKey","safeCast","step","endInclusive","ignoreCase","thisUpper","otherUpper","indent","$indent","radix","firstChar","limitForMaxRadix","limitBeforeMul","input","startIndex","delimiters","chars","charAtIndex","delimiter","currentOffset","nextIndex","isLimited","$delimitersList","$ignoreCase","currentIndex","strings","string","indices","thisOffset","otherOffset","match","getNextMatch","endIndex","rawValue","","isInNanos","isInMillis","normalValue","unitDiscriminator","addValuesMixedRanges","thisMillis","otherNanos","otherMillis","resultMillis","otherNanoRemainder","compareBits","","hasDays","hasHours","hasMinutes","hasSeconds","components","whole","fractional","fractionalSize","isoZeroes","fracString","nonZeroDigits","normalMillis","maxNsInUnit","valueInNs","normalNanos","isoChar","isTimeComponent","shortName","block","initializer","third","storage","base","quotient","rem","ac","bc","uradix","beforeAdding","dividend","collection","expectedSize","comparator","list","destinationOffset","rangeSize","subrange","ArrayList_init_$Init$","initialCapacity","rangeCheck","comparison","$comparator","median","leftIndex","rightIndex","leftValue","rightValue","HashMap_init_$Init$","internalMap","loadFactor","getEntry","chainOrEntry","getChainOrEntryOrNull","equality","LinkedHashMap_init_$Init$","LinkedHashSet_init_$Init$","jClass","givenSimpleName","isInstanceFunction","classifier","isMarkedNullable","jClasses","kClass","StringBuilder_init_$Init$","content","nextPattern","$match","$range","$nextPattern","$input","n1","n2","thisChar","otherChar","bytes","throwOnMalformed","byteIndex","stringBuilder","byte","high","low","byte1","byte2","byte3","byte4","qualifier","shortInfo","hasSeen","stackStart","dropCommonFrames","commonFrames","lastBreak","preLastBreak","messageLines","suppressed","suppressedIndent","sourceUnit","targetUnit","sourceCompareTarget","handler","interfaces","maxSize","masks","currentSize","imask","iid","iidImask","activeBit","intArray","numberIndex","numberWithSettledBit","initValue","$array","ia","descriptor","obj1","obj2","constructorFunction","proto","this_","srcLen","dstLen","newSize","defaultValue","thisNeg","otherNeg","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","numBits","radixLong","digitsPerTime","radixToPower","remDiv","digits","twoPwr32","associatedObjectKey","associatedObjects","suspendArity","kind","ctor","metadataConstructor","iface","possibleActiveBit","arity","jsClass","klassMetadata","fromIndex","toIndex","base64","fromBase64","resultLength","shift","sixBit","needle","middle","toBase64","releaseIntercepted","intercepted","resultContinuation","completion","$receiver","IllegalArgumentException_init_$Init$","RuntimeException_init_$Init$","Exception_init_$Init$","NoSuchElementException_init_$Init$","UnsupportedOperationException_init_$Init$","NullPointerException_init_$Init$","NoWhenBranchMatchedException_init_$Init$","ClassCastException_init_$Init$","otherIterator","ourValue","oldCapacity","internalLastIndex","internalIndex","decrementedInternalIndex","decrementedHead","tail","copyCollectionElements","oldElement","reference","dest","nextNotReady","newLeft","containsAll","rangeStart","rangeEnd","strictIso","infinityString","hasSign","prevUnit","component","dotIndex","afterFirst","allowSpaces","unitName","cont","modified","$elements","iter","insertionRangeCheck","value1","value2","computeNext","chainSize","lastEntry","chain","_head","_tail","classifierName","nullable","$arity","toInsert","newLength","stringCsq","$startIndex","lastStart","advanceToNextCharacter","approx","res","approxDouble","approx2","log2","approxRes","approxRem","bitCount","currentResult","currentException","outcome","annotationClass","size_local","ArrayDeque_init_$Init$","original","HashSet_init_$Init$","IllegalStateException_init_$Init$","IndexOutOfBoundsException_init_$Init$","reverseIndex","pair","getter","setter","paramCount","superType","isPositive","Sequence$iterator$ref$lambda","Iterable$iterator$ref$lambda","throwOnInvalidSequence","charIndex","codePoint","lastTwoBits","threshold","oldChar","newChar","$delimiters","missingDelimiterValue","newIndent","minCommonIndent","lastIndex","marginPrefix","firstNonWhitespaceIndex","startFound","deserializer","previousValue","$this$buildSerialDescriptor","baseClass","klassName","subClassName","missingFields","serialName","typeArguments","failOnMissingTypeArgSerializer","serializers","elementClassifierIfArray","keySerializer","valueSerializer","aSerializer","bSerializer","cSerializer","elementSerializer","rootClass","isNullable","$typeArguments","clazz","cachedResult","types","cachedSerializer","contextualSerializer","shouldBeNullable","$types","typeParameters","sdBuilder","builderAction","","elementsCount","elementDesc","keyDesc","valueDesc","primitive","elementDescriptor","keyDescriptor","valueDescriptor","eSerializer","kSerializer","vSerializer","primitiveSerializer","readIfAbsent","prepareHighMarksArray","slotsCount","elementsInLastSlot","highMarks","generatedSerializer","$primitiveSerializer","serializer","$serialName","objectInstance","","typeParams","elementDescriptors","accumulator","namesHash","kindHash","bufferWithData","tagBlock","tag","$keySerializer","$valueSerializer","$this$buildClassSerialDescriptor","class2ContextualFactory","polyBase2Serializers","polyBase2DefaultSerializerProvider","polyBase2NamedSerializers","polyBase2DefaultDeserializerProvider","provider","concreteClass","assocObject","$factory","another","elementName","annotations","isOptional","composite","decodeSequentially","compositeDecoder","eClass","checkIndex","vIndex","readSize","requiredCapacity","markHigh","slot","offsetInSlot","nextUnmarkedHighIndex","slotOffset","slotMarks","indexInSlot","buildIndices","annotation","nestedName","parentName","childName","inlineDescriptor","currentTag","$deserializer","$previousValue","decodeStructure","typeArgumentsSerializers","serializedClassName","registered","collector","kclass","serial","actualClass","actualSerializer","defaultSerializerProvider","defaultDeserializerProvider","forClass","allowOverwrite","concreteSerializer","answer","baseClassSerializers","previousSerializer","names","previousByName","simpleName","seen","goldenMask","missingFieldsBits","configuration","serializersModule","encodeDefaults","ignoreUnknownKeys","isLenient","allowStructuredMapKeys","prettyPrint","explicitNulls","prettyPrintIndent","coerceInputValues","useArrayPolymorphism","classDiscriminator","allowSpecialFloatingPointValues","useAlternativeNames","namingStrategy","body","isString","coerceToInlineType","deferred","","$deferred","JsonElementMarker$readIfAbsent$ref","JsonElementMarker$readIfAbsent$ref$lambda","suffix","json","$descriptor","strategy","$json","$this_getJsonNameIndex","$name","$this_buildDeserializationNamesMap","resize","readArray","lastToken","readValue","readDeepRecursive","lexer","discriminator","jsonTree","discriminatorToSkip","coerceInputValue","enumIndex","handleUnknown","unknownKey","decodeStringKey","discriminatorHolder","lastPos","c4","currentObject","unparsedPrimitive","absenceIsNull","polyDiscriminator","polyDescriptor","desc","keyKind","appendEscape","lastPosition","appendEsc","startPosition","currentPosition","currentChar","decodedString","takePeeked","appendHex","startPos","fromHexChar","character","consumeBoolean","consumeBooleanLiteral","literalSuffix","expected","actual","initC2ESC","esc","initC2TC","cl","initEscape","initCharToToken","typeParamsSerializers","sd","token","readObject","checkLeadingComma","newMode","skipLeftoverElements","isMapKey","decodeObjectIndex","hasComma","isUnknown","decodeMapIndex","decodingKey","decodeListIndex","currentElement","baseName","deserializationNamesMap","fallbackName","cpos","expectedToken","doConsume","usedAppend","wasUnquotedString","eof","allowLenientStrings","tokenStack","processed","lastIndexOf","hint","hintMessage","hasQuotation","hasChars","tc","closingQuote","keyToMatch","positionSnapshot","onCancelling","invokeImmediately","idempotent","parentContext","initParentJob","active","uCont","handle","delegate","isReusable","callCancelHandler","installParentHandle","releaseClaimedReusableContinuation","cancellationCause","multipleHandlersError","dispatchResume","tryResume","undispatched","dispatcher","eventLoop","resumedState","proposedUpdate","resumeMode","onCancellation","resumeImpl","resumeImpl$default","tryResumeImpl","alreadyResumedError","detachChildIfNonResuable","cancelHandler","idempotentResume","cancelCause","handled","continuation","originalException","thrownException","unconfined","isActive","","","allocateList","finalizeFinishingState","wasCancelling","proposedException","exceptions","finalCause","getFinalRootCause","addSuppressedExceptions","rootCause","seenExceptions","unwrappedCause","unwrapped","finalException","finalState","completeStateFinalization","notifyCancelling","cancelParent","isCancellation","startInternal","addLastAtomic","promoteEmptyToNodeList","promoteSingleToNodeList","createCauseException","getOrPromoteCancellingList","tryMakeCancelling","cancelling","tryMakeCompleting","tryMakeCompletingSlowPath","finishing","notifyRootCause","firstChild","tryFinalizeSimpleState","tryWaitForChild","stateString","isCompleting","job","childJob","handlesException","parentJob","hasNextResult","enqueueReceive","receive","removeReceiveOnCancel","channel","onUndeliveredElement","helpCloseAndGetSendException","closed","helpClose","closedList","","countQueueSize","closeCause","enqueueElement","newBuffer","onBufferOverflow","propertyName","minValue","maxValue","updateValueLocked","undeliveredElementException","","","","","tryEmitLocked","tryEmitNoCollectorsLocked","","dropOldestLocked","newHead","correctCollectorIndexesOnDropOldest","enqueueLocked","curSize","curBuffer","growBuffer","updateBufferLocked","newReplayIndex","newMinCollectorIndex","newBufferEndIndex","newQueueEndIndex","cleanupTailLocked","tryTakeValue","resumes","oldIndex","getPeekedValueLockedAt","resume","tryPeekLocked","findSlotsToResumeLocked","resumesIn","resumeCount","flow","replay","bufferCapacity","currentContext","collectElement","collectJob","emissionParentJob","holder","$element","$context","symbol","fatalCompletion","combined","timeMillis","collectContext","trySuspend","takenState","cancelLater","dispatched","caller","makeCancelHandler","actualCompletion","task","queue","eh","continueCompleting","lastChild","waitChild","$this$sequence","makeNode","joinInternal","joinSuspend","cancellable","cancelMakeCompleting","makeCancelling","causeExceptionCache","causeException","awaitSuspend","main","immediate","yieldContext","hasNextSuspend","otherOp","send","wasClosed","closedForSend","closeAdded","invokeOnCloseHandler","updateBufferSize","resumed","replacement","sendResult","cancelEmitter","emitter","awaitValue","emitted","emitSuspend","newBufferSize0","maxResumeCount","curEmitterIndex","newBufferSize1","subscriptionCount","curSlots","slots","taskContext","fatalException","finallyException","$continuation","prev","$cancellable","addedContext","oldContext","coroutine","extraBufferCapacity","bufferCapacity0","client","userConfig","manageEngine","$this$intercept","engineFactory","$engine","$previousConfigBlock","$configure","$plugin","pluginData","requestData","responseData","response","responseBody","$delegate","$this$writer","callContext","$client","$response","","executeWithinCallContext","checkExtensions","requestedExtension","$requestData","$this$async","unsafeRequestHeaders","callJob","cleanupHandler","$callJob","$cleanupHandler","engineName","requestHeaders","$requestHeaders","$content","$this$buildHeaders","observableContentPhase","BodyProgress$handle$slambda","observableByteChannel","cachedResponseText","addDefaultResponseValidation$lambda$slambda","$this$HttpResponseValidator","$contentType","$body","$this_intercept","defaultTransformers$slambda","$responseJobHolder","container","validateResponse","processException","responseValidators","callExceptionHandlers","expectSuccess","$builder","plugin","wrapContent","requestContentType","contentType","charset","charsets","charsetQuality","sendCharset","responseCharsetFallback","withQuality","withoutQuality","quality","truncatedQuality","allowHttpsDowngrade","$scope","checkHttpMethod","requestJob","clientEngineJob","$requestJob","$handler","nextSender","maxSendCount","requestTimeoutMillis","connectTimeoutMillis","socketTimeoutMillis","checkTimeoutValue","$request","$executionContext","$killer","hasNotNullTimeouts","timeoutMillis","method","executionContext","statusCode","requestTime","developmentMode","fallbackCharset","expectedType","checkCapabilities","HttpStatement$execute$slambda","contentLength","$contentLength","$listener","createWebSocket","urlString_capturingHack","ws_capturingHack","headers_capturingHack","executeWebSocketRequest","$headers_capturingHack","eventListener","$this_buildHeaders","$eventListener","clientConfig","$jsHeaders","$clientConfig","$bodyBytes","$this$buildObject","stream","$stream","chunk","promise","$controller","$responseData","$this_writer","coroutineContext","websocket","installedFeatures","configure","previousConfigBlock","exceptionResponseText","BeforeReceive","actualCharset","requestBuilder","killer","savedCall","rawResponse","status","session","bodyBytes","frameData","definition","spaceToPlus","$tmp0_apply","$spaceToPlus","encodeFull","$encodeFull","plusIsSpace","encodeSlash","symbolSize","release","prefixEnd","digit1","digit2","contentSubtype","existingContent","slashesCount","slashIndex","out","escapeValue","parametersOnly","items","valueEnd","paramEnd","$parameters","headerName","headerValue","header","major","minor","decode","nameIndex","equalIndex","spaceNameIndex","spaceEndIndex","spaceEqualIndex","spaceValueIndex","spaceIndex","applyOrigin","protocol","host","port","user","password","pathSegments","fragment","trailingQuery","encodedPath","encodedUser","encodedQueryParameters","schemeLength","incorrectSchemePosition","scheme","slashCount","nextSlash","passwordIndex","pathEnd","rawPath","basePath","rawChunks","relativePath","fragmentStart","colonIndex","defaultPort","encodedPassword","specifiedPort","pathStartIndex","pathEndIndex","queryStart","queryEnd","pathStart","usernameStart","usernameEnd","passwordStart","passwordEnd","encodedParametersBuilder","slash","subtype","hasParameter","parameter","flushImpl","flushWrittenBytes","ensureNotFailed","closeable","$count","autoFlush","$attachJob","$channel","$dispatcher","charactersCopied","after","before","bufferSize","decodedText","bytesWritten","memory","readRemaining","writeRemaining","availableSpace","writeSize","newWritePosition","overrunSize","allocator","typedArray","view","remaining","","readASCII","atLeastMinCharactersRequire","minShouldBeLess","copied","utf8","codepoint","readUtf8","lastByteCount","prematureEndOfStreamChars","fixGapAfterReadFallback","fixGapAfterReadFallbackUnreserved","overrun","chunk1","chunk2","new","doFill","appendView","prepareReadLoop","minSize","desiredExtraBytes","minSizeIsTooBig","afterRead","dstOffset","appendNewChunk","appendChainImpl","newTail","chainedSizeDelta","tailPosition","writePacketMerging","foreignStolen","lastSize","nextSize","maxCopySize","appendSize","prependSize","writePacketSlowPrepend","readPosition","newReadPosition","pre","bytesCount","inputLength","subView","inputRemaining","chunkSize","characters","parentPool","cp","dstLimit","lastCharIndex","resultLimit","resultPosition","index1","resultPosition1","stage1Limit","freeSpace","highValue","lowValue","_charset","i8","writeIndex","encoder","dstRemaining","numChars","dropLastChar","endIndexExclusive","array1","charactersDecoded","bytesConsumed","nativeDecoder","maxCharacters","sizeInBytes","encoding","fatal","requestedEncoding","readRemainingSuspend","","builderSize","builderHead","addBytesRead","atLeast","closeElement","addBytesWritten","ensureNotClosed","rewindRemaining","startGap","endGap","newLimit","writePosition","discardAsMuchAsPossible","skipped","currentCount","currentSkipped","ensureNext","flushChain","oldTail","writeByteFallback","appendCharFallback","packet","chunkBuffer","headRemaining","positionBefore","positionAfter","appendNext","upd","sleepCondition","bufferOffset","attachJob","convertTo","ensureListForKey","caseInsensitiveName","listForKey","newMap","interceptors","subject","phase","relation","","","createContext","debugMode","sharedInterceptorsList","cacheInterceptors","interceptorsQuantity","phases","phaseIndex","phaseContent","findPhase","phasesList","findPhaseIndex","hasPhase","notSharedInterceptorsList","setInterceptorsListFromPhase","relativeTo","loop","direct","resumeRootWith","blocks","reifiedType","kotlinType","concurrent","stringValues","proceedLoop","copyInterceptors","lastRelatedPhaseIndex","tryAddToPhaseFastPath","currentInterceptors","resetInterceptorsList","addContinuation","discardLastRootContinuation","kType","firstIndex","maxElem","controlFrame","opcode","fin","rsv1","rsv2","rsv3","frameType","disposableHandle","fileUrl","fileName","times","initialDelay","maxDelay","segments","","","isAllowed","allow","unexpectedCharacterException","uri","unexpected","getNextCharacter","hexCharToValue","internalReason","","","encoded","decoded","$decoded","$encoded","segmentBuilder","","findPortSeparator","userInfoSeparator","portSeparator","encodedHost","portString","","encodedAuthority","","makeSchemeSpecificPart","_authorityPart","_pathPart","_queryPart","_fragmentPart","","ssp","","","","","","","uriString","ssi","fsi","qsi","segment","expanded","opaquePart","encodedParameter","oldQuery","hasSchemeOrAuthority","oldLength","nextToEncode","nextAllowed","toEncode","bytesLength","convertPlus","throwOnFailure","hexValue","nextC","newDigit","part","oldPart","oldPath","secondary","namespace","","","endOfElement","writeIndent","newDepth","indentSeq","writeIndent$default","addToPending","requireCurrent","isAppend","xmlDeclMode","stringSerializer","prefixMap","filler","namespaces","","removeFirstToCurrent","ns","locationInfo","eventType","localName","namespaceUri","namespaceContext","standalone","parentNamespaceContext","namespaceDecls","namespacePrefix","writer","localname","reader","missingNamespaces","namespaceAt","prefixAt","localNameAt","finishPartialStartTag","close","endOfTag","down","highSurogate","lowSurogate","writeEscapedText","triggerStartDocument","repeats","pending","ev","ensureNamespaceIfRepairing","rawWriteAttribute","$this_appendXmlCodepoint","isRepairNamespaces","xmlVersion","versionString","namespaceIndicesAt","startIdx","endIdx","arrayUseAtDepth","prefixArrayPos","pairPos","nsArrayPos","getPrefix","getNamespace","indentSequence","nodeList","namespaceURI","localPart","doc","frag","wrapperElement","$wrapperElement","startLocation","initialDepth","wrappedString","lazyMessage","prefixes","extendNamespace","nscount","wrapperNamespaceContext","getDelegate","actualInput","nodeType","attr","nsUri","rootElementName","$text","ce","textElems","qualifiedName","publicId","systemId","attrNs","textEvent","originalNSContext","events","decl","verString","effectiveEncoding","appliedPrefix","setElementStack","esp","hlp","actualPrefix","lastWasHyphen","existingNamespaceForPrefix","enlargeNamespaceBuffer","nextPair","setPrefix","setNamespace","prefixStr","namespaceUriStr","commentPos","orig","namespaceForPrefix","useNameInfo","useOutputKind","overriddenSerializer","tagName","parentNamespace","nextNulledItemsIdx","childDesc","defaultOrList","$inputType","","xmlDescriptor","polyInfo","attrIndex","stringValue","typeDiscriminatorName","polyMap","nameMap","childDescriptor","inputKind","candidates","repairNamespaces","indentString","autoPolymorphic","unknownChildHandler","policy","nilAttribute","xmlName","annotatedName","pedantic","encodeDefault","nameToIdx","$parentDescriptor","eq","","xmlCodecBase","$xmlCodecBase","serializerParent","tagParent","$serializerParent","","xmlPolyChildren","polyAttrName","qName","polyChild","childInfo","childSerializerParent","canBeAttribute","overrideOutputKind","","","$tagParent","keyNameInfo","parentInfo","keyTagParent","valueNameInfo","valueTagParent","","childrenName","getElementDescriptors","initialChildReorderInfo","descriptors","createElementDescriptor","serialDescriptor","originalOrderNodes","allNodes","members","finalToDeclMap","declToOrderMap","nextElemIdx","minIdx","nextIdx","successor","preserveSpace","requestedOutputKind","valueChildIndex","valueChild","invalidIdx","useName","isDocumentRoot","outputKind","elementUseNameInfo","","$canBeAttribute","childUseNameInfo","useParentInfo","effectiveUseNameInfo","xmlCData","codecBase","polyChildSpecification","pkgPos","prefPos","typeNameBase","currentPkg","parentTag","eqPos","typename","elementTypeDescriptor","elementUseOutputKind","elementIdx","childCount","nodes","unseenSuccessors","$parentNamespace","realSerialName","readCompactFragmentContent","rootName","xmlDecoderBase","defaultOverEmpty","defaultString","descOutputKind","deser","attrName","childXmlDescriptor","effectiveDeserializer","inputType","isNameOfAttr","normalizedName","containingNamespaceUri","emptyNsPrefix","valChildDesc","valueKind","lastAttrIndex","peek","fixedIndex","rawIndex","polyMode","sdec","typeQName","childSerialName","childQnames","isMixed","typeTag","parentType","useAnnotations","isValue","parentChildDesc","elementKind","typeDescriptor","serialKind","typeNameInfo","parentSerialKind","parentDescriptor","orderConstraints","orderNodes","xmlBefore","xmlAfter","befores","afters","isListEluded","mapParent","keyUseName","pseudoKeyParent","keyEffectiveOutputKind","prefixedName","cIndex","elementSerialDescriptor","effectiveSerializerParent","effectiveTagParent","overridenSerializer","fallback","typeName","defaultDecoder","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file